| name | office-malware-analyzer |
| description | 全面分析 Office 文档安全性 (.doc/.docx/.docm/.xls/.xlsx/.xlsm/.ppt/.pptx/.pptm/.rtf/.wps/.one/.xll)。当用户要求"分析 Office 文档"、"检测宏病毒"、"VBA 分析"、"OLE 分析"、"文档安全检测"、"恶意文档分析"时使用此技能。支持检测:VBA 宏及 VBA Stomping、CallByName 间接执行、UserForm 隐藏命令、多层 Base64 编码、ChrW 数学混淆、Excel 4.0/XLM 宏、DDE 攻击、模板注入、RTF 漏洞利用、Follina (CVE-2022-30190)、EPS 漏洞、随机 ProgID 检测、OLE autoLoad 检测。 |
| metadata | {"version":"1.0.0","builtin":true} |
Office 恶意文档分析器 v3.10
综合分析 Office 文档 (Word/Excel/PowerPoint/WPS/OneNote) 的恶意特征。
快速开始
cd <SKILL_DIR>
.venv/bin/python scripts/analyze_office.py /path/to/document.docm
.venv/bin/python scripts/analyze_office.py -f json /path/to/document.xlsm -o report.json
.venv/bin/python scripts/analyze_office.py -q /path/to/suspicious.doc
说明: <SKILL_DIR> 是此技能安装目录(包含 .venv/ 和 scripts/)。
辅助脚本
| 脚本 | 用途 | 使用场景 |
|---|
analyze_office.py | 全面扫描,检测所有威胁指标 | 主要分析工具 |
extract_vba.py | 提取完整 VBA 代码 | 需要分析宏混淆逻辑 |
extract_embedded.py | 提取嵌入文件 | 检测到嵌入 RTF/OLE/可执行文件 |
office_scan.py | 快速扫描 | 初步检测 |
分析工作流
Phase 1: 文件识别
.venv/bin/python scripts/analyze_office.py /path/to/document -q
输出:文件类型、格式版本、基本风险指标
Phase 2: 宏分析
olevba --decode /path/to/document
pcodedmp /path/to/document
检查项:自动执行触发器、间接执行、UserForm 载荷、Base64 编码
Phase 3: 嵌入对象分析
oleobj /path/to/document
rtfobj /path/to/document
检查项:OLE ProgID、外部链接、模板注入、altChunk
Phase 4: 漏洞利用检测
检测已知 CVE 特征:
- CVE-2017-11882 (Equation Editor)
- CVE-2017-0199 (OLE2Link)
- CVE-2022-30190 (Follina)
- CVE-2017-0261/0262 (EPS)
Phase 5: 载荷提取
.venv/bin/python scripts/extract_embedded.py /path/to/document -o ./extracted/
.venv/bin/python scripts/extract_vba.py /path/to/document -o ./vba/
Phase 6: 风险评分与报告
根据检测结果累加评分,按 references/report-format.md 输出报告
核心检测能力
| 特性 | 描述 | 检测方法 |
|---|
| VBA Stomping | P-code 与源码不同 | olevba 错误 -> pcodedmp |
| 间接执行 | CallByName 使用变量参数 | 模式匹配 |
| UserForm 载荷 | 控件属性中的命令 | OLE 流分析 |
| 多层 Base64 | UTF-16LE 嵌套编码 | 递归解码 |
| ChrW 混淆 | 数学运算构建字符串 | P-code LitDI2+Sub+ChrW |
| EPS 漏洞 | CVE-2017-0261/0262, CVE-2015-2545 | EPS 文件分析 |
| 随机 ProgID | 混淆的 OLE 对象名称 | 正则匹配 |
| autoLoad 属性 | Excel OLE 自动执行 | XML 属性检测 |
| OLE Link 对象 | 外部 OLE 引用 | Type="Link" 属性 |
| 混淆 RTF | {\rt 头规避 | 扩展签名检测 |
| altChunk 内容 | OOXML 嵌入载荷 | aFChunk 关系分析 |
| XLM 宏 | Excel 4.0 公式 | EXEC, CALL, REGISTER |
| DDE 攻击 | 通过 DDE 执行命令 | DDEAUTO 模式 |
| 模板注入 | 远程模板加载 | 外部关系检测 |
| Follina | CVE-2022-30190 ms-msdt: | 外部 rels + XML 扫描 |
风险评分
| 发现 | 分数 |
|---|
| VBA 宏 | +15 |
| 自动执行触发器 | +20 |
| VBA Stomping | +30 |
| 间接执行 | +25 |
| UserForm 载荷 | +25 |
| ChrW 混淆 | +15 |
| 解码后载荷 | +20 |
| XLM 宏 | +25 |
| DDE 命令 | +35 |
| 模板注入 | +40 |
| EPS 漏洞 | +40 |
| 随机 ProgID (短) | +25 |
| 随机 ProgID (长) | +35 |
| autoLoad="true" | +30 |
| 已知 CVE | +50 |
风险等级
评分为累加制,无上限。多个威胁指标叠加时总分可能超过 100 分。
| 分数 | 等级 | 说明 |
|---|
| 0-29 | 低风险 | 可能无害 |
| 30-49 | 中风险 | 需要进一步调查 |
| 50-74 | 高风险 | 很可能是恶意文档 |
| ≥75 | 严重 | 确认恶意,多重威胁叠加 |
支持的文件格式
| 扩展名 | 格式 | 风险点 |
|---|
| .doc/.xls/.ppt | OLE (旧格式) | 宏、OLE 对象 |
| .docx/.xlsx/.pptx | OOXML (ZIP) | 宏、外部链接、DDE |
| .docm/.xlsm/.pptm | OOXML + 宏 | VBA 代码 |
| .rtf | RTF | 嵌入对象、漏洞利用 |
| .wps/.et/.dps | WPS Office | JS 宏、OLE 对象 |
| .xll | Excel 加载项 (PE/DLL) | 自动执行、DLL 注入 |
| .one/.onetoc2 | OneNote | 嵌入可执行文件 |
| .mht/.mhtml | MIME HTML | JavaScript、ActiveX |
已知 CVE 特征
| CVE | 目标 | 特征模式 |
|---|
| CVE-2017-11882 | Equation Editor | Equation.3 |
| CVE-2017-0199 | OLE2Link | application/hta |
| CVE-2017-0261/0262 | EPS 类型混淆 | 多个 %%Creator: |
| CVE-2015-2545 | EPS 内存损坏 | teledict 模式 |
| CVE-2022-30190 | MSDT (Follina) | ms-msdt: |
| CVE-2021-40444 | MSHTML | .cab, mhtml: |
| CVE-2023-36884 | Office HTML | altChunk |
执行超时说明
⚠️ 重要: 本技能分析大型 Office 文档时需要较长执行时间,请耐心等待。
| 脚本 | 默认超时 | 说明 |
|---|
analyze_office.py | 60s | 综合分析,大文件需更长时间 |
extract_vba.py | 120s | VBA 提取,含 P-code 反编译 |
office_scan.py | 120s | olevba 扫描,大文件耗时 |
extract_embedded.py | 60s | 嵌入文件提取 |
超时原因:
- olevba 分析大型宏文件(>1MB)可能需要 30-60 秒
- pcodedmp 反编译复杂 VBA 需要额外时间
- 嵌套压缩/加密文档分析更耗时
依赖要求
Python 版本: 3.8+
必需依赖:
| 工具 | 安装 | 用途 |
|---|
| oletools | pip install oletools | VBA/OLE 分析 |
| pcodedmp | pip install pcodedmp | VBA Stomping 检测 |
可选依赖: 无
oletools 包含的命令:
olevba - VBA 宏提取和分析
oleid - OLE 文件识别
oledump - OLE 流分析
rtfobj - RTF 对象提取
oleobj - 嵌入对象提取
虚拟环境创建参考:
cd <SKILL_DIR>
python -m venv .venv
source .venv/bin/activate
pip install oletools olefile pcodedmp
与其他技能的关联
分析过程中发现 IOC 时的处理:
| 提取到的 IOC | 调用的技能 | 说明 |
|---|
| 模板注入 URL | url-analysis | 分析远程模板地址 |
| 外部 OLE 链接 | url-analysis | 分析外部引用 |
| C2 域名 | domain-analysis | 分析恶意载荷连接的域名 |
| C2 IP | ip-analysis | 分析回连 IP 地址 |
| 嵌入可执行文件 | binary-reverse-engineering | 分析嵌入的恶意程序 |
上游技能(可能调用本技能):
phishing-analysis - 分析邮件附件中的 Office 文档
调用时机:
- 检测到模板注入(TargetMode="External")时,对 URL 调用
url-analysis
- 检测到外部 OLE 链接时,分析链接目标
- 解码 VBA 发现 C2 地址时,调用
ip-analysis 或 domain-analysis
- 提取嵌入可执行文件后,调用
binary-reverse-engineering
参考文件