使用 MITRE ATTCK Navigator 分析威胁行为体 TTP:attackcti API 参考与 Layer 文件实战指南
2026/9/11 20:52:03 网站建设 项目流程

使用 MITRE ATT&CK Navigator 分析威胁行为体 TTP:attackcti API 参考与 Layer 文件实战指南

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

本文是基于 Anthropic Cybersecurity Skills 仓库中analyzing-threat-actor-ttps-with-mitre-navigator技能(SKILL.md)及其 API 参考文档(api-reference.md)整理而成的技术指南。文章完整覆盖 attackcti 库的全部 API 方法、STIX 2.1 对象字段、ATT&CK Navigator Layer JSON Schema 与 CLI 用法,并结合仓库内 agent.py 源码与 attack-navigator-layer.json 真实层文件,帮助分析师以编程方式将 APT 组织的 TTP 映射到 ATT&CK 矩阵、生成 Navigator 热力图并进行防御覆盖差距评估。读完本文,你将能够独立搭建一套"查询 STIX/TAXII → 提取群体-技术关系 → 生成 Layer JSON → 多层叠加对比"的完整分析流水线。

1. 背景与适用场景

MITRE ATT&CK Navigator 是一个用于标注与可视化 ATT&CK 矩阵的 Web 应用,其核心交换载体是Layer 文件——一种带有分数、颜色、注释与元数据的 JSON 格式。将 Navigator 与 attackcti(通过 TAXII 协议查询 ATT&CK STIX 数据的 Python 库)结合,分析师可以:

  • 程序化地将特定威胁组织(如 APT29)的 TTP 映射为 Navigator Layer 文件;
  • 横向比较多个威胁组织的技术差异(共有 / 独有技术);
  • 将攻击者画像与自身检测能力叠加,识别未覆盖的检测缺口。

典型应用场景包括:安全事件调查中需要刻画威胁行为体画像、围绕特定组织构建检测规则或威胁狩猎查询、SOC 需要结构化分析流程、以及验证既有安全监控对相关攻击技术的覆盖度。

前置条件:Python 3.8+,安装attackctistix2库;可访问 MITRE ATT&CK Navigator(Web UI 或本地实例);具备 STIX 2.1 对象与关系的基本理解。

2. attackcti Python 库 API 参考

attackcti 是查询 ATT&CK 数据的核心客户端。仓库中的 agent.py 通过from attackcti import attack_client初始化客户端,其全部方法如下:

方法说明
attack_client()初始化 ATT&CK 数据的 STIX/TAXII 客户端
client.get_groups()检索 ATT&CK 中所有威胁组织(group)
client.get_techniques()检索 ATT&CK 中所有技术(technique)
client.get_techniques_used_by_group(group)获取与指定组织关联的技术
client.get_software()检索 ATT&CK 中所有软件/工具
client.get_software_used_by_group(group)获取指定组织使用的软件
client.get_mitigations()检索 ATT&CK 中所有缓解措施
client.get_data_sources()检索 ATT&CK 中所有数据源

源码级说明attack_client()内部完成 STIX/TAXII 客户端的初始化;get_techniques_used_by_group()返回的是与该组织存在uses关系的 Technique 对象列表,因此攻击者画像完全由官方 ATT&CK 数据驱动,而非人工整理,保证了映射的权威性。

get_groups()返回的对象是 STIX 2.1 的Intrusion Set类型。仓库中list_threat_groups()函数(agent.py)正是遍历该结果,抽取组织的namealiasesdescription以及external_references[0].external_id(即 G 编码,如 G0016),并按名称排序输出。

3. STIX 2.1 对象字段参考

3.1 Intrusion Set(组织对象)字段

get_groups()返回的每个组织对象(如 APT29)包含以下关键字段:

字段说明
idSTIX 对象 ID(例如intrusion-set--abc123
name组织名称(例如 APT29)
aliases组织的别名列表(如 Cozy Bear / Midnight Blizzard)
description组织描述与背景信息
external_references引用列表,包含 ATT&CK ID(G 编码)
created对象创建时间戳
modified最近修改时间戳

源码印证get_group_techniques()(agent.py)先按名称或别名精确匹配目标组织——先比较name,再在aliases中查找,从而支持用别名(如 "Cozy Bear")定位同一组织;随后取出target_group["id"](STIX 对象 ID)作为关联查询的锚点,并用external_references[0].external_id记录 G 编码。

3.2 Technique(技术对象)字段

get_techniques_used_by_group()返回的每个 Technique 对象包含以下字段:

字段说明
name技术名称(例如 Spearphishing Attachment)
external_references[].external_idATT&CK 技术 ID(例如 T1566.001)
x_mitre_platforms目标平台(Windows、Linux、macOS 等)
kill_chain_phases杀伤链中关联的战术(tactic)
x_mitre_detection针对该技术的检测指导
x_mitre_is_subtechnique是否为子技术

源码印证:在 agent.py 中,遍历每个 technique 的external_references,仅当ref.get("source_name") == "mitre-attack"时提取external_id(技术 ID)与官方url,同时收集x_mitre_platforms平台信息与截断后的description。这种过滤方式可避免把非 ATT&CK 的外部引用(如 CVE、厂商公告)误当技术编号。

4. ATT&CK Navigator Layer JSON Schema

Layer 文件是 Navigator 的可视化配置与数据载体。其 Schema 字段定义如下:

字段类型说明
namestring层显示名称
versions.attackstringATT&CK 版本(例如 "15")
versions.navigatorstringNavigator 版本(例如 "5.0")
versions.layerstring层格式版本(例如 "4.5")
domainstringenterprise-attackmobile-attackics-attack
techniques[].techniqueIDstringATT&CK 技术 ID
techniques[].scoreinteger着色用数值分数(0-100)
techniques[].colorstring颜色覆盖(十六进制,如#ff6666
techniques[].commentstring该技术的注释文本
techniques[].enabledboolean技术单元格是否启用
gradient.colorsarray从最低分到最高分的颜色渐变
gradient.minValueinteger最低分值
gradient.maxValueinteger最高分值
filters.platformsarray矩阵中显示的平台
legendItems[].labelstring图例条目标签
legendItems[].colorstring图例条目颜色

仓库实例印证:本仓库根目录的 mappings/attack-navigator-layer.json 正是一个完整的 Layer v4.5 文件,它使用versions.attack = "14"versions.navigator = "4.9.1"domain = "enterprise-attack",并通过filters.platforms声明了 Linux、macOS、Windows、Network、Containers、IaaS 等平台。其每个 technique 条目包含techniqueIDscore(按引用技能数归一化到 1-100)、comment(注明被多少个技能引用)以及metadata(记录skill_count与引用技能列表)——这正是本文分析场景中"以 Layer 承载丰富注解"的最佳示范。查看方式见 mappings/README.md:在 ATT&CK Navigator 中点击Open Existing LayerUpload from local选择该 JSON 即可渲染整个仓库的 ATT&CK 覆盖热力图。

源码生成逻辑generate_navigator_layer()(agent.py)展示了如何从组织数据构建 Layer:每个技术条目以techniqueID为主键,附上score: 1、自定义color、技术名称作为comment并置enabled: True;顶层配置包含layout(side 布局、显示 ID 与名称)、hideDisabled: False、白色到目标色的gradient、以及标注组织技术集的legendItems

5. CLI 实战用法

仓库的 agent.py 通过 argparse 暴露了完整命令行接口,核心用法如下:

# 列出所有 ATT&CK 威胁组织 python agent.py --list-groups # 分析指定组织 python agent.py --group "APT29" # 分析组织并生成 Navigator Layer 文件 python agent.py --group "APT29" --layer-output apt29_layer.json # 比较多个组织 python agent.py --compare "APT29" "APT28" "Lazarus Group" # 分析组织并同时保存 Layer 与完整报告(JSON) python agent.py --group "APT29" --layer-output apt29.json --output report.json

参数说明(对应 main() 的 argparse 定义):

参数类型说明
--groupstring要分析的威胁组织名称(如 APT29),支持别名匹配
--list-groupsflag列出所有 ATT&CK 组织
--comparenargs="+"比较多个组织,可传多个名称
--layer-outputstring将 Navigator Layer JSON 保存到指定文件
--outputstring将完整审计报告保存为 JSON

执行流程run_audit(),agent.py):程序先输出带时间戳(UTC)的分析头;--list-groups打印前 30 个组织(格式G00XX: name);--group打印组织 ID、技术数量及前 20 项技术(Txxxx.xxx: name),并在指定--layer-output时写出 Layer 文件;--compare输出被比较组织、去重后的技术总数、共有技术与各组织独有技术数量;最终--outputgroupsgroup_techniquescomparison等全部结果聚合写入报告 JSON。

6. 端到端分析工作流

将上述 API 与 CLI 串起来,即可构成完整流程:

  1. 查询 ATT&CK STIX 数据:用attack_client()初始化客户端,get_groups()获取组织列表;
  2. 提取组织关联技术:通过get_techniques_used_by_group()依据 STIXuses关系取得技术对象,按source_name == "mitre-attack"过滤出技术 ID(见 agent.py);
  3. 生成 Layer JSON:调用generate_navigator_layer()产出带注释的 Layer 文件;
  4. 叠加检测覆盖:将攻击者技术集与自身已检测技术集做交集/差集运算,量化检测覆盖百分比,识别缺口技术;
  5. 导出并评审:将 Layer 交给团队在 Navigator 中渲染,供检测工程与防御规划使用。

7. 多组织对比与检测差距评估

对比分析compare_groups()(agent.py)为每个组织建立技术 ID 集合,随后计算所有组织的交集(共有技术,常被共用即值得优先防御)与每个组织的相对差集(独有技术,用于区分不同攻击者的特征)。输出结构包含groups_comparedtotal_unique_techniquesshared_techniques(含 ID 与名称)、shared_countunique_per_group

差距评估思路:将攻击者技术集合与检测能力集合做集合运算——covered = actor ∩ detectedgaps = actor - detected,即可量化"已检测 / 未检测"的比例。未覆盖技术应优先补建检测规则或数据源,已覆盖技术则可用于验证监控有效性。SKILL.md 中提供的 APT29 检测缺口分析(SKILL.md)即以红绿双色 Layer 呈现缺口(红 = 未检测缺口,绿 = 已检测),并配套按 14 个战术维度(reconnaissance → impact)的 TTP 分布分解,便于面向检测工程输出可执行结论。

8. 相关仓库资源导航

  • api-reference.md:本文依据的 API 参考原文;
  • agent.py:完整可运行的 TTP 映射与 Layer 生成代理;
  • SKILL.md:配套技能文档,含多组织对比与缺口分析的 Python 示例;
  • mappings/attack-navigator-layer.json:仓库级 Layer v4.5 实例(Enterprise ATT&CK v14,覆盖 218+ 技术);
  • mappings/README.md:Layer 文件的查看方式、覆盖统计与颜色刻度说明;
  • ATTACK_COVERAGE.md:291 项技术、14 个战术维度的全仓库覆盖映射。

注意事项:本文涉及的版本信息(Layer 格式 4.5、Navigator 5.x、ATT&CK 14-16)以当前仓库实际内容与 agent.py 生成逻辑为准;运行脚本前需先安装attackcti依赖,且首次查询需访问可用的 TAXII 数据源。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询