ayansk11/Agentic-Cybersec-Threat-Analyst

GitHub: ayansk11/Agentic-Cybersec-Threat-Analyst

基于多Agent架构的威胁情报分析平台,自动聚合多源CVE数据并通过RAG映射到MITRE ATT&CK框架,生成事件响应Playbook和Sigma检测规则

Stars: 0 | Forks: 0

# 智能网络安全威胁分析师 一个多 Agent 网络安全威胁分析系统,该系统摄取 CVE/威胁情报源,通过 RAG(检索增强生成)将其映射到 MITRE ATT&CK 技术,并生成包含 Sigma 检测规则的事件响应 Playbook。 使用 LangGraph 进行 Agent 编排,使用 Qdrant 进行向量搜索,并运行一个本地安全专用 LLM。 ## 架构 ``` flowchart LR User(["User"]) --> Frontend["React Dashboard"] Frontend -->|"SSE"| Backend["FastAPI"] Backend --> A1["Agent 1: CVE Extractor"] A1 --> A2["Agent 2: ATT&CK Classifier"] A2 --> A3["Agent 3: Playbook Generator"] NVD[("NVD")] & KEV[("CISA KEV")] & OTX[("OTX")] & TFox[("ThreatFox")] -.-> A1 A2 -->|"Hybrid Search"| Qdrant[("Qdrant")] Qdrant -.-> MITRE["ATT&CK v18.1"] A2 & A3 -->|"Inference"| LLM["Foundation-Sec-8B"] style User fill:#58a6ff22,stroke:#58a6ff,color:#e6edf3 style Frontend fill:#58a6ff22,stroke:#58a6ff,color:#e6edf3 style Backend fill:#3fb95022,stroke:#3fb950,color:#e6edf3 style A1 fill:#bc8cff22,stroke:#bc8cff,color:#e6edf3 style A2 fill:#bc8cff22,stroke:#bc8cff,color:#e6edf3 style A3 fill:#bc8cff22,stroke:#bc8cff,color:#e6edf3 style NVD fill:#d2992222,stroke:#d29922,color:#e6edf3 style KEV fill:#d2992222,stroke:#d29922,color:#e6edf3 style OTX fill:#d2992222,stroke:#d29922,color:#e6edf3 style TFox fill:#d2992222,stroke:#d29922,color:#e6edf3 style Qdrant fill:#39d2c022,stroke:#39d2c0,color:#e6edf3 style LLM fill:#39d2c022,stroke:#39d2c0,color:#e6edf3 style MITRE fill:#39d2c022,stroke:#39d2c0,color:#e6edf3 ``` ### Agent Pipeline | Agent | 角色 | 输出 | |-------|------|--------| | **CVE Extractor** | 解析 CVE ID,通过 NVD/CISA KEV/OTX/ThreatFox 进行富化,提取结构化威胁信息 | 严重程度、攻击向量、CWEs、IOCs | | **ATT&CK Classifier** | 对 19K+ MITRE ATT&CK 分块进行 RAG,将漏洞映射到技术并附带置信度分数 | 技术 ID、战术、理由 | | **Playbook Generator** | 生成 NIST SP 800-61 Playbook 和 Sigma YAML 检测规则 | Markdown Playbook + Sigma 规则 | ## 功能特性 - **Multi-Agent Pipeline** — 具有用于实时进度的 SSE 流式传输的顺序 LangGraph Agent - **Hybrid RAG Search** — 在 MITRE ATT&CK 上使用 Reciprocal Rank Fusion 融合的稠密 (BGE-M3) + 稀疏向量搜索 - **Multi-Source Enrichment** — NVD API, CISA KEV 目录, AlienVault OTX Pulses, abuse.ch ThreatFox IOCs - **Structured Output** — NIST SP 800-61 Playbook + 可直接复制使用的 Sigma 检测规则 - **Threat Feed Dashboard** — 浏览最近的 CVE、OTX Pulses 和 ThreatFox IOCs,支持严重程度过滤 - **Authentication & RBAC** — JWT + OAuth2 (Google/GitHub),具有 admin/analyst 角色和速率限制 - **Observability** — Prometheus 指标、带有请求 ID 跟踪的结构化日志、Webhook 通知 - **Local LLM** — 使用 Ollama 完全在您的机器上运行(核心功能无需 API 密钥) ## 环境要求 - **Python** 3.11+ - **Node.js** 18+ with pnpm - **Docker** (用于 Qdrant 向量数据库) - **Ollama** (用于本地 LLM 推理) - 约 8 GB 磁盘空间 (用于模型 + ATT&CK 数据) ## 快速开始 ### 1. 克隆并安装 ``` git clone https://github.com/ayansk11/Agentic-Cybersec-Threat-Analyst.git cd Agentic-Cybersec-Threat-Analyst # Backend pip install -e "backend/.[dev]" # Frontend cd frontend && pnpm install && cd .. ``` ### 2. 启动 Qdrant ``` make qdrant ``` ### 3. 拉取 LLM 模型 ``` make pull-model ``` 这将下载 Foundation-Sec-8B-Reasoning 模型(约 5 GB)。如果您的硬件无法运行 8B 模型,请编辑 `.env` 使用更小的模型。 ### 4. 摄取 MITRE ATT&CK 数据 ``` make ingest ``` 下载 MITRE ATT&CK STIX v18.1 并将 19,233 个分块(技术、缓解措施、软件、组织、关系)以混合稠密+稀疏向量的形式摄取到 Qdrant 中。 ### 5. 启动应用 从项目根目录打开 **3 个终端**: ``` # 终端 1:Backend make dev # 终端 2:Frontend make frontend # 终端 3:Qdrant 已在步骤 2 中运行 ``` ### 6. 使用应用 在浏览器中打开 **http://localhost:5173**。输入 CVE ID(例如 `CVE-2021-44228`)并点击 **Analyze**。实时观察 3-Agent Pipeline 的处理过程。 ## 配置 将 `.env.example` 复制到 `.env` 并进行自定义: **核心** | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `OLLAMA_HOST` | `http://localhost:11434` | Ollama 服务器 URL | | `OLLAMA_MODEL` | `hf.co/fdtn-ai/Foundation-Sec-8B-Reasoning-Q4_K_M-GGUF` | 模型名称 | | `LLM_PROVIDER` | `ollama` | LLM 提供商 (`ollama` 或 `groq`) | | `QDRANT_HOST` | `localhost` | Qdrant 主机 | | `QDRANT_PORT` | `6333` | Qdrant 端口 | | `QDRANT_COLLECTION` | `mitre_attack` | Qdrant 集合名称 | **API Keys** *(均为可选)* | 变量 | 描述 | |----------|-------------| | `NVD_API_KEY` | NVD API 密钥,用于更高速率限制 | | `OTX_API_KEY` | AlienVault OTX API 密钥(免费,启用 OTX Feed) | | `GROQ_API_KEY` | Groq API 密钥(如果使用 Groq 提供商) | **认证与安全** *(可选 — 若无 `JWT_SECRET`,API 将以开放访问模式运行)* | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `JWT_SECRET` | — | JWT Token 密钥(设置后启用认证) | | `JWT_ALGORITHM` | `HS256` | JWT 签名算法 | | `GOOGLE_CLIENT_ID` / `_SECRET` | — | Google OAuth2 凭据 | | `GITHUB_CLIENT_ID` / `_SECRET` | — | GitHub OAuth2 凭据 | | `COOKIE_SECURE` | `false` | 在 HTTPS 后的生产环境中设置为 `true` | **通知** *(可选)* | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `WEBHOOK_URL` | — | 用于分析通知的 Webhook URL | | `WEBHOOK_SEVERITY_THRESHOLD` | `HIGH` | 触发 Webhook 的最低严重程度 | ## 数据源 所有数据源均为**免费**且公开可用: | 来源 | 提供内容 | 是否需要认证 | |--------|-----------------|---------------| | [NVD API 2.0](https://services.nvd.nist.gov) | CVE 详情、CVSS 评分、CWEs、参考资料 | 可选 API 密钥(更高速率限制) | | [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) | 已知被利用漏洞及修复截止日期 | 无 | | [MITRE ATT&CK](https://attack.mitre.org/) | 19K+ 对手战术、技术及缓解措施 (STIX v18.1) | 无 | | [AlienVault OTX](https://otx.alienvault.com/) | 社区威胁 Pulses、IOCs、恶意软件样本 | 免费 API 密钥 | | [abuse.ch ThreatFox](https://threatfox.abuse.ch/) | 恶意软件 IOCs (IPs, domains, URLs, hashes) | 无 | ## API 参考 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/` | API 信息 | | `GET` | `/api/health` | 服务连接状态 | | `GET` | `/api/stats` | Qdrant 知识库统计 + 服务状态 | | `GET` | `/api/cve/{cve_id}` | 从 NVD 获取 CVE 详情 | | `POST` | `/api/analyze` | 运行完整分析(返回完整结果) | | `POST` | `/api/analyze/stream` | 通过 SSE 流式传输运行完整分析 | | `GET` | `/api/feed/recent` | 来自 NVD 的最新 CVE | | `GET` | `/api/feed/otx` | 最新 OTX 威胁 Pulses | | `GET` | `/api/feed/threatfox` | 最新 ThreatFox IOCs | | `GET` | `/api/analysis/history` | 分析历史(分页) | | `GET` | `/api/analysis/{id}` | 按 ID 获取分析 | | `POST` | `/api/auth/register` | 注册新用户 | | `POST` | `/api/auth/login` | 使用邮箱/密码登录 | | `POST` | `/api/auth/refresh` | 刷新访问令牌 | | `POST` | `/api/auth/logout` | 登出并撤销令牌 | | `GET` | `/api/auth/me` | 当前用户资料 | | `GET` | `/api/auth/providers` | 可用的认证提供商 | | `GET` | `/api/auth/oauth/{provider}/login` | OAuth2 登录重定向 | | `GET` | `/api/auth/admin/users` | 列出用户(仅限管理员) | | `PATCH` | `/api/auth/admin/users/{id}` | 更新用户角色/状态(管理员) | ## 运行测试 ``` # 运行所有 150 个 Backend 测试 make test ``` 测试覆盖: - Agent Pipeline(状态、JSON 解析、带有模拟 LLM 的所有 3 个 Agent) - 端到端 Pipeline 集成(带有模拟外部服务的完整 3-Agent 流程) - 数据摄取(NVD, CISA KEV, OTX, ThreatFox 解析器) - RAG Pipeline(所有实体类型的分块器) - API 端点(带有模拟依赖项的所有路由) - 认证(JWT, OAuth2, 密码哈希, Token 管理) - 数据库持久化(SQLite CRUD, 历史, 聚合) - 缓存层(TTL 缓存命中/未命中) - Webhooks(阈值过滤、HTTP 分发) - 速率限制、日志、指标 - Schema 验证(Pydantic 模型) ## Docker 部署 使用 Docker Compose 部署完整技术栈: ``` # 构建并启动所有服务 (Qdrant + Backend + Frontend) make docker-up # 将 ATT&CK 数据导入容器化的 Qdrant make docker-ingest # 查看日志 make docker-logs # 停止所有服务 make docker-down ``` Frontend 通过 nginx 在 80 端口提供服务,并将 API 请求代理到 Backend。Ollama 在主机上运行 — Backend 容器通过 `host.docker.internal` 连接到它。 ## 项目结构 ``` Agentic-Cybersec-Threat-Analyst/ ├── backend/ │ ├── main.py # FastAPI entry point │ ├── config.py # Settings (Pydantic BaseSettings) │ ├── db.py # SQLite persistence (analyses) │ ├── db_users.py # User/token/settings CRUD │ ├── cache.py # In-memory TTL caching │ ├── webhooks.py # Severity-based webhook dispatch │ ├── mailer.py # Async SMTP email (verification, reset) │ ├── metrics.py # Prometheus counters + histograms │ ├── logging_config.py # Structured logging + request IDs │ ├── agents/ │ │ ├── state.py # LangGraph shared state (TypedDict) │ │ ├── graph.py # LangGraph StateGraph wiring │ │ ├── cve_extractor.py # Agent 1: CVE extraction + enrichment │ │ ├── attack_classifier.py # Agent 2: ATT&CK mapping via RAG │ │ └── playbook_generator.py # Agent 3: Playbook + Sigma generation │ ├── rag/ │ │ ├── embedder.py # BGE-M3 dense+sparse encoding │ │ ├── retriever.py # Hybrid search with RRF fusion │ │ ├── qdrant_store.py # Qdrant client + upsert │ │ └── chunker.py # Entity-level chunking │ ├── ingestion/ │ │ ├── ingest_attack.py # MITRE ATT&CK STIX ingestion │ │ ├── mitre_loader.py # STIX bundle parser │ │ ├── nvd_fetcher.py # NVD API 2.0 client │ │ ├── cisa_kev.py # CISA KEV catalog │ │ ├── otx_fetcher.py # AlienVault OTX client │ │ └── abusech_fetcher.py # abuse.ch ThreatFox client │ ├── api/ │ │ ├── routes.py # REST + SSE endpoints │ │ ├── schemas.py # Pydantic request/response models │ │ ├── auth.py # JWT + API key auth dependency │ │ ├── auth_routes.py # Auth endpoints (register, login, OAuth) │ │ ├── oauth.py # Google + GitHub OAuth2 providers │ │ └── rate_limit.py # Per-user/IP rate limiting │ └── tests/ # 150 tests │ ├── conftest.py │ ├── test_agents.py │ ├── test_api.py │ ├── test_auth.py │ ├── test_cache.py │ ├── test_db.py │ ├── test_e2e.py │ ├── test_ingestion.py │ ├── test_logging.py │ ├── test_metrics.py │ ├── test_rag.py │ ├── test_rate_limit.py │ └── test_webhooks.py ├── frontend/ │ └── src/ │ ├── App.tsx # Main app with routing │ ├── components/ │ │ ├── Dashboard.tsx # System status + KB stats + charts │ │ ├── ThreatFeed.tsx # NVD/OTX/ThreatFox feed tabs │ │ ├── AnalysisView.tsx # CVE analysis + results display │ │ ├── LoginPage.tsx # Auth UI (login/register/OAuth) │ │ ├── AdminUsersPage.tsx # User management (admin) │ │ ├── SettingsPage.tsx # Webhook + SMTP configuration │ │ ├── Layout.tsx # App shell with sidebar │ │ └── UserMenu.tsx # User info + logout │ ├── contexts/AuthContext.tsx # Auth state + token management │ ├── api/client.ts # API client with token refresh │ ├── hooks/useSSE.ts # SSE streaming hook │ └── types/index.ts # TypeScript interfaces ├── .github/workflows/ci.yml # CI pipeline (lint, test, build) ├── docker-compose.yml # Qdrant + Backend + Frontend + Prometheus ├── Dockerfile.backend ├── Dockerfile.frontend ├── nginx.conf # Nginx reverse proxy + SSE support ├── prometheus.yml # Prometheus scrape config + alerts ├── alert_rules.yml # Prometheus alerting rules ├── Makefile # Dev + Docker commands └── data/ # Downloaded STIX bundles ``` ## 安全 - **JWT Authentication** — 访问令牌(15 分钟)+ 刷新令牌(7 天),支持轮换 - **OAuth2** — Google 和 GitHub SSO,具有 CSRF 状态保护 - **RBAC** — Admin 和 Analyst 角色,具有按端点访问控制 - **Rate Limiting** — 按用户/IP 限制(5 次分析/分钟,30 次 Feed 请求/分钟) - **Password Security** — bcrypt 哈希、邮箱验证、安全密码重置流程 - **API Key Fallback** — 支持传统的 `X-API-Key` Header 以保持向后兼容性 当未配置 `JWT_SECRET` 时,API 以开放访问模式运行,并使用合成 Admin 用户以方便开发。 ## 技术栈 **Backend:** Python 3.13, FastAPI, LangGraph, LangChain, Qdrant, BGE-M3, Pydantic **Frontend:** React 19, TypeScript, Vite, Tailwind CSS 4, Recharts, Lucide Icons **Infrastructure:** Ollama (Foundation-Sec-8B-Reasoning), Qdrant (Hybrid 向量 DB), Docker, nginx, Prometheus
标签:AI风险缓解, API接口, AV绕过, CISA项目, Cloudflare, CSV导出, CVE分析, DNS 反向解析, FastAPI, FTP漏洞扫描, GitHub, GPT, HTTP工具, IP 地址批量处理, LangGraph, MITRE ATT&CK, Modbus, Mr. Robot, PE 加载器, Playbook生成, PyRIT, Qdrant, RAG, React, Sigma规则, StruQ, Syscalls, Web报告查看器, 人工智能, 后渗透, 向量数据库, 多智能体系统, 威胁情报, 子域名变形, 安全编排, 实时处理, 密码管理, 开发者工具, 数据包嗅探, 数据集, 无线安全, 模拟器, 漏洞管理, 用户模式Hook绕过, 目标导入, 知识库安全, 网络信息收集, 网络安全, 网络安全审计, 自动化响应, 自定义请求头, 请求拦截, 逆向工具, 隐私保护