首页
/ 基于 MITRE ATT&CK 的威胁行为者 TTP 分析报告撰写实战:以 Anthropic-Cybersecurity-Skills 模板化工作流为例

基于 MITRE ATT&CK 的威胁行为者 TTP 分析报告撰写实战:以 Anthropic-Cybersecurity-Skills 模板化工作流为例

2026-09-09 18:37:52作者:董宙帆

导读

本文围绕 skills/analyzing-threat-actor-ttps-with-mitre-attack/assets/template.md 这份威胁行为者 TTP(Tactics, Techniques, and Procedures)分析报告模板,结合同技能目录下的 SKILL.mdagent.pyprocess.py 以及 references 中的标准定义,完整讲解如何将威胁情报报告、攻击事件观测与 IoC 数据,系统性地映射到 MITRE ATT&CK 框架,并产出一份可量化检测覆盖、可落地检测工程排期的专业分析报告。读完本文,你将掌握模板各表格的填写方法、底层自动化脚本的调用方式、ATT&CK Navigator 图层的生成原理,以及用检测缺口数据反哺防御体系建设的完整闭环。

一、模板在技能体系中的定位

在 Anthropic-Cybersecurity-Skills 仓库中,威胁行为者 TTP 分析是威胁情报(threat-intelligence)域的核心技能之一。该技能的前置流程由 SKILL.md 定义,包含五大步骤:

  1. 编程查询 ATT&CK 数据(借助 attackcti 客户端访问 MITRE TAXII 服务器);
  2. 将威胁行为者映射到具体 ATT&CK 技术;
  3. 生成 ATT&CK Navigator 图层(JSON 热力图);
  4. 识别检测缺口;
  5. 跨威胁行为者组进行技术对比。

assets/template.md 正是这套流程的最终交付物规范:一个结构化的报告骨架,把脚本产出的数据(技术清单、战术覆盖率、检测缺口)组织成情报分析师可直接使用的标准化文档。二者关系可以概括为"脚本负责算,模板负责写"——模板中的每一张表,几乎都能在上游脚本的某个函数输出中找到对应数据源。

二、报告整体结构速览

模板将一份 TTP 分析报告划分为八个部分,覆盖"元数据 → 画像 → 技术映射 → 检测评估 → 落地建议"的完整链路:

章节 核心作用
Report Metadata 报告的编号、日期、对象、密级等身份信息
Threat Actor Profile 威胁行为者的攻击画像与背景信息
TTP Summary 按 14 个战术维度的技术使用概览
Detailed Technique Mapping 技术与子技术的精确映射及过程示例
Detection Coverage 当前检测能力的量化统计
Detection Gaps (Priority Order) 按优先级排序的检测缺口清单
Recommended Data Sources 建议采集的数据源及覆盖评估
ATT&CK Navigator Layer 可直接导入 Navigator 渲染的图层文件
Recommendations 立即/短期/长期的行动建议

三、Report Metadata:给报告打上可追溯的身份证

模板的元数据表是整份报告的检索入口,字段全部必须填写:

Field Value
Report ID TTP-YYYY-NNNN
Date YYYY-MM-DD
Threat Actor [Group Name]
ATT&CK ID G[NNNN]
Classification TLP:AMBER
Analyst [Name]

填写要点:

  • Report ID:采用 TTP-年份-序号 的编号规则(如 TTP-2026-0001),保证报告在情报库中可全局检索、可交叉引用。
  • ATT&CK ID:采用 ATT&CK 威胁行为者的标准编号 G[NNNN],例如 APT29 的编号为 G0016。该 ID 可以直接通过脚本自动获取——agent.py 中的 get_groups() 会遍历 STIX 数据包中 type == "intrusion-set" 的对象,并从 external_references 中提取 source_name == "mitre-attack"external_id,正是这个 G 编号。
  • Classification:默认 TLP:AMBER(仅限组织内共享),这是威胁情报共享的行业通行标记习惯,避免情报外泄造成运营损失。

四、Threat Actor Profile:构建行为者的攻击画像

Attribute Detail
Name
Aliases
Suspected Origin
Motivation Espionage / Financial / Disruption
Active Since
Targeted Sectors
Targeted Regions
Associated Malware

**Aliases(别名)**是画像中的关键字段。ATT&CK 为每个威胁行为者组维护了丰富的别名信息,例如 APT29 又被称为 Cozy Bear、The Dukes、NOBELIUM。这些别名可以直接从 process.pyfind_group() 中获取——它支持按官方名称或任意别名进行模糊匹配,这为分析师在填写画像时交叉核对多份情报来源提供了便利。

**Motivation(动机)**通常从 Espionage(间谍)、Financial(经济)、Disruption(破坏)中选择。其余字段(目标行业、目标区域、关联恶意软件)应结合威胁情报报告(厂商报告、OSINT、MISP/OpenCTI 平台数据)补全,与 SKILL.md 中"威胁行为者画像包含别名、目标行业、关联活动、使用的软件以及带过程级细节的技术映射"的描述保持一致。

五、TTP Summary:14 战术维度的技术使用总览

这是模板中信息密度最高的表,按 ATT&CK Enterprise 矩阵的 14 个战术逐一统计技术数量并列出关键技术:

Tactic Technique Count Key Techniques
Reconnaissance
Resource Development
Initial Access
Execution
Persistence
Privilege Escalation
Defense Evasion
Credential Access
Discovery
Lateral Movement
Collection
Command and Control
Exfiltration
Impact

各战术的标准 ID 与名称(依据 standards.md):

Tactic ID
Reconnaissance TA0043
Resource Development TA0042
Initial Access TA0001
Execution TA0002
Persistence TA0003
Privilege Escalation TA0004
Defense Evasion TA0005
Credential Access TA0006
Discovery TA0007
Lateral Movement TA0008
Collection TA0009
Command and Control TA0011
Exfiltration TA0010
Impact TA0040

这一张表完全不需要手工统计。两个脚本都能自动产出战术覆盖数据:

  • agent.pytactic_coverage() 会按战术对技术 ID 分组,命令行运行时以 # 条形图直观打印每个战术的技术数量;
  • process.pytactic_breakdown() 则按标准战术顺序(reconnaissance 到 impact)输出结构化的 JSON 分组数据,可直接作为填表依据。

运行示例:python process.py --group APT29 --breakdown,返回每个战术下的技术 ID 与技术名称列表。

六、Detailed Technique Mapping:精确到子技术的过程映射

模板的核心表格如下:

ATT&CK ID Technique Sub-technique Procedure Example
T1566.001 Phishing Spearphishing Attachment Actor sends macro-enabled documents

模板中的示例 T1566.001 / Phishing / Spearphishing Attachment 完整展示了 ATT&CK 的三层命名体系(依据 standards.md):

  • TechniqueT[NNNN],如 T1059(Command and Scripting Interpreter);
  • Sub-techniqueT[NNNN].[NNN],如 T1059.001(PowerShell)、T1566.001(Spearphishing Attachment);
  • GroupG[NNNN],如 G0016(APT29);
  • SoftwareS[NNNN],如 S0154(Cobalt Strike);
  • MitigationM[NNNN],如 M1049(Antivirus/Antimalware)。

Procedure Example 的填写质量直接决定报告的情报价值。它应记录"行为者具体怎么做的",而非停留在技术名称层面。在 SKILL.md 的 Step 2 中,脚本通过 get_techniques_used_by_group("G0016") 拉取 APT29 的全部技术,并从每个技术对象中提取 external_idnamedescriptionkill_chain_phases(所属战术),组装成 technique_map 字典——这就是 Detailed Technique Mapping 表的机器可读版本。

在 STIX 2.1 数据结构中,一个技术对应一个 attack-pattern 类型的 SDO(依据 standards.md):

{
  "type": "attack-pattern",
  "id": "attack-pattern--uuid",
  "name": "Spearphishing Attachment",
  "external_references": [
    {"source_name": "mitre-attack", "external_id": "T1566.001"}
  ],
  "kill_chain_phases": [
    {"kill_chain_name": "mitre-attack", "phase_name": "initial-access"}
  ]
}

理解这一结构对分析师至关重要:填表时若能下沉到子技术(如从 T1059 下沉到 T1059.001),说明报告的证据链足够精细;这对应 workflows.md 中 Workflow 1 的第 4 步"在过程细节允许的情况下下沉到子技术"。

七、Detection Coverage:量化当前检测能力

Status Count Percentage
Detected %
Partial Detection %
No Detection (Gap) %

检测覆盖率的计算逻辑在两个脚本中都有实现:

  • agent.pydetection_gaps(ttps, existing_detections):用已有检测集合与行为者技术集合求交集,coverage = 1 - (len(gaps) / len(ttps)),输出覆盖率百分比;
  • process.pygap_analysis():更完整地输出 total_actor_techniquesdetectedgapscoverage_percentagedetected_techniques 和带细节的 gap_details,并自动生成 recommended_data_sources

使用示例(依据 process.py 的用法说明):

python process.py --group APT29 --gap-analysis --detections detections.json

其中 detections.json 是形如 ["T1059", "T1071", "T1566"] 的数组,表示你当前已能检测的技术 ID 集合。

填写本表时,建议在报告中注明检测证据来源(SIEM 规则、EDR 遥测、Sigma 规则等),使"Detected"结论可复核、可审计。

八、Detection Gaps (Priority Order):按风险排序的缺口清单

Priority ATT&CK ID Technique Required Data Source Effort
1 Low/Med/High
2

这是整份报告中对检测工程最有直接指导意义的一张表。填表逻辑来自 SKILL.md 的 Step 4:

  1. 遍历所有 Enterprise 技术,提取其 x_mitre_data_sources,构建"数据源 → 可覆盖技术列表"的反向索引;
  2. actor_techniques - detected_techniques 求出缺口集;
  3. 每个缺口技术对应的 data_sources 字段,就是"Required Data Source"列的取值依据。

**Effort(投入成本)**列由分析师结合现有基础设施判断:数据源已在采集 → Low;需新增部分日志源 → Med;需建设全新遥测能力 → High。排序原则建议遵循"行为者真实使用 + 检测可行性高 + 影响面大"的优先级,与 workflows.md 中 Workflow 2(Detection Gap Analysis)的第 5 步"按威胁行为者相关性与检测可行性排序缺口"一致。

九、Recommended Data Sources:数据源采集建议

Data Source Techniques Covered Current Status
Process Creation X techniques Collecting/Not Collecting
Network Traffic Flow X techniques
File Monitoring X techniques

ATT&CK v16+ 使用结构化数据源定义(依据 standards.md):

  • Process:Process Creation、Process Access、OS API Execution;
  • File:File Creation、File Modification、File Access;
  • Network Traffic:Network Connection Creation、Network Traffic Flow;
  • Command:Command Execution;
  • Module:Module Load;
  • Windows Registry:Windows Registry Key Modification。

这张表可以直接由 process.py_recommend_data_sources() 自动生成:它统计每个数据源能覆盖的缺口技术数量并降序排列,返回覆盖缺口最多的前 10 个数据源。"Techniques Covered"列的计数就是该函数 count 字段的语义。

十、ATT&CK Navigator Layer:可复用的热力图图层

模板要求报告附带图层文件并加载到 ATT&CK Navigator 中渲染:

Layer file: `[group]_navigator_layer.json`

图层 JSON 的结构遵循 Navigator Layer 4.5 版规范(依据 standards.md):

  • name:图层显示名称;
  • domainenterprise-attack / mobile-attack / ics-attack
  • techniques[]:技术标注数组,每个条目包含 techniqueIDscore(0-100)、color(十六进制颜色覆盖)、comment(分析注释)、enabled(显示/隐藏)与 metadata[](键值对附加上下文)。

单条技术条目示例(依据 api-reference.md):

{
  "techniqueID": "T1566.001",
  "tactic": "initial-access",
  "color": "#ff6666",
  "score": 100,
  "comment": "Spearphishing Attachment",
  "enabled": true
}

仓库中可以直接参考一份真实的图层文件:mappings/attack-navigator-layer.json。同时,SKILL.md 的 Step 3 与 process.pycreate_navigator_layer() 都给出了完整的图层生成函数,关键设计如下:

  • 观察到的技术标红(#ff6666)并赋分 100,未观察到的为白色,配渐变 ["#ffffff", "#ff6666"]
  • 版本信息 "attack": "16.1", "navigator": "5.1.0", "layer": "4.5"
  • metadata 中携带 group(行为者名称)与 platforms(受影响平台)便于后续检索;
  • 平台过滤覆盖 Windows、Linux、macOS、Cloud、Azure AD、Office 365、SaaS、Google Workspace 等。

生成并保存图层的命令(依据 process.py):

python process.py --group APT29 --output apt29_navigator_layer.json

将产物文件加载到 ATT&CK Navigator(Web 版或本地部署版)即可得到可视化热力图,用于汇报、评审与跨团队共享。仓库的 mappings/mitre-attack/README.md 还给出了可选的覆盖度配色建议:0 项覆盖为白色(缺口)、1-2 项为浅蓝、3-5 项为中蓝、6 项以上为深蓝,可结合本模板使用。

十一、Recommendations:从分析到行动的落地建议

模板给出的建议框架分为三档:

  1. Immediate:为 Top 3 缺口技术部署检测;
  2. Short-term:启用某个数据源采集以覆盖 N 个技术;
  3. Long-term:为某个战术建立行为分析(behavioral analytics)。

这三档对应 workflows.md 中 Workflow 5(Threat-Informed Defense)的第 6 步:将缺口分析结果转化为安全改进路线图。建议的填写素材来源包括:

  • Immediate 的内容直接取自 Detection Gaps 表中 Priority 1-3 的缺口;
  • Short-term 的数据源来自 Recommended Data Sources 表中 "Not Collecting" 且覆盖缺口最多的条目;
  • Long-term 的行为分析目标,可结合 TTP Summary 中技术最集中的战术维度来确定(如对 Exfiltration 建立基于流量基线的行为检测)。

十二、模板背后的自动化支撑与验证

12.1 两条脚本路径

仓库提供了两套互补的自动化实现:

  • agent.py:轻量级方案。可直接读取本地 enterprise-attack.json(MITRE cti 仓库的 Enterprise 数据包),也支持通过 requests 在线拉取;支持命令行传参 python agent.py APT29 [enterprise-attack.json],无参运行时会列出前 15 个可用行为者组。它不依赖 attackcti 库,离线友好。
  • process.py:功能完整的分析器。依赖 attackcti 库,通过 TAXII 服务器实时查询,封装了 ATTACKAnalyzer 类,提供 get_group_techniquescreate_navigator_layercompare_groupsgap_analysistactic_breakdown 五个核心方法,并带 --group--compare--gap-analysis--breakdown--output 等 CLI 参数。

12.2 跨行为者对比(可并入报告的进阶章节)

process.pycompare_groups() 支持一次对比多个行为者,输出:

  • 全部行为者共用的技术(common_to_all);
  • 各行为者独有的技术(unique);
  • 每个行为者与其他组的重叠百分比;
  • 技术频率分布(哪些技术被最多行为者使用)。

对应 SKILL.md 的 Step 5。这类对比信息可以放入报告的附录:共性技术是检测投资回报率最高的优先项独有技术则可作为归因研判的辅助特征(依据 workflows.md Workflow 3)。

12.3 验证标准

SKILL.md 给出了交付物的验收清单,可作为报告发布的 QA 门槛:

  • ATT&CK 数据成功通过 TAXII 服务器或本地副本查询;
  • 威胁行为者已映射到具体技术并附过程示例;
  • Navigator 图层 JSON 合法且能正确渲染;
  • 检测缺口分析识别出未监控的技术;
  • 跨行为者对比揭示了共有与独有的 TTP;
  • 输出对检测工程的优先级排序具备可操作性。

结语

assets/template.md 看似只是一份空白表格集合,实则是把"威胁情报分析 → 检测覆盖评估 → 检测工程排期"这条链路固化为可重复执行的标准流程。配合 SKILL.md 的五步工作流、agent.pyprocess.py 的自动化数据产出,分析师可以在数分钟内完成一份从数据到结论都经得起推敲的 TTP 分析报告,并让每一份报告都成为后续检测规则开发、威胁狩猎与防御路线图制定的直接输入。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.16 K
2.78 K
kernelkernel
deepin linux kernel
C
34
18
docsdocs
暂无描述
Markdown
904
5.83 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
932
1.86 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
862
1.36 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.95 K
1.03 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.38 K
1.47 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
535
606
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
549
398
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Markdown
77
23