HackingTeam Soldier分析(带VMP壳如何分析)
字数 2518 2025-11-11 12:26:39

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 调用特征

推荐断点位置

  1. NtCreateFile - 文件操作相关 API
  2. Sleep - Soldier 特有的可靠断点(源码中存在 VMProtectDumper 实现)

特殊技巧:Soldier 泄露的源码中包含 VMProtectDumper 实现(项目地址:hackedteam/scout-win/VMProtectDumper),该实现利用 Sleep 函数作为调试断点,因此 Sleep 断点具有高可靠性。

三、VMP 壳脱壳与修复技术

3.1 寻找解包后入口点

步骤详解

  1. 设置断点:在 Sleep 或 NtCreateFile 等 API 处下断点
  2. 触发断点:运行程序直至断点触发
  3. 搜索特征码:在 .text 段搜索 MSVC 编译器的 cookie 特征码 4E E6 40 BB
  4. 定位入口:找到特征码后,回溯调用栈寻找真正的入口点
  5. 关键设置:关闭程序基址随机化(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 开源的自动化恶意代码分析工具,可识别恶意软件功能特征

安装配置

  1. 安装 IDA Python 插件

    pip install flare-capa
    
  2. 部署插件文件

    • 下载 capa_explorer.py:https://raw.githubusercontent.com/mandiant/capa/master/capa/ida/plugin/capa_explorer.py
    • 拷贝到 IDA 插件目录
  3. 规则库配置:确保 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 可能需要手动分析修复
  • 加密算法实现可能有自定义修改

六、参考资源

  1. Soldier 泄露源码分析:https://cloud.tencent.com/developer/article/1038027
  2. VMProtectDumper 源码:hackedteam/scout-win/VMProtectDumper
  3. VMPImportFixer 工具:https://github.com/mike1k/VMPImportFixer
  4. capa 项目地址:https://github.com/mandiant/capa

通过本技术文档的详细步骤,分析人员可系统性地完成对 VMP 加壳的 Soldier 样本的分析和配置提取工作。

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) 命令格式 : 时机选择 :在入口点处尽早 Dump,避免运行时代码修改影响分析质量 修复效果评估 : 优点:大部分 API 导入得到修复 缺点:入口点可能未完全恢复,部分 API 仍需手动修复 3.3 手动修复补充 对于未修复的 API,可通过动态调试确定其功能: 分析 API 调用上下文 观察参数传递模式 参考相似样本的 API 使用模式 四、配置文件提取技术 4.1 使用 capa 进行自动化特征分析 capa 介绍 :Mandiant 开源的自动化恶意代码分析工具,可识别恶意软件功能特征 安装配置 : 安装 IDA Python 插件 : 部署插件文件 : 下载 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 样本的分析和配置提取工作。