HackingTeam Soldier 样本分析技术详解:VMP 加壳与配置提取
一、样本背景介绍
Soldier 是意大利公司 HackingTeam 的远控套件 RCS(Remote Control System)中的第二阶段载荷。典型的攻击链路是:先投放轻量级 Scout 进行环境侦测与自检,确认环境安全后再下发 Soldier 执行全面监控与数据窃取。
样本特征:
- MD5: ccb3c0462bb50d2c3c5c80ff828f75ec
- SHA256: 7997e66b4c8096de0f98fa019de6a002
- 伪装成 java.exe 程序
- 使用合法数字证书绕过杀软检测
- 采用 VMProtect(VMP)进行加壳保护
二、VMP 壳特征识别与分析
2.1 静态特征识别
使用 PE 分析工具(如 Pe-bear)观察样本结构:
- 节区特征:存在多个节区,Raw Address = 0 但 Virtual Address 不为 0
- 代码段特征:.text 段在静态分析中显示为空
- 压缩方式:VMP 采用 LZMA 压缩方式保护代码
2.2 IDA 静态分析验证
在 IDA Pro 中打开样本,可观察到典型的 VMP 特征:
- .text 段无有效代码
- 入口点指向 VMP 的解壳代码
- 导入表被严重破坏,API 调用被隐藏
2.3 动态分析切入点选择
策略:通过沙箱分析报告寻找关键 API 调用特征
推荐断点位置:
- NtCreateFile - 文件操作相关 API
- Sleep - Soldier 特有的可靠断点(源码中存在 VMProtectDumper 实现)
特殊技巧:Soldier 泄露的源码中包含 VMProtectDumper 实现(项目地址:hackedteam/scout-win/VMProtectDumper),该实现利用 Sleep 函数作为调试断点,因此 Sleep 断点具有高可靠性。
三、VMP 壳脱壳与修复技术
3.1 寻找解包后入口点
步骤详解:
- 设置断点:在 Sleep 或 NtCreateFile 等 API 处下断点
- 触发断点:运行程序直至断点触发
- 搜索特征码:在 .text 段搜索 MSVC 编译器的 cookie 特征码
4E E6 40 BB - 定位入口:找到特征码后,回溯调用栈寻找真正的入口点
- 关键设置:关闭程序基址随机化(ASLR)以便准确分析
3.2 内存 Dump 与导入表修复
工具:使用 VMPImportFixer(https://github.com/mike1k/VMPImportFixer)
命令格式:
VMPImportFixer.exe -p [PID]
时机选择:在入口点处尽早 Dump,避免运行时代码修改影响分析质量
修复效果评估:
- 优点:大部分 API 导入得到修复
- 缺点:入口点可能未完全恢复,部分 API 仍需手动修复
3.3 手动修复补充
对于未修复的 API,可通过动态调试确定其功能:
- 分析 API 调用上下文
- 观察参数传递模式
- 参考相似样本的 API 使用模式
四、配置文件提取技术
4.1 使用 capa 进行自动化特征分析
capa 介绍:Mandiant 开源的自动化恶意代码分析工具,可识别恶意软件功能特征
安装配置:
-
安装 IDA Python 插件:
pip install flare-capa -
部署插件文件:
- 下载 capa_explorer.py:https://raw.githubusercontent.com/mandiant/capa/master/capa/ida/plugin/capa_explorer.py
- 拷贝到 IDA 插件目录
-
规则库配置:确保 capa 版本与规则库版本一致
4.2 加密算法定位策略
重点关注:加密算法相关代码特征
- AES、RSA、RC4 等常见加密算法
- 密钥生成与管理逻辑
- 数据编码/解码操作
分析方法:以函数 sub_4996D0 为例的交叉引用追踪
4.3 交叉引用追踪实战
第一层分析:
- 目标函数:sub_4996D0
- 交叉引用追踪:定位到调用函数 sub_498580
- 关键观察:分析函数参数传递模式
第二层分析:
- 从 sub_498580 追踪到 sub_4A0840
- 关注参数中的加密数据特征
第三层分析:
- 从 sub_4A0840 追踪到 sub_49F390
- 发现关键参数:加密字符串、长度、疑似密钥
4.4 密钥提取与解密
密钥定位:
- 分析密钥参数的交叉引用
- 发现唯一的写入位置
- 提取静态密钥值
解密工具:使用 CyberChef(https://gchq.github.io/CyberChef/)
- 选择 AES 解密模块
- 输入密文和提取的密钥
- 获取明文字符串配置
五、技术要点总结
5.1 VMP 分析关键
- 利用沙箱报告确定断点位置
- Sleep 函数是 Soldier 样本的可靠断点
- 尽早 Dump 内存以保证代码完整性
- 导入表修复需要结合动态分析
5.2 配置提取要点
- capa 工具可有效定位加密算法代码
- 交叉引用追踪是分析加密逻辑的核心方法
- 参数分析可帮助识别密文和密钥
- 静态密钥通常有唯一的写入位置
5.3 注意事项
- 规则库版本匹配是 capa 正常工作的前提
- 分析时机影响 Dump 文件的质量
- 部分 API 可能需要手动分析修复
- 加密算法实现可能有自定义修改
六、参考资源
- Soldier 泄露源码分析:https://cloud.tencent.com/developer/article/1038027
- VMProtectDumper 源码:hackedteam/scout-win/VMProtectDumper
- VMPImportFixer 工具:https://github.com/mike1k/VMPImportFixer
- capa 项目地址:https://github.com/mandiant/capa
通过本技术文档的详细步骤,分析人员可系统性地完成对 VMP 加壳的 Soldier 样本的分析和配置提取工作。