cyber-traveller/MADFA

GitHub: cyber-traveller/MADFA

MADFA 是一款离线静态文档取证分析器,通过提取恶意附件中的 IOC 和取证工件并结合机器学习模型给出可解释的风险评分。

Stars: 0 | Forks: 0

# MADFA — 恶意附件与文档取证分析器 **网络安全取证硕士 — 迷你项目** ## 为什么需要 大多数针对组织的入侵都始于武器化的附件 —— 包含 JavaScript 或启动动作的 PDF,或者是包含恶意 VBA 宏或嵌入式对象的 Office 文件。基于特征码的防病毒软件无法检测到经过混淆和以前未见的变体。MADFA 将**静态结构分析**与**机器学习**相结合,不仅可以标记可疑文档,*还能*生成调查人员真正需要的取证工件:哈希值、嵌入的 URL/IP、解码的宏字符串、匹配的 YARA 规则,以及透明的风险分解说明。 ## 功能 - 通过 **magic bytes**(而非扩展名)识别文件类型。 - 在输入时记录**证据哈希**(MD5/SHA1/SHA256)+ 模糊哈希(ssdeep/TLSH)。 - 静态提取:VBA 宏、PDF JavaScript、OpenAction/Launch 动作、嵌入式对象(OLE/OOXML)、DDE、外部关系、元数据、可疑的 API 关键字。 - 提取 **IOC**:URL、IP、域名、电子邮件、可疑字符串。 - 对原始字节和提取的流运行 **YARA** 规则。 - 构建数字**特征向量**,并使用训练好的模型进行分类(RandomForest / XGBoost;可选的 byte-image CNN)。 - 生成**风险评分 (0–100)** 和**可解释的**判定结果。 - 输出**JSON** 报告(机器可读)和 **HTML/PDF** 报告(分析人员可读)。 ## 它不做什么 它绝不执行、渲染或在其原生应用程序中打开样本。它不是沙箱,不是防病毒软件 (AV),也不是恶意软件生成器或修复工具。所有分析都是**静态的**。 ## ⚠️ 安全警告 — 在接触真实样本前请务必阅读 恶意文档是活跃的恶意软件。仅在**隔离的虚拟机**中处理它们,并禁用网络连接和关闭共享文件夹/剪贴板。切勿双击样本。MADFA 仅*解析*文件,但操作者仍必须避免意外执行。 - 将所有样本保存在 `data/samples/` 下 — 此目录已被 **gitignored**。切勿将恶意软件提交到版本控制中。 - 在静止存储时,请对样本进行密码保护(例如,使用密码 `infected` 进行压缩)。 - 优先使用经过整理的研究数据集,而不是随意下载的数据集(参见 REQUIREMENTS.md)。 ## 快速开始 ``` # 1. 安装 (Python 3.11+; 有关系统库请参阅 REQUIREMENTS.md: yara, ssdeep, pango/cairo) python3 -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" # or: uv pip install -e ".[dev]" # 2. 分析单个文件 (将 .json/.html/.pdf 写入 out 目录) madfa analyze suspicious_invoice.docx --out reports/ # 3. 批量分析整个文件夹 (排名摘要 + 单文件报告) madfa scan-dir data/samples/malicious --out reports/ --recursive # 4. 从标记的样本构建特征数据集 (按 SHA256 去重) madfa dataset build --malicious data/samples/malicious --benign data/samples/benign \ --out data/features/dataset.csv # 5. 训练 + 比较 RandomForest / XGBoost (保存 models, meta.json, eval 图表) madfa train --dataset data/features/dataset.csv --out models/ # 6. 再次分析,现在使用训练好的模型 (ML 融合的风险评分) madfa analyze suspicious_invoice.docx --model models/xgboost.joblib --out reports/ ``` ### 命令参考 | 命令 | 用途 | |---------|---------| | `madfa version` | 打印工具版本 | | `madfa analyze ` | 分析单个文件 → 输出控制台判定结果 + JSON/HTML/PDF 报告 | | `madfa scan-dir ` | 批量分析文件夹 → 输出排名摘要 + 单个文件报告 | | `madfa dataset build` | 从带标签的样本目录构建特征 CSV | | `madfa dataset synth` | 生成**合成**数据集(无恶意软件)用于测试/演示 | | `madfa train` | 训练 + 评估 RandomForest / XGBoost;保存模型和图表 | `analyze` / `scan-dir` 的通用标志:`--out DIR`、`--model model.joblib`、 `--no-pdf`、`--json-only`、`--config config.yaml`(以及用于 `scan-dir` 的 `--recursive`)。 ### 示例:混合文件夹的批量扫描 ``` Batch scan summary ┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━┓ ┃ File ┃ Type ┃ Verdict ┃ Risk ┃ IOCs ┃ YARA ┃ SHA256 ┃ ┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━┩ │ invoice.pdf │ pdf │ malicious │ 75 │ 2 │ 2 │ d1ee02734684 │ │ letter.docx │ ooxml_office │ suspicious │ 65 │ 1 │ 1 │ 4bc00880bc28 │ │ report.pdf │ pdf │ benign │ 0 │ 0 │ 0 │ a5370b552632 │ │ notes.txt │ — │ skipped │ — │ — │ — │ — │ └─────────────┴──────────────┴────────────┴──────┴──────┴──────┴──────────────┘ malicious: 1 suspicious: 1 benign: 1 skipped: 1 ``` 单文件 `analyze` 会打印输入面板、提取的工件、IOC(已解除武装)、 YARA 匹配项,以及带有各项原因风险分解的彩色判定横幅。 ### 示例报告 请参阅 [`examples/`](examples/) 获取完整的生成报告(恶意 / 可疑 / 良性), 包含 HTML 和 JSON 格式,均由无害的合成文档生成。 ## 文档导航 | 文件 | 用途 | |------|---------| | `CLAUDE.md` | 构建上下文与规则(请优先阅读) | | `ARCHITECTURE.md` | 系统设计、数据流、核心数据结构 | | `REQUIREMENTS.md` | 依赖项、系统库、数据集、环境 | | `MODULES.md` | 包含函数签名的逐模块规范 | | `ML_PIPELINE.md` | 特征、训练、评估以及 CNN 进阶目标 | | `FORENSIC_REPORT.md` | 报告 schema + 输出示例 | | `ROADMAP.md` | 分阶段构建计划与里程碑 | ## 开发 ``` pip install -e ".[dev]" pytest # full test suite (synthetic fixtures only — no malware needed) ruff check src tests mypy src/madfa ``` 流水线能够优雅降级:如果 `yara-python`、`ssdeep`/`tlsh`、`python-magic` 或 `weasyprint` 不可用,MADFA 仍会运行(跳过该功能),而不会发生崩溃失败。核心流水线仅需要 pydantic、oletools、pdfminer.six、jinja2、typer,以及(用于 ML 步骤的)scikit-learn / xgboost。 ## 许可证与学术声明 专为学术课程作业而构建。仅限对您获得授权进行分析的样本使用。
标签:Apex, Go语言工具, IOC提取, YARA, 云安全监控, 云资产可视化, 恶意文档分析, 搜索语句(dork), 数字取证, 无服务器架构, 机器学习, 自动化脚本, 逆向工具, 静态分析