AbdullahAlsmadi/auto-cti

GitHub: AbdullahAlsmadi/auto-cti

该项目基于 CrewAI 构建自主多 Agent 流水线,自动化完成网络威胁情报收集、漏洞筛选验证与高管报告生成,解决 CVE 数量激增导致人工分诊瓶颈的问题。

Stars: 0 | Forks: 0

# 🛡️ Auto-CTI — 自主网络威胁情报筛选与报告网络 **学术研究项目** — 展示一个用于自动化网络安全威胁情报的生产级多 Agent AI pipeline。 **作者:** Abdullah Al Smadi ([ORCID: 0009-0006-9214-9110](https://orcid.org/0009-0006-9214-9110))
**指导教师:** Dr. Ahmet Albayrak
**机构:** Düzce University
**许可证:** [Apache License 2.0](LICENSE)
## 📋 目录 - [出版物与摘要](#publication--abstract) - [概述](#overview) - [核心功能](#key-features) - [系统架构](#system-architecture) - [Agent 描述](#agent-descriptions) - [技术栈](#technology-stack) - [项目结构](#project-structure) - [前置条件](#prerequisites) - [安装与配置](#installation--setup) - [配置说明](#configuration) - [运行系统](#running-the-system) - [输出与报告](#output--reports) - [验证指标](#validation-metrics) - [数据源与标准](#data-sources--standards) - [局限性与未来改进](#limitations--future-enhancements) - [引用](#citation) - [参考文献](#references) ## 📄 出版物与摘要 **论文标题:** *Auto-CTI: An Autonomous Multi-Agent Framework for Cyber Threat Intelligence Triage and Reporting*(待发表)
**DOI:** [发表后添加] **摘要:** Common Vulnerabilities and Exposures (CVEs) 数量的指数级增长,对依赖人工进行威胁筛选的安全运营中心构成了重大挑战。本研究提出了 Auto-CTI,这是一个基于大型语言模型 (LLMs) 构建的自主多 Agent 框架,旨在自动化网络威胁情报 (CTI) pipeline。该系统利用三个专门的 Agent(Scout、Triage 和 Publisher),自主从权威来源收集数据,以数学方式验证 CVSS v3.1 分数,将威胁映射到 MITRE ATT&CK 框架,并在 8 个不同的数据库中发现概念验证 exploits。评估结果表明,在 CVSS 验证方面具有很高的准确性,并将筛选生命周期从几小时大幅缩短至几分钟,最终输出结构化的 JSON feeds 和可直接提交给管理层的 TLP:AMBER PDF 简报。 ## 概述 **Auto-CTI** 是一个使用 [CrewAI](https://github.com/joaomdmoura/crewAI) 框架构建的自主多 Agent 网络威胁情报 (CTI) pipeline。它旨在通过自动执行以下操作来模拟真实世界安全运营中心 的工作流程: 1. **收集**来自官方来源(NIST NVD、GitHub Advisory Database、OSV.dev、AlienVault OTX)的最新 CVEs。 2. **筛选**威胁,利用真实的 CVSS v3.1 分数、CWE 分类、MITRE ATT&CK 映射,并从 8 个以上的 exploit 数据库中丰富概念验证信息。 3. **发布**结构化的高管简报,包括 JSON feeds 和带有可点击参考超链接的专业 PDF 报告。 该系统是完全自动化的——只需一条命令即可端到端运行整个 pipeline。基于 Streamlit 构建的 SOC dashboard 提供了实时监控、进度跟踪和报告下载功能。 ## 核心功能 - ✅ **完全自动化的 pipeline** — 从数据收集到高管报告生成 - ✅ **CVSS 分数交叉验证** — 对照 NVD、CVE.org 和 Tenable 检查每个分数,当没有官方分数时,通过每个 CVE 的分数来源标签区分权威来源分数与模型估计的分数 - ✅ **8 个以上的 PoC/exploit 来源** — NVD、GitHub(精选 + 综合)、Vulners、Packet Storm、inTheWild、Sploitus、0day.today、Exploit-DB - ✅ **专业的 PDF 报告** — TLP:AMBER 分类,带有指向官方参考的可点击超链接 - ✅ **安全的 API 密钥存储** — 密钥安全地存储在 `~/.auto-cti/.env` 中 - ✅ **交互式的首次运行设置** — 提示输入缺失的 API 密钥,并提供直接注册的 URL - ✅ **终端仪表板** — 带有 Agent 进度环和智能日志过滤的实时 SOC 控制台 - ✅ **一键安装** — 通过 Bash 脚本实现自动化的 Linux 设置 ## 系统架构 ``` ┌──────────────────────────────────────────────────────────────────────────────┐ │ Auto-CTI Pipeline │ │ │ │ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │ │ │ │ │ │ │ │ │ │ │ │ │ Scout │───▶│ Triage │───▶│ Publisher │───▶│ Dashboard │ │ │ │ Agent │ │ Agent │ │ Agent │ │ (Streamlit)│ │ │ │ │ │ │ │ │ │ │ │ │ │ Gemini │ │ Gemini │ │ Gemini │ │ Live │ │ │ │ Flash Lite │ │ Flash Lite │ │ Flash Lite │ │ Console │ │ │ │ (Cloud) │ │ (Cloud) │ │ (Cloud) │ │ Reports │ │ │ └─────────────┘ └──────────────┘ └──────────────┘ └────────────┘ │ │ │ │ │ │ │ NIST NVD + CVSS v3.1 + JSON Feed + │ │ GitHub Advisory CWE + MITRE PDF Report │ │ OSV.dev ATT&CK + PoC Clickable Links │ │ AlienVault OTX (8 sources) │ └──────────────────────────────────────────────────────────────────────────────┘ │ ┌─────────▼──────────┐ │ ~/.auto-cti/data/ │ │ (Secure Storage) │ └────────────────────┘ ``` 该 pipeline 由 `src/main_system.py` 使用 **CrewAI Flow** 进行编排,它强制执行顺序执行并带有阶段之间的依赖检查。 ## Agent 描述 ### Scout Agent (`src/scout_agent.py`) **角色:** 数据收集器 **LLM:** 通过 Google Gemini API(云端)使用 `gemini/gemini-3.5-flash-lite` 从多个具有自动回退机制的权威来源获取最新的 CVEs。对于发现的每个 CVE,它会提取: - 官方 CVE ID 和英文描述 - 真实的 **CVSS v3.1** 基础分数和严重性标签(Critical / High / Medium / Low) - **CWE** (Common Weakness Enumeration) ID — 漏洞的根本原因类别 - 来自 **AlienVault OTX** 的活跃威胁脉搏数据 **数据源(带自动回退):** 1. NIST NVD CVE API v2.0 — 主要来源 2. GitHub Advisory Database (GraphQL) — 主要回退 3. OSV.dev API — 次要回退 **去重:** 使用 **MAMORE**(跨运行跟踪已见过的 CVE ID),确保在不同的每日运行中绝不会重复报告同一个 CVE。 ### Triage Agent (`src/triage_agent.py`) **角色:** 威胁分析师 **LLM:** 通过 Google Gemini API(云端)使用 `gemini/gemini-3.5-flash-lite` 这是 pipeline 中情报密集度最高的 Agent。它处理 Scout 的原始数据,并为每个 CVE 生成结构化、可操作的威胁评估: | 字段 | 描述 | |---|---| | `CVE_ID` | 官方 CVE 标识符 | | `Finding_Name` | 简短易读的标题(3–8 个词) | | `Description` | 简明且达到分析师级别的 3 句描述 | | `CVSS_Score` | CVSS v3.1 的数字基础分数(例如 9.8) | | `CVSS_Severity` | 严重性标签(Critical / High / Medium / Low / None) | | `CVSS_Vector` | 完整的 CVSS v3.1 向量字符串 | | `CVSS_Breakdown` | 全部 8 个基础指标的人类可读值 | | `CWE_ID` | 根本原因弱点(例如 CWE-79, CWE-89) | | `MITRE_Mappings` | 相关的 ATT&CK 技术代码(例如 T1190) | | `Urgency_Score` | 基于 CVSS + 活跃利用信号的自定义 1–100 分数 | | `PoC` | 描述真实利用方式的 4 句技术概念验证 | | `References` | 可验证的 NVD、CVE.org 和 Tenable URL | **PoC 丰富来源(8 个来源):** 1. NVD / CVE.org 标记的 exploit 参考 2. GitHub 精选仓库(`nomi-sec/PoC-in-GitHub`, `trickest/cve` 等) 3. GitHub 综合仓库搜索 4. Vulners 聚合 exploit 索引 5. Packet Storm Security 6. inTheWild.io 7. Sploitus (聚合器) 8. Exploit-DB ### Publisher Agent (`src/publisher_agent.py`) **角色:** 报告员 **LLM:** 通过 Google Gemini API(云端)使用 `gemini/gemini-3.5-flash-lite` 将筛选后的数据编译成两份专业输出: - **JSON Feed** — 适合 SIEM 摄取的结构化机器可读报告 (`~/.auto-cti/data/publisher_agent_result/`) - **PDF 简报** — 可直接提交给管理层的 PDF,带有 TLP:AMBER 分类、严重性统计、执行摘要、关键行动清单、CVE 快速参考表以及每个 CVE 的详细发现。 PDF 生成直接在 Python 中使用 `fpdf2` 处理,无需依赖 LLM 进行数据枚举,从而确保准确性和完整性。 ### Dashboard (`src/dashboard.py`) **角色:** SOC 监控控制台 **技术:** Streamlit 该 dashboard 提供了一个实时 SOC 控制台,包含: - 每个 Agent (Scout, Triage, Publisher) 的进度环 - 带有智能过滤的实时 Agent 日志(移除 CrewAI 内部噪声、编码错误) - 显示 CVE 总数和严重性细分(Critical / High / Medium)的指标卡片 - 用于 PDF 和 JSON 的一键报告下载 - 带有所有先前报告下载按钮的报告历史记录 - 深色/浅色主题切换 - TLP:AMBER 分类横幅 ## 技术栈 | 组件 | 技术 | 用途 | |---|---|---| | Agent 框架 | CrewAI | 多 Agent 编排 | | Pipeline 编排 | CrewAI Flow | 顺序阶段控制 | | LLM(所有 Agent) | 通过 Google Gemini API 使用 `gemini/gemini-3.5-flash-lite` | 所有三个 Agent 的云端推理 | | CVE 数据来源(主要) | NIST NVD API v2.0 | 官方漏洞数据库 | | CVE 数据来源(回退) | GitHub Advisory Database | GraphQL API,始终可用 | | 威胁情报来源 | AlienVault OTX API | 活跃威胁脉搏数据 | | PoC/Exploit 来源 | 8 个不同的来源 | 全面的 exploit 覆盖 | | PDF 生成 | fpdf2 | 带有超链接的专业报告渲染 | | 仪表板 | Streamlit | SOC 监控界面 | ## 项目结构 ``` Auto_CTI/ ├── src/ # Core system modules and agents │ ├── utils/ │ │ ├── __init__.py │ │ └── secure_config.py # Environment and key management │ ├── __init__.py │ ├── dashboard.py # UI for live monitoring │ ├── main_system.py # Main CrewAI orchestration script │ ├── publisher_agent.py # JSON/PDF report generation │ ├── scout_agent.py # Threat discovery and CVE fetching │ └── triage_agent.py # Vulnerability analysis and verification ├── .gitignore # Git ignored files list (includes .vscode/) ├── install.sh # Linux installation and setup script ├── README.md # Project documentation ├── requirements.txt # Python dependencies ├── uninstall.sh # System cleanup script ├── LICENSE # Apache License 2.0 (full text) ├── NOTICE # Apache-2.0 attribution notice └── CITATION.cff # Citation metadata (GitHub "Cite this repository") ``` **运行时数据架构:** 在运行期间,活动的环境和数据库安全地存储在用户的主目录中: ``` ~/.auto-cti/ ├── .env # Active secure API keys (600 permissions) └── data/ ├── Scout_Agent_Results/ # Raw CVE data (cti_report.json) ├── triage_agent_result/ # Analyzed CVE list (Triaged_Report_.json) ├── publisher_agent_result/ # Executive JSON Feed (Executive_Briefing_.json) ├── Reports/ # Final PDF briefings (AutoCTI_Report_.pdf) ├── charts/ # Generated severity/PoC charts embedded in each PDF ├── MAMORE/ # Deduplication tracking (seen_cve_ids.json, triage_cache.json) └── PoC_Gap_Reports/ # Per-run report of CVEs with no external PoC found ``` ## 前置条件 在安装 Auto-CTI 之前,请确保您的系统满足以下要求: - **操作系统:** Linux(`install.sh` 和 `uninstall.sh` 脚本基于 Bash;已在 Arch Linux 和 Ubuntu 上测试) - **Python 版本:** 3.9+(主要在 3.11/3.12 上开发和测试) - **API 密钥:** 您需要以下各项的有效 API 密钥: - Google Gemini API(提供免费层级) - NIST NVD - GitHub Personal Access Token - AlienVault OTX - Vulners (可选) - OpenCVE (可选) ## 安装与配置 **1. 克隆仓库:** ``` git clone https://github.com/AbdullahAlsmadi/auto-cti.git cd auto-cti ``` **2. 运行安装脚本:** ``` chmod +x install.sh ./install.sh ``` 此脚本会创建一个虚拟环境 (`~/.auto-cti/venv`) 并设置必要的隐藏数据目录。 **3. 配置您的 API 密钥:** 该系统采用安全的配置方法。您必须将实际的 API 密钥添加到位于您主目录的活动环境文件中: ``` nano ~/.auto-cti/.env ``` ## 配置说明 在首次运行时,系统将以交互方式提示输入任何缺失的 API 密钥及注册 URL。或者,您可以手动编辑 `~/.auto-cti/.env`: ``` # Google Gemini API Key — 供所有三个 agent 使用 GEMINI_API_KEY=your_gemini_api_key_here # NIST NVD API Key — 减少主要 CVE 源的 rate limiting NVD_API_KEY=your_nvd_api_key_here # GitHub Personal Access Token — 提高 GitHub API rate limit GITHUB_TOKEN=your_github_token_here # Vulners API Key — 用于 exploit enrichment VULNERS_API_KEY=your_vulners_api_key_here # AlienVault OTX API Key — 用于活跃的威胁 pulses OTX_API_KEY=your_otx_api_key_here # OpenCVE credentials(可选) OPENCVE_USERNAME=your_opencve_username OPENCVE_PASSWORD=your_opencve_password ``` ## 运行系统 运行 `install.sh` 后,`auto-cti` 命令将全局可用(通过 `~/.local/bin`),这是**运行系统的推荐方式**——无需手动激活虚拟环境或 `cd` 进入项目目录。 **用法:** ``` auto-cti ``` ``` 🛡️ Auto-CTI Command Guide: auto-cti -d - Launch interactive dashboard auto-cti -s - Run Scout Agent auto-cti -t - Run Triage Agent auto-cti -p - Run Publisher Agent auto-cti -f - Run full pipeline auto-cti -u - Remove Auto-CTI completely ``` - `auto-cti -d` — 在 `http://localhost:8501` 启动 Streamlit SOC dashboard(对大多数用户推荐)。 - `auto-cti -s` / `-t` / `-p` — 独立运行单个 Agent(适用于对某一阶段进行调试)。 - `auto-cti -f` — 在终端中按顺序运行完整的 Scout → Triage → Publisher pipeline,不启动 dashboard。 - `auto-cti -u` — 完全卸载 Auto-CTI(等同于运行 `uninstall.sh`)。 ### 手动 / 开发模式 如果您使用的是克隆的代码库而不是安装的版本,您仍然可以直接运行每个阶段: **1. 激活虚拟环境:** ``` source ~/.auto-cti/venv/bin/activate ``` **2. 运行主编排脚本(端到端 pipeline):** ``` python src/main_system.py ``` **3. 启动实时仪表板:** ``` streamlit run src/dashboard.py ``` 然后在浏览器中打开 `http://localhost:8501` 并点击 **INITIALIZE SYSTEM**。 ## 输出与报告 运行 pipeline 后,报告将存储在 `~/.auto-cti/data/` 中。 - **JSON Feed:** `~/.auto-cti/data/publisher_agent_result/` — 用于 SIEM 集成的结构化数据。 - **PDF 简报:** `~/.auto-cti/data/Reports/` — 带有统计信息、执行摘要、关键行动清单和详细 CVE 发现的 TLP:AMBER 分类 PDF。 ## 验证指标 系统会自动计算并在每份 PDF 报告中报告以下验证指标: | 指标 | 描述 | 典型值 | |---|---|---| | PoC 发现率 | 具有外部 exploit/PoC 参考的 CVE 百分比 | 25–65% | | CVSS 验证率 | 对照权威来源确认的分数百分比 | 100% | | 总处理时间 | 从开始到结束的时间 | 100 个 CVE 需 10–15 分钟 (n=3 次运行) | | 查询来源数 | 检查的 PoC/exploit 来源数量 | 8 个来源 | ## 数据源与标准 | 标准 / 来源 | 描述 | 参考 | |---|---|---| | NIST NVD | 美国 CVE 官方数据库(主要) | https://nvd.nist.gov/ | | GitHub Advisory Database | Google 支持的咨询数据库,GraphQL API (回退) | https://github.com/advisories | | OSV.dev | 开源漏洞数据库 | https://osv.dev/ | | AlienVault OTX | 开放威胁交换 — 活跃威胁脉搏 | https://otx.alienvault.com/ | | CVSS v3.1 | 通用漏洞评分系统 | https://www.first.org/cvss/ | | CWE | 通用弱点枚举 | https://cwe.mitre.org/ | | MITRE ATT&CK | 对手战术和技术框架 | https://attack.mitre.org/ | | TLP | 交通灯协议(数据共享分类) | https://www.cisa.gov/tlp | | Exploit-DB | 官方 exploit 数据库 | https://www.exploit-db.com/ | | Vulners | 聚合漏洞数据库 | https://vulners.com/ | | Packet Storm | 安全 exploit 档案库 | https://packetstormsecurity.com/ | | Sploitus | Exploit 聚合器 | https://sploitus.com/ | | inTheWild.io | 活跃利用追踪 | https://inthewild.io/ | ## 局限性与未来改进 ### 当前局限性 - **紧急性分数尚未得到确定性强制执行。** 与在 Python 中根据已验证向量重新计算并覆盖的 CVSS 分数不同,紧急性分数仍由 LLM 计算,偶尔可能会偏离既定公式。在随附论文的 Experimental Setup 部分定稿之前,计划实现完全确定性的 Python 层。 - **某些报告路径中的“总处理时间”指标仅测量 PDF 生成时间**,而不是完整的 pipeline 运行时间,因为 `start_time` 是在 Scout/Triage 子进程已经完成后才初始化的。这是一个正在修正的已知错误。 - **GitHub PoC 相关性过滤仅涵盖固定的一组 CWE 到关键字的映射。** 其 CWE 尚未在此映射中的 CVE 将回退到通用关键字搜索,这种方法的准确度明显较低(在添加此过滤器之前,发现仅使用简单的关键字匹配会使 PoC 覆盖率虚高约 25 个百分点)。 - 全新 CVE 存在 PoC 空白——这是预期内的正常现象(开发公开 exploit 需要时间)。 - Vulners 免费计划——每天限制 100 个积分(优雅地处理 402 错误);无论查询什么,lucene 搜索 endpoint 都会返回 402,因此仅使用基于 ID 的 endpoint。 - 基于抓取的来源(Tenable, Packet Storm, Sploitus)——如果 HTML 结构发生变化,可能会失效;Tenable 结果会与二级验证门(CVE ID 存在性 + 根据向量重新计算的数学分数)进行交叉检查,以捕获在同一页面上抓取的分数和向量来自不匹配的 CVSS 版本的情况。 - 顺序处理——Agent 之间没有并行机制。 ### 计划改进 - 本地结果缓存——减少冗余的 API 调用。 - 并行处理——减少总运行时间。 - 增加更多 exploit 数据库——Rapid7、Seebug、CXSecurity。 - 微调 LLM——用于威胁情报的定制模型。 - Docker 容器化——以便于部署。 ## 引用 如果您在研究中使用 Auto-CTI,请引用我们的论文: ``` @misc{alsmadi2026autocti, author = {Al Smadi, Abdullah and Albayrak, Ahmet}, title = {Auto-CTI: An Autonomous Multi-Agent Framework for Cyber Threat Intelligence Triage and Reporting}, year = {2026}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/AbdullahAlsmadi/auto-cti}} } ``` 您也可以直接使用 [`CITATION.cff`](CITATION.cff) 中的元数据引用此代码库——GitHub 将自动渲染一个“Cite this repository”按钮。 ## 参考文献 - CrewAI 文档 — https://docs.crewai.com/ - Google Gemini API — https://ai.google.dev/ - NIST NVD API v2.0 文档 — https://nvd.nist.gov/developers/vulnerabilities - GitHub Advisory Database GraphQL API — https://docs.github.com/en/graphql - MITRE ATT&CK Navigator — https://mitre-attack.github.io/attack-navigator/ - CVSS v3.1 计算器 — https://www.first.org/cvss/calculator/3.1 - fpdf2 文档 — https://py-pdf.github.io/fpdf2/ - Streamlit 文档 — https://docs.streamlit.io/
**Auto-CTI** · 自主网络威胁情报 Pipeline 使用 CrewAI · Google Gemini · NIST NVD · MITRE ATT&CK 构建 **开发者:** Abdullah Al Smadi **指导教师:** Dr. Ahmet Albayrak **机构:** Düzce University *研究与学术项目*
标签:DLL 劫持, Kubernetes, PyRIT, 人工智能, 多智能体系统, 大语言模型, 威胁情报, 开发者工具, 漏洞分析, 用户模式Hook绕过, 网络安全, 自动化报告, 路径探测, 逆向工具, 隐私保护