修改Metasploit x64模板实现反病毒规避技术

本文详细介绍了如何通过修改Metasploit框架中的64位可执行模板来绕过Avast等反病毒软件的检测,包括缓冲区大小调整和汇编代码修改等技术细节。

修改Metasploit x64模板实现反病毒规避

Joff Thyer
免责声明:本文所述技术可能已过时,但仍可作为学习参考,并可能整合到现代工具中。

在针对Windows桌面的渗透测试中,测试人员常使用Veil’s Powershell Empire等工具将shellcode直接注入内存。这种方法虽能避免磁盘写入和端点防护的检测,但有时我们需要使用实际恶意软件可执行文件进行更全面的测试。

反病毒软件的检测机制

反病毒引擎对Metasploit生成的32位恶意软件检测效果显著,但对64位payload的检测能力较弱。研究发现,AV引擎不仅检测shellcode,还会匹配msfvenom生成的可执行文件中存根加载器的汇编代码模式。

Metasploit模板分析

Metasploit的payload生成使用预编译的32位(C语言)和64位(汇编语言)模板,位于KALI系统的/usr/share/metasploit-framework/data/templates/src/pe/exe目录。模板功能包括:

  1. 分配4096字节内存缓冲区
  2. 写入"PAYLOAD:“标记字符串
  3. 保留缓冲区空间供msfvenom插入shellcode

64位模板修改实验

通过修改64位汇编模板进行三项测试:

  1. 直接重编译原代码:Avast立即报警
  2. 仅将缓冲区扩大至8192字节:成功绕过检测
  3. 全面修改汇编值+生成payload
    • 使用XOR编码和无编码两种shellcode
    • 均成功通过Avast的深度扫描
    • 最终获得shell访问权限

技术验证截图

  • 修改后的汇编源代码(8192字节缓冲区)
  • 使用新模板生成的64位payload文件
  • Avast扫描结果显示"安全”
  • 成功获取shell的终端界面

结论与启示

反病毒厂商主要检测模板特征而非shellcode本身。本实验证明,仅通过简单的汇编代码修改(如调整缓冲区大小)即可有效绕过AV检测。该方法对其他AV引擎的适用性有待进一步验证。

延伸学习:
作者相关课程:《正则表达式实战》《企业攻击模拟与C2植入开发》《Python入门》等

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计