fokrulanthro16-eng/Mythos-AI-SOC-Platform
GitHub: fokrulanthro16-eng/Mythos-AI-SOC-Platform
Mythos 是一个 AI 驱动的多智能体安全运营中心(SOC)平台,通过自动化编排安全事件的检测、归因、取证和缓解全流程来提升企业安全运营效率。
Stars: 0 | Forks: 0
# Mythos — AI 驱动的 SOC 事件编排平台
## 目录
- [概述](#overview)
- [架构](#architecture)
- [功能矩阵](#feature-matrix)
- [快速开始](#quick-start)
- [仪表盘页面](#dashboard-pages)
- [Agent 工作流](#agent-workflow)
- [MITRE ATT&CK 集成](#mitre-attck-integration)
- [案例管理](#case-management)
- [分析师工作台](#analyst-workbench)
- [Agent 协作](#agent-collaboration)
- [PDF 报告生成](#pdf-report-generation)
- [威胁行为者情报](#threat-actor-intelligence)
- [REST API](#rest-api)
- [测试覆盖率](#test-coverage)
- [项目结构](#project-structure)
- [配置](#configuration)
## 概述
Mythos 是一个全栈网络安全运营平台,它使用专门的 AI agent 流水线来编排完整的事件响应生命周期 —— 从检测到缓解。每个组件都可以独立测试、投入生产环境,并集成到 11 页的实时 SOC 仪表盘中。
**核心能力:**
| 能力 | 描述 |
|---|---|
| 多 agent 流水线 | 5 个专门的 agent 负责处理 检测 → 分析 → 归因 → 合规 → 取证 |
| 实时 SOC 仪表盘 | 11 页的 Streamlit 命令中心,包含 Plotly 图表 |
| MITRE ATT&CK 引擎 | 完整的技术到战术映射增强,采用懒加载单例模式 |
| 案例管理 | 完整的 CRUD,包含状态流、分析师笔记、优先级升级和 PDF 导出 |
| 分析师工作台 | 任务分配管理、6 标签页操作面板、活动源 |
| 高管仪表盘 | 高管 KPI:MTTR、MTTD、归因置信度、分析师利用率 |
| 威胁行为者情报 | 23 个被追踪的行为者,包含 6 个重点行为者中心及对比雷达图 |
| PDF 事件报告 | 8 个部分的 ReportLab 报告,包含 MITRE 映射和建议 |
| REST API | FastAPI,具备 JWT 认证、RBAC (ADMIN/ANALYST/VIEWER) 和多租户隔离 |
| 可观测性 | Prometheus 指标、Grafana 仪表盘、结构化审计日志 |
## 架构
```
graph TB
subgraph Intake["Incident Intake"]
A[Incident JSON / CSV / Syslog] --> B[Ingestion Service]
B --> C[Parser + Dedup]
C --> D[StateObject]
end
subgraph Pipeline["Agent Pipeline · core/orchestrator.py"]
D --> E[PlannerAgent\nDETECTED → ANALYZED\nIOC assignment · confidence · risk score]
E --> F[IntelligenceAgent\nATT&CK enrichment · IOC lookup]
F --> G[AttributionAgent\nANALYZED → ATTRIBUTED\nthreat actor mapping · campaign clustering]
G --> H[ForensicsAgent\nATT&CK technique enrichment]
H --> I[ComplianceAgent\nATTRIBUTED → MITIGATED\nplaybook selection]
end
subgraph Persistence["Persistence"]
I --> J[(logs/attribution_log.jsonl)]
I --> K[(logs/attribution_log.csv)]
I --> L[(PostgreSQL\nincidents · cases · users · tenants)]
end
subgraph API["REST API · api/main.py"]
L --> M[FastAPI /api/v1/\nJWT · RBAC · multi-tenant]
M --> N[Prometheus /metrics]
N --> O[Grafana dashboards]
end
subgraph Dashboard["Streamlit Command Center · port 8501"]
J --> P[data_loader.py]
L --> P
P --> Q[1 Incident Overview]
P --> R[2 Threat Intelligence]
P --> S[3 Incident Timeline]
P --> T[4 Logs Explorer]
P --> U[5 Incident Intake]
P --> V[6 Case Management]
P --> W[7 MITRE ATT&CK]
P --> X[8 Analyst Workbench]
P --> Y[9 Agent Collaboration]
P --> Z[10 Executive Dashboard]
P --> AA[11 Threat Actor Intel]
end
subgraph Reporting["PDF Reporting · reporting/"]
V --> BB[report_builder.py\nReportLab PDF engine]
X --> BB
Q --> BB
end
subgraph ThreatData["Threat Intelligence Data"]
CC[(data/threat_profiles.json\n23 actors)] --> AA
DD[(data/campaigns.json\n20 campaigns)] --> AA
EE[(data/mitre_attack.json\nATT&CK matrix)] --> W
end
```
### 组件层
```
┌─────────────────────────────────────────────────────────────────┐
│ Browser / CLI / API Client │
├───────────────────────┬─────────────────────────────────────────┤
│ Streamlit Dashboard │ FastAPI REST API │
│ port 8501 │ port 8000 /api/v1/* │
│ 11 pages │ JWT HS256 · RBAC · Pydantic v2 │
├───────────────────────┴─────────────────────────────────────────┤
│ Agent Pipeline (core/orchestrator.py) │
│ PlannerAgent → IntelligenceAgent → AttributionAgent │
│ → ForensicsAgent → ComplianceAgent │
├─────────────────────────────────────────────────────────────────┤
│ Data Stores │
│ PostgreSQL (production) · SQLite (CI/local) │
│ Redis (JWT blacklist + response cache) │
│ JSONL log files (dashboard data source) │
├─────────────────────────────────────────────────────────────────┤
│ Observability │
│ Prometheus /metrics · Grafana dashboards · audit.jsonl │
└─────────────────────────────────────────────────────────────────┘
```
## 功能矩阵
| 阶段 | 功能 | 状态 |
|---|---|---|
| 1–2 | 核心 agent 流水线、状态机、风险评分、JSONL/CSV 日志记录 | ✅ |
| 3 | IntelligenceAgent、AttributionAgent、Featherless/BandAI 集成 | ✅ |
| 4 | Streamlit 命令中心(4 个页面)、Plotly 图表、侧边栏筛选器 | ✅ |
| 5 | FastAPI + PostgreSQL + Redis、JWT 认证、RBAC、Alembic、Prometheus/Grafana | ✅ |
| 6 | 多格式解析器、摄入 API、MITRE ATT&CK 引擎、案例 API | ✅ |
| 7.1 | 2026 年生产数据集(50 个事件、20 个活动)、高管仪表盘 | ✅ |
| 7.2 | PDF 事件报告(ReportLab,8 个部分),集成到 3 个页面中 | ✅ |
| 7.3 | 威胁行为者情报中心(23 个行为者,5 标签页页面) | ✅ |
## 快速开始
### 前置条件
```
python -m pip install -r requirements.txt
# 用于 PDF 生成
pip install reportlab
```
### 生成事件数据并启动仪表盘
```
# 1. 运行 agent pipeline(生成 attribution_log.jsonl)
python core/orchestrator.py
# 2. 启动 Streamlit Command Center
python -m streamlit run dashboard/app.py
```
仪表盘将在 **http://localhost:8501** 打开
### 运行完整测试套件
```
pytest tests/ -v --tb=short
```
### Docker Compose(全栈)
```
cp .env.example .env # configure secrets
docker compose up -d
docker compose run --rm migrate
```
服务:API `http://localhost:8000` · 仪表盘 `http://localhost:8501` · Grafana `http://localhost:3000`
## 仪表盘页面
| # | 页面 | 主要功能 |
|---|---|---|
| 1 | **事件概览** | KPI 行、严重程度饼图、风险直方图、状态进展、置信度散点图、事件表、PDF 导出 |
| 2 | **威胁情报** | 行为者档案、活动频率、IOC 类型分布、归因置信度图表 |
| 3 | **事件时间线** | 状态转换散点图、状态热力图、完整历史记录 |
| 4 | **日志探索器** | 原始 JSONL 查看器、可搜索的 CSV 表格、字段级导出 |
| 5 | **事件接入** | 带有验证的手动事件提交表单 |
| 6 | **案例管理** | 完整 CRUD,状态流 (OPEN→CLOSED),笔记,案例时间线,PDF 导出 |
| 7 | **MITRE ATT&CK** | 技术浏览器、战术筛选、增强搜索 |
| 8 | **分析师工作台** | 事件分配、6 标签页操作面板、活动源、工作负载图表、PDF 导出 |
| 9 | **Agent 协作** | 多 agent 运行查看器、agent 消息时间线 |
| 10 | **高管仪表盘** | MTTR、MTTD、活跃活动、分析师利用率、事件趋势、严重程度分布 |
| 11 | **威胁行为者情报** | 23 个行为者、搜索/筛选、档案、活动甘特图、技术矩阵、雷达图对比、地理活动 |
## Agent 工作流
```
Incident ingested (JSON / CSV / Syslog / API)
│
▼
┌─────────────────────────────────────┐
│ PlannerAgent │
│ DETECTED → ANALYZED │
│ • Assigns IOCs from threat name │
│ • Sets initial confidence score │
│ • Computes risk_score │
│ = (confidence × 0.7) + │
│ (severity_weight × 0.3) │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ IntelligenceAgent │
│ • Enriches with MITRE ATT&CK data │
│ • Maps techniques to tactics │
│ • Queries Featherless/BandAI APIs │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ AttributionAgent │
│ ANALYZED → ATTRIBUTED │
│ • Maps threat_name → actor ID │
│ • Clusters incidents to campaigns │
│ • Adjusts confidence │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ ForensicsAgent │
│ • Lazy-loads AttackEngine singleton │
│ • Enriches with full technique set │
│ • Adds tactic + URL per technique │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ ComplianceAgent │
│ ATTRIBUTED → MITIGATED │
│ • Selects playbook for threat name │
│ • Populates mitigation_actions │
└──────────────┬──────────────────────┘
│
▼
persist() → JSONL + CSV + PostgreSQL
```
### 风险评分模型
```
risk_score = (confidence × 0.7) + (severity_weight × 0.3)
Severity weights: CRITICAL=1.00 HIGH=0.75 MEDIUM=0.50 LOW=0.25
Risk labels: ≥0.80=CRITICAL ≥0.60=HIGH ≥0.40=MEDIUM <0.40=LOW
```
## MITRE ATT&CK 集成
`intelligence/attack_engine.py` 中的 `AttackEngine` 在完整的 ATT&CK 数据集之上提供了一个懒加载单例:
```
from intelligence.attack_engine import AttackEngine
engine = AttackEngine() # lazy — loads on first access
techs = engine.get_techniques_for_tactic("execution")
detail = engine.get_technique("T1059.001") # Command-Line Interface
mapped = engine.map_threat_to_techniques("LOCKBIT4-RANSOMWARE")
```
**ATT&CK 浏览器**(第 7 页)允许分析师:
- 浏览所有战术和技术
- 按技术 ID 或名称搜索
- 查看完整的技术描述和缓解措施
- 按战术类别筛选
## 案例管理
案例存在于 `dashboard/case_store.py`(基于文件的 JSON)中,并与 `api/models/case.py` ORM 模型保持一致。
**状态流:** `OPEN → INVESTIGATING → CONTAINED → RESOLVED → CLOSED`
**优先级:** `P1` (Critical) · `P2` (High) · `P3` (Medium) · `P4` (Low)
每个案例存储:
- 关联的 `incident_id`
- 分析师分配
- 带有时间戳的笔记历史
- 审计跟踪(`history[]` 包含操作、用户、时间戳)
- `created_at` / `updated_at` / `resolved_at`(交错设置以实现真实的 MTTR)
**MTTR 模型**(种子数据):P1=36h · P2=72h · P3=120h · P4=48h
REST API 端点(需要身份验证):
| 方法 | 端点 | 描述 |
|---|---|---|
| GET | `/api/v1/cases` | 列出案例(分页,租户范围) |
| POST | `/api/v1/cases` | 创建案例 |
| GET | `/api/v1/cases/{id}` | 获取案例详情 |
| PATCH | `/api/v1/cases/{id}` | 更新状态 / 优先级 / 分析师 |
| DELETE | `/api/v1/cases/{id}` | 删除案例 |
| POST | `/api/v1/cases/{id}/incidents/{inc_id}` | 将事件链接到案例 |
| DELETE | `/api/v1/cases/{id}/incidents/{inc_id}` | 将事件取消链接 |
## 分析师工作台
`dashboard/pages/8_Analyst_Workbench.py` 是主要的分析师工作流界面。
**功能:**
- **分配事件** — 分配给 10 名指定的 SOC 分析师中的任何一个,并附带严重程度/优先级
- **分配表** — 可按优先级排序,可按分析师和状态筛选
- **6 标签页操作面板:**
1. 更改状态 — 经历 OPEN→INVESTIGATING→CONTAINED→RESOLVED
2. 升级优先级 — P3→P2→P1,带有自由文本升级原因
3. 添加笔记 — 带有作者的时间戳调查笔记
4. 重新分配 — 移交给其他分析师
5. 关闭 — 关闭笔记 + 自动同步 case_store
6. 📄 报告 — 生成并下载 PDF 事件报告
- **案例时间线** — 每个事件的按时间顺序排列的事件源
- **分析师活动源** — 实时操作日志(最后 30 个事件)
- **工作负载分布图** — 按分析师分组的条形图(Open vs Resolved vs Critical)
## Agent 协作
`dashboard/pages/9_Agent_Collaboration.py` 将多 agent 流水线的执行过程可视化。
- 查看 `logs/agent_runs.jsonl` 中各个 agent 的运行情况
- 检查每个 agent 的输入/输出状态差异
- 跟踪流水线持续时间和 agent 置信度贡献
- 按事件 ID 或 agent 名称筛选
`dashboard/agent_store.py` 提供:
- `seed_sample_runs()` — 加载 10 条 2026 年种子 agent 执行记录
- `get_agent_runs(limit, incident_id, agent)` — 筛选后的日志检索
- `get_run_stats()` — 流水线执行指标
## PDF 报告生成
`reporting/` 包使用 ReportLab platypus 生成专业的 8 部分 PDF 报告。
```
from reporting import assemble_report_data, build_incident_report
data = assemble_report_data(
"INC-2026-001",
incident_record=inc,
case_record=case,
assignment_record=assignment,
generated_by="Sarah Kim",
classification="CONFIDENTIAL",
)
pdf_bytes = build_incident_report(data) # returns raw bytes starting with %PDF
```
**报告部分:**
1. 封面 — 分类横幅、严重程度徽章、元数据
2. 事件摘要 — 包含置信度和风险评分的 KV 表
3. 事件时间线 — 按时间顺序排列的事件表
4. MITRE ATT&CK 映射 — 技术 ID、名称、战术、参考 URL
5. 威胁行为者归因 — 包含别名、TTP、工具的行为者档案
6. 分析师笔记 — 带有作者和时间戳的每条笔记
7. 案例状态 — 当前状态、优先级、案例历史
8. 证据摘要 — 解析的 IOC 表(类型 / 值)
9. 建议 — 类别和基于 ATT&CK 战术的修复步骤
PDF 导出功能通过带有 session-state 缓存的 `st.download_button` 集成到**事件概览**、**案例管理**和**分析师工作台**中。
## 威胁行为者情报
`dashboard/pages/11_Threat_Actors.py` 提供了一个跨越 23 个被追踪行为者的 5 标签页情报中心。
**重点行为者:** LOCKBIT4 · TA505 · FIN7 · APT29 · APT41 · Lazarus Group
**风险评分模型:**
```
risk_score = (sophistication_score × 0.45) + (severity_score × 0.40) + (ttp_breadth × 0.15)
Sophistication: nation-state=0.95 advanced=0.80 intermediate=0.60 basic=0.35
```
**五个标签页:**
| 标签页 | 内容 |
|---|---|
| 行为者档案 | 完整的档案卡、风险仪表、归因置信度仪表、目标部门条形图、TTP/工具/IOC/活动展开器 |
| 活动活动 | Plotly 甘特图时间线、带有状态/部门/受害者筛选器的活动详情表 |
| 技术矩阵 | Top-25 技术频率条形图、行为者 × 技术覆盖网格、战术类别分布 |
| 行为者对比 | 雷达图(风险、归因、TTP 覆盖率、活动活动、受害者范围)、并排对比表 |
| 地理活动 | 来源甜甜圈图、复杂程度分布、目标区域堆积条形图、目标部门堆积条形图 |
## REST API
基础 URL:`http://localhost:8000/api/v1`
交互式文档:`http://localhost:8000/docs`
### 认证
```
# 登录
curl -X POST /api/v1/auth/login \
-d '{"email":"admin@example.com","password":"Password123!"}'
# → {"access_token":"...", "refresh_token":"...", "token_type":"Bearer"}
# 使用 token
curl -H "Authorization: Bearer $TOKEN" /api/v1/incidents
```
Token TTLs:access=15 分钟 · refresh=7 天
### RBAC 矩阵
| 资源 | ADMIN | ANALYST | VIEWER |
|---|---|---|---|
| 读取事件/案例 | ✓ | ✓ | ✓ |
| 创建/更新事件 | ✓ | ✓ | — |
| 运行流水线 | ✓ | ✓ | — |
| 删除事件 | ✓ | — | — |
| 管理用户/租户 | ✓ | — | — |
### 关键端点
```
POST /auth/login Obtain JWT token pair
POST /auth/refresh Refresh access token
POST /auth/logout Blacklist refresh token
GET /auth/me Current user profile
GET /incidents List incidents (paginated)
POST /incidents Create incident
POST /incidents/{id}/run Trigger agent pipeline
GET /incidents/{id} Get incident detail
PATCH /incidents/{id} Update incident
DELETE /incidents/{id} Delete incident
GET /cases List cases
POST /cases Create case
PATCH /cases/{id} Update case status/priority/analyst
POST /cases/{id}/incidents/{id} Link incident to case
POST /ingest/json Bulk ingest JSON incidents
POST /ingest/csv Bulk ingest CSV log file
POST /ingest/syslog Parse syslog entries
GET /attack/techniques Browse ATT&CK techniques
GET /attack/tactics List ATT&CK tactics
GET /health Health check (no auth)
GET /metrics Prometheus metrics (no auth)
```
## 测试覆盖率
| 测试文件 | 测试数 | 范围 |
|---|---|---|
| `test_state.py` | 11 | StateObject、IncidentStatus、ThreatSeverity 枚举 |
| `test_agents.py` | 18 | PlannerAgentForensicsAgent、ComplianceAgent |
| `test_orchestrator.py` | 13 | MythosOrchestrator 批处理流水线 |
| `test_intelligence_agent.py` | 16 | IntelligenceAgent、MITRE ATT&CK 增强 |
| `test_attribution_agent.py` | 24 | AttributionAgent、活动聚类 |
| `test_featherless_client.py` | 21 | FeatherlessClient mock-first API |
| `test_bandai_client.py` | 22 | BandAIClient mock-first 任务平台 |
| `test_phase3_pipeline.py` | 18 | 端到端阶段 3 集成 |
| `test_dashboard_data.py` | 39 | data_loader 所有函数 |
| `test_dashboard_charts.py` | 32 | Plotly 图表构建器 |
| `test_api_auth.py` | 14 | 登录、刷新、登出、/me |
| `test_api_incidents.py` | 17 | 事件 CRUD + 流水线触发 |
| `test_api_cases.py` | 14 | 案例 CRUD + 链接/取消链接 |
| `test_api_rbac.py` | 21 | RBAC 矩阵 + 多租户隔离 |
| `test_api_ingest.py` | 18 | 解析器端点 (JSON/CSV/syslog) |
| `test_api_attack.py` | 15 | ATT&CK 技术/战术端点 |
| `test_api_case_management.py` | 16 | 案例服务层 |
| `test_parsers.py` | 19 | JSON/CSV/syslog 解析器 + 去重 |
| `test_attack_engine.py` | 14 | AttackEngine 懒加载单例 |
| `test_workbench_store.py` | 22 | 工作台分配/笔记/升级 |
| `test_agent_store.py` | 18 | Agent 运行存储 + 种子数据 |
| `test_executive_store.py` | 79 | 高管 KPI 计算、筛选器、MITRE 覆盖率 |
| `test_report_builder.py` | 34 | PDF 构建器、建议、assemble_report_data |
| `test_threat_actor_store.py` | 62 | 威胁行为者存储、纯计算、搜索/筛选 |
| `test_validators.py` | 72 | 事件/活动/案例/分析师验证器 + 数据集 |
| `test_production_dataset.py` | 37 | 数据完整性:50 个事件、10 名分析师、活动 |
| **总计** | **795** | |
## 生产数据集
阶段 7.1 提供了一个完全增强的 SOC 数据集,用于驱动所有仪表盘视图:
### 事件 (`data/sample_incidents.json`)
跨越 30 天的 50 个真实企业事件,涵盖所有 10 个威胁类别:
| 类别 | 事件数 | 威胁示例 |
|---|---|---|
| 勒索软件 | 13 | LockBit 4.0、BlackCat/ALPHV、Akira、PLAY、Rhysida |
| 命令与控制 | 9 | Cobalt Strike、Brute Ratel C4、Sliver、Havoc、Mythic |
| 数据泄露 | 7 | Cl0p MOVEit 风格、TA505 FTP、Scattered Spider Azure |
| 横向移动 | 5 | Mimikatz PTH、Kerberoasting、RDP 暴力破解、WMIC |
| 凭据窃取 | 5 | EvilGinx2 AITM、Midnight Blizzard OAuth、Storm-0558 |
| 钓鱼 / 恶意软件 | 5 | DarkGate、QakBot、BumbleBee、Emotet、Carbanak |
| 国家级 LOTL | 3 | Volt Typhoon、APT28、APT29 |
| 内部威胁 | 1 | 承包商 USB 暂存 |
| 加密 / 供应链 | 2 | Lazarus TraderTraitor、npm 后门 |
每个事件包括:
- 真实的 MITRE ATT&CK 技术(每个事件 3–6 个,47 个独特的技术 ID)
- 置信度评分、风险评分、归因置信度 (0.0–1.0)
- 分析师分配(10 名 SOC 分析师之一)
- 状态进展 (DETECTED → INVESTIGATING → CONTAINED → MITIGATED → RESOLVED)
- IOC 增强、缓解措施、AI 威胁摘要
### 分析师 (`data/analysts.json`)
10 名具有真实档案的 SOC 分析师:
| 姓名 | 级别 | 专长 |
|---|---|---|
| Sarah Kim | Tier 3 | 勒索软件、IR、取证 |
| James Okafor | Tier 3 | 关键基础设施、OT/ICS |
| Elena Vasquez | Tier 2 | 身份与访问、钓鱼、BEC |
| Priya Nair | Tier 3 | APT 追踪、威胁情报 |
| Nia Thompson | Tier 2 | 金融威胁行为者、加密 |
| Carlos Mendez | Tier 3 | 数据泄露、合规 |
| Marcus Webb | Tier 2 | C2 检测、网络取证 |
| Aisha Patel | Tier 2 | 端点检测、横向移动 |
| Tom Brandt | Tier 1 | 分流、警报监控 |
| Ryan O'Brien | Tier 2 | 国家级威胁、LOTL |
## 高管仪表盘
**第 10 页 · `dashboard/pages/10_Executive_Dashboard.py`**
带有实时日期范围和严重程度筛选器的高管/CISO 命令视图,应用于所有指标。
### KPI 卡片 (8)
| KPI | 来源 |
|---|---|
| 事件总数 | 选定范围内的事件计数 |
| 关键事件 | 选定范围内严重程度 == CRITICAL 的事件 |
| 待处理案例 | 活跃案例(所有时间) |
| 活跃活动 | 选定范围内的不同活动 |
| MTTD | 基于严重程度加权的检测时间模型 |
| MTTR | 解决已关闭案例的平均小时数 |
| 分析师利用率 | 活跃分配占产能的百分比 |
| 平均归因置信度 | AttributionAgent 的平均置信度 |
### 可视化 (7)
- **事件趋势** — 选定日期窗口的面积图
- **严重程度分布** — 甜甜圈图 (CRITICAL / HIGH / MEDIUM / LOW)
- **案例状态分布** — 按状态划分的条形图
- **威胁类别细分** — 水平条形图(8 个类别)
- **活动活动** — 按事件计数排名前 10 的活动
- **威胁行为者归因** — 按行为者家族划分的甜甜圈图
- **MITRE ATT&CK 覆盖率** — 显示每个战术独特技术的条形图
### 筛选器
- **日期范围** — 从/到日期选择器 + 快速范围按钮(7 天、30 天、90 天、所有时间)
- **严重程度** — 多选 (CRITICAL、HIGH、MEDIUM、LOW)
- **导出** — 将 KPI 摘要下载为 CSV
### 启动
```
streamlit run dashboard/app.py
# 导航至:Executive Dashboard(侧边栏第 10 页)
```
### KPI 输出示例(30 天窗口,所有严重程度)
```
Total Incidents: 50
Critical Incidents: 11
Open Cases: 10
Active Campaigns: 20
MTTD: 7.4 hrs
MTTR: 72.0 hrs
Analyst Utilization: 16.0%
Avg Attribution Conf: 75.0%
```
## 项目结构
```
Mythos/
├── agents/
│ ├── attribution_agent.py # threat_name → actor mapping (55 entries)
│ ├── compliance_agent.py # ATTRIBUTED → MITIGATED, playbook selection
│ ├── forensics_agent.py # ATT&CK enrichment, AttackEngine wrapper
│ ├── intelligence_agent.py # IOC enrichment, Featherless/BandAI
│ └── planner_agent.py # DETECTED → ANALYZED, risk scoring (54 entries)
│
├── api/
│ ├── db/database.py # AsyncSession, Base, get_db, init_db
│ ├── models/ # SQLAlchemy ORM: incident, case, user, tenant, audit
│ ├── routers/ # auth, incidents, cases, users, tenants, ingest, attack
│ ├── schemas/ # Pydantic v2 schemas
│ ├── services/ # auth, audit, cache (Redis), metrics (Prometheus)
│ ├── dependencies.py # get_current_user, require_roles(*roles)
│ └── main.py # FastAPI app + middleware + lifespan
│
├── core/
│ ├── logger.py # logging setup, persist(), JSONL/CSV sinks
│ ├── orchestrator.py # MythosOrchestrator, 5-agent pipeline
│ └── state.py # StateObject (Pydantic), IncidentStatus, ThreatSeverity
│
├── dashboard/
│ ├── pages/
│ │ ├── 1_Incident_Overview.py
│ │ ├── 2_Threat_Intelligence.py
│ │ ├── 3_Incident_Timeline.py
│ │ ├── 4_Logs_Explorer.py
│ │ ├── 5_Incident_Intake.py
│ │ ├── 6_Case_Management.py
│ │ ├── 7_MITRE_ATT&CK.py
│ │ ├── 8_Analyst_Workbench.py
│ │ ├── 9_Agent_Collaboration.py
│ │ ├── 10_Executive_Dashboard.py
│ │ └── 11_Threat_Actors.py
│ ├── components/ # charts.py, filters.py, metrics.py
│ ├── agent_store.py # agent run log + seed
│ ├── case_store.py # case CRUD, 15-case 2026 seed
│ ├── data_loader.py # JSONL loader, KPI compute, filter_df
│ ├── executive_store.py # MTTR/MTTD/utilisation KPI aggregation
│ ├── threat_actor_store.py # 23 actors, risk/confidence scoring, search
│ └── workbench_store.py # assignment, escalation, activity feed
│
├── data/
│ ├── campaigns.json # 22 campaigns (20 original + FIN7 + APT41)
│ ├── mitre_attack.json # full ATT&CK dataset
│ ├── sample_incidents.json # 50 2026 incidents
│ └── threat_profiles.json # 23 actor profiles
│
├── intelligence/
│ └── attack_engine.py # lazy-loading ATT&CK singleton
│
├── integrations/
│ ├── bandai_client.py # BandAI task platform client
│ └── featherless_client.py # Featherless LLM inference client
│
├── logs/ # attribution_log.jsonl/.csv, audit.jsonl, agent_runs.jsonl
│
├── parsers/
│ ├── base.py / json_parser.py / csv_parser.py / syslog_parser.py
│ ├── dedup.py # content-hash deduplication
│ └── ingestion_service.py # multi-format coordinator
│
├── reporting/
│ ├── __init__.py
│ ├── report_builder.py # 8-section PDF engine (ReportLab platypus)
│ └── styles.py # colour palette + paragraph styles
│
├── reports/ # generated PDF output directory
│
├── tests/ # 24 test files, 588 tests total
│
├── alembic/ # database migration scripts
├── monitoring/ # Prometheus config + Grafana dashboard JSON
│
├── .env.example
├── conftest.py
├── docker-compose.yml
├── requirements.txt
└── README.md
```
## 配置
将 `.env.example` 复制到 `.env` 并设置:
```
# 生产环境必需
JWT_SECRET_KEY=
DATABASE_URL=postgresql+asyncpg://mythos:password@localhost:5432/mythos
REDIS_URL=redis://localhost:6379/0
# 可选
MYTHOS_LOG_LEVEL=INFO # DEBUG | INFO | WARNING
CONFIDENCE_THRESHOLD=0.75 # minimum confidence to flag as attributed
RISK_CRITICAL_THRESHOLD=0.80 # risk score threshold for CRITICAL label
SQL_ECHO=false # set true only in local dev
ACCESS_TOKEN_EXPIRE_MINUTES=15
REFRESH_TOKEN_EXPIRE_DAYS=7
```
对于没有 PostgreSQL/Redis 的本地开发,应用程序会自动使用 SQLite + 内存缓存(无需配置)。
标签:AI智能体, Cloudflare, DLL 劫持, Kubernetes, MITRE ATT&CK, 大语言模型, 威胁情报, 安全运营中心, 开发者工具, 搜索引擎查询, 测试用例, 网络映射, 自定义请求头, 请求拦截, 逆向工具