LesCondones/Cyber-Threat-Intelligence-Agent

GitHub: LesCondones/Cyber-Threat-Intelligence-Agent

基于 LangGraph 的多智能体威胁情报研究系统,能够自动完成主题调研、IOC 提取、框架分析并生成完整的 PDF 情报报告。

Stars: 0 | Forks: 0

# Deep Agents: 网络威胁情报 一个基于 **LangGraph** 构建的多智能体系统,可端到端研究威胁主题,并生成一份独立完整的 PDF 情报报告。它能够执行并发的基于来源的研究、提取并丰富 IOC、对威胁行为者进行画像、将发现映射到 MITRE ATT&CK、应用经典的 CTI 框架(Diamond Model、Cyber Kill Chain、Admiralty 评级)、生成优先级建议和可部署的检测逻辑,并将所有内容持久化到 SQLite 知识图谱以及本地 Chroma 向量库中,以实现语义检索。 ## 架构 ``` User Input (Research Topic) | CoordinatorAgent.investigate() | LangGraph State Machine: | plan ──► research ──► mitre_map ──► profile_actors ──► enrich_iocs | framework_analysis | generate_report ◄── executive_summary ◄── detection_logic ◄── recommendations | +── IOCStore.persist() ──► SQLite knowledge graph +── VectorStore.upsert() ──► Chroma (semantic search index) +── ReportGenerator.create_report() ──► PDF (single deliverable) ``` PDF 是**唯一**的报告产物 —— 没有单独的 STIX/CSV/规则文件。所有 渲染的检测内容和汇总的 IOC 都包含在 PDF 中,因此它是 独立完整的。结构化数据还会额外持久化到 SQLite(作为事实来源) 并嵌入到 Chroma 中(用于语义搜索)。 ### 图节点 | 节点 | 功能 | 描述 | |------|----------|-------------| | `plan` | `plan_node` | LLM 将主题拆分为 3–5 个带有针对性查询的特定子主题 | | `research` | `research_node` | 每个子主题并发执行 SubAgent(每个子主题一次合并的 LLM 调用) | | `mitre_map` | `mitre_node` | 通过一次调用将综合发现映射到 MITRE ATT&CK 技术 | | `profile_actors` | `actor_node` | 识别并对威胁行为者组织进行画像分析 | | `enrich_iocs` | `enrich_node` | VirusTotal / Shodan / AbuseIPDB 信誉查询 | | `framework_analysis` | `framework_node` | Diamond Model、Cyber Kill Chain、Admiralty 置信度评估 | | `recommendations` | `recommendations_node` | 具有负责人和理由的、按优先级排序的可操作建议 | | `detection_logic` | `detection_logic_node` | Sigma 规则、YARA 规则、Splunk SPL 和 Microsoft KQL 狩猎查询 | | `executive_summary` | `summary_node` | TL;DR 要点 + 威胁状态 + 基于来源的执行摘要 | | `generate_report` | `report_node` | PDF 生成 + SQLite 持久化 + Chroma 索引 | ### Agent 组件 | Agent | 文件 | 用途 | |-------|------|---------| | **Coordinator** | `main.py` | LangGraph 编排,CLI,公开 API | | **SubAgent** | `agents/subagent.py` | 基于来源的研究与关键发现提取 | | **Web Searcher** | `agents/searcher.py` | Tavily API 集成(带 SQLite 结果缓存) | | **Web Scraper** | `agents/scraper.py` | LangChain WebBaseLoader,用于直接抓取 URL | | **IOC Extractor** | `agents/ioc_extractor.py` | 通过正则表达式提取 IP、域名、URL、哈希、CVE 和恶意软件 | | **MITRE Mapper** | `agents/mitre_mapper.py` | 基于 LLM 的 ATT&CK 技术映射与去重 | | **Enrichment Agent** | `agents/enrichment_agent.py` | VirusTotal、Shodan、AbuseIPDB 查询 | | **Threat Actor Profiler** | `agents/threat_actor_profiler.py` | 基于 LLM 的结构化威胁行为者画像 | | **Framework Analyst** | `agents/framework_analyst.py` | Diamond Model、Cyber Kill Chain、Admiralty 置信度评估 | | **Recommendations Generator** | `agents/recommendations_generator.py` | 按优先级排序的、可直接转为工单的建议 | | **Detection Logic Generator** | `agents/detection_logic_generator.py` | Sigma / YARA / Splunk SPL / KQL 检测内容 | | **Source Classifier** | `agents/source_classifier.py` | 确定性来源类型标记(政府 / 供应商 / 研究 / 新闻 / 博客) | | **Feed Monitor** | `agents/feed_monitor.py` | RSS / CVE 订阅源摄取 | | **IOC Store** | `database/ioc_store.py` | SQLite 知识图谱 | | **Vector Store** | `database/vector_store.py` | Chroma + sentence-transformers 语义搜索索引 | | **Report Generator** | `reports/generator.py` | 包含图表、表格和框架部分的 PDF 报告 | ## 设置 1. **安装依赖**: ``` uv sync ``` 2. **配置环境**: ``` cp .env.example .env ``` 3. **将您的 API 密钥添加到** `.env`: ``` TAVILY_SEARCH_API_KEY=your_key_here ANTHROPIC_API_KEY=your_key_here # Anthropic model(默认为 claude-sonnet-4-6) ANTHROPIC_MODEL=claude-sonnet-4-6 # 可选的 enrichment keys(未设置则跳过 enrichment) VIRUSTOTAL_API_KEY= SHODAN_API_KEY= ABUSEIPDB_API_KEY= # 可选的 semantic-search 设置(安全的默认值;无需 API key) EMBEDDING_MODEL=all-MiniLM-L6-v2 VECTOR_DB_PATH=database/chroma ``` 只有 `TAVILY_SEARCH_API_KEY` 和 `ANTHROPIC_API_KEY` 是必需的。丰富化(Enrichment)相关的密钥是 可选的 —— 如果缺少某个提供商的密钥,将跳过该提供商的丰富化操作。语义搜索 embedding 在本地运行,不需要密钥。 ## 用法 ### 运行 CLI ``` uv run python main.py ``` 可用命令: - **[topic]** — 调查任何研究主题(生成 PDF 报告) - **feeds** — 检查所有威胁情报源 - **feeds:ransomware** — 检查按关键字过滤的情报源 - **search \** — 对存储的发现、摘要、威胁行为者、建议和检测规则进行语义搜索。添加 `--type=finding|summary|actor|recommendation|detection` 以按内容类型进行过滤。 - **stats** — 显示知识图谱统计信息 - **exit** — 退出 ### Streamlit UI ``` uv run streamlit run app.py ``` 提供调查运行器和带有语义搜索框的知识库页面。 `.streamlit/config.toml` 禁用了 Streamlit 的文件监视器 —— 本地 embedding 模型 引入了一些模块,否则这些模块会用无害的 `torchvision` 警告淹没控制台。(重启应用以应用代码更改。) ### 编程方式用法 ``` from main import CoordinatorAgent coordinator = CoordinatorAgent() # 完整调查 — 返回生成的 PDF 报告的路径 report_path = coordinator.investigate("Ransomware trends 2024") # 检查 threat feeds result = coordinator.check_feeds(keyword="ransomware") # result = {"alerts": [...], "cves": [...]} # 查询 knowledge graph (SQLite) stats = coordinator.ioc_store.get_graph_summary() high_risk = coordinator.ioc_store.get_high_risk_iocs(min_score=60) relationships = coordinator.ioc_store.get_relationships("LockBit") # 跨已存储 intel 进行 semantic search(Chroma vector store) hits = coordinator.semantic_search("ransomware affiliates targeting healthcare", k=10) actor_hits = coordinator.semantic_search("APT29 phishing", k=5, types=["actor"]) ``` ### 更改 Claude 模型 编辑 `.env`: ``` ANTHROPIC_MODEL=claude-sonnet-4-6 ``` ## 工作原理 1. **计划** — LLM 为该主题生成特定的子主题和有针对性的搜索查询。 2. **研究** — SubAgent 并发运行:搜索、基于来源进行分析、提取 IOC、评估严重性。 3. **MITRE 映射** — 将发现映射到 ATT&CK 技术/战术并进行去重。 4. **威胁行为者画像** — 从发现中识别并对威胁行为者组织进行画像。 5. **IOC 丰富化** — 针对 VirusTotal、Shodan 和 AbuseIPDB 检查 IP、域名和哈希。 6. **框架分析** — 应用 Diamond Model、Cyber Kill Chain 和 Admiralty 置信度评级。 7. **建议** — 生成具有负责人和理由的、按优先级排序且可直接转为工单的操作。 8. **检测逻辑** — 根据观察到的 TTP 和 IOC 生成 Sigma、YARA、Splunk SPL 和 KQL 检测内容。 9. **执行摘要** — 带有 TL;DR 要点、威胁状态、置信度和情报缺口的基于来源的摘要。 10. **报告 + 持久化** — 生成 PDF 报告;结构化数据持久化到 SQLite;文本产物 embedding 到 Chroma 中。 ## 输出 ### PDF 报告(唯一交付物) 该报告是以 BLUF(结论先行)为导向的 —— 管理层关注的材料在前,原始数据在后 —— 并且有意 避免在多个地方重述相同的情报。部分包括: - **TL;DR 卡片**(面向管理层的 2–4 个要点) - **时效性标头**(情报收集时间戳 + 威胁状态:活跃 / 历史的 / 预期的) - **情报评估**(单行的 Admiralty 置信度 + 可靠性、情报缺口、收集优先级) - **执行摘要**(基于来源的正文) - **优先级建议**(操作 / 负责人 / 理由,按优先级进行颜色编码) - **检测逻辑**(位于预格式化代码块中的完整 Sigma / YARA / Splunk SPL / KQL 规则主体) - **威胁严重性概述**(表格 + 条形图) - **Diamond Model 分析** - **Cyber Kill Chain**(已观察与未观察阶段的流程图 + 每个已观察阶段的一行简明信息) - **详细发现**包含分析、IOC 和来源引用(每个来源均标记为政府 / 供应商 / 研究 / 新闻 / 博客) - **威胁行为者画像**(动机、目标、技术、恶意软件、活动) - **IOC 丰富化结果**(风险评分、检测计数、高风险详情) - **MITRE ATT&CK 技术映射** - **统一的入侵指标**(已去重,可直接复制粘贴) ### 知识图谱 (SQLite) 持久化存储会跟踪: - 调查与发现 - 包含丰富化数据和风险评分的 IOC - 威胁行为者画像 - MITRE ATT&CK 映射 - 实体关系(行为者 → 使用 → 恶意软件 → 与...通信 → 域名) ### 语义搜索 本地向量库与 SQLite 并存。每次调查后,以下 内容将使用本地的 `sentence-transformers` 模型(默认为 `all-MiniLM-L6-v2`)进行 embedding,并持久化到 `database/chroma/`: - 发现分析(按子主题)及其严重性和主题元数据 - 执行摘要(按调查) - 威胁行为者画像(描述、目标、技术、恶意软件) - 建议(操作 + 理由 + 引用) - 检测规则(Sigma、YARA、Splunk SPL、KQL — 标题 + 描述 + 主体) 文档 ID 是确定性的(例如 `inv:42:finding:0`、`actor:lockbit`),因此重新 运行调查会干净地执行 upsert,而不会导致条目重复。无需 API 密钥 — embedding 在本地且离线运行。可在 `.env` 中使用 `EMBEDDING_MODEL` 和 `VECTOR_DB_PATH` 覆盖模型或路径。 ## 订阅源监控 内置 RSS 订阅源: - CISA 警报和已知被利用的漏洞 - NVD CVE 数据库 (API) - Krebs on Security - The Hacker News - BleepingComputer - Dark Reading ## 项目结构 ``` / ├── .env # API keys & config ├── .env.example # Config template ├── .streamlit/config.toml # Streamlit settings (file watcher disabled) ├── main.py # LangGraph coordinator + CLI + public API ├── app.py # Streamlit UI (investigation runner + knowledge base) ├── config.py # Settings (Anthropic model, keys, embedding model, vector path) ├── agents/ │ ├── searcher.py # Tavily web search (with SQLite cache) │ ├── scraper.py # WebBaseLoader URL scraper │ ├── subagent.py # Source-grounded research subagent │ ├── ioc_extractor.py # IOC extraction │ ├── mitre_mapper.py # MITRE ATT&CK mapping │ ├── enrichment_agent.py # VirusTotal/Shodan/AbuseIPDB │ ├── threat_actor_profiler.py # Threat actor profiling │ ├── framework_analyst.py # Diamond Model, Kill Chain, confidence │ ├── recommendations_generator.py # Prioritized actionable recommendations │ ├── detection_logic_generator.py # Sigma/YARA/SPL/KQL detection content │ ├── source_classifier.py # Deterministic source-type tagging │ └── feed_monitor.py # RSS/CVE feed monitoring ├── database/ │ ├── ioc_store.py # SQLite knowledge graph │ ├── vector_store.py # Chroma semantic search index │ └── search_cache.py # Tavily search-result cache ├── reports/ │ └── generator.py # PDF report generator └── pyproject.toml # Dependencies ``` ## API 密钥来源 | 服务 | URL | 免费层级 | |---------|-----|-----------| | Tavily | https://app.tavily.com | 1,000 次搜索/月 | | Anthropic | https://console.anthropic.com | 按量付费 | | VirusTotal | https://www.virustotal.com | 4 次请求/分钟 | | Shodan | https://account.shodan.io | 有限查询 | | AbuseIPDB | https://www.abuseipdb.com | 1,000 次检查/天 | ## 示例主题 - "针对金融机构的 APT 组织" - "云基础设施中的零日漏洞" - "2024 年勒索软件趋势" - "软件开发中的供应链攻击" - "针对医疗保健的钓鱼活动"
标签:ATT&CK框架, DLL 劫持, Kubernetes, 多智能体, 大语言模型, 威胁情报, 开发者工具, 网络安全, 自动化分析, 跨站脚本, 逆向工具, 隐私保护