基于 MITRE ATT&CK 的威胁行为者 TTP 分析报告撰写实战:以 Anthropic-Cybersecurity-Skills 模板化工作流为例
导读
本文围绕 skills/analyzing-threat-actor-ttps-with-mitre-attack/assets/template.md 这份威胁行为者 TTP(Tactics, Techniques, and Procedures)分析报告模板,结合同技能目录下的 SKILL.md、agent.py、process.py 以及 references 中的标准定义,完整讲解如何将威胁情报报告、攻击事件观测与 IoC 数据,系统性地映射到 MITRE ATT&CK 框架,并产出一份可量化检测覆盖、可落地检测工程排期的专业分析报告。读完本文,你将掌握模板各表格的填写方法、底层自动化脚本的调用方式、ATT&CK Navigator 图层的生成原理,以及用检测缺口数据反哺防御体系建设的完整闭环。
一、模板在技能体系中的定位
在 Anthropic-Cybersecurity-Skills 仓库中,威胁行为者 TTP 分析是威胁情报(threat-intelligence)域的核心技能之一。该技能的前置流程由 SKILL.md 定义,包含五大步骤:
- 编程查询 ATT&CK 数据(借助
attackcti客户端访问 MITRE TAXII 服务器); - 将威胁行为者映射到具体 ATT&CK 技术;
- 生成 ATT&CK Navigator 图层(JSON 热力图);
- 识别检测缺口;
- 跨威胁行为者组进行技术对比。
而 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.py 的 find_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.py 的
tactic_coverage()会按战术对技术 ID 分组,命令行运行时以#条形图直观打印每个战术的技术数量; - process.py 的
tactic_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):
- Technique:
T[NNNN],如 T1059(Command and Scripting Interpreter); - Sub-technique:
T[NNNN].[NNN],如 T1059.001(PowerShell)、T1566.001(Spearphishing Attachment); - Group:
G[NNNN],如 G0016(APT29); - Software:
S[NNNN],如 S0154(Cobalt Strike); - Mitigation:
M[NNNN],如 M1049(Antivirus/Antimalware)。
Procedure Example 的填写质量直接决定报告的情报价值。它应记录"行为者具体怎么做的",而非停留在技术名称层面。在 SKILL.md 的 Step 2 中,脚本通过 get_techniques_used_by_group("G0016") 拉取 APT29 的全部技术,并从每个技术对象中提取 external_id、name、description 与 kill_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.py 的
detection_gaps(ttps, existing_detections):用已有检测集合与行为者技术集合求交集,coverage = 1 - (len(gaps) / len(ttps)),输出覆盖率百分比; - process.py 的
gap_analysis():更完整地输出total_actor_techniques、detected、gaps、coverage_percentage、detected_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:
- 遍历所有 Enterprise 技术,提取其
x_mitre_data_sources,构建"数据源 → 可覆盖技术列表"的反向索引; - 用
actor_techniques - detected_techniques求出缺口集; - 每个缺口技术对应的
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:图层显示名称;domain:enterprise-attack/mobile-attack/ics-attack;techniques[]:技术标注数组,每个条目包含techniqueID、score(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.py 的 create_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:从分析到行动的落地建议
模板给出的建议框架分为三档:
- Immediate:为 Top 3 缺口技术部署检测;
- Short-term:启用某个数据源采集以覆盖 N 个技术;
- 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_techniques、create_navigator_layer、compare_groups、gap_analysis、tactic_breakdown五个核心方法,并带--group、--compare、--gap-analysis、--breakdown、--output等 CLI 参数。
12.2 跨行为者对比(可并入报告的进阶章节)
process.py 的 compare_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.py 与 process.py 的自动化数据产出,分析师可以在数分钟内完成一份从数据到结论都经得起推敲的 TTP 分析报告,并让每一份报告都成为后续检测规则开发、威胁狩猎与防御路线图制定的直接输入。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust4.21 K637- DDeepSeek-V4.1-FlashDeepSeek-V4.1-Flash 是一个多模态混合专家(MoE)模型,拥有 5520 亿骨干参数,并支持最多一百万 token 的上下文长度。该模型原生支持图像和文本输入,并以自回归方式生成文本Python270
cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端TypeScript2 K146
hello-agents📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程Python46066
new-apiAI模型聚合管理中转分发系统,一个应用管理您的所有AI模型,支持将多种大模型转为统一格式调用,支持OpenAI、Claude、Gemini等格式,可供个人或者企业内部管理与分发渠道使用。🍥 A Unified AI Model Management & Distribution System. Aggregate all your LLMs into one app and access them via an OpenAI-compatible API, with native support for Claude (Messages) and Gemini formats.Go20143
JeecgBoot🔥企业级低代码平台集成了AI应用平台,帮助企业快速实现低代码开发和构建AI应用!前后端分离架构 SpringBoot,SpringCloud、Mybatis,Ant Design4、 Vue3.0、TS+vite!强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领AI低代码开发模式: AI生成->OnlineCoding-> 代码生成-> 手工MERGE,显著的提高效率,又不失灵活~Java34051