01 · 总体管道架构
一条可维护的 ATT&CK 映射管道应当是数据驱动而非人工驱动的:上游是 MITRE 官方 STIX 数据包(权威、可版本化),中游是映射与评分逻辑(可测试),下游是 Navigator 图层、TIP 平台与检测工程工单(可消费)。
02 · STIX 2.1 程序化访问
社区库 attackcti(OTRF 维护)封装了 mitre/cti 的访问;stix2(OASIS 官方)负责对象解析与校验。下面片段演示加载 v17 数据并检索技术/组织关系。
片段一:用 attackcti 检索技术与使用该技术的组织(参考实现,方法名以仓库为准)
from attackcti import attack_client
# AttackClient 默认从 MITRE CTI 官方源加载指定版本数据
lift = attack_client.AttackClient()
# 检索具体技术对象(返回 attack-pattern SDO)
t1003 = lift.get_technique_by_id("T1003")
print(t1003.name, t1003.x_mitre_version)
# 遍历 Enterprise 全部技术,统计带云平台的条目
enterprise = lift.get_techniques(workspace="enterprise-attack")
cloud_techs = [t for t in enterprise
if "Cloud" in getattr(t, "x_mitre_platforms", [])]
print("Enterprise 中涉及 Cloud 平台的技术数:", len(cloud_techs))
# 取得某组织及其实战使用的技术(uses 关系)
group = lift.get_group_by_id("G0096") # 例:Salt Typhoon(v17 新增)
used = lift.get_techniques_used_by_group(group)片段二:用 stix2 解析本地 STIX 包并遍历对象(适合离线/CI 场景)
import stix2
from stix2 import parse
with open("enterprise-attack.json", "r", encoding="utf-8") as f:
bundle = parse(f.read()) # 返回 stix2.Bundle
for obj in bundle.objects:
if obj.type == "attack-pattern":
# 由 external_references 中的 T 编号定位
for ref in obj.external_references:
if ref.source_name == "mitre-attack":
print(ref.external_id, obj.name)工程提示:①attackcti 在首次运行时会下载官方数据,建议在 CI 中固定版本 tag 并缓存,避免运行时网络依赖;②stix2 解析失败的对象必须被拒绝进入下游(对应第2页 §04 校验兜底);③所有 T 编号一律以数据包实际字段为准,不臆造 x_mitre_* 字段名;④除attackcti外,MITRE官方维护的mitreattack-python库(github.com/mitre-attack/mitreattack-python)提供等价的STIX数据访问与图层生成功能,可作为官方备选依赖(见第2页参考来源[11])。
03 · 程序化生成 Navigator 图层
图层文件本质是 JSON。把映射结果(技术编号 + 评分 + 验证证据)批量写成 Layer,既可供人工在 Navigator 中查看,也可作为 CI 产物自动比对。下面片段演示按第3页评分模型批量生成。
片段三:由映射表生成 Navigator Layer JSON(评分沿用第3页 §02 模型)
import json
# 每行: (技术编号, 评分, 证据注释)
mappings = [
("T1003", 75, "Sysmon ID10 + EDR; 原子测试 2026-06 通过"),
("T1059.001", 50, "PowerShell 日志规则已部署, 未实测"),
("T1557.002", 0, "缺网络侧 ARP/NDP 遥测, 已知盲区"),
]
layer = {
"name": "企业检测覆盖度基线 2026Q3",
"versions": {"attack": "17", "navigator": "5.x"},
"domain": "enterprise-attack",
"description": "L2规则覆盖评分: 0=无 25=L1 50=L2 75=L3 100=L3+自动化",
"gradient": {"colors": ["#ff6666", "#ffe766", "#8ec843"],
"minValue": 0, "maxValue": 100},
"techniques": [
{"techniqueID": tid, "score": score, "comment": note}
for tid, score, note in mappings
],
"filters": {"platforms": ["Windows", "Linux"]},
}
with open("coverage-baseline.layer.json", "w", encoding="utf-8") as f:
json.dump(layer, f, ensure_ascii=False, indent=2)该文件可直接拖入 ATT&CK Navigator 渲染。CI 中可对两份图层求差集("威胁图层 − 基线图层"),自动输出待补齐技术清单(对应第3页 §2.3 与第5页跨案例缺口法)。
04 · 入库与分发(STIX / MISP / OpenCTI)
4.1 导出为 STIX 2.1 Bundle
映射结论若以 STIX 对象(relationship: uses/related-to)形式入库,可直接被任何兼容 TIP 消费。下面演示把一条"组织使用该技术"的关系导出为 STIX Bundle 片段。
import stix2
bundle = stix2.Bundle(
stix2.Relationship(
source_ref="intrusion-set--<组织STIX-ID>",
target_ref="attack-pattern--<技术STIX-ID>",
relationship_type="uses",
)
)
print(bundle.serialize())4.2 对接 MISP / OpenCTI
| 平台 | 对接方式 | 说明 |
|---|---|---|
| MISP | ATT&CK Galaxy + 事件标签 | 技术/组织/软件以 Galaxy 标签体系存在;TTP 知识库可经 MISP 的 STIX 2.x 导入接口入库,与现有事件关联。 |
| OpenCTI | 原生 STIX 2.1 模型 | 以 STIX 为内部数据模型,导入上述 Bundle 即可建立组织—技术关系图,支持图形化溯源。 |
| Workbench | 本地库融合 | ATT&CK Workbench 维护本地扩展条目并与官方数据融合,适合先在本地产出再回写 TIP。 |
分发一致性纪律:同一份映射结论在 Navigator 图层、MISP 标签、OpenCTI 关系图中必须指向同一 ATT&CK 版本号。版本升级时三类出口需同步刷新,否则会出现"图层说覆盖了、平台却仍是旧编号"的不一致(对应第2页版本漂移风险)。
05 · 检测规则与 ATT&CK 双向标注
Sigma 规则的 tags 字段原生支持 attack.<技术ID小写> 标签,使"规则库 → 覆盖度图层"可自动反向生成,是第3页覆盖度闭环的数据基础。
片段四:带 ATT&CK 标签的 Sigma 规则(检测 T1003 LSASS 转储,attack 标签见 tags)
title: 可疑 LSASS 内存访问 (T1003.001)
id: 9f9b35d6-7c8a-4b2e-9d3a-1c2b3d4e5f60
status: experimental
description: 检测非系统进程以读取权限访问 lsass.exe
references:
- https://attack.mitre.org/techniques/T1003/001/
tags:
- attack.credential-access
- attack.t1003.001
- attack.t1003
logsource:
category: process_access
detection:
selection:
TargetImage|endswith: '\\lsass.exe'
GrantedAccess:
- '0x1010'
- '0x1410'
filter:
SourceImage|endswith:
- '\\wininit.exe'
- '\\lsass.exe'
condition: selection and not filter
falsepositives:
- 合法安全软件内存扫描
level: high采集所有 Sigma 规则的 attack.* 标签即可反向生成 L2 覆盖视图;与第3页 §2.2 评分模型联动时,仅带标签但未实测的规则记 50 分,实测通过的升 75 分。规则与图层因此保持双向一致。
片段六:Sigma 规则的多后端转换(sigma-cli,示例命令以本机 sigma-cli --help 为准)
# 安装 CLI 与目标后端插件:pip install sigma-cli # 编译为 Splunk SPL(-t 后端,-p 管线) sigma convert -t splunk -p splunk_windows rules/malicious_lsass_access.yml # 编译为 Microsoft Sentinel KQL sigma convert -t kusto -p microsoft365_defender rules/mfa_bombing.yml # 批量校验规则并输出 ATT&CK 标签审计(自建脚本思路) sigma check rules/ | grep -o 'attack\.t[0-9.]*' | sort -u
注:sigma-cli 的后端名称与管线插件随版本演进,执行前以本机环境为准;attack 标签审计可直接喂给第3页 §02 的图层生成脚本,实现规则库→L2覆盖视图的自动化回写。
06 · 与 SIEM / SOAR 流水线集成
映射结论最终要驱动行动。两种常见集成模式:
- 规则下发:检测工程工单(来自第3页闭环与第5页缺口清单)经 SOAR 推送到 SIEM/EDR,部署后回写图层评分(L2→实测 L3)。
- 情报订阅:将 TTP 知识库的更新经 TAXII 2.1 推送到下游 TIP,使新出现的组织技术自动进入狩猎队列。
片段五:向 TAXII 2.1 集合推送更新(requests 示意,凭证与端点以环境为准)
import requests TAXII_URL = "https://your-tip.example.com/taxii2/collections//objects" headers = {"Authorization": "Bearer <TOKEN>"} # 将新增的 STIX Bundle 推送到下游 TIP resp = requests.post( TAXII_URL, headers={**headers, "Content-Type": "application/taxii+json;version=2.1"}, json={"objects": [obj.serialize() for obj in new_objects]}, ) print("TAXII 推送状态:", resp.status_code)
集成原则:推送内容只含机读 STIX 对象与最小化元数据(技术编号、置信度、出处),不包含任何可直接复用的攻击实现;推送前进行敏感字段脱敏与授权校验,符合第1页 §07 合规边界。
07 · 质量门与版本控制
7.1 管道内置的质量门
| 关卡 | 检查项 | 失败处理 |
|---|---|---|
| CI-1 | STIX 解析全部成功 | 拒绝坏对象进入下游(stix2 校验) |
| CI-2 | 映射编号在所用版本存在且未 revoke/deprecate;并检查版本重构是否需重映射(v19活案例:T1562已重构为T1685/T1686/T1687族) | 阻断并提交人工复核,自动触发重映射工单 |
| CI-3 | 每条映射含出处 URL + 分析员标识 | 退回补录(对应第2页入库清单) |
| CI-4 | 版本号贯穿图层/MISP/OpenCTI 一致 | 告警并阻断分发 |
7.2 版本与 diff 策略
官方数据包随版本发布机器可读 changelog(v17 起格式规范化)。管道应在每次版本升级时:①拉取新版本 STIX 包并 git 打 tag;②对 changelog 做 diff,识别新增/改名/撤销对象;③触发映射知识库的增量复核队列(而非全量重建,对应第2页 §04.1)。所有原始包保留归档,保证历史情报可溯源;相邻大版本间的补丁版本(如v19.1、v19.2)同样纳入diff、图层与下游分发的同步范围。
本节参考来源(第6页)
以下均为真实可查的权威来源,用于支撑本页事实性表述与代码片段的 API 归属。
attackcti(OTRF)Python 库:github.com/OTRF/attackcti;stix2(OASIS 官方):github.com/oasis-open/cti-python-stix2
MITRE 官方 CTI 数据仓库(STIX 2.1 JSON):github.com/mitre/cti;TAXII 2.1 服务:cti-taxii.mitre.org
ATT&CK Navigator(Layer 文件格式):github.com/mitre-attack/attack-navigator
Sigma 规则格式与 attack 标签约定:github.com/SigmaHQ/sigma;MISP:misp-project.org;OpenCTI:filigran.io OpenCTI
OASIS《STIX Version 2.1》《TAXII Version 2.1》规范:docs.oasis-open.org/cti/stix/v2.1