AgentCTI 是一款面向防御型网络安全分析的威胁情报处理平台。系统将原始 CTI(Cyber Threat Intelligence)文档通过多智能体流水线解析为可溯源、可审查、可复现的攻击场景图,并自动生成研判报告,辅助安全分析师完成事件研判、证据追溯、检测加固和防御响应。
安全声明:本项目仅用于防御型威胁情报分析、学术研究与安全竞赛展示。系统不实现任何攻击利用代码、漏洞利用脚本或攻击操作步骤,所有输出仅供安全研判和防御决策参考。
AgentCTI 以 EvidenceUnit(证据单元) 为核心数据抽象,将 CTI 文件解析、可信性评估、攻击事实抽取、实体规范化、攻击场景图构建、闭环审查、高置信路径溯源和报告生成串接为一条可编排的多智能体流水线:
- Parser Agent:将 txt/pdf/docx/md/csv/xlsx/json 等输入统一解析为
EvidenceUnit。 - Credibility Agent:对每个证据单元进行
PASS / SUSPICIOUS / BLOCK可信判定。 - Extractor Agent:从可信证据中抽取
head-relation-tail攻击事实三元组。 - Entity Agent:规范化实体、合并别名,并对 IOC 实施防误合并保护。
- Graph Agent:构建攻击场景图,并补全
predicted潜在关系。 - Critic-Judge-Memory:闭环审查冲突、低可信内容与低置信边,决定通过/降级/拒绝/回滚。
- TraceReplay Agent:搜索 Top-k 高置信攻击路径,输出证据回放与防御建议。
- Report Agent:自动汇总全链路演进产物,生成 Markdown/HTML 研判报告。
- EvidenceUnit 证据单元机制:所有下游产物(三元组、实体、边、路径)均绑定
evidence_id与evidence_text,支持端到端溯源。 - 可信入图门控:Credibility Agent 判定为
BLOCK的证据不会进入抽取与构图阶段,SUSPICIOUS证据会继承风险标记。 - 证据绑定三元组:Extractor 输出的三元组携带证据来源、可信标签、置信度和风险标记。
- 实体规范化与 IOC 保护:同名实体合并别名,但 IP、Domain、CVE、Hash、URL 等 IOC 类型在不同值之间绝不误合并。
- 攻击场景图与关系补全:Graph Agent 在显式关系基础上,识别不连通子图与中心节点,补全
edge_source=predicted的潜在关系。 - Critic-Judge-Memory 闭环审查:自动发现证据缺失、IOC 误合并、低可信内容与低置信预测边,并输出
APPROVED / DOWNGRADED / REJECTED / ROLLBACK_REQUIRED裁定。 - TraceReplay 高置信路径溯源:从审查后的图中搜索 Top-k 攻击路径,提供逐边证据回放与防御建议。
- Workflow 一键编排:Manager Agent 按阶段依赖自动调度,支持单阶段运行、从某阶段继续、一键生成报告。
- Report Agent 自动研判报告:汇总任务概况、可信评估、攻击事实、实体、图谱、审查、溯源与防御建议,输出 Markdown 与 HTML 报告。
CTI 文件上传
│
▼
┌─────────────────┐
│ Parser Agent │ ──▶ EvidenceUnit
└─────────────────┘
│
▼
┌───────────────────┐
│ Credibility Agent │ ──▶ PASS / SUSPICIOUS / BLOCK
└───────────────────┘
│
▼
┌──────────────────┐
│ Extractor Agent │ ──▶ Attack Triplet
└──────────────────┘
│
▼
┌────────────────┐
│ Entity Agent │ ──▶ Normalized EntityNode
└────────────────┘
│
▼
┌────────────────┐
│ Graph Agent │ ──▶ Attack Graph (explicit + predicted edges)
└────────────────┘
│
▼
┌──────────────────────────┐
│ Critic-Judge-Memory │ ──▶ Review / Conflict / Stable Version
└──────────────────────────┘
│
▼
┌──────────────────────┐
│ TraceReplay Agent │ ──▶ Top-k Trace Paths + Defense Suggestions
└──────────────────────┘
│
▼
┌──────────────────┐
│ Report Agent │ ──▶ Markdown / HTML Report
└──────────────────┘
AgentCTI/
├── backend/ # FastAPI + Python 多智能体后端
│ ├── app/
│ │ ├── main.py
│ │ ├── api/ # REST API 路由
│ │ ├── core/ # 配置、响应封装、异常处理、日志
│ │ ├── schemas/ # Pydantic 数据模型
│ │ ├── services/ # Workspace、JSON Store、ID 生成、Workflow
│ │ ├── agents/ # Parser / Credibility / Extractor / Entity / Graph / Review / Trace / Report
│ │ └── tests/ # 单元/集成测试(168 passed)
│ ├── requirements.txt
│ └── workspace/ # 运行时任务目录(可删除)
├── frontend/ # React + Vite + TypeScript + Ant Design 前端
│ ├── src/
│ │ ├── main.tsx
│ │ ├── App.tsx
│ │ ├── pages/ # Dashboard / TaskCreate / TaskDetail / Evidence / Extraction / Entity / Graph / Review / Trace / Report
│ │ ├── components/ # 可复用组件(表格、图谱、面板)
│ │ ├── api/ # Axios 封装
│ │ └── types/ # TypeScript 类型
│ ├── package.json
│ ├── vite.config.ts
│ └── dist/ # 生产构建产物
├── demo_data/ # 示例威胁情报文件
│ ├── sample_cti_apt28.txt
│ ├── sample_cti_ransomware.txt
│ ├── sample_ioc_table.csv
│ └── sample_mixed_report.md
├── scripts/ # 启动与演示脚本
│ ├── run_backend.bat
│ ├── run_frontend.bat
│ ├── run_demo_workflow.py
│ ├── reset_workspace.py
│ └── check_project.py
├── docs/ # 文档
│ ├── screenshot_guide.md
│ ├── demo_walkthrough.md
│ └── api_quick_reference.md
└── README.md
后端
- Python 3.11+
- FastAPI + Pydantic + Pydantic-Settings
- Uvicorn
- NetworkX(图算法)
- python-docx / pypdf / pandas / openpyxl(文档解析)
- pytest + httpx(测试)
- JSON workspace(持久化)
前端
- React 18
- Vite 5
- TypeScript(Strict Mode)
- Ant Design 5
- Cytoscape.js(攻击场景图可视化)
- React Router 6
- Axios + dayjs
cd AgentCTIcd backend
python -m venv venv
# Windows
venv\Scripts\activate
# macOS / Linux
source venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000或使用提供的脚本:
scripts\run_backend.bat后端默认地址:http://localhost:8000
Swagger 文档:http://localhost:8000/docs
cd frontend
npm install
npm run dev或使用提供的脚本:
scripts\run_frontend.bat前端默认地址:http://localhost:5173
确保后端已启动,然后运行:
# 在 backend venv 中
python scripts/run_demo_workflow.py --file demo_data/sample_cti_apt28.txt可选参数:
python scripts/run_demo_workflow.py \
--file demo_data/sample_cti_apt28.txt \
--api http://localhost:8000 \
--max-depth 5 \
--top-k 5脚本会自动:
- 创建分析任务并上传 CTI 文件。
- 调用
/api/tasks/{task_id}/workflow/run(include_report=true)。 - 轮询 Workflow 状态,实时打印各阶段计数。
- 输出
task_id、最终状态、关键指标与报告下载地址。
| Method | Path | 说明 |
|---|---|---|
| POST | /api/tasks/create |
创建任务并上传文件 |
| POST | /api/tasks/{task_id}/workflow/run |
一键运行完整流水线 |
| GET | /api/tasks/{task_id}/workflow/status |
查询 Workflow 阶段状态 |
| GET | /api/tasks/{task_id}/graph |
获取攻击场景图 |
| GET | /api/tasks/{task_id}/trace/paths |
获取溯源路径 |
| GET | /api/tasks/{task_id}/report/markdown |
获取报告 Markdown 文本 |
| GET | /api/tasks/{task_id}/report/download/html |
下载 HTML 报告 |
更多接口详见 docs/api_quick_reference.md 或启动后端后访问 /docs。
后端测试
cd backend
venv\Scripts\python -m pytest app/tests -v前端检查与构建
cd frontend
npm run typecheck
npm run build项目结构检查
python scripts/check_project.pydocs/demo_walkthrough.md:完整前端 + 后端演示流程。docs/screenshot_guide.md:论文与答辩建议截图清单。docs/api_quick_reference.md:按模块整理的 API 速查表。
- 本项目仅用于防御型威胁情报分析,不实现、不传播、不暗示任何攻击利用代码或漏洞利用步骤。
- 示例数据(
demo_data/)中的 IP、域名、CVE、Hash 均为虚构或公开示例标识符,不指向真实攻击目标。 - 系统生成的三元组、图谱、路径与报告仅用于安全研判、证据追溯、检测规则加固和防御响应决策。
- 请在合法授权范围内使用本系统处理威胁情报数据。
本项目仅用于学术研究与信息安全竞赛展示。