| name | mapping-mitre-attack-techniques |
| description | 将观察到的对手行为、安全告警和检测规则映射到 MITRE ATT&CK 技术和子技术,以量化检测覆盖率并指导控制优先级。当构建基于 ATT&CK 的覆盖热图、为 SIEM 告警标记技术 ID、将安全控制与对手攻击手册对齐,或向高层报告威胁暴露时使用。适用于涉及 ATT&CK Navigator、Sigma 规则、MITRE D3FEND 或覆盖缺口分析的请求。
|
| domain | cybersecurity |
| subdomain | threat-intelligence |
| tags | ["MITRE-ATT&CK","ATT&CK-Navigator","Sigma","D3FEND","TTP","detection-engineering","NIST-CSF"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
映射 MITRE ATT&CK 技术
适用场景
在以下情况下使用本技能:
- 生成 ATT&CK 覆盖热图,展示检测栈涵盖的技术
- 用 ATT&CK 技术 ID 标记现有 SIEM 用例或 Sigma 规则,用于结构化报告
- 将安全计划路线图与已知针对您所在行业的特定对手组织对齐
请勿使用本技能进行实时事件分类——ATT&CK 映射是一项分析活动,最好在检测后或威胁猎捕规划期间执行。
前置条件
工作流程
步骤 1:获取当前 ATT&CK 数据
下载相关矩阵(Enterprise、Mobile、ICS)的最新 ATT&CK STIX 包:
curl -o enterprise-attack.json \
https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json
使用 mitreattack-python 库以编程方式查询技术:
from mitreattack.stix20 import MitreAttackData
mitre = MitreAttackData("enterprise-attack.json")
techniques = mitre.get_techniques(remove_revoked_deprecated=True)
for t in techniques[:5]:
print(t["external_references"][0]["external_id"], t["name"])
步骤 2:将现有检测映射到技术
对于每个 SIEM 规则或 Sigma 文件,分配 ATT&CK 技术 ID。Sigma 规则支持原生 ATT&CK 标记:
tags:
- attack.execution
- attack.t1059.001
- attack.t1059.003
创建覆盖矩阵:列出每个技术 ID 并标记为:已检测(告警触发)、已记录(数据存在但无告警)、盲点(无数据源)。
步骤 3:使用威胁情报优先化覆盖缺口
将覆盖缺口与针对您所在行业的对手组织进行交叉参考。使用 ATT&CK 组织数据:
groups = mitre.get_groups()
apt29 = mitre.get_object_by_attack_id("G0016", "groups")
apt29_techniques = mitre.get_techniques_used_by_group(apt29)
for t in apt29_techniques:
print(t["object"]["external_references"][0]["external_id"])
优先为高优先级威胁组织使用的技术添加检测,尤其是覆盖盲点处。
步骤 4:构建 Navigator 热图
将覆盖评分导出为 ATT&CK Navigator JSON 层:
import json
layer = {
"name": "SOC 检测覆盖 Q1 2025",
"versions": {"attack": "14", "navigator": "4.9", "layer": "4.5"},
"domain": "enterprise-attack",
"techniques": [
{"techniqueID": "T1059.001", "score": 100, "comment": "Splunk 规则:PS_Encoded_Command"},
{"techniqueID": "T1071.001", "score": 50, "comment": "仅记录,无告警"},
{"techniqueID": "T1055", "score": 0, "comment": "无覆盖——盲点"}
],
"gradient": {"colors": ["#ff6666", "#ffe766", "#8ec843"], "minValue": 0, "maxValue": 100}
}
with open("coverage_layer.json", "w") as f:
json.dump(layer, f)
将层导入 ATT&CK Navigator(https://mitre-attack.github.io/attack-navigator/)进行可视化。
步骤 5:生成高层覆盖报告
按战术类别(初始访问、执行、持久化等)汇总覆盖率,包含数量和百分比。根据对手组织使用频率提供风险排名的前 10 盲点技术列表。推荐添加数据源(例如"启用 PowerShell 脚本块日志记录以解决 12 个执行子技术缺口")。
核心概念
| 术语 | 定义 |
|---|
| ATT&CK 技术 | 以 T 号码标识的特定对手方法(例如 T1059 = 命令和脚本解释器) |
| 子技术 | 技术的更细粒度变体(例如 T1059.001 = PowerShell,T1059.003 = Windows 命令行) |
| 战术 | ATT&CK 中的对手目标类别:初始访问、执行、持久化、权限提升、防御规避、凭据访问、发现、横向移动、收集、C&C、数据渗出、影响 |
| 数据源 | ATT&CK v10+ 组件,标识检测技术所需的遥测(例如进程创建、网络流量) |
| 覆盖评分 | 表示技术检测完整性的数值(0-100):0=盲点,50=仅记录,100=已告警 |
| MITRE D3FEND | 补充 ATT&CK 的防御对策本体——将防御技术映射到其缓解的攻击技术 |
工具与系统
- ATT&CK Navigator:基于浏览器的热图可视化工具,用于在 ATT&CK 矩阵上分层显示覆盖评分和注释
- mitreattack-python:MITRE 官方 Python 库,用于以编程方式访问 ATT&CK STIX 数据(技术、组织、软件、缓解措施)
- Atomic Red Team:提供原子测试用例的 MITRE 对齐测试库,用于验证每种技术的检测
- Sigma:支持 ATT&CK 标记的检测规则格式;可转换为 Splunk、Sentinel、QRadar、Elastic
- ATT&CK Workbench:用于维护自定义技术扩展的自托管 ATT&CK 知识库
常见陷阱
- 过度声明覆盖:记录数据源(例如进程创建事件)并不意味着检测到相关技术——规则必须实际针对恶意模式触发。
- 仅在战术级别映射:将规则标记为"attack.execution"而没有具体技术 ID 会阻止细粒度缺口分析。
- 忽视子技术:许多对手使用特定子技术。T1059(父技术)的覆盖并不意味着 T1059.005(Visual Basic)的覆盖。
- 不更新的静态映射:ATT&CK 每年发布主要版本。随着技术被添加、修改或弃用,覆盖图会过时。
- 不映射到对手组织:通用覆盖图无法区分针对您所在行业的 APT 使用的技术与商品恶意软件。