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, 威胁情报, 威胁映射, 威胁检测, 安全运营, 差距分析, 开发者工具, 恶意软件分析, 恶意软件家族, 扫描框架, 检测覆盖, 漏洞利用情报, 目标导入, 网络安全, 逆向工具, 隐私保护