渗透测试之地基免杀篇:MSF-loader底层分析免杀过360
字数 1425 2025-08-15 21:33:30
MSF-Loader底层分析与免杀技术详解
一、前言与背景
Metasploit Framework (MSF) 是一款开源安全漏洞检测工具,广泛应用于渗透测试领域。Metasploit-Loader是使用C语言编写的stager客户端,用于在渗透测试中绕过杀毒软件检测。
本文详细分析MSF-Loader的底层实现,并提供逐步修改源码实现免杀的技术方法,特别是针对360、360杀毒、火绒和deferencer等主流杀软的绕过技术。
二、环境准备
攻击者环境
- 系统: Kali Linux 2020.4
- IP: 192.168.175.145
- 工具:
- Metasploit Framework
- mingw-w64编译器
- Dev-C++ 5.11 (Windows环境)
目标环境
- 系统: Windows 10
- 防护软件: 360安全卫士、360杀毒、火绒、deferencer
三、基础源码获取与初步修改
1. 获取源码
git clone https://github.com/rsmudge/metasploit-loader.git
2. 初步源码修改
修改main.c文件:
- 删除原始Socket握手包代码
- 将连接信息硬编码到argv[1]中
- 调整头文件顺序:
#include <winsock2.h>
#include <windows.h>
3. 安装编译器
在Kali上安装mingw-w64:
sudo apt-get install mingw-w64
4. 初次编译
i686-w64-mingw32-gcc main.c -o dayu.exe -lws2_32
5. 测试结果
- 全球免杀率:25/69
- 仍被360和火绒检测
四、中级源码免杀技术
1. 使用Dev-C++环境
- 下载并安装Dev-C++ 5.11
- 创建新的C项目,选择64-bit Console Application
- 导入修改后的源码
2. 核心代码分析
核心功能区域:
// 建立socket握手包
// 前四个字节分配到RWX缓冲区
// 源代码偏移五个单位
// socket值复制到缓冲区
// 字节读入缓冲区
// 执行DLL Main
3. 关键修改点
- 将
size + 5改为size + 10 buffer[0] = 0xBF;改为buffer[0] = 0x48;- 添加
buffer[1] = 0xBF; buffer + 1, &my_socket, 4改为buffer + 2, &my_socket, 8buffer + 5改为buffer + 10
4. Dev-C++配置
- 工具 -> 编辑器选项
- 选择TDM-GCC 4.9.2 64-bit Release
- 在连接器命令行添加
-lws2_32
5. 测试结果
- 全球免杀率:27/71
- 已过火绒,但仍被360和360杀毒检测
五、终极免杀技术
1. 综合修改策略
- 删除所有作者注释信息
- 结合初步和中级的修改方法
- 进一步扩大缓冲区:
- 偏移量从5改为15
- 调整buffer值继续扩大
2. 关键修改点
- 完全删除文件顶部作者注释
- 修改socket为指定IP+端口硬编码
- 缓冲区偏移量设为15
- 调整buffer相关参数
3. 最终效果
- 成功绕过360、360杀毒、火绒、deferencer
- 稳定上线且长时间不被检测
六、技术总结
-
源码修改要点:
- 删除特征明显的注释
- 修改缓冲区结构和偏移量
- 调整socket连接方式
-
免杀思路:
- 通过改变代码结构破坏杀软的特征匹配
- 增大缓冲区改变内存操作模式
- 消除所有可能被标记的特征字符串
-
持续改进方向:
- 动态改变缓冲区大小
- 添加代码混淆
- 使用更隐蔽的连接方式
七、防御建议
对于防御方:
- 不要仅依赖杀毒软件的静态检测
- 部署行为分析工具检测异常网络连接
- 监控可疑的进程内存操作
- 保持安全软件更新至最新版本
八、法律与道德声明
本文所有技术仅用于教育目的和安全研究。未经授权对他人系统进行渗透测试是违法行为。读者应遵守所有适用法律和道德准则。