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用户