Nvafiades1/threat-hunt-library

GitHub: Nvafiades1/threat-hunt-library

基于 GitHub 全自动化的 MITRE ATT&CK 威胁狩猎知识库,提供从假设到归档的标准化工作流、实时覆盖率矩阵和聚合威胁情报仪表板。

Stars: 0 | Forks: 0

# 威胁狩猎库 #### 一个动态的、与 MITRE ATT&CK 对齐的威胁狩猎目录 —— 在 GitHub 中跟踪,并自动归档。 [![MITRE ATT&CK](https://img.shields.io/badge/MITRE-ATT%26CK-e87722?style=flat-square&labelColor=23394a)](https://attack.mitre.org/matrices/enterprise/) [![使用 GitHub Actions 构建](https://img.shields.io/badge/automation-GitHub_Actions-2088FF?style=flat-square&logo=githubactions&logoColor=white)](.github/workflows) [![实时矩阵](https://img.shields.io/badge/view-Live_Matrix-2fbf71?style=flat-square)](https://nvafiades1.github.io/threat-hunt-library/) [![指标](https://img.shields.io/badge/view-Metrics-3a9cd8?style=flat-square)](https://nvafiades1.github.io/threat-hunt-library/metrics.html) [![CTI Hub](https://img.shields.io/badge/view-CTI_Hub-a371f7?style=flat-square)](https://nvafiades1.github.io/threat-hunt-library/cti.html) **[实时威胁狩猎矩阵 →](https://nvafiades1.github.io/threat-hunt-library/)** · **[管理指标仪表板 →](https://nvafiades1.github.io/threat-hunt-library/metrics.html)** · **[CTI Hub →](https://nvafiades1.github.io/threat-hunt-library/cti.html)**
## 概述 **威胁狩猎库**是一个团队共享的知识库,包含我们运行的所有威胁狩猎,并按 MITRE ATT&CK 技术进行组织。每次狩猎都记录了假设、使用的查询、观察到的内容以及得出的结论 —— 从而使未来的狩猎能够在先前工作的基础上进行,而不是从零开始。 **为什么需要它。** 狩猎结果通常存在于工单系统、聊天记录和个人笔记中。它们会逐渐消失。本仓库使每个已完成的狩猎: - **易于发现** — 组织在 `techniques/T####/` 下,并在实时的 MITRE 矩阵中可视化。 - **可审计** — 每次狩猎既作为一个 GitHub issue(工作流),又作为一个已提交的 markdown 文件(记录)存在。 - **可复用** — 针对同一技术的未来狩猎可以基于先前的发现开始。 **适用人群。** 威胁猎人、检测工程师、安全负责人,以及任何正在准备审计、紫队演练或覆盖率审查的人员。 ## 工作流 ``` flowchart LR A[Analyst opens
Threat Hunt issue] --> B[Auto-added to
Project Board] A -.->|Threat Actor field| X[Threat-actor enrichment
posted as comment] X -.-> Y[Profile committed to
threat-actor-profiles/] B --> C[In Progress
analyst runs hunt] C --> D[Peer Review] D --> E[Status: Completed] E -->|automation| F[Issue closed] F -->|automation| G[Archived to
techniques/T####/] G -->|automation| H[Matrix + metrics
rebuilt & published] style A fill:#17202c,stroke:#e87722,color:#fff style E fill:#17202c,stroke:#2fbf71,color:#fff style H fill:#17202c,stroke:#2fbf71,color:#fff style X fill:#17202c,stroke:#3a9cd8,color:#fff style Y fill:#17202c,stroke:#3a9cd8,color:#fff ``` 1. **提议。** 分析师使用模板创建一个*威胁狩猎* issue。字段包括:MITRE 技术 ID、假设、查询、平台、严重性、置信度、观察到的指标。 2. **分类。** 新 issue 会自动出现在 **威胁狩猎追踪器** 项目看板的 `Backlog` 列中。 3. **执行。** 分析师将卡片移至 `In Progress`,运行狩猎,并在 issue 中记录发现。 4. **审查。** 移至 `Peer Review`。第二名分析师验证查询、发现和保真度。 5. **归档。** 将卡片移至 `Completed`。自动化流程随之接管:issue 被关闭,狩猎记录被写入 `techniques/T####/`,并且实时矩阵将重新构建。 无需手动创建文件,无需浏览文件夹 — 项目看板驱动归档。 ## 快速开始 ### 面向分析师(贡献一次狩猎) 1. 打开一个新的 issue — 选择**威胁狩猎**模板。 2. 填写模板要求的所有字段。**MITRE 技术 ID(例如,`T1059.001`)是必填的** — 自动化流程会使用它来正确归档狩猎记录。 3. 该 issue 将出现在 [威胁狩猎追踪器](https://github.com/users/Nvafiades1/projects/3) 看板上。将其依次移过 `Backlog` → `Ready` → `In Progress` → `Peer Review` → `Completed`。 4. 完成。系统将自动为您完成归档。 ### 面向审查者 - 项目看板是*正在进行的狩猎*的唯一事实来源。 - `techniques/` 文件夹是*已完成狩猎*的唯一事实来源。 - [实时矩阵](https://nvafiades1.github.io/threat-hunt-library/) 提供了横跨所有 14 个 ATT&CK 战术的鸟瞰式覆盖率视图。 ### 面向管理层 / 审计 - **[指标仪表板](https://nvafiades1.github.io/threat-hunt-library/metrics.html)** 显示了总狩猎次数、涵盖的技术、追踪的威胁行为者、覆盖率百分比以及随时间变化的趋势图。 - 覆盖率百分比也会显示在实时矩阵的页眉中。 - 每次已完成的狩猎都会被提交并带有时间戳 — 适合作为审计证据。 - 项目看板可以一目了然地显示吞吐量和当前工作。 ## 仓库布局 ``` threat-hunt-library/ ├── README.md ← you are here ├── docs/ │ ├── index.html ← the live matrix (auto-generated) │ ├── metrics.html ← executive metrics dashboard (auto-generated) │ └── cti.html ← CTI hub: aggregated open-source threat intel (auto-generated, hourly) ├── techniques/ │ ├── T1003/ ← OS Credential Dumping │ │ ├── README.md ← MITRE description (auto-updated) │ │ └── T1003-*.md ← individual hunts (one per issue) │ ├── T1059/ ← Command and Scripting Interpreter │ └── ... (836 technique folders, full enterprise coverage) ├── threat-actor-profiles/ │ ├── G0016-apt29.md ← MITRE ATT&CK group profiles │ └── ... ← auto-generated when an issue names an actor ├── mitre_ttp_mapping.json ← technique → tactic mapping ├── tools/ │ ├── build_matrix.py ← generates docs/index.html │ ├── build_metrics.py ← generates docs/metrics.html │ ├── build_cti.py ← generates docs/cti.html (open-source CTI aggregator) │ └── cti_state.json ← rolling 30-day CTI item state (auto-maintained) └── .github/ ├── ISSUE_TEMPLATE/ ← threat-hunt form template ├── scripts/ │ ├── createMitreFolders.js ← keeps techniques/ in sync with ATT&CK │ ├── enrichThreatActor.js ← MITRE + MISP threat-actor lookup │ └── updateThreatHunt.js ← archives completed hunts └── workflows/ ← five automation pipelines (see below) ``` ## 自动化 六个工作流使该库保持自我维护: | 工作流 | 触发器 | 功能描述 | |---|---|---| | **更新 MITRE 文件夹** | 每周定时任务 + 手动触发 | 从 `mitre-attack/attack-stix-data` 拉取当前的 STIX bundle,为每个活动 + 已弃用 + 已撤销的技术重新生成 `techniques/T####/README.md`,并重写 `mitre_ttp_mapping.json`。已弃用/撤销的技术会在其 README 中获得一个 `STATUS:` 标注。 | | **将新 Issue 保存到文件夹** | Issue 被打开时 | 将新 issue 暂存为 `test/issue-.md` 以作审计追踪。 | | **丰富威胁行为者信息** | Issue 被打开 / 编辑时 | 跨 **MITRE ATT&CK groups、MITRE ATT&CK campaigns 和 MISP threat-actor galaxy** 查找指定的行为者或攻击活动。将完整的配置文件提交到 `threat-actor-profiles/`,并发布(或原地更新)一条包含 TTPs、工具和配置文件链接的总结评论。详见下文 [威胁行为者信息丰富](#threat-actor-enrichment)。 | | **更新威胁狩猎** | Issue 被关闭时 | 从 issue 中读取 MITRE T#,将已完成的狩猎记录写入 `techniques/T####/`。 | | **构建 MITRE 矩阵** | 推送到 main · 狩猎关闭后 · MITRE 同步后 | 从当前的 `techniques/` 树重新生成 `docs/index.html` 和 `docs/metrics.html`;GitHub Pages 会自动重新部署。 | | **构建 CTI Hub** | 每小时定时任务 + 手动触发 | 获取 20 个开源威胁情报源(RSS / JSON / CSV),对它们进行标准化处理,合并到一个滚动的 30 天时间窗口中,并重新构建 `docs/cti.html`。详见下文 [CTI Hub](#the-cti-hub)。 | 所有工作流均通过内置的 `GITHUB_TOKEN` 进行身份验证,并带有显式的 `permissions:` 块 — 无需管理个人访问令牌。 ## 实时矩阵 位于 **https://nvafiades1.github.io/threat-hunt-library/** 的矩阵反映了 MITRE ATT&CK Enterprise 的布局: - **列** 代表战术(从 Reconnaissance 到 Impact)。 - **卡片** 代表技术;点击任何卡片可跳转到该技术所在的文件夹。 - **绿点 + 左边框** 标记了至少完成过一次狩猎的技术。 - **展开** 父技术以查看子技术。 - **搜索** (`/`) 实时过滤;**Esc** 清除搜索。 - **点击战术标题** 以调暗其他列。 - **Alt+D** 切换浅色/深色主题。 页眉显示实时的覆盖率百分比。随着狩猎的完成并保存在 `techniques/` 中,这个数字会在下次推送时自动攀升。 ## CTI Hub 位于 **https://nvafiades1.github.io/threat-hunt-library/cti.html** 的 Hub 将 20 个开源威胁情报源汇总到一个单一的、可搜索的仪表板中,由 GitHub Actions 每小时刷新一次。无需 API 密钥 — 每一个来源都是公开的 RSS、JSON 或 CSV 数据源。 ### 来源 | 类别 | 来源 | |---|---| | **供应商研究** | CrowdStrike, Microsoft Security Blog, Cisco Talos, Unit 42 (Palo Alto), SentinelOne Labs, Trend Micro Research, Securelist (Kaspersky), ESET WeLiveSecurity | | **新闻与行业** | BleepingComputer, The Record, Krebs on Security, The Hacker News, Dark Reading, SecurityWeek | | **政府** | CISA Advisories, NCSC-UK | | **漏洞** | CISA Known Exploited Vulnerabilities (KEV) catalog | | **IOCs** | abuse.ch URLhaus, abuse.ch MalwareBazaar, abuse.ch ThreatFox | ### 页面功能 - **统计页眉** — 总项目数、过去 24 小时、过去 7 天、本次构建的新增数、在线来源数。 - **类别标签** — 全部 / 供应商研究 / 新闻 / 政府 / 漏洞 / IOCs。 - **过滤器** — 按来源下拉菜单、时间范围(24 小时 / 7 天 / 30 天)、跨标题、摘要和标签的全文搜索。 - **NEW 标记** — 在最近一次构建中首次出现的项目将被标记。 - **仅外链** — 该 hub 绝不托管源内容;标题直接链接到发布者。 - **深色 / 浅色主题** 并带有状态持久化。 ### 运作方式 在每小时 `:15`,`tools/build_cti.py` 会并行获取所有 20 个来源(10 个工作线程,每个来源超时时间约 25 秒),将所有内容标准化为统一的 schema,并将新项目合并到保存在 `tools/cti_state.json` 中的滚动 30 天时间窗口内。合并后的数据集将被渲染成一个单独且自包含的 `docs/cti.html` 文件(无外部资源,无 JS 框架)。任何单个来源的获取失败都会被记录并跳过 — 只要至少有一个来源返回数据,构建就会成功。 ## 威胁行为者信息丰富 当您打开或编辑一个威胁狩猎 Issue 并填写**威胁行为者**字段时,`Enrich Threat Actor` 工作流将在三个来源中查找该值,构建一个配置文件,并将总结评论发布回该 Issue 中。 ### 解析顺序 ``` flowchart LR Q[Threat Actor field] --> M{Match in
MITRE intrusion-set?} M -- yes --> A[Group profile
+ TTPs + tools] M -- no --> C{Match in
MITRE campaign?} C -- yes --> CP[Campaign profile
+ TTPs + attribution] C -- no --> P{Match in
MISP galaxy?} P -- MISP entry refs
a MITRE group --> A P -- MISP only --> MP[MISP profile
country, sector, refs] P -- no --> N["No match — post
“did you mean…”"] style A fill:#17202c,stroke:#e87722,color:#fff style CP fill:#17202c,stroke:#e87722,color:#fff style MP fill:#17202c,stroke:#3a9cd8,color:#fff style N fill:#17202c,stroke:#a02020,color:#fff ``` ### 识别内容 | 命名系列 | 示例 | 解析方式 | |---|---|---| | MITRE 主要名称 | `APT29`, `FIN7`, `Lazarus Group` | MITRE group (G####) | | MITRE 别名 | `Cozy Bear`, `Midnight Blizzard`, `UNC2452` | 通过别名列表查找 MITRE group | | Microsoft 代码(现代) | `Storm-0249`, `Mint Sandstorm` | MISP → MITRE(如果已关联),否则仅生成 MISP 配置文件 | | Mandiant / CrowdStrike 代码 | `UNC4990`, `WIZARD SPIDER` | MISP 覆盖范围;当 MISP 条目引用 MITRE 时解析为 MITRE | | MITRE 攻击活动 | `SolarWinds Compromise`, `2015 Ukraine Electric Power Attack` | 带有 `attributed-to` 行为者链接的 MITRE campaign (C####) | ### 存储位置 | 输出 | 内容 | |---|---| | `threat-actor-profiles/G####-{slug}.md` | 完整的 MITRE 组织配置文件:快照块(国家、疑似赞助商、目标行业、疑似受害者、最近攻击活动、覆盖率统计)、概述、**归属攻击活动表**(包含首次/最后一次发现日期)、工具/恶意软件及其平台、**按 TTP 划分的过程描述**(即“操作指南” —— 摘自 MITRE,供猎人用作查询起点)、作为加固清单的**建议缓解措施**,以及列出 MITRE 引用的每份主要研究报告(Volexity、Mandiant、FireEye、CrowdStrike、Microsoft、NCSC 等)的**参考与 IOC 来源**部分。 | | `threat-actor-profiles/C####-{slug}.md` | 完整的 MITRE 攻击活动配置文件:快照、attributed-to 行为者链接、日期、工具、按 TTP 划分的过程描述、缓解措施、参考。 | | `threat-actor-profiles/misp-{slug}.md` | 仅 MISP 的备用配置文件:别名、国家、赞助商、目标行业、疑似受害者、动机、MISP 引用的 IOC 来源 URL。(无 TTPs — MITRE 不跟踪此行为者。) | | Issue 评论 | 每个匹配项对应一个部分,包含别名、国家/赞助商/行业行、最近攻击活动行、描述摘要、标题统计(`66 TTPs · 12 tactics · 49 tools · 2 campaigns`)以及指向完整配置文件的链接。逗号分隔的多个行为者将生成一条包含多个部分的评论。 | ### 智能重新丰富 每次丰富评论都带有一个隐藏标记,用于标记其涵盖的规范 ID(例如 ``)。在随后的 Issue 编辑中: - **行为者列表相同** → 工作流直接退出,不执行任何操作(无垃圾评论)。 - **行为者列表已更改** → 现有评论将被**原地编辑**以反映新的解析结果;新的配置文件将与旧文件一起提交(历史记录将被保留 — 不会删除任何内容)。 - **无匹配重试** → 如果分析师修复了拼写错误,下次编辑将获取更正后的名称并相应地重写评论。 ## 自定义 ### 更改矩阵外观 编辑 `tools/build_matrix.py` — HTML 模板和 CSS 都存在于该单一文件中。推送到 `main` 分支后会自动重新构建和部署。 ### 添加 / 重命名战术 `tools/build_matrix.py` 中的 `TACTICS` 列表决定了列的顺序。`mitre_ttp_mapping.json` 文件将每个 T#### 映射到其对应的战术。 ### 调整归档格式 写入 `techniques/T####/` 的 markdown 是在 `.github/scripts/updateThreatHunt.js` 中构建的(参见 `buildArchive()`)。 ### 调整威胁行为者丰富度 MISP 和 MITRE STIX URL、解析优先级以及配置文件/评论 markdown 模板都位于 `.github/scripts/enrichThreatActor.js` 中。要将覆盖范围扩展到其他来源(例如 MITRE ATT&CK Mobile、MITRE ICS),请在 `resolveQuery()` 中添加一个新的获取器和一个新的分支。 ### 调整 CTI 订阅源 完整的来源列表、获取器调度表和 HTML/CSS 模板都位于 `tools/build_cti.py` 中。要添加来源,请向 `SOURCES` 追加一个元组(`(display_name, category, fetcher_key, url)`)— 对于 RSS 来源,现有的 `fetch_rss` 处理程序就足够了。对于非 RSS 格式(JSON / CSV),请添加一个新的获取器函数并将其注册到 `FETCHERS` 中。刷新频率在 `.github/workflows/build_cti.yml` 中设置(默认:每小时 `:15`)。 ## 维护者 如有问题、功能请求或疑问 → [创建一个 Issue](https://github.com/Nvafiades1/threat-hunt-library/issues/new/choose)。
使用 GitHub Issues、Projects 和 Actions 构建。与 MITRE ATT&CK Enterprise 对齐。
标签:Cloudflare, GitHub Actions, Markdown, MITRE ATT&CK, Ruby, SecOps, 云安全架构, 仪表盘, 安全运营, 扫描框架, 数据可视化, 知识库, 矩阵视图, 紫队, 网络威胁情报, 网络安全, 自动化归档, 自动笔记, 逆向工具, 隐私保护, 黑客攻击防范