Dicky1/ThreatCanvas

GitHub: Dicky1/ThreatCanvas

一个 AI 驱动的威胁叙事到检测工程平台,将自然语言攻击场景转化为确定性攻击图,自动生成多格式 SIEM 检测规则并模拟防御缓解效果。

Stars: 1 | Forks: 0

# 🛡️ ThreatCanvas **AI 驱动的威胁叙事到检测工程与防御优化平台** 将自然语言攻击场景转化为结构化、确定性的攻击图——验证它们,分析其 MITRE ATT&CK 覆盖率,推理其威胁影响,跨多种 SIEM 格式编译生产就绪的检测规则,并模拟防御缓解措施以衡量其对攻击图的影响。 [![FastAPI](https://img.shields.io/badge/FastAPI-0.116-009688?logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) [![React](https://img.shields.io/badge/React-18-61DAFB?logo=react&logoColor=black)](https://react.dev/) [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![SQLAlchemy](https://img.shields.io/badge/SQLAlchemy-2.0-D71F00?logo=python&logoColor=white)](https://www.sqlalchemy.org/) [![License](https://img.shields.io/badge/license-MIT-blue)](#license)
## 📖 概述 **ThreatCanvas** 是一个 AI 辅助的网络安全工程工作区,它将自然语言攻击叙事转化为确定性的网络攻击图,对其进行验证,分析 MITRE ATT&CK 覆盖率,推理攻击者的目标和威胁严重程度,编译生产就绪的检测规则,并最终模拟防御缓解措施以衡量其对攻击图的影响。 与传统的 SIEM 或 EDR 平台不同,ThreatCanvas 专注于**检测工程**,提供端到端的工作流,将威胁情报转化为结构化的攻击模型、检测工件、威胁评估以及用于防御优化的定量攻击模拟。 该平台将 LLM 辅助的解析与确定性的图分析和基于规则的推理相结合,使分析师不仅能评估攻击是如何发生的,还能评估防御控制措施在部署前如何破坏攻击路径。 ## 📸 预览 ### 仪表板 — 威胁叙事处理器 ![仪表板](https://raw.githubusercontent.com/Dicky1/ThreatCanvas/main/docs/images/dashboard.png) ### 攻击图可视化 ![攻击图](https://static.pigsec.cn/wp-content/uploads/repos/cas/d4/d4bd14e2d1e9e9fe9353826bd0871deafb0a0a0d1ea58de83e34ab8da4e6ef0e.png) ### 覆盖率分析 ![覆盖率分析](https://static.pigsec.cn/wp-content/uploads/repos/cas/0b/0beb95d39213239f90e1d146ac3e750d1133216e365744edf1ebe5d5eed3451c.png) ### 威胁评估 ![威胁评估](https://static.pigsec.cn/wp-content/uploads/repos/cas/11/11bb63523595f89046af6e39b4833f668baab9c6b3fb6acf3e312a9bb55a9990.png) ### 攻击模拟 ![攻击模拟](https://static.pigsec.cn/wp-content/uploads/repos/cas/ba/baeaa58dada5b4e2369359a04d1c15be2862200dbad14b939fc4626c85fd8bb6.png) ### 模拟对比 ![模拟对比](https://static.pigsec.cn/wp-content/uploads/repos/cas/89/895663e421dbe5e24a8400bbf06f28f0e0090da2796057602e13812d8a3a3e21.png) ### 防御优化 ![防御优化](https://static.pigsec.cn/wp-content/uploads/repos/cas/a2/a24d84262fd8a0aa7496ae6ac179dd59f52a92d772fb83161debfe2d1feb3369.png)
**叙事 → 生成 → 攻击图 → 覆盖率 → 威胁评估 → 攻击模拟与防御优化** *(从原始文本到可操作的检测工程和防御优化输出,尽在一个工作区)*
## 🔄 工作原理 ``` Natural Language Narrative │ ▼ Intelligent CIR Engine ← LLM-based parsing into structured graph │ ▼ CIR Validation Engine ← deterministic structural integrity checks │ ▼ Detection Compiler ← Sigma · KQL · SPL rule generation │ ▼ MITRE Coverage Analysis ← kill chain & tactic/technique scoring │ ▼ Attack Graph Analysis ← critical path, density, complexity, maturity │ ▼ Threat Reasoning Engine ← severity, objective, detection gaps, priority │ ▼ Attack Simulation & Defense Optimization ← mitigation simulation, APDS, optimized controls ``` ## 🔬 研究贡献 ThreatCanvas 在 LLM 与结构化安全数据建模的交叉领域引入了几项工程贡献: - **自然语言 → 确定性的网络中间表示 (CIR)** — 一种结构化、经过 schema 验证的中间图格式,将 LLM 输出约束为一致的、机器可操作的攻击表示。 - **确定性 CIR 验证引擎** — 基于规则的结构验证,可在格式错误或逻辑不一致的攻击图传播到下游之前捕获它们。 - **多平台检测规则编译器** — 单个 CIR 图可编译为多种 SIEM 原生检测格式(Sigma、KQL、SPL),无需重新解析原始叙事。 - **MITRE ATT&CK 覆盖率分析** — 自动对杀伤链完整性、战术/技术覆盖范围进行评分,并针对 ATT&CK 框架识别差距。 - **攻击图分析** — 直接从 CIR 结构计算确定性的图论指标(关键路径、密度、复杂性、成熟度)。 - **威胁推理与推荐引擎** — 基于规则的推理层,从图和覆盖率输出中推导出威胁严重程度、攻击者目标和检测建议。 - **攻击模拟与防御优化引擎** — 确定性的攻击图模拟引擎,能够阻断选定的 MITRE ATT&CK 技术,通过级联可达性分析重新计算图拓扑,衡量攻击路径破坏评分 (APDS),并根据量化的风险降低推荐优化的防御控制措施。 *(本节的结构旨在与论文的贡献列表清晰对应——随着研究成果的发表,可扩展并添加引用。)* ## ✨ 功能列表 - **🧠 自然语言 → 攻击图** — 以对话方式描述攻击场景;LLM 解析器将其转换为包含战术、技术、执行者和关系的结构化 CIR 图。 - **✅ 确定性验证** — 在编译任何检测工件之前,每个生成的图都会经过结构完整性验证,从而减少幻觉或不一致的攻击逻辑。 - **📈 攻击图分析** — 确定性的图指标,包括关键路径、节点/边密度、组件数量、平均度数、复杂性评分和整体图成熟度评级。 - **🧠 威胁评估** — 基于规则的威胁推理,从分析过的图中推导出严重程度、可能的攻击目标、检测差距和优先级的建议。 - **🎯 MITRE ATT&CK 覆盖率评分** — 自动分析杀伤链覆盖率、战术/技术完整性,并针对差距提供可操作的建议。 - **⚙️ 多格式检测编译** — 一个 CIR 图同时编译为 **Sigma**、**KQL** (Microsoft Sentinel/Defender) 和 **SPL** (Splunk) 规则。 - **🛡️ 攻击模拟与防御优化** — 通过阻断选定的 MITRE ATT&CK 技术并自动重新计算攻击图来模拟防御缓解措施,以评估防御效果。 - **📉 攻击路径破坏评分 (APDS)** — 使用确定性的图可达性分析,量化防御行动破坏攻击链的有效程度。 - **📊 前后威胁对比** — 比较模拟缓解前后的严重程度、风险评分、关键路径、图密度、爆炸半径、节点数和边数。 - **🎯 优化防御建议** — 根据可衡量的风险降低和受影响的攻击技术,自动优先排序缓解控制措施。 - **🧩 级联攻击路径分析** — 检测在上游技术被阻断后变得不可达的下游攻击步骤。 - **📚 提示词库** — 精心策划的包含 20 多个真实世界攻击场景模板的集合,涵盖勒索软件、APT 活动、内部威胁、云安全、网络钓鱼、Web 应用程序、供应链和 IoT/OT 类别。 - **🔔 实时活动通知** — 每个有意义的操作(解析完成、工件生成、覆盖率分析、模拟完成)都会在 UI 中作为实时、事件驱动的通知显示。 - **🔐 JWT 身份验证** — 安全的基于 token 的身份验证,使用 bcrypt 密码哈希,保护工作区并准备扩展到多用户/基于角色的访问。 - **🕘 场景历史** — 每个处理过的场景及其生成的 CIR 图都会被持久化,并可检索以供日后审查或重新编译。 ## 攻击模拟与防御优化 ThreatCanvas 引入了一个确定性的攻击模拟引擎,通过从生成的攻击图中虚拟阻断一个或多个 MITRE ATT&CK 技术来评估防御策略。 与随机网络靶场模拟不同,ThreatCanvas 执行基于图的可达性分析,以在缓解后确定性地重新计算攻击图。 模拟引擎提供: - 攻击链状态 - 攻击路径破坏评分 (APDS) - 风险评分降低 - 严重程度比较 - 关键路径减少 - 剩余攻击节点 - 移除/破坏的节点 - 图拓扑比较 - 推荐的防御控制措施 - 执行摘要模拟报告 这使得安全分析师能够在将建议的缓解措施实施到生产环境之前评估其有效性。 ## 🏗️ 架构 ``` ┌───────────────┐ │ LLM Parser │ └───────┬───────┘ │ ▼ ┌────────────────────┐ │ CIR Validation │ └──────────┬──────────┘ │ ┌─────────────────────┼─────────────────────┐ ▼ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ Detection │ │ Coverage Engine │ │ Graph Analysis │ │ Compiler │ │ (MITRE ATT&CK) │ │ (metrics) │ │ Sigma·KQL·SPL │ │ │ │ │ └─────────┬─────────┘ └─────────┬─────────┘ └─────────┬─────────┘ │ │ │ └──────────────────────┴───────────────────────┘ │ ▼ ┌─────────────────────────┐ │ Threat Reasoning Engine │ └────────────┬────────────┘ │ ▼ ┌────────────────────────────────────┐ │ Attack Simulation & Defense │ │ Optimization │ └────────────────┬─────────────────────┘ │ ▼ ┌─────────────────────────┐ │ Executive Simulation Report │ └─────────────────────────┘ ``` ``` ┌─────────────────────────────────────────────────────────────────┐ │ FRONTEND (React + Vite) │ │ Dashboard · History · Prompt Library · Settings │ │ Zustand Stores: useThreatStore · useAuthStore · useNotification │ └───────────────────────────┬───────────────────────────────────────┘ │ REST API (JWT Bearer) ┌───────────────────────────▼───────────────────────────────────────┐ │ BACKEND (FastAPI) │ │ Auth (JWT) · LLM Parser · CIR Validator/Normalizer │ │ Coverage Analyzer · Graph Analysis Engine · Threat Reasoning │ │ Attack Simulation & Defense Optimization Engine │ │ Compilers: Sigma · KQL · SPL │ │ Repository Layer (SQLAlchemy) ── SQLite / PostgreSQL │ └─────────────────────────────────────────────────────────────────┘ ``` ## 🧪 示例 **输入**(直接输入到仪表板中,或从提示词库加载): ``` An attacker sends a phishing email with a malicious PowerShell script and simultaneously performs credential dumping to harvest high-privilege domain hashes. Following this, the attacker establishes persistence using scheduled tasks, disables Windows Defender endpoint protection, conducts internal network discovery, moves laterally across servers using PsExec, and finally deploys ransomware to completely encrypt all core enterprise databases and systems. ``` **生成的输出**,按顺序排列: 1. **CIR 图** — 8 个节点,8 条边,横跨 Initial Access → Credential Access → Persistence → Defense Evasion → Discovery → Lateral Movement → Impact 2. **MITRE 覆盖率报告** — 杀伤链覆盖率百分比、已覆盖/缺失的战术、复杂性和成熟度评级 3. **攻击图指标** — 关键路径长度、图密度、平均度数、组件数量 4. **检测工件** — 匹配的 Sigma、KQL 和 SPL 规则,每个节点/技术一条 5. **威胁评估** — 推导出的严重程度、主要攻击目标(例如,*通过勒索软件进行数据破坏*)以及优先级的检测建议 6. **攻击模拟报告** — 选择要阻断的技术后生成,包括: - 攻击路径破坏评分 (APDS) - 风险降低 - 攻击链状态 - 前后对比 - 剩余节点 - 移除节点 - 优化的控制措施 ## 🧰 技术栈 | 层级 | 技术 | |---|---| | **后端框架** | FastAPI, Uvicorn | | **ORM / 数据库** | SQLAlchemy 2.0, SQLite (开发环境) / PostgreSQL (生产就绪,通过 `psycopg`) | | **身份验证** | JWT (`python-jose`), bcrypt 密码哈希 (`passlib`) | | **Schema 验证** | Pydantic v2 | | **任务队列** | Celery + Redis (用于异步/长时间运行的处理) | | **LLM 集成** | OpenAI 兼容的 API 客户端 | | **前端框架** | React 18, TypeScript, Vite | | **状态管理** | Zustand | | **路由** | React Router v6 | | **样式** | Tailwind CSS | | **图标** | Lucide React | ## 📁 项目结构 ``` ThreatCanvas/ ├── backend/ │ ├── app/ │ │ ├── api/ │ │ │ ├── deps.py # Auth dependency injection │ │ │ └── endpoints/ # parser, compilers, coverage, │ │ │ # graph_analysis, reasoning, │ │ │ # simulation, auth │ │ ├── core/ │ │ │ ├── config.py # Environment-based settings │ │ │ ├── database.py # SQLAlchemy engine/session │ │ │ └── security.py # JWT + password hashing │ │ ├── models/ # SQLAlchemy ORM entities │ │ ├── repositories/ # Data access layer │ │ ├── schemas/ # Pydantic request/response models │ │ ├── services/ # LLM parser, compilers, analyzers, │ │ │ # simulation engine │ │ └── main.py # FastAPI app entrypoint │ └── tests/ │ └── frontend/ └── src/ ├── components/ │ ├── layout/ # Header, Sidebar, MainLayout │ ├── ArtifactViewer.tsx │ ├── ThreatGraph.tsx │ ├── Coverage.tsx │ ├── Simulation.tsx │ └── RichCIRInspector.tsx ├── pages/ # Dashboard, History, PromptLibrary, │ # Settings, Login ├── store/ # Zustand stores (threat, auth, notifications) └── App.tsx # Routing entrypoint ``` ## 🚀 快速开始 ### 前置条件 - Python 3.13+ - Node.js 18+ - (可选) Redis,用于 Celery 任务队列功能 ### 后端设置 ``` cd backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt # 创建你的 .env 文件 cp .env.example .env # 为 JWT 签名生成一个 secret key: python -c "import secrets; print(secrets.token_urlsafe(32))" # 将输出粘贴到 .env 中的 SECRET_KEY uvicorn app.main:app --reload --port 8000 ``` API 将在 `http://localhost:8000` 上提供,交互式文档位于 `http://localhost:8000/docs`。 ### 前端设置 ``` cd frontend npm install npm run dev ``` 应用将在 `http://localhost:5173` 上可用。 ### 创建您的第一个用户 ``` curl -X POST http://localhost:8000/api/v1/auth/register \ -H "Content-Type: application/json" \ -d '{"username":"analyst","email":"analyst@threatcanvas.local","full_name":"Security Analyst","password":"a-strong-password"}' ``` 然后通过位于 `http://localhost:5173/login` 的前端登录。 ## 🔑 环境变量 | 变量 | 描述 | 默认值 | |---|---|---| | `DATABASE_URL` | SQLAlchemy 连接字符串 | `sqlite:///./threatcanvas.db` | | `SECRET_KEY` | JWT 签名密钥 — **在生产环境中必须覆盖** | — | | `ALGORITHM` | JWT 签名算法 | `HS256` | | `ACCESS_TOKEN_EXPIRE_MINUTES` | token 有效期 | `1440` (24小时) | | `OPENAI_API_KEY` | LLM 提供商 API 密钥 | — | | `OPENAI_API_BASE` | LLM 提供商基础 URL | — | | `REDIS_URL` | 用于 Celery 的 Redis 连接 | `redis://localhost:6379/0` | ## 📡 API 参考 所有端点都带有前缀 `/api/v1`。完整的交互式文档(包含实时的请求/响应 schema)可在后端运行后通过 `/docs` 的 Swagger UI 访问——请将其视为比此表更权威的真相来源。 | 方法 | 端点 | 描述 | |---|---|---| | `POST` | `/auth/register` | 注册新用户 | | `POST` | `/auth/login` | 进行身份验证并接收 JWT(OAuth2 表单体) | | `POST` | `/parse` | 将自然语言场景解析为 CIR 图 | | `GET` | `/coverage/{scenario_id}` | 获取 MITRE ATT&CK 覆盖率报告 | | `GET` | `/compile/{type}/{scenario_id}` | 编译检测工件(`sigma` \| `kql` \| `spl`) | | `GET`/`POST` | `/graph-analysis/...` ⚠️ | 攻击图指标(关键路径、密度、复杂性)— 请在 `graph_analysis.py` 中验证确切路由 | | `GET`/`POST` | `/reasoning/...` ⚠️ | 威胁推理和建议 — 请在 `reasoning.py` 中验证确切路由 | | `POST` | `/simulation` ⚠️ | 运行攻击模拟和防御优化 — 请在 `simulation.py` 中验证确切路由/payload;如果不同,请调整以匹配最终的 FastAPI 路由 | **目前尚未由后端提供支持**(目前仅限前端,为了保持透明): - **通知** — 在 `useNotificationStore` 中客户端生成,由前端操作触发。目前尚不存在 `/notifications` 端点。 - **提示词库** — 目前是前端中硬编码的 `PROMPT_DATABASE` 数组。尚不存在 `/prompt-library` 端点;顺理成章的下一步是将其移至由后端管理的表中。 ## 🗺️ 路线图 ### ✅ 已完成 - ✅ 自然语言 CIR 图 - ✅ CIR 验证引擎 - ✅ 多格式检测编译器 - ✅ MITRE ATT&CK 覆盖率分析 - ✅ 攻击图分析 - ✅ 威胁推理引擎 - ✅ 攻击模拟与防御优化 ### ⏭️ 下一步路线图 - [ ] PDF 报告 - [ ] 图导出 (GraphML / JSON) - [ ] 批量攻击模拟 - [ ] 多用户协作 - [ ] 基于角色的访问控制 (RBAC) - [ ] ATT&CK Navigator 导出 - [ ] YARA-L 编译器 - [ ] EQL 编译器 - [ ] 将提示词库模板持久化到数据库 - [ ] 用于通知历史/审计追踪的后端端点 - [ ] 针对 CIR 规范化边缘情况的自动化回归测试 ## 📄 许可证 本项目基于 MIT 许可证授权。
为那些习惯通过图(而不仅仅是日志)来思考的安全研究员和检测工程师而构建。
标签:自动化攻击, 逆向工具