B0bTheSkull/maldoc-scanner

GitHub: B0bTheSkull/maldoc-scanner

针对恶意Office文档和PDF的静态分析评分工具,基于34项从真实恶意软件家族提炼的指标快速判定文件威胁等级并提取IOC。

Stars: 0 | Forks: 0

# MalDoc 扫描器 ![Python](https://img.shields.io/badge/python-3.10%2B-blue?style=flat-square&logo=python) ![License](https://img.shields.io/badge/license-MIT-green?style=flat-square) ![Status](https://img.shields.io/badge/status-alpha-orange?style=flat-square) ## 功能介绍 当你收到一个可疑附件(例如 `.xlsm`、`.docm` 或 `.pdf`)时,MalDoc Scanner 会提取攻击者实际利用的部分(VBA 源码、PDF 动作、嵌入式 JavaScript),并根据从真实恶意软件家族中提取的指标目录对其进行风险评分。 **两种提取后端:** - **Office**(`.doc`、`.docx`、`.docm`、`.xls`、`.xlsm`、`.ppt` 等)— 使用 [oletools / olevba](https://github.com/decalage2/oletools) 提取所有宏流 - **PDF** — 使用 [pypdf](https://github.com/py-pdf/pypdf) 遍历目录并转储所有对象字符串 **一个评分引擎:** - 24 个 VBA 指标:涵盖自动执行钩子、Shell/进程执行、网络下载、进程注入、持久化、混淆和反分析 - 10 个 PDF 指标:涵盖 `/JavaScript`、`/Launch`、`/OpenAction`、`/AA`、`/EmbeddedFile`、`/XFA`、`/URI` 以及加密标志 - IOC 提取:从提取的内容中获取 URL 和 IP ## 安装 ``` git clone https://github.com/B0bTheSkull/maldoc-scanner.git cd maldoc-scanner pip install -e . ``` ## 使用方法 ### 分析 Office 文档 ``` maldoc --file suspicious.docm ``` ### 分析 PDF ``` maldoc --file suspicious.pdf ``` ### 分析预提取文本(不需要 oletools / pypdf) 当你已经导出了宏源码(例如,在另一个环境中使用 olevba),或者正在使用合成样本测试评分引擎时,可以使用此功能: ``` maldoc --file extracted_macro.txt --from-text --type office ``` ### JSON 输出 ``` maldoc --file sample.docm --json > report.json ``` ### 退出码 | 代码 | 含义 | |---|---| | `0` | 低或中等严重性 | | `1` | 高严重性 — 文件极有可能是恶意的 | | `2` | 无法读取或分类文件 | ## 输出示例 ``` MalDoc Scanner Source: examples/sample_macro.txt | Type: office | Score: 100/100 | Severity: HIGH ──────────────────────────────────────────────────────────────────────── [ HIGH] + 30 vba_iex PowerShell Invoke-Expression — runs strings as code [ HIGH] + 30 vba_webclient PowerShell WebClient pattern — download cradle [ HIGH] + 25 vba_autoopen macro auto-runs on document open [ HIGH] + 25 vba_wscript_shell WScript.Shell — runs commands [ HIGH] + 25 vba_powershell_string PowerShell invocation reference [ HIGH] + 25 vba_xmlhttp XMLHTTP — used to download payloads [ HIGH] + 25 vba_schtasks scheduled task creation — persistence ... (truncated) ──────────────────────────────────────────────────────────────────────── URLs (1): http://attacker.example/payload.bin ``` ## 开发初衷 恶意软件分析很困难。即使是基本的静态分析,面对 `olevba`、`peepdf`、`pdf-parser`、`xorsearch` 输出的大量信息,也需要耗费时间来消化。MalDoc Scanner 专注于该工作流的一个维度——"这个文件危险吗?为什么危险?"——并在 5 秒内给出可供采取行动的答案。 它有意避免成为沙箱、反混淆工具或解码器。这些属于不同的技能和工具领域(如 CAPE、[VirusTotal](https://www.virustotal.com)、Box-of-Doom)。MalDoc Scanner 是第一道防线,负责告诉你该样本是否值得进一步分析。 IOC 提取步骤可与 [ThreatPulse](https://github.com/B0bTheSkull/threatpulse) 配合使用——将 URL 导入 ThreatPulse 查询管道,即可立即实现 IOC 扩充。 ## 安全提示 - 该工具仅*解析*文档——绝不会在 Office 或渲染器中打开它们。但你仍应在隔离的虚拟机/容器中处理可疑文件。 - `oletools` 执行其自身的 VBA 反编译;它返回的源码可能包含混淆字符串,你不应将其粘贴到会自动渲染或执行它们的地方。 ## 路线图 - [ ] RTF 文档支持(与 DOCX 不同的解析路径) - [ ] OOXML 关系分析(外部图像/模板引用) - [ ] 完整的 HTML 报告模式,用于交付物展示 - [ ] 描述匹配指标的 Sigma 规则输出(以便 [SigmaForge](https://github.com/B0bTheSkull/sigmaforge) 进行转换) - [ ] 批量模式:扫描目录,每个文件输出一行 - [ ] 基于哈希的 VirusTotal 查询(可选,需要 API 密钥) ## 许可证 MIT — 详见 [LICENSE](LICENSE)
标签:AMSI绕过, ATT&CK映射, DAST, DNS 反向解析, DNS枚举, DNS 解析, Go语言工具, GraphQL安全矩阵, HTTP工具, IOC提取, Office文档安全, oletools, PDF分析, pypdf, Python, VBA宏提取, 云安全监控, 威胁检测, 安全扫描器, 引擎评分, 恶意文档分析, 恶意软件分析, 搜索语句(dork), 无后门, 木马检测, 沙箱替代, 端点安全, 网络信息收集, 网络安全工具, 网络钓鱼检测, 自动化响应, 补丁管理, 逆向工具, 速率限制处理, 静态分析