mariolpzq/cti-attack-mapper

GitHub: mariolpzq/cti-attack-mapper

一个基于 LLM 和 RAG 的智能体,自动从 CTI 报告中提取 MITRE ATT&CK 技术并输出结构化结果。

Stars: 0 | Forks: 0

# CTI ATT&CK 映射器(开发中) 一个 LLM 智能体,使用 LangChain 进行智能体编排,并基于 MITRE ATT&CK 企业知识库进行 RAG 检索,从网络威胁情报(CTI)报告中提取 MITRE ATT&CK 技术。 ## 工作原理 ``` CTI report (text) │ ▼ ┌─────────────────────┐ ┌──────────────────────┐ │ Extraction Agent │◄────►│ ATT&CK Vector Store │ │ (LangChain+Groq) │ │ (FAISS + MiniLM) │ └─────────┬───────────┘ └──────────────────────┘ │ ▼ Structured JSON { techniques[], evidence quotes } │ ▼ Eval harness precision / recall / F1 vs published ground truth ``` 给定一份 CTI 报告,该智能体识别出离散的对手行为,通过 RAG 查询 ATT&CK 向量存储,并返回一个结构化的 JSON 列表,包含匹配的技术及来自源文本的支持性证据引用。 ## 环境搭建 ``` # 1. 安装 uv curl -LsSf https://astral.sh/uv/install.sh | sh # 2. 安装依赖项 uv sync # 3. 配置 API 密钥 # 编辑 .env — 设置 GROQ_API_KEY # 可选设置 HF_TOKEN # 4. 构建 ATT&CK 向量存储 uv run python -m src.attack_loader ``` ## 使用方法 **从单份报告中提取技术:** ``` uv run python -m src.agent eval/reports/report_1.txt ``` **在所有报告上运行完整评估:** ``` uv run python -m eval.run_eval ``` 结果输出到 stdout 并写入 `eval/results.md`。 ## 仓库结构 ``` cti-attack-mapper/ ├── src/ │ ├── attack_loader.py # Download ATT&CK STIX → embed → FAISS │ ├── tools.py # search_attack_techniques RAG tool │ └── agent.py # LangChain agent + extract_techniques() ├── eval/ │ ├── run_eval.py # Eval harness (precision/recall/F1) │ ├── reports/ # report_N.txt + report_N_truth.json │ └── results.md # Results and error analysis └── pyproject.toml ``` ## 结果 参见 `eval/results.md`。 ## 局限性 - 未进行微调;完全依赖提示词 + RAG 检索。 - 报告截断至约 8k tokens。 - 仅支持严格的 T-ID 精确匹配。 - 评估集较小(3 份报告)。 ## 相关工作 本项目属于从 CTI 文本中自动化提取 ATT&CK 技术这一研究脉络的一部分。主要参考文献如下: **TRAM(Threat Report ATT&CK Mapper)** — MITRE Engenuity / Center for Threat-Informed Defense 该任务的经典基线方法。最初在 11,300 条标注的 CTI 句子上微调 SciBERT,覆盖 50 种最常见的 ATT&CK 技术。后续更新为使用微调后的 LLM。一个关键局限:标注工作量将覆盖范围限制在约 600+ 种技术中的 50 种。 → [GitHub](https://github.com/center-for-threat-informed-defense/tram) · [CTID 项目页面](https://ctid.mitre.org/projects/threat-report-attck-mapper-tram/) **"Towards Effective Identification of Attack Techniques in CTI Reports using LLMs"**(arXiv 2505.03147, 2025) 在两个标注数据集上对零样本 Llama2 变体与 TRAM(SciBERT)进行基准测试,比较了在有无基于 LLM 的报告摘要预处理步骤下的表现。报告了每种配置的 F1 分数——与本项目的方法直接可比。 → [arXiv:2505.03147](https://arxiv.org/abs/2505.03147) **"Instantiating Standards: Enabling Standard-Driven TTP Extraction with Evolvable Memory"**(arXiv 2505.09261, 2025) 提出将 ATT&CK 标准定义转换为双层"可进化记忆",供 LLM 查询和更新。精确指出了本项目面临的检索歧义问题:数百种描述重叠的技术使得基于 RAG 的消歧变得困难。 → [arXiv:2505.09261](https://arxiv.org/abs/2505.09261) **"LLMCloudHunter"**(arXiv 2407.05194, 2024) 用于从面向云的 OSCTI 中提取 TTP、IoC 和 API 调用的 LLM 流水线,精确率/召回率达 80%/83%。使用 STIX 格式的 ATT&CK 数据作为知识源——与本项目的设计选择相同。 → [arXiv:2407.05194](https://arxiv.org/abs/2407.05194) **"Security Logs to ATT&CK Insights: LLMs for Threat Understanding"**(arXiv 2510.20930, 2024) 将 LLM 应用于 IDS 日志而非散文式 CTI 报告——将行为阶段从遥测数据映射到 ATT&CK 技术。相关之处在于相同的 RAG-over-ATT&CK 设计可应用于结构化日志数据,这也是本项目未来可扩展的方向。 → [arXiv:2510.20930](https://arxiv.org/abs/2510.20930) **"MITRE ATT&CK Applications in Cybersecurity and The Way Forward"**(arXiv 2502.10825, 2025) 对基于 ATT&CK 的研究全景进行综述,涵盖 TTP 提取、恶意软件检测、APT 归因和 SOC 集成。很好地展示了本项目在更广泛文献中的定位。 → [arXiv:2502.10825](https://arxiv.org/abs/2502.10825)
标签:AMSI绕过, Apex, Cloudflare, DLL 劫持, FAISS, LangChain, meg, MiniLM, MITRE ATT&CK, NLP, RAG, Ruby, STIX, 企业安全, 信息安全, 向量化, 向量检索, 大语言模型, 威胁情报, 威胁检测, 开发者工具, 攻击技术提取, 机器学习, 深度学习, 知识库, 结构化提取, 网络安全, 网络资产管理, 自动化分类, 评估工具, 轻量级, 逆向工具, 隐私保护