Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AgentCTI:基于威胁情报的多智能体攻击场景图构建平台

AgentCTI 是一款面向防御型网络安全分析的威胁情报处理平台。系统将原始 CTI(Cyber Threat Intelligence)文档通过多智能体流水线解析为可溯源、可审查、可复现的攻击场景图,并自动生成研判报告,辅助安全分析师完成事件研判、证据追溯、检测加固和防御响应。

安全声明:本项目仅用于防御型威胁情报分析、学术研究与安全竞赛展示。系统不实现任何攻击利用代码、漏洞利用脚本或攻击操作步骤,所有输出仅供安全研判和防御决策参考。


项目简介

AgentCTI 以 EvidenceUnit(证据单元) 为核心数据抽象,将 CTI 文件解析、可信性评估、攻击事实抽取、实体规范化、攻击场景图构建、闭环审查、高置信路径溯源和报告生成串接为一条可编排的多智能体流水线:

  1. Parser Agent:将 txt/pdf/docx/md/csv/xlsx/json 等输入统一解析为 EvidenceUnit
  2. Credibility Agent:对每个证据单元进行 PASS / SUSPICIOUS / BLOCK 可信判定。
  3. Extractor Agent:从可信证据中抽取 head-relation-tail 攻击事实三元组。
  4. Entity Agent:规范化实体、合并别名,并对 IOC 实施防误合并保护。
  5. Graph Agent:构建攻击场景图,并补全 predicted 潜在关系。
  6. Critic-Judge-Memory:闭环审查冲突、低可信内容与低置信边,决定通过/降级/拒绝/回滚。
  7. TraceReplay Agent:搜索 Top-k 高置信攻击路径,输出证据回放与防御建议。
  8. Report Agent:自动汇总全链路演进产物,生成 Markdown/HTML 研判报告。

核心创新点

  • EvidenceUnit 证据单元机制:所有下游产物(三元组、实体、边、路径)均绑定 evidence_idevidence_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

快速开始

1. 克隆并进入项目

cd AgentCTI

2. 启动后端

cd 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

3. 启动前端

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

脚本会自动:

  1. 创建分析任务并上传 CTI 文件。
  2. 调用 /api/tasks/{task_id}/workflow/runinclude_report=true)。
  3. 轮询 Workflow 状态,实时打印各阶段计数。
  4. 输出 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.py

文档导航


安全与合规声明

  • 本项目仅用于防御型威胁情报分析,不实现、不传播、不暗示任何攻击利用代码或漏洞利用步骤。
  • 示例数据(demo_data/)中的 IP、域名、CVE、Hash 均为虚构或公开示例标识符,不指向真实攻击目标。
  • 系统生成的三元组、图谱、路径与报告仅用于安全研判、证据追溯、检测规则加固和防御响应决策。
  • 请在合法授权范围内使用本系统处理威胁情报数据。

许可证

本项目仅用于学术研究与信息安全竞赛展示。

About

面向不可信网络威胁情报的多智能体协作分析平台

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages