第 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/命令/哈希)
□ 报告: 文档类型+恶意行为+检测建议
动手练习
- 从公开样本库获取一个恶意文档(标注好的宏文档),用 olevba 提取宏并还原逻辑。
- 自己生成一个含下载执行宏的文档(教育环境),分析它的完整行为链。
- 用 pdf-parser 分析一个 PDF,找出所有 JS/动作对象。
- 写一份恶意文档分析报告(对照 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 恶意文档分析报告