cray44/spl-coverage-map
GitHub: cray44/spl-coverage-map
从 Sigma 规则或 Markdown 检测报告中提取 MITRE ATT&CK 标签,生成 ATT&CK Navigator 覆盖图层,帮助团队直观发现检测盲区。
Stars: 0 | Forks: 0
# spl-coverage-map
从 Sigma 规则目录或 Markdown 检测报告生成 [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/) JSON 覆盖层。
实际应用场景:你拥有一个 Sigma 规则库(或带有 MITRE 前言的 ADS 格式检测报告),希望一眼就能看出涵盖了哪些技术、缺口在哪里,以及哪些战术的覆盖率为零。将输出的 JSON 导入 Navigator,即可获得一个可视化的覆盖地图。
与 [sigma-to-spl](https://github.com/cray44/sigma-to-spl) 配合使用 —— 两者使用同一个 `rules/` 目录作为输入。
## 安装说明
```
pip install -r requirements.txt
pip install -e .
```
需要 Python 3.10+。
## 使用说明
**从 Sigma 规则目录生成 Navigator 层:**
```
python -m coverage_map generate ../sigma-to-spl/rules/ --output output/coverage.json
```
**打印覆盖摘要:**
```
python -m coverage_map generate ../sigma-to-spl/rules/ --summary
```
输出:
```
Techniques covered: 12
T1003.001 LSASS Process Access for Credential Dumping
T1021.002 SMB Lateral Movement via Admin Share Access
T1071 Statistical Beaconing via Zeek Connection Log
T1071.001 TLS C2 via JA4 Fingerprint and Certificate Anomalies
T1071.004 DNS Tunneling via High-Entropy Subdomains
T1078.004 AWS IAM Privilege Escalation via Policy Attachment
T1098.001 Entra ID Service Principal Credential Addition
T1528 Azure Illicit OAuth Application Consent Grant
T1558.003 Kerberoasting via RC4 Encryption Downgrade
T1566.002 OAuth Device Code Phishing
T1573.002 TLS C2 via JA4 Fingerprint and Certificate Anomalies
Tactics with no coverage:
defense-evasion
discovery
execution
impact
reconnaissance
resource-development
```
**在 ATT&CK Navigator 中打开:**
1. 访问 [mitre-attack.github.io/attack-navigator](https://mitre-attack.github.io/attack-navigator/)
2. 选择 Open Existing Layer → Upload from local
3. 选择 `output/coverage.json`
已覆盖的技术会高亮显示为绿色;得分反映了覆盖该技术的规则数量。
## Markdown 格式 (`--format markdown`)
从 `.md` 文件的 YAML frontmatter 中读取 MITRE 数据,而不是 Sigma 规则的 `tags:` 块。适用于基于检测报告库生成的覆盖地图。
```
python -m coverage_map generate detections/ --format markdown --output coverage.json --summary
```
期望的 frontmatter 字段:
```
---
mitre_technique: T1078.004
mitre_tactic: Initial Access / Defense Evasion
---
```
- `mitre_technique` — 单个 ID、逗号分隔的列表或 `ID — Description`(描述信息会被自动去除)
- `mitre_tactic` — 人类可读的字符串,多个战术使用斜杠或逗号分隔
- 包含 `mitre_technique: N/A` 或没有 `mitre_technique` 字段的文件会被静默跳过
## 输出格式
标准的 ATT&CK Navigator 层(v4.9)。每个已覆盖的技术会高亮显示为绿色;得分 = 覆盖该技术的规则数量。兼容 Navigator 的“layer comparison”功能,可用于与其他团队的层进行差距分析。
## 架构
`parser.parse_rules_directory()` 遍历 Sigma 规则目录,从每个规则的 `tags:` 列表中提取 `attack.TXXXX` 和 `attack.` 标签 → 返回 `list[ParsedRule]`。
`navigator.build_layer()` 按技术 ID 进行聚合,根据规则数量进行评分,并返回 ATT&CK Navigator 4.9 层字典。`write_layer()` 负责转储 JSON。`render_summary()` 打印差距分析。
两种解析器(Sigma 和 Markdown)都接入相同的 `build_layer()` 流水线。
标签:AMSI绕过, ATT&CK Navigator, Cloudflare, Homebrew安装, IP 地址批量处理, Markdown解析, MITRE ATT&CK, Python, Sigma规则, SPL搜索, 凭证访问, 可视化映射, 威胁检测, 安全规则管理, 安全运营, 差距分析, 扫描框架, 无后门, 检测覆盖率, 横向移动, 目标导入, 私有化部署, 编程规范, 网络安全, 覆盖度可视化, 逆向工具, 防御规避, 隐私保护