JakeBx/agentic-cti

GitHub: JakeBx/agentic-cti

一个基于 smolagents 和 OpenCTI 的智能威胁情报编排平台,负责协调多代理完成情报检索、持久化与自动化简报。

Stars: 2 | Forks: 0

# Agentic CTI 一个智能威胁情报平台,能够协调专用子代理来回答复杂的CTI查询、丰富并持久化情报、以及提供定期简报。一个管理型 `CodeAgent`(由 [smolagents](https://github.com/huggingface/smolagents) 提供支持)协调领域特定的代理,选择并委派任何完成任务所需的组合。 ``` Managing Agent ├── OpenCTI Agent — structured CTI: threat actors, TTPs, malware, reports ├── OpenCTI Writer Agent — persist reports, notes, indicators, and relationships back to OpenCTI ├── OSINT Agent — CVE/NVD, CISA KEV, AlienVault OTX, asset-correlated vuln prioritisation ├── ATT&CK Agent — MITRE ATT&CK Navigator layer generation from OpenCTI Attack-Patterns ├── Wikipedia Agent — background context on threat actors and techniques └── Refine Task Agent — LLM-only task reformulation and query clarification ``` 代理配置、模型选择和工具组合通过 [Hydra](https://hydra.cc) 管理,使得在不修改代码的情况下可以轻松切换模型并遍历不同架构。 ## 支持的使用场景 ### 情报检索 - **威胁行为者和战役画像** — 搜索 OpenCTI 的入侵集(Intrusion-Set)和战役(Campaign)对象,并补充维基百科背景上下文 - **TTP 和攻击模式发现** — 查询 OpenCTI 的攻击模式(Attack-Pattern)和行动方案(Course-Of-Action)对象,与 MITRE ATT&CK 对齐 - **恶意软件和工具分析** — 搜索 OpenCTI 军火库(Arsenal)中的恶意软件(Malware)、工具(Tool)和漏洞(Vulnerability)对象 - **报告和分析检索** — 从 OpenCTI 获取按关键词和时间窗口过滤的近期笔记(Notes)和报告(Reports) - **IOC 信誉查询** — 查询 AlienVault OTX 以获取 IP 地址、域名、文件哈希、CVE 等信息 ### 漏洞情报 - **CVE 研究** — 在 NIST NVD 上基于关键词和 ID 进行搜索 - **已知被利用漏洞分类** — 从 CISA KEV 列表中检索并按产品或关键词过滤 - **资产关联的漏洞优先级** — 将逗号分隔的系统名称列表或供应商/产品关键词与 CISA KEV 和 NVD 进行交叉引用;结果按 KEV 状态和 CVSS 评分排序 ### ATT&CK 集成 - **导航层生成** — 通过查询 OpenCTI 攻击模式生成 ATT&CK Navigator JSON,可直接导入 [ATT&CK 导航器](https://mitre-attack.github.io/attack-navigator/) ### 情报持久化 - **写回 OpenCTI** — 从代理合成的情报创建报告(Reports)、笔记(Notes)、指标(IOCs)和 STIX 关系,默认标记为 TLP:AMBER ### 报告 - **按需威胁简报** — 通过 Gradio UI 或 REST API 生成面向政府、金融或特定行业受众的结构化 Markdown 报告 - **定期简报** — 通过 cron 驱动的自动化报告,保存为 Markdown 文件(每周威胁简报、每日 KEV 摘要、每月威胁行为者回顾) ### 程序化集成 - **REST API** — 通过 HTTP 提交任务并获取结果,用于 SIEM/SOAR 集成和流水线自动化 ## 架构 ### 代理类型 提供三种代理架构,可通过 `conf/dashboard.yaml` 选择: | 类型 | 描述 | |---|---| | `managing` | 编排协调器,动态委派给专用子代理。适用于复杂的多源查询。 | | `all_in_one` | 单一代理访问所有工具。推理路径更简单,开销较低,适合直接任务。 | | `simple` | 单一领域特定代理(例如 `opencti`、`osint`、`attack`)。适用于专注查询。 | ### 模型 所有模型均通过 [OpenRouter](https://openrouter.ai) 访问: | 键 | 模型 | |---|---| | `ms_ds_r1` | 微软 MAI-DS R1(默认) | | `qwen_235b` | Qwen 3 235B | | `qwen_2.5_coder` | Qwen 2.5 Coder 32B | | `deepseek_r1` | DeepSeek R1 | ### 工具 | 模块 | 工具 | 来源 | |---|---|---| | `opencti_tools` | `search_analyses` | OpenCTI 笔记与报告 | | | `search_threats` | OpenCTI 入侵集与战役 | | | `search_techniques` | OpenCTI 攻击模式与行动方案 | | | `search_arsenal` | OpenCTI 恶意软件、工具与漏洞 | | | `get_systems` | OpenCTI 系统清单 | | `opencti_write_tools` | `create_report` | OpenCTI 写入(默认 TLP:AMBER) | | | `create_note` | OpenCTI 写入 | | | `create_indicator` | OpenCTI 写入 | | | `create_relationship` | OpenCTI 写入 | | `osint_tools` | `search_cves` | NIST NVD | | | `get_cve` | NIST NVD | | | `get_all_exploited_vulnerabilities` | CISA KEV | | | `vulnerabilities_keyword_filter` | CISA KEV | | | `search_indicator` | AlienVault OTX | | | `correlate_systems_with_vulnerabilities` | CISA KEV + NIST NVD | | `attack_tools` | `generate_navigator_layer` | OpenCTI → ATT&CK 导航器 JSON | | `general` | `todays_date` | 系统日期 | ## 构建与运行项目 ### 先决条件 - Python 3.11(推荐使用 conda) - 一个正在运行的 [OpenCTI](https://docs.opencti.io) 实例 - OpenRouter 和 AlienVault OTX 的 API 密钥 ### 环境变量 在项目根目录创建 `.env` 文件: ``` OPENCTI_URL=http://localhost:8080 OPENCTI_TOKEN=your_opencti_token ALIENVAULT_API_KEY=your_alienvault_api_key OPENROUTER_API_KEY=your_openrouter_api_key ``` ### 设置环境 ``` conda create -n agentic-cti python=3.11 conda activate agentic-cti pip install -r requirements.txt ``` ### 运行 Gradio UI ``` python dashboard.py ``` 交互式聊天界面将在 `http://localhost:7861` 可用。默认配置使用微软 MAI-DS R1 模型和 `managing_agent` 架构。 ### 使用 Docker 运行 ``` docker build -t threat-intel-agent . docker run -p 7861:7861 --env-file .env threat-intel-agent ``` ### 运行 REST API REST API 通过 HTTP 暴露代理系统,供 SIEM/SOAR 集成和自动化流水线使用。 ``` uvicorn api:app --host 0.0.0.0 --port 8000 ``` **端点:** | 方法 | 路径 | 描述 | |---|---|---| | `POST` | `/query` | 提交任务;立即返回作业 ID | | `GET` | `/results/{id}` | 按作业 ID 轮询结果 | | `GET` | `/health` | 活跃性检查 | **示例:** ``` # 提交任务 curl -X POST http://localhost:8000/query \ -H "Content-Type: application/json" \ -d '{"task": "What are the top 5 TTPs used by APT28?", "agent": "managing_agent", "model": "ms_ds_r1"}' # 轮询结果 curl http://localhost:8000/results/ ``` ### 运行调度器 调度器按照 cron 计划执行自动威胁简报,并将 Markdown 报告保存到 `reports/` 目录。 默认计划(可在 `conf/schedules.yaml` 中配置): | 计划 | Cron 表达式 | 描述 | |---|---|---| | `weekly_threat_brief` | 周一 08:00 UTC | 每周威胁情报摘要 | | `daily_kev_digest` | 每日 07:00 UTC | 过去 24 小时的新 CISA KEV 条目 | | `monthly_threat_actor_review` | 每月 1 日 09:00 UTC | 每月活跃威胁行为者回顾 | 要修改计划或添加新计划,请编辑 `conf/schedules.yaml`。每个条目指定一个 `cron` 表达式、`agent`、`模型` 和 `任务` 提示。 ## 运行评估 任务在 `task.txt` 中定义(每行一个)。每次运行将保存一个 JSON 结果到 `results/`,其中包含模型名称、代理名称、原始输出和质量评分。 运行单个配置(默认为 `qwen_2.5_coder` + `managing_agent`): ``` python evaluations.py ``` 并行遍历所有模型 × 代理组合: ``` python evaluations.py --multirun ``` 该遍历涵盖 `{qwen_235b, qwen_2.5_coder, deepseek_r1}` × `{managing_agent, all_task_agent, opencti, osint, wikipedia}`。遍历配置位于 `conf/validation.yaml`。 每个结果包括一个 `scores` 块,包含启发式质量信号(Markdown 结构、推荐内容、威胁行为者提及),以支持跨运行比较。 ## 合成组织测试框架 项目包含一个参考组织配置文件——**联邦金融情报组(FFIU)**,用于集成测试和针对真实、组织范围场景的评估。 ### 为何使用合成组织? 通用评估任务(`task.txt`)测试通用能力,但无法验证针对特定资产的查询,例如“我们的哪些系统存在已知被利用的漏洞?”或“为针对我们的威胁行为者生成 ATT&CK 导航层”。FFIU 配置文件通过提供一个真实但完全虚构的组织及其定义的资产清单和威胁行为者上下文,填补了这一空白。 ### FFIU 配置文件 ``` Name: Federal Financial Intelligence Unit (FFIU) Sector: Government / Financial Regulation Mission: Financial crime intelligence, interbank reporting, sanctions monitoring Staff: 800 | Systems: 60 ``` **代表性系统清单**(测试框架任务中使用的子集): | 系统 | 供应商 | 产品 | 关键性 | |---|---|---|---| | 案例管理平台 | Palantir | Gotham | 关键 | | 制裁筛查引擎 | Actimize | AML/制裁 | 关键 | | 银行间消息网关 | SWIFT | Alliance Gateway | 关键 | | SIEM | Splunk | 企业 | 高 | | 身份与访问管理 | Okta | Workforce Identity | 高 | | VPN/远程访问 | Palo Alto | GlobalProtect | 高 | | 财务报告门户 | Microsoft | SharePoint | 高 | | 电子邮件网关 | Proofpoint | 电子邮件防护 | 中 | **关注的威胁行为者:** APT28、APT41、FIN7、Lazarus Group、TA505 ### 框架任务 这些任务针对 FFIU 上下文执行四个优先使用场景: 1. **漏洞优先级(US-03)** — 交叉引用 CISA KEV 和 NVD 与 FFIU 的系统清单,返回优先级修复列表 2. **ATT&CK 导航层(US-05)** — 为针对金融监管基础设施的 APT28 和 Lazarus Group 生成 ATT&CK Navigator JSON 3. **检测规则生成(US-06)** — 为 FIN7 针对金融组织使用的顶级 5 个 TTP 生成 Sigma 检测规则 4. **定期威胁简报(US-04)** — 为 FFIU 生成限定于 APT28、APT41 和 FIN7 活动的每周威胁简报 要针对管理代理运行 FFIU 范围的任务: ``` # Example — asset-correlated vulnerability prioritisation # 调整任务文本以匹配 FFIU 系统库存 python evaluations.py agent_name=managing_agent model_name=ms_ds_r1 ``` 有关使用种子 OpenCTI 实例的完整测试框架自动化,请参见 `tests/fixtures/`(待添加的种子脚本)。 ## 运行测试 ``` pytest tests/ ``` ## 项目结构 ``` agentic-cti/ ├── agents.py # Agent factory — simple, all-in-one, and managing configurations ├── api.py # FastAPI REST interface (port 8000) ├── dashboard.py # Gradio UI entry point (port 7861) ├── scheduler.py # APScheduler cron runner for automated briefings ├── evaluations.py # Evaluation harness — sweeps model × agent combinations ├── task.txt # Evaluation task definitions (one per line) ├── Dockerfile # Container build ├── requirements.txt # Python dependencies ├── conf/ │ ├── dashboard.yaml # Model library, agent library, default selections │ ├── schedules.yaml # Scheduled briefing definitions (cron, agent, model, task) │ └── validation.yaml # Evaluation sweep parameters ├── tools/ │ ├── __init__.py # Package exports │ ├── opencti_tools.py # Read tools: search threats, techniques, arsenal, analyses, systems │ ├── opencti_write_tools.py # Write tools: create reports, notes, indicators, relationships │ ├── osint_tools.py # OSINT tools: NVD, CISA KEV, AlienVault OTX, asset correlation │ ├── attack_tools.py # ATT&CK Navigator layer generation │ └── general.py # Utility tools (todays_date) ├── tests/ │ ├── test_agents.py # Agent factory and scoring tests │ └── test_tools.py # Tool functionality tests ├── experiments/ │ └── dspy_agent.py # Experimental DSPy-based implementation (not integrated) └── reports/ # Output directory for scheduled briefing markdown files ```
标签:Agentic CTI, ATT&CK代理, CISA KEV, CVE研究, DAST, ESC4, Hydra配置, IOC信誉查询, NVD, OpenCTI, OSINT, OSINT代理, smolagents, TTPs发现, XSS, 代码代理, 任务精炼, 多代理系统, 大语言模型代理, 威胁情报, 威胁行为体画像, 工具组合, 开发者工具, 恶意软件分析, 情报持久化, 情报检索, 战役分析, 报告检索, 智能体编排, 查询澄清, 模型选择, 漏洞优先级评估, 漏洞情报, 管理代理, 维基百科代理, 网络测绘, 计划简报, 请求拦截, 资产关联, 逆向工具