DheerajMaram/attack-heatmap
GitHub: DheerajMaram/attack-heatmap
将实时威胁情报映射到 MITRE ATT&CK 技术并与 Sigma 检测规则对比,输出差距报告和 Navigator 热力图,帮助分析被活跃利用但未被检测的技术。
Stars: 0 | Forks: 0
# ATT&CK 热力图
Python CLI,摄取实时威胁数据,将恶意软件家族映射到 MITRE ATT&CK 技术,检查 Sigma 覆盖率,并生成优先排序的差距报告以及 ATT&CK Navigator 图层。
三个可选扩展增加了深度而不会改变核心工作流程:CISA KEV 数据(无需 API 密钥,包含 ATT&CK 映射)、mthcht 检测列表作为与 Sigma 并列的第二覆盖层,以及针对最未被覆盖技术的 MITRE D3FEND 对策建议。
## 为何存在
它回答一个问题:哪些 ATT&CK 技术在当前威胁数据中出现了,但在你的仓库中没有 Sigma 检测?
输出两个文件。`gaps.md` 提供未覆盖技术的排名列表,包含来源威胁数据上下文和优先级标签。`layer.json` 是一个 ATT&CK Navigator 图层,可以直接打开。
有关输出的稳定示例,请参阅 [`docs/sample-gaps.md`](docs/sample-gaps.md)。`outputs/` 下的文件是本地运行产物,已被 gitignore。
## 管道
```
┌──────────────────────────────────────────────────────────────────────────────┐
│ ATT&CK Heatmap pipeline │
│ │
│ ┌─────────────────────┐ ┌──────────────┐ ┌────────────────────────┐ │
│ │ Live feeds │ │ ATT&CK │ │ Sigma rules │ │
│ │ │──►│ STIX mapper │ │ sigma/rules/**/*.yml │ │
│ │ ThreatFox │ │ + opt. │ │ attack.tXXXX tags │ │
│ │ Feodo │ │ Malpedia / │ │ │ │
│ │ MalwareBazaar │ │ MISP enrich │ ├────────────────────────┤ │
│ │ URLhaus / YARAify │ └──────┬───────┘ │ mthcht detection lists │ │
│ ├─────────────────────┤ │ (opt.) │ (--detection-lists) │ │
│ │ CISA KEV (--kev) │──────────┘ └───────────┬────────────┘ │
│ │ (ATT&CK IDs direct) │ bypasses mapper │ │
│ └─────────────────────┘ │ │
│ + optional VirusTotal enrichment │ │
│ ▼ ▼ │
│ ┌───────────────────────────────────────┐ │
│ │ Gap analyzer + TIE ranker │ │
│ └──────────────────┬────────────────────┘ │
│ ▼ │
│ outputs/gaps.md outputs/layer.json │
│ (+ D3FEND section (Navigator heatmap) │
│ with --d3fend) │
└──────────────────────────────────────────────────────────────────────────────┘
```
## 功能
| 功能 | 状态 |
|---------|--------|
| ThreatFox (`Auth-Key`) | 已实现 |
| Feodo Tracker C2 封禁列表 | 已实现 |
| MalwareBazaar (`recent_detections`) | 已实现 |
| URLhaus (`urls/recent`) | 已实现 |
| YARAify (`list_tasks` + 标识符) | 已实现 |
| **CISA KEV 订阅源** (`--kev`,无需 API 密钥) | **新增** |
| 可选的 VirusTotal v3(文件/URL,分层限制) | 已实现 |
| mitreattack-python STIX 映射器 | 已实现 |
| 可选的 Malpedia / MISP Galaxy 丰富 | 已实现 |
| Sigma 覆盖率加载器(`attack.*` 标签) | 已实现 |
| **mthcht 检测列表** (`--detection-lists`,无需 API 密钥) | **新增** |
| 通过 TIE 共现矩阵进行差距排名 | 已实现 |
| ATT&CK v18 AN 系列列 (`--v18-analytics`) | 已实现 |
| **D3FEND 对策** (`--d3fend`,无需 API 密钥) | **新增** |
| Navigator 图层 JSON(schema v4.5) | 已实现 |
| 丰富的 CLI(`--quiet`、`--interactive`、进度) | 已实现 |
## 设置
### 1. 克隆并安装
```
git clone
cd attack-heatmap
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install -r requirements.txt
```
如果在 OneDrive 下创建 `.venv` 出现权限错误,请在其他位置创建(例如 `%LOCALAPPDATA%\venvs\attack-heatmap`)并从项目根目录安装。
### 2. 配置
```
cp .env.example .env
```
| 变量 | 用途 |
|----------|---------|
| `THREATFOX_AUTH_KEY` / `THREATFOX_API_KEY` | abuse.ch 的 [Auth-Key](https://auth.abuse.ch/),用于 ThreatFox |
| `MALWAREBAZAAR_*`、`URLHAUS_*` | 同一门户 — 通常同一密钥适用于所有 abuse.ch 产品 |
| `VIRUSTOTAL_API_KEY` | 可选;使用时还需设置 `VT_TIER=free` 或 `paid` |
| `VT_INCLUDE_URLS` | `true` 以在免费层查询 URL IOC(考虑配额)|
| `TIE_MODEL_PATH` | 默认值:`data/tie_cooccurrence_matrix.json` |
| `FEED_DAYS_BACK` | 订阅源回溯窗口(ThreatFox API 最多 7 天)|
不使用 abuse.ch 密钥的最小运行:`python main.py --feeds feodo`。三个新标志(KEV、检测列表、D3FEND)也不需要 API 密钥。
### 3. TIE 矩阵
仓库附带 `data/tie_cooccurrence_matrix.json` — 来自公共 [CTID Technique Inference Engine](https://github.com/center-for-threat-informed-defense/technique-inference-engine) 数据集的技术共现计数。上游更改后重新生成:
```
python scripts/build_tie_cooccurrence.py
```
### 4. Sigma 规则
将 `.yml` 规则放在 `sigma/rules/` 中的任何深度。加载器扫描 `attack.tXXXX` 标签。
批量 SigmaHQ 规则:
```
git clone --depth 1 https://github.com/SigmaHQ/sigma sigma/rules/sigmahq
```
演示用的小型精选集附带在 `sigma/rules/` 下。
## 使用方法
```
# 默认订阅源:threatfox、feodo、malwarebazaar、urlhaus
python main.py
# 订阅源子集(feodo 无需 API 密钥)
python main.py --feeds feodo
# 添加 CISA KEV — 无需 API 密钥,ATT&CK 映射来自 CTID
python main.py --kev
# 添加 mthcht 检测列表作为第二层覆盖
python main.py --detection-lists
# 为顶级差距技术添加 D3FEND 对策建议
python main.py --d3fend
# 限制 D3FEND 查询次数(默认 15)
python main.py --d3fend --d3fend-max 10
# 完整运行:KEV + 检测列表 + D3FEND + VirusTotal
python main.py --kev --detection-lists --d3fend --vt-tier free
# 无 TIE 排名
python main.py --no-tie --top-n 30
# 安静输出
python main.py --quiet
# 交互模式(提示输入 VT 层级)
python main.py -i
# 订阅源时间窗口覆盖
python main.py --feed-days-back 3
# 强制重新下载 ATT&CK STIX 捆绑包
python main.py --refresh-stix
# AN 系列检测策略列
python main.py --v18-analytics data/enterprise-attack.json
# 跳过 Malpedia/MISP 丰富化
python main.py --no-enrich
```
**首次运行:**管道下载 ATT&CK v18.1 企业 STIX 包(约 8 MB)到 `data/enterprise-attack.json` 并缓存。使用 `--refresh-stix` 或删除缓存以强制更新。
**VirusTotal:**仅查询缺少 `malware_family` 且为 sha256 哈希的 IOC,或当 `VT_INCLUDE_URLS=true` 时的 URL。CLI 打印一行诊断信息(候选数量、查询数、404 数、报告行数)。
## 新功能
### CISA KEV(`--kev`)
CISA 的已知被利用漏洞目录公开可用,无需认证。该订阅源还携带来自 [CTID KEV-ATT&CK 映射](https://github.com/center-for-threat-informed-defense/mappings-explorer) 的 ATT&CK 技术 ID — 因此 KEV 条目完全绕过 STIX 恶意软件家族映射器,直接为活动集贡献技术 ID。
如果 CTID 映射暂时不可用,该订阅源会回退到从 KEV 笔记字段抓取裸技术 ID(例如 `T1190`)。无论如何,条目仍会出现在订阅源计数中。
```
python main.py --feeds feodo --kev --no-vt
```
### mthcht 检测列表(`--detection-lists`)
从 [mthcht/awesome-lists]( )
- [abuse.ch](https://abuse.ch/) / [auth.abuse.ch](https://auth.abuse.ch/)
- [VirusTotal API v3](https://docs.virustotal.com/reference/overview)
- [SigmaHQ](https://github.com/SigmaHQ/sigma)
- [ATT&CK Navigator](https://github.com/mitre-attack/attack-navigator)
标签:AMSI绕过, ATTACK Navigator, CISA KEV, Cloudflare, DAST, Feodo Tracker, Malpedia, MITRE ATT&CK, MITRE D3FEND, mthcht, Python CLI, Sigma规则, SOC安全运营中心, STIX, ThreatFox, 威胁情报, 威胁映射, 威胁检测, 安全运营, 差距分析, 开发者工具, 恶意软件分析, 恶意软件家族, 扫描框架, 检测覆盖, 漏洞利用情报, 目标导入, 网络安全, 逆向工具, 隐私保护