| name | implementing-mitre-attack-coverage-mapping |
| description | 实施 MITRE ATT&CK 覆盖率映射,以识别检测空白、优先排序规则开发,并衡量 SOC 检测成熟度与对手技术的匹配程度。 |
| domain | cybersecurity |
| subdomain | soc-operations |
| tags | ["mitre-attack","detection-coverage","gap-analysis","attack-navigator","soc","detection-engineering"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
实施 MITRE ATT&CK 覆盖率映射
概述
MITRE ATT&CK 覆盖率映射为安全运营中心(Security Operations Center,SOC)团队提供了一个结构化的、以对手为中心的视角来评估检测能力。根据 2025 年 CardinalOps 报告,企业 SIEM 平均只对 21% 的 ATT&CK 技术具有检测覆盖,且由于数据源配置错误,13% 的现有规则无法正常工作。系统化的覆盖率映射可识别空白、优先排序规则开发,并随时间跟踪检测成熟度。ATT&CK v18.1(2025 年 12 月)是最新版本。
前置条件
覆盖率映射流程
步骤 1:导出当前检测规则
# Splunk ES - 导出所有带 MITRE 映射的活跃关联搜索
| rest /services/saved/searches
| search disabled=0 action.correlationsearch.enabled=1
| table title, search, action.notable.param.security_domain,
action.notable.param.severity, action.correlationsearch.annotations
| eval mitre_techniques=mvfilter(match('action.correlationsearch.annotations', "mitre_attack"))
// Microsoft Sentinel - 导出带 MITRE 映射的分析规则
SecurityAlert
| summarize count() by AlertName, ProductName
| join kind=inner (
resources
| where type == "microsoft.securityinsights/alertrules"
| extend tactics = properties.tactics
) on $left.AlertName == $right.name
步骤 2:构建覆盖率矩阵
ATT&CK Navigator 层格式
{
"name": "SOC Detection Coverage - 2025",
"versions": {
"attack": "16",
"navigator": "5.1",
"layer": "4.5"
},
"domain": "enterprise-attack",
"description": "Current detection coverage mapping",
"techniques": [
{
"techniqueID": "T1110",
"tactic": "credential-access",
"color": "#00ff00",
"comment": "2 active rules - Brute Force detection via EventCode 4625",
"score": 75,
"metadata":
步骤 3:为每项技术评分
| 分数 | 颜色 | 含义 | 评判标准 |
|---|
| 0 | 红色 | 无检测 | 无规则,缺少数据源 |
| 25 | 橙色 | 极少 | 规则存在但未验证/测试 |
| 50 | 黄色 | 部分 | 规则有效但覆盖有限 |
| 75 | 浅绿 | 良好 | 已验证规则且数据源充足 |
| 100 | 绿色 | 优秀 | 多条已验证规则,经仿真测试 |
评分标准详解
分数 = 数据源得分(0-25)+ 规则质量得分(0-25)+
验证得分(0-25)+ 富化得分(0-25)
数据源得分:
25:所有必需数据源已接入并解析
15:主要数据源可用
5: 数据源覆盖不完整
0: 所需数据源不可用
规则质量得分:
25:规则使用 CIM 合规查询并设置适当阈值
15:规则有效但可能产生误报
5: 基础规则未经调优
0: 无检测规则
验证得分:
25:通过对手仿真(Atomic Red Team)验证
15:使用合成数据测试
5: 逻辑已审查但未测试
0: 未验证
富化得分:
25:包含资产、身份和威胁情报富化的丰富上下文
15:基础富化(资产查询)
5: 无富化
0: 不适用(无规则)
步骤 4:识别优先空白
空白优先级框架
优先级 = 技术流行度 × 影响程度 × 可行性
技术流行度(0-10):
- 基于 MITRE Top Techniques 报告
- 在所在行业威胁态势中的频率
- 在近期事件/数据泄露中的观察情况
影响程度(0-10):
- 技术成功时的破坏潜力
- 恢复难度
- 面临风险的数据敏感性
可行性(0-10):
- 数据源可用性
- 规则复杂度
- 所需工程投入
2025 年需优先覆盖的顶级技术
| 技术 | ID | 流行度 | 典型空白原因 |
|---|
| 命令和脚本解释器 | T1059 | 极高 | 需要脚本块日志记录 |
| 钓鱼(Phishing) | T1566 | 极高 | 邮件网关集成 |
| 有效账户 | T1078 | 高 | 需要行为基线 |
| 进程注入(Process Injection) | T1055 | 高 | 需要 Sysmon 或 EDR |
| 横向移动(RDP/SMB) | T1021 | 高 | 网络分段可见性 |
| 计划任务/作业 | T1053 | 高 | 事件日志采集 |
| 数据加密影响 | T1486 | 高 | 文件系统监控 |
| 入侵工具传输 | T1105 | 中 | 网络流量分析 |
步骤 5:制定检测路线图
第一季度:弥补关键空白(评分 0,高流行度)
第 1-2 周:启用缺失数据源
第 3-4 周:为前 5 个空白技术构建并测试规则
第 5-8 周:通过对手仿真验证
第 9-12 周:调优并投入运营
第二季度:提升部分覆盖(评分 25-50)
- 为现有规则添加富化
- 添加辅助检测方法
- 通过紫队演练验证
第三季度:完善良好覆盖(评分 50-75)
- 添加行为分析
- 实施检测即代码流水线
- 跨技术关联规则
第四季度:卓越状态(评分 75-100)
- 使用 BAS 工具持续测试
- 自动化覆盖率回归测试
- 红队验证
自动化覆盖率评估
数据源到技术的映射
DATA_SOURCE_TECHNIQUE_MAP = {
"Windows Security Event Log": [
"T1110", "T1078", "T1053.005", "T1098", "T1136",
"T1070.001", "T1021.001", "T1543.003"
],
"Sysmon": [
"T1055", "T1059", "T1003", "T1547.001", "T1036",
"T1218", "T1105", "T1071"
],
"Network Traffic (Firewall/IDS)": [
"T1071", "T1048", "T1105", "T1572", "T1090",
"T1571", "T1573"
],
"DNS Logs": [
"T1071.004", "T1568", "T1583.001", "T1048.003"
],
"Email Gateway": [
"T1566.001", "T1566.002", "T1534"
],
"Cloud Audit Logs": [
"T1078.004", "T1537", "T1530", "T1580",
"T1087.004", "T1098.001"
],
}
报告仪表板查询
按战术分类的覆盖率摘要
| inputlookup mitre_coverage_lookup
| stats avg(score) as avg_score count(eval(score=0)) as no_coverage
count(eval(score>0 AND score<50)) as partial
count(eval(score>=50 AND score<75)) as good
count(eval(score>=75)) as excellent
count as total
by tactic
| eval coverage_pct=round((total - no_coverage) / total * 100, 1)
| sort -coverage_pct
参考资料