cybersecbalaji/mitre_attack_map
GitHub: cybersecbalaji/mitre_attack_map
基于浏览器的 ATT&CK 覆盖热力图构建工具,可将 Sigma 规则和检测列表自动映射到 MITRE ATT&CK Enterprise 与 ATLAS 矩阵并进行可视化分析。
Stars: 0 | Forks: 0
# ATT&CK 覆盖热力图构建器
基于浏览器的工具,可将 Sigma 规则和检测列表中的 MITRE ATT&CK Enterprise(以及 MITRE ATLAS)覆盖情况进行可视化——无需后端、无需注册、无需手动标记 T-code。
## 在线应用
**[https://mitre-attack-map.vercel.app](https://mitre-attack-map.vercel.app)**
## 快速开始
```
git clone https://github.com/cybersecbalaji/mitre_attack_map
cd attack-coverage-heatmap
npm install
cp .env.local.example .env.local # optional — see Persistence below
npm run dev
```
打开 [http://localhost:3000](http://localhost:3000)。
## 功能
### 检测引入
在左侧面板上传您的检测规则——支持以下三种格式:
| 格式 | 示例 |
|---|---|
| Sigma YAML / ZIP | `tags: [attack.t1059.001]` — 主要映射方式 |
| 纯文本 | 每行一条规则:`T1059.003 - PowerShell` 或 `Detect LSASS` |
| 手动输入 | 包含所有 ATT&CK 技术的可搜索下拉菜单 |
没有明确 ATT&CK 标签的规则将回退到 T-code 正则表达式扫描,然后进行模糊关键词匹配。任何无法映射的规则都会显示在“已跳过”列表中——绝不会静默丢弃。
### 覆盖热力图(默认视图)
| 颜色 | 含义 |
|---|---|
| 绿色 | 已覆盖——至少有一条规则带有直接的 ATT&CK 标签 |
| 琥珀色 | 部分覆盖——仅通过模糊/关键词匹配 |
| 灰色 | 未覆盖 |
### 密度热力图(切换:覆盖率 → 密度)
备选矩阵视图,根据覆盖每种技术的**规则数量**为单元格着色。可暴露二元化已覆盖/未覆盖视图中隐藏的过度依赖和薄弱覆盖问题。
| 颜色 | 区间 |
|---|---|
| 深石板灰 | 0 条规则(无覆盖) |
| 深青色 | 1 条规则 |
| 青色 | 2-3 条规则 |
| 浅青色 | 4-5 条规则 |
| 琥珀色 | 6 条以上规则(过度依赖警告) |
### ATT&CK + ATLAS 矩阵切换
使用标题栏中的切换开关,在 **MITRE ATT&CK Enterprise** 和 **MITRE ATLAS**(AI/ML 对抗战术)之间切换。两个矩阵共享相同的引入和过滤管道。
### 平台过滤
过滤矩阵,仅显示与您的环境相关的技术。使用的是 MITRE 规范的平台名称:
`Windows` · `macOS` · `Linux` · `IaaS`(涵盖 AWS/Azure/GCP) · `SaaS` · `Office Suite` · `Identity Provider` · `PRE` · `Containers` · `Network Devices` · `ESXi`
当跨平台技术的平台列表与所选过滤器有重叠时,这些技术仍将保持可见。
### 数据源过滤(仅 ATT&CK 模式)
根据检测每种技术所需的**日志和遥测源**对矩阵进行过滤——与官方 ATT&CK Navigator 提供的过滤器相同。下拉菜单是根据加载的 STIX 数据动态填充的(例如 Process Creation、Network Traffic、Active Directory)。
数据源过滤器与平台过滤器是“与(AND)”的关系。清除任一过滤器即可恢复完全可见性。
### 技术详情面板
点击任何技术单元格以打开侧边面板,显示:
- **完整描述**(来自 MITRE STIX)
- **平台徽章**和战术
- **覆盖状态**徽章(已覆盖 / 部分覆盖 / 未覆盖)
- **已映射规则**——涵盖此技术的具体规则
- **缓解措施**——带有描述的 MITRE M-code 控制(例如 M1038、M1042)
- **ATT&CK 链接**——打开官方技术页面
### Navigator 导出
生成有效的 [Navigator Layer v4.5](https://github.com/mitre-attack/attack-navigator/blob/master/layers/LAYERFORMATv4_5.md) JSON 文件。完全覆盖 → 分数 `100`,部分覆盖 → `50`,未覆盖则省略。规则名称会合并到每个技术的 `comment` 字段中。
### 工作区快照
保存您的规则集和过滤器的即时快照。快照持久化至 **localStorage**(始终生效),并在配置后持久化至 **InstantDB**,从而实现跨设备访问和可共享的工作区链接。
活动规则会通过工作区 ID 作为键**自动保存**到 localStorage 中——它们可以在同一设备上经受浏览器刷新和注销/登录操作,而无需显式创建快照。
### 可共享的工作区链接
点击 **Share** 以复制 `?ws=` URL。任何拥有此链接的人都可以查看(但不能修改)您的工作区。需要配置 InstantDB;否则工作区状态仅限本地使用。
## 数据持久化
该应用仅使用 `localStorage` 即可完全脱机工作。要启用跨设备同步和共享链接功能:
1. 在 [InstantDB](https://instantdb.com/dash) 创建一个免费应用。
2. 在 `.env.local`(或 Vercel 环境变量)中设置 `NEXT_PUBLIC_INSTANTDB_APP_ID=`。
3. 重启开发服务器(或重新部署)。
如果没有 InstantDB,应用将在纯本地模式下运行——没有身份验证、没有跨设备同步、没有共享链接。
## 技术栈
- **前端**:Next.js 14 (App Router) + TypeScript + Tailwind CSS + shadcn/ui
- **ATT&CK 数据**:来自 `mitre-attack/attack-stix-data` GitHub 仓库的实时 STIX JSON(约 50 MB,在 localStorage 中缓存 24 小时)
- **ATLAS 数据**:来自 `mitre-atlas/atlas-data` GitHub 仓库的实时 YAML
- **持久化**:InstantDB(可选)+ localStorage 回退
- **身份验证**:InstantDB 邮箱 OTP(可选——当未设置 `NEXT_PUBLIC_INSTANTDB_APP_ID` 时跳过)
- **部署**:适配 Vercel,无需后端服务器
## 开发
```
npm run dev # dev server on port 3000
npm run build # production build
npm run test:unit # Jest unit tests
npm run test:e2e # Playwright browser tests (all fixtures mocked)
```
## 部署
1. 推送至 GitHub。
2. 在 [vercel.com/new](https://vercel.com/new) 导入仓库。
3. (可选)在 Vercel → Settings → Environment Variables 中添加 `NEXT_PUBLIC_INSTANTDB_APP_ID`。
4. 部署。
**共享工作区链接**:默认情况下,Vercel 会在 `*.vercel.app` URL 上启用 Deployment Protection,这会在共享链接前添加 Vercel SSO 验证墙。要禁用它:Vercel dashboard → Settings → Deployment Protection → 将 **Vercel Authentication** 设置为 **Disabled**。详情请参阅 [DEPLOYMENT.md](DEPLOYMENT.md)。
## 许可证
Apache 2.0 — 详见 [LICENSE](LICENSE)。
标签:AI安全, AMSI绕过, ATLAS, ATT&CK矩阵, Chat Copilot, Cloudflare, CMS安全, EDR, JavaScript, MITRE ATT&CK, OSV, React, Sigma规则, Syscalls, Vercel, 前端工具, 威胁检测, 安全可视化, 安全度量, 安全运营, 密度分析, 密钥泄露防护, 开源, 扫描框架, 机器学习安全, 检测规则映射, 模糊匹配, 浏览器工具, 热力图, 目标导入, 端点检测, 网络安全, 脆弱性评估, 自动化攻击, 覆盖率可视化, 规则管理, 隐私保护