修改Metasploit x64模板实现反病毒规避
Joff Thyer
注意:本文所述技术可能已过时,但仍可作为学习现代工具技术演进的参考案例。
在针对Windows桌面的渗透测试中,测试人员常使用Veil’s Powershell Empire等工具将shellcode直接注入内存。这种技术能有效规避磁盘写入和端点防护软件的检测。但有时我们需要使用实际恶意软件可执行文件进行更全面的测试,以评估防御技术的检测阈值。
现状分析
反病毒引擎对Metasploit框架生成的32位恶意软件检测效果显著,但对64位变种检测能力较弱。研究发现,AV引擎不仅检测shellcode,还会匹配msfvenom生成的可执行文件中存根加载器的汇编代码特征。
技术原理
Metasploit生成payload时使用预编译的模板可执行文件:
- 32位模板:C语言源码(位于
/usr/share/metasploit-framework/data/templates/src/pe/exe
) - 64位模板:汇编语言源码
模板功能均为:
- 分配4096字节内存缓冲区
- 写入"PAYLOAD:“标记字符串
- msfvenom将选定payload(经编码处理后)注入该缓冲区
实验过程
- 原始模板测试:Avast立即触发警报(基于汇编指令特征匹配)
- 缓冲区扩容测试:将缓冲区改为8192字节后,Avast完全漏报
- 完整修改测试:
- 修改全部汇编代码数值为8192
- 生成两种payload(含XOR编码/无编码)
- 成功绕过Avast的"深度扫描"并获取shell
技术验证
|
|
结论
实验证实AV厂商主要检测模板特征而非shellcode本身。仅通过简单修改汇编代码(如调整缓冲区大小)即可有效绕过64位payload检测。该方法对其他AV引擎的适用性有待进一步验证。
提示:完整技术细节和编译说明请参考原文中的汇编源码注释。