mayank02raj/ATTACK-Coverage-Dashboard
GitHub: mayank02raj/ATTACK-Coverage-Dashboard
一个基于 Streamlit 的 MITRE ATT&CK 检测覆盖分析工具,解决规则与数据源评估不透明的问题。
Stars: 0 | Forks: 0
# MITRE ATT&CK Coverage Dashboard v2
一个生产环境形态的检测覆盖分析工具。实时拉取 MITRE ATT&CK 数据,摄入 Sigma、Wazuh 和 JSON 格式的检测规则,并基于你实际的数据源可用性生成加权覆盖评分。支持多页面的 Streamlit UI,包含真实的 ATT&CK 矩阵热图、威胁行为体对比、ATT&CK Navigator 导出以及面向管理层的 PDF 报告。
## 存在的意义
每个运行 SOC 的 Tier 1 防御承包商都有相同的 ATT&CK 覆盖评估清单:哪些技术我们可以检测,哪些不能,以及哪些数据源缺口导致我们报告的覆盖情况不真实。大多数团队在庞大的 Excel 表中回答这个问题,且没人信任这种做法。本仪表盘在 30 秒内给出答案,使用可审计的数学计算,并以三种格式导出结果,方便交付给需要的人。
## v2 的新特性
| 功能 | v1 | v2 |
|---|---|---|
| 存储 | JSON 文件 | 带有外键、索引、事务的 SQLite |
| 页面 | 4 个标签页 | 7 页侧边栏导航与隔离视图 |
| 覆盖计算 | 朴素(任意规则即覆盖) | 朴素 **和** 基于数据源可用性的加权 |
| 可视化 | 柱状图 + 树图 | 真实的 ATT&CK 矩阵热图(Navigator 风格布局) |
| 威胁行为体 | 不支持 | 从 STIX 解析 130+ 个组,按组显示覆盖情况 |
| 数据源 | 不追踪 | 可编辑的清单,带质量评分 |
| 规则摄入 | 仅手动 JSON | Sigma 目录、Sigma 上传、JSON、Wazuh XML |
| 导出 | 无 | ATT&CK Navigator JSON、PDF 报告、CSV |
| 测试 | 无 | 4 个模块中超过 25 个 pytest 用例 |
| 容器 | 无 | 多阶段 Dockerfile,包含健康检查与非 root 用户 |
| CI | 无 | 提交时进行代码检查、测试与镜像构建 |
## 架构
```
┌──────────────────────────────────────┐
│ Streamlit multi-page UI │
│ │
│ Overview · Matrix · Rules · Actors │
│ Import · Export · Data Sources │
└────────┬─────────────────────────────┘
│
┌───────────┴───────────┐
│ │
┌─────────▼─────────┐ ┌────────▼────────┐
│ AttackData │ │ RuleStore │
│ (STIX parser) │ │ (SQLite) │
│ │ │ │
│ - techniques │ │ - rules │
│ - groups │ │ - mappings │
│ - data sources │ │ - data sources │
└─────────┬──────────┘ └────────┬────────┘
│ │
│ ┌────────────────────┴───┐
└──►│ Coverage engine │
│ - naive scoring │
│ - weighted scoring │
└──┬─────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Matrix │ │ Navig. │ │ PDF │
│ heatmap │ │ JSON │ │ report │
└─────────┘ └─────────┘ └─────────┘
```
## 项目布局
```
attack-dashboard/
├── app/
│ ├── main.py Streamlit entry, sidebar nav
│ ├── attack_loader.py STIX parser (techniques, groups, data sources)
│ ├── db.py SQLite RuleStore
│ ├── importers.py Sigma + JSON + Wazuh XML importers
│ ├── coverage.py Naive and weighted coverage math
│ ├── navigator.py ATT&CK Navigator JSON exporter
│ ├── report.py PDF report generator (reportlab)
│ └── views/
│ ├── overview.py KPI metrics + tactic charts
│ ├── matrix.py Real ATT&CK matrix heatmap with drilldown
│ ├── rules_view.py Browse + manual add
│ ├── threat_actors.py Per-group coverage analysis
│ ├── import_view.py 4 import sources
│ ├── export_view.py Navigator + PDF + CSV
│ └── data_sources_view.py Inventory editor
├── tests/
│ ├── test_db.py Storage round-trips
│ ├── test_importers.py Sigma + Wazuh + technique normalization
│ ├── test_coverage.py Naive + weighted scoring math
│ └── test_navigator.py Layer JSON structure
├── data/
│ ├── sample_rules/ 5 sample Sigma rules to demo the importer
│ └── enterprise-attack.json STIX cache (auto-fetched)
├── .streamlit/config.toml Theme + server config
├── Dockerfile Multi-stage, non-root, healthcheck
├── docker-compose.yml
├── Makefile
├── requirements.txt
├── requirements-dev.txt
└── .github/workflows/ci.yml
```
## 快速开始
```
git clone
cd attack-dashboard
make install
make run # opens at http://localhost:8501
```
或者使用 Docker:
```
make up # docker compose up -d
```
首次使用流程:
1. 打开 http://localhost:8501
2. 进入 **Data Sources**,点击“启用所有 ATT&CK 数据源”
3. 关闭你实际上并未采集的数据源(这会影响加权评分)
4. 进入 **Import**,导入 `data/sample_rules` 中的示例 Sigma 规则,或运行 `make seed`
5. 进入 **Overview** 查看你的覆盖情况
6. 进入 **ATT&CK Matrix** 查看带下钻功能的热图
7. 进入 **Threat Actors**,选择 APT29,查看规则对其技术的覆盖情况
8. 进入 **Export** 生成 Navigator JSON 层或 PDF 报告
## 七个视图
**Overview(概览)** — 顶层指标(规则数量、覆盖百分比、加权覆盖百分比),按战术分组的已覆盖/未覆盖技术柱状图,朴素与加权对比以便一眼发现盲点,并包含完整的战术明细表。
**ATT&CK Matrix(矩阵)** — 真实热图,布局与官方 Navigator 一致。战术为列,技术在列下堆叠。单元格颜色反映覆盖状态:绿色(已覆盖,完整数据)、橙色(已覆盖,部分数据)、灰色(已覆盖,无数据源)、红色(未覆盖)。点击任意技术 ID 可查看检测指引、所需数据源及当前覆盖它的规则。
**Rules(规则)** — 支持按名称、来源与技术 ID 搜索。展开内联查看规则元数据与原始内容。带多选技术的规则手动添加表单。
**Threat Actors(威胁行为体)** — 从 130+ 个 MITRE 跟踪的威胁组中选择,这些组从入侵集 STIX 对象中解析而来。查看该特定组技术的覆盖情况,以环形图和每技术明细表呈现。提供按覆盖情况排名的前 10 个最活跃组排行榜。
**Import(导入)** — 四种摄入路径:Sigma 目录扫描(指向 SigmaHQ/sigma 以摄入整个社区规则集)、Sigma 文件上传、JSON 文件、Wazuh 的 local_rules.xml。自动从 `attack.tXXXX` 标签或 `` 元素提取技术 ID。
**Export(导出)** — ATT&CK Navigator 层 JSON(直接打开官方 Navigator UI)、多页 PDF 报告(含执行摘要与战术分解,适用于合规审查)、用于下游分析的原始 CSV。
**Data Sources(数据源)** — 可编辑的所有 ATT&CK 数据源清单。可切换启用/禁用,设置 0.0 到 1.0 的质量评分并添加备注。仪表盘使用此作为加权评分输入。同时展示每个数据源解锁的技术,帮助你优先采集。
## 加权评分
朴素覆盖只要某条规则提到某技术就认为已覆盖。这是每个电子表格都在使用的评分方式,但它具有误导性。如果你的规则声称覆盖了 T1003(OS 凭证转储),但你并未采集进程内存或进程访问,那么你实际上无法检测它。
加权覆盖计算如下:
```
weighted_score(t) = is_covered(t) * (sum of available data source quality / required data source count)
```
因此只有规则但无数据源的技术得分为 0.0,拥有规则且部分数据源的技术得分介于两者之间。仪表盘并列展示这两个数值,两者之差即你真实的盲点。
## 展示的技能
检测工程、MITRE ATT&CK 熟练度、威胁驱动防御、STIX 2.1 解析、数据可视化、多格式规则摄入、全栈 Python(SQLite + Streamlit + Plotly + reportlab)、覆盖分析方法论、容器加固、测试驱动开发、CI/CD。
## 技能与职位描述的映射
- **“MITRE ATT&CK 对齐”** — 带加权评分的企业级矩阵全覆盖
- **“检测覆盖评估”** — 在 30 秒内生成可审计的交付物
- **“威胁驱动防御”** — 针对 130+ 个组的每行为体覆盖分析
- **“Sigma 规则”** — 带技术提取功能的目录与文件摄入
- **“Wazuh / SIEM 内容”** — 生产规则集的 XML 导入
- **“合规报告”** — 适用于 CMMC、FedRAMP、DoD CDM 审查的 PDF 生成器
- **“Python 数据工具”** — pandas、plotly、SQLite、reportlab、Streamlit
- **“测试”** — 包含覆盖计算本身的 25+ 个 pytest 用例
## 示例:导入 SigmaHQ 社区规则
```
git clone https://github.com/SigmaHQ/sigma /tmp/sigma
make run
# 在浏览器中:导入 -> Sigma 目录 -> /tmp/sigma/rules
```
你将得到数千条规则,这些规则与实时的 ATT&CK 矩阵进行映射,概览页面会明确告诉你社区规则集未覆盖哪些战术与技术。仅这一差距分析就足以证明部署的价值。
## 生产环境强化说明
当前设置适用于单个分析师或小型团队。如需扩展:
1. 将 SQLite 迁移到使用连接池的 PostgreSQL
2. 在 Nginx 后方部署 Streamlit,并启用 OAuth 或 SSO
3. 定期从 SIEM API 拉取规则,而非一次性导入
4. 安排夜间任务自动刷新 ATT&CK STIX 包与覆盖缓存
5. 为每条规则的增删添加行级审计日志
6. 若多个用户并发访问,用 Redis 替换进程内缓存
## 扩展思路
- 按平台过滤(Windows / Linux / macOS / 云),使用技术数据中的 platforms 字段
- 对比两个覆盖状态的时间差异(Q1 与 Q2),展示进展
- 按对手使用频率对覆盖技术评分,优先处理真实组利用的缺口
- 自动建议下一步要编写的规则,针对最高影响的未覆盖技术
- 与 Atomic Red Team 集成,实现一键触发未覆盖技术的测试
- 从 VECTR 拉取数据,将红队测试结果与检测覆盖结合分析
标签:130+威胁行为体, ATT&CK Navigator导出, ATT&CK矩阵热图, Cloudflare, Excel替代, JSON规则, Kubernetes, Lint, MITRE ATT&CK, Mutation, NIDS, PDF报告, pytest测试, SEO: ATT&CK Navigator, SEO: MITRE ATT&CK, SEO: PDF报告, SEO: 威胁行为体分析, SEO: 检测覆盖, SEO: 规则摄入, Sigma规则, SQLite数据库, STIX解析, Streamlit仪表盘, Wazuh规则, 健康检查, 内核监控, 功能: 报告导出, 功能: 数据来源管理, 功能: 覆盖分析, 功能: 规则导入, 加权评分, 可审计数学, 可视化, 多阶段Docker, 多页面UI, 威胁行为体覆盖, 容器化, 数据来源清单, 数据来源评分, 检测能力缺口, 检测覆盖分析, 目标导入, 规则摄入, 质量评分, 逆向工具, 非root用户