逆向工程实战手册 第 104 章

第 104 章 恶意文档分析(Office / PDF / 宏)

恶意文档是钓鱼攻击的核心投递载体(第 89 章),也是恶意软件分析的独立分支:Office 宏、PDF 漏洞、LNK/ISO、恶意脚本。本章覆盖恶意文档分类、静态分析(oletools)、宏逆向、行为分析全流程。文档分析 = 把"看起来正常的文件"拆出恶意行为。

📍 知识点地图 | 主题:恶意文档 | 前置:第89章 | 后续:— | 核心概念:VBA宏、oletools、PDF对象、沙箱

104.1 恶意文档分类学

Office 文档(最常见):
  □ 宏病毒(VBA 宏 → 下载执行)
  □ DDE/Excel 公式(老式但存在)
  □ OLE 嵌入对象(嵌入可执行)
  □ 模板注入(远程模板 → 下载恶意宏)

PDF:
  □ JavaScript(老漏洞/表单脚本)
  □ 漏洞利用(解析器 CVE)
  □ 隐藏对象/恶意附件
  □ 表单字段动作

其他:
  □ LNK(快捷方式 → 命令执行)
  □ ISO/VHD(挂载后执行)
  □ RTF(OLE 对象嵌入)
  □ 脚本(JS/VBS/PS1 伪装)

104.2 静态分析(不打开文件先分析)

工具链(oletools 全家):
  olevba: 提取 VBA 宏源码(第一优先)
  oleid: 文件特征(宏/加密/外部链接)
  oledump: 对象流分析
  mraptor: 宏可疑度评分
  officeparser: 结构解析

PDF 工具:
  pdf-parser / pdfid: 对象结构/可疑元素
  peepdf: 综合

流程:
  1. file + 哈希(身份)
  2. oleid: 有没有宏/可疑特征
  3. olevba: 提取宏源码(宏就是"源码级"分析!)
  4. 宏源码分析: 找下载/执行/混淆逻辑
  5. pdf-parser: PDF 对象扫描

104.3 宏分析(VBA 逆向)

宏的本质: 文档里的脚本(可读源码!)

常见恶意宏模式:
  □ 混淆字符串(拼接/编码/变量替换)
  □ AutoOpen/Document_Open(自动执行入口)
  □ Shell/Run 执行命令
  □ URLDownloadToFile + Shell(下载执行两步)
  □ WScript.Shell / PowerShell 调用
  □ 反沙箱(检测运行环境)

宏分析流程:
  1. olevba 提取宏
  2. 找入口(Auto_/Document_Open)
  3. 去混淆(字符串解码/变量替换)
  4. 提取 IOC(URL/命令/文件)
  5. 模拟执行(第 6 章 Frida 不适合,用模拟/手工展开)

104.4 动态行为分析

□ 沙箱: 打开文档(Office 在隔离环境)→ 观察行为
  (网络回连/进程/文件,第 42 章方法)
□ 宏执行日志(Office 宏跟踪/自定义宏记录)
□ 网络: inetsim 模拟 → 看下载内容
□ 进程: 文档打开后 spawn 了什么

注意: 文档执行有触发条件(启用宏/特定版本)
→ 静态分析优先(宏是源码!),动态兜底

104.5 恶意 PDF 分析

PDF 结构: 对象(Object)+ 目录(Trailer)+ 流(Stream)
可疑元素:
  /JavaScript 或 /JS(脚本执行)
  /OpenAction(打开即执行)
  /Launch(启动外部程序)
  /EmbeddedFile(嵌入文件)
  /AA(附加动作)

工具流程:
  pdfid file.pdf(可疑元素扫描)
  pdf-parser -f file.pdf(全对象列表)
  定位 JS/动作对象 → 提取 → 分析

104.6 检查清单

□ 类型识别(file/oleid)
□ 宏检测与提取(olevba)
□ 宏源码分析(入口/混淆/IOC)
□ 外部链接/对象检查
□ PDF: JS/动作/嵌入对象
□ 沙箱行为(隔离环境)
□ IOC 提取(URL/命令/哈希)
□ 报告: 文档类型+恶意行为+检测建议

动手练习

  1. 从公开样本库获取一个恶意文档(标注好的宏文档),用 olevba 提取宏并还原逻辑。
  2. 自己生成一个含下载执行宏的文档(教育环境),分析它的完整行为链。
  3. 用 pdf-parser 分析一个 PDF,找出所有 JS/动作对象。
  4. 写一份恶意文档分析报告(对照 104.6 清单)。

深入阅读

  • 仓库:skills/malware-analysis/SKILL.md(恶意软件分析框架)
  • 仓库:CTF-Sandbox-Orchestrator/competition-file-parser-chain/(文件解析链)
  • 仓库:skills/attack-chain/SKILL.md(钓鱼投递衔接)
  • 仓库:skills/malware-analysis/references/anti-analysis-techniques.md(文档反沙箱)
  • 外部: oletools 文档、Any.Run 恶意文档分析报告