Applpie18/report-to-detection

GitHub: Applpie18/report-to-detection

将非结构化的威胁情报报告自动转化为包含 IoC、ATT&CK 映射和 KQL 查询的检测包,解决情报到检测的工程化落地难题。

Stars: 1 | Forks: 0

# report-to-detection 将文字形式的**威胁情报报告**转化为可操作的检测包: 提取的 IoC、MITRE ATT&CK 技术映射,以及可直接验证的、适用于 Microsoft Defender / Sentinel 的 **KQL** 捕获 查询。 情报报告通常在被阅读后就被归档了。本项目填补了“我们阅读过该技术”与“我们能够捕获它”之间的空白——这一步骤如果手动完成,往往根本不会被 执行。 ## 架构 ``` flowchart LR A[Threat report
PDF text / prose] --> B[Regex IoC extraction
deterministic, in code] A --> C[Claude
structured outputs] B -->|clean IoC set| C C --> D[ATT&CK techniques
+ KQL queries
strict JSON schema] D --> E[Markdown detection
package] ``` 该 pipeline 将**模式匹配**与**判断**分离开来: - **IoC 通过代码提取** (`ioc.py`) 使用 regex —— 准确、免费,并且它会还原被脱敏的 指标 (`hxxp` → `http`, `[.]` → `.`)。模型永远不需要去模式匹配 那些库能做得更好的事情,而且它不会凭空捏造出不存在的 IoC。 - **模型负责推理** —— 将观察到的行为映射到真实的 ATT&CK 技术 ID 并编写 KQL —— 通过一次带有严格 JSON schema 的**结构化输出**调用完成, 因此结果始终是有效且可解析的。 ## 快速开始 ``` pip install -r requirements.txt cp .env.example .env # add your ANTHROPIC_API_KEY python -m report_to_detection --file samples/report.txt python -m report_to_detection --file samples/report.txt --format json ``` 该示例是一份示例性的 DarkGate 风格加载器报告(编码的 PowerShell、Run-key 持久化、C2 beaconing)—— 足以用于演练 IoC 提取和多技术 ATT&CK 映射。 ## 输出示例(结构) ``` ## MITRE ATT&CK 技术 - T1566.001 Phishing: Spearphishing Attachment - PDF attachment delivered the loader - T1059.001 PowerShell - encoded `powershell.exe -enc` executed the second stage - T1547.001 Registry Run Keys - persistence via HKCU\...\Run\Updater ## KQL hunting queries ### 编码的 PowerShell 执行 _Table: DeviceProcessEvents | Covers: T1059.001_ DeviceProcessEvents | where FileName =~ "powershell.exe" | where ProcessCommandLine has_any ("-enc", "-EncodedCommand") ``` ## 设计决策 **为什么使用结构化输出而不是 tool-calling 循环?** 此任务是一个单一的 转换 —— 报告输入,包输出 —— 中途无需查询外部状态。使用严格 schema 的 `output_config.format` 调用 更简单,并且保证结果可 解析。(我的另一个 [advisory-impact-agent](../advisory-impact-agent) repo 之所以使用 tool-calling 循环,正是因为*那个*任务需要查找信息。) **不受信任的输入。** 报告来自外部源,因此它被隔离在 `` 标签中,并且系统提示词告诉模型对其进行分析,绝不要遵循其中嵌入的 指令。 **Human-in-the-loop。** 生成的 KQL 被标记为草稿,需要在部署前在 Defender/Sentinel 中进行验证 —— 该 pipeline 生成的是检测工程的*起点*,而不是 自动部署的规则。 ## Evals ``` python evals/run_evals.py ``` `evals/cases.jsonl` 涵盖了编码的 PowerShell、Run-key 持久化、钓鱼 附件、凭据转储,以及脱敏 IoC 的还原。每个用例都在两个 维度上进行评分: - **IoC recall** — 是否提取了预期的指标类型?(确定性,离线) - **ATT&CK coverage** — 模型是否映射了预期家族中的至少一种技术 (通过 ID 前缀匹配,因此 `T1059` 涵盖 `T1059.001`)? 这是生产方法论:标记 ground truth,测量 recall 和 coverage, 调整提示词,重新运行。 ## 局限性 - ATT&CK 映射质量取决于模型;eval 检查的是技术*家族*,而不是 确切的子技术。 - 域名 regex 使用一个较小的停用词表来减少噪声;生产版本将使用 维护的允许列表和 TLD 验证。
标签:AI安全, Chat Copilot, DLL 劫持, KQL, OpenCanary, URL发现, 大语言模型, 威胁情报, 安全检测, 开发者工具, 网络调试, 自动化, 逆向工具