首页
/ 基于 MITRE ATT&CK 的威胁行为者 TTP 分析:从情报映射到检测工程的五条实战工作流

基于 MITRE ATT&CK 的威胁行为者 TTP 分析:从情报映射到检测工程的五条实战工作流

2026-09-09 18:44:11作者:伍霜盼Ellen

导读

本文以 Anthropic-Cybersecurity-Skills 仓库中 analyzing-threat-actor-ttps-with-mitre-attack 技能包的实战工作流文档为骨架,系统讲解如何把威胁情报报告、IOC 与沙箱行为证据映射到 MITRE ATT&CK 框架,并通过 ATT&CK Navigator 生成热力图、量化检测覆盖缺口、比较多组威胁行为者画像,最终把分析结论转译为可排期的检测工程与安全改进路线图。读完本文,你将掌握五条端到端可执行的 TTP 分析工作流,以及配套的 attackcti / mitreattack-python 编程查询、Navigator Layer JSON 生成与缺口分析的完整实现方法。

核心背景:工作流依赖的知识底座

五条工作流全部建立在同一套知识底座之上:MITRE ATT&CK 知识库、STIX 2.1 数据模型与 ATT&CK Navigator 可视化规范。本技能包通过 references/standards.mdreferences/api-reference.md 固化这套底座,分析前应先消化以下概念。

ATT&CK 矩阵结构与编号体系

ATT&CK 共有三套矩阵:Enterprise ATT&CK(覆盖 Windows、macOS、Linux、云平台 AWS/Azure/GCP、SaaS、Office 365、网络与容器)、Mobile ATT&CK(Android、iOS)与 ICS ATT&CK(工业控制系统)。Enterprise 矩阵把对抗行为组织为 14 个战术(Tactics,回答"为什么"),其下挂载技术(Techniques,回答"怎么做")与子技术(Sub-techniques,具体实现方式),每条技术还关联数据源、检测建议、缓解措施与来自真实威胁组织的 procedure 示例。

14 个战术及其战术 ID(TA 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)。

对象编号遵循统一约定,写报告与生成 Layer 时务必使用规范 ID:

对象 格式 示例
技术 Technique T[NNNN] T1059 - Command and Scripting Interpreter
子技术 Sub-technique T[NNNN].[NNN] T1059.001 - PowerShell
威胁组织 Group G[NNNN] G0016 - APT29
软件 Software S[NNNN] S0154 - Cobalt Strike
缓解 Mitigation M[NNNN] M1049 - Antivirus/Antimalware

STIX 2.1 数据模型:ATT&CK 的机器可读形态

MITRE 以 STIX 2.1 格式发布 ATT&CK 知识库(mitre/cti 仓库),其核心对象类型与 ATT&CK 概念一一对应:attack-pattern(技术与子技术)、intrusion-set(威胁组织)、relationship(如组织"使用"技术的关联)、malware(恶意软件家族)、tool(被滥用的合法工具)。一条典型的 attack-pattern 通过 external_references 携带 MITRE ATT&CK 外部 ID,通过 kill_chain_phases 声明所属战术,例如 Spearphishing Attachment 即 T1566.001phase_nameinitial-access;而 intrusion-set 对象则携带组织别名(如 APT29 的别名 Cozy Bear、The Dukes、NOBELIUM)、目标与资源级别。

在仓库的 scripts/agent.py 中可以看到这套解析逻辑的离线实现:它直接下载或读取 enterprise-attack.json bundle,过滤 type == "attack-pattern" 且未被 revoked 的对象提取技术 ID、战术与平台;过滤 type == "intrusion-set" 提取组织及其别名;再通过 relationship_type == "uses" 的边把组织与其使用技术关联起来。这种离线解析方式与 TAXII 服务在线查询互为补充。

工具链与运行环境

技能包声明的前置条件如下(见 SKILL.md):Python 3.9+,安装 mitreattack-pythonattackctistix2 库;准备 ATT&CK Navigator(Web 版或本地部署);理解矩阵结构;能够访问威胁情报报告或 MISP/OpenCTI 中的威胁组织数据。attackcti 封装了对 MITRE TAXII 服务器的查询,mitreattack-python 则提供基于本地 STIX JSON 的离线查询 API:

from mitreattack.stix20 import MitreAttackData
attack = MitreAttackData("enterprise-attack.json")

# 获取全部技术
techniques = attack.get_techniques()

# 按别名定位组织并取回其使用技术
group = attack.get_group_by_alias("APT29")
techs = attack.get_techniques_used_by_group(group.id)

# 查看某技术的缓解措施
mitigations = attack.get_mitigations_mitigating_technique(technique.id)
for m in mitigations:
    print(m.name, m.description)

若数据源已下载为本地文件,也可通过 api-reference.md 中记录的 TAXII 方式直接查询:

from stix2 import TAXIICollectionSource, Filter
from taxii2client.v20 import Collection

collection = Collection("https://cti-taxii.mitre.org/stix/collections/95ecc380-afe9-11e4-9b6c-751b66dd541e/")
src = TAXIICollectionSource(collection)
groups = src.query([Filter("type", "=", "intrusion-set")])

工作流一:Threat Actor TTP Mapping(威胁行为者 TTP 映射)

这是五条工作流的起点:把一份威胁情报报告中的对抗行为描述,逐条转化为带 ATT&CK ID 的机器可读映射,最终生成 Navigator Layer 与检测优先级清单。

[Threat Report] --> [Extract Behaviors] --> [Map to ATT&CK] --> [Navigator Layer]
                                                                       |
                                                                       v
                                                              [Detection Priorities]

执行步骤:

  1. Report Ingestion(报告接入):获取威胁情报报告,来源可以是厂商报告、OSINT 或内部事件报告;
  2. Behavior Extraction(行为提取):识别报告中描述的对抗行为动作,例如投递宏文档、滥用 PowerShell、建立 C2 会话;
  3. Technique Mapping(技术映射):基于 ATT&CK 知识库,把每个行为映射为具体技术 ID;
  4. Sub-technique Precision(子技术收敛):当报告过程细节足够时,进一步收敛到子技术(如 T1059.001 PowerShell);
  5. Layer Creation(Layer 生成):把映射结果生成为 ATT&CK Navigator Layer;
  6. Priority Assessment(优先级评估):按检测可行性与影响程度对技术排序,形成检测优先级。

编程实现:查询数据并映射组织技术

SKILL.md 给出了用 attackcti 完成前三步的完整代码。先初始化客户端并读取企业技术与威胁组织清单:

from attackcti import attack_client
import json

# Initialize ATT&CK client (queries MITRE TAXII server)
lift = attack_client()

# Get all Enterprise techniques
enterprise_techniques = lift.get_enterprise_techniques()
print(f"Total Enterprise techniques: {len(enterprise_techniques)}")

# Get all threat groups
groups = lift.get_groups()
print(f"Total threat groups: {len(groups)}")

# Get specific group by name
apt29 = [g for g in groups if 'APT29' in g.get('name', '')]
if apt29:
    group = apt29[0]
    print(f"Group: {group['name']}")
    print(f"Aliases: {group.get('aliases', [])}")
    print(f"Description: {group.get('description', '')[:200]}")

随后按组织 ID(APT29 对应 G0016)取回其使用的全部技术,构建 tech_id -> {name, tactics, description} 映射表:

from attackcti import attack_client

lift = attack_client()

# Get techniques used by APT29
apt29_techniques = lift.get_techniques_used_by_group("G0016")  # APT29 group ID

technique_map = {}
for entry in apt29_techniques:
    tech_id = entry.get("external_references", [{}])[0].get("external_id", "")
    tech_name = entry.get("name", "")
    description = entry.get("description", "")
    tactic_refs = [
        phase.get("phase_name", "")
        for phase in entry.get("kill_chain_phases", [])
    ]

    technique_map[tech_id] = {
        "name": tech_name,
        "tactics": tactic_refs,
        "description": description[:300],
    }

print(f"\nAPT29 uses {len(technique_map)} techniques:")
for tid, info in sorted(technique_map.items()):
    print(f"  {tid}: {info['name']} [{', '.join(info['tactics'])}]")

注意这里依赖的字段结构:每条技术通过 external_references 中的 external_id 携带 ATT&CK ID,通过 kill_chain_phasesphase_name 列出所属战术。这与 scripts/process.pyget_group_techniques() 的解析逻辑完全一致——后者还额外提取了 x_mitre_platformsx_mitre_data_sources,为后续缺口分析储备了平台与数据源信息。

生成 ATT&CK Navigator Layer

把映射结果生成为 Navigator Layer JSON 是"可交付"的关键一步。技能包提供的 create_navigator_layer() 函数产出一个完整的 Layer 4.5 版本对象:

import json

def create_navigator_layer(group_name, technique_map, description=""):
    """Generate ATT&CK Navigator layer JSON for a threat group."""
    techniques_list = []
    for tech_id, info in technique_map.items():
        techniques_list.append({
            "techniqueID": tech_id,
            "tactic": info["tactics"][0] if info["tactics"] else "",
            "color": "#ff6666",  # Red for observed techniques
            "comment": info["description"][:200],
            "enabled": True,
            "score": 100,
            "metadata": [
                {"name": "group", "value": group_name},
            ],
        })

    layer = {
        "name": f"{group_name} TTP Coverage",
        "versions": {
            "attack": "16.1",
            "navigator": "5.1.0",
            "layer": "4.5",
        },
        "domain": "enterprise-attack",
        "description": description or f"Techniques attributed to {group_name}",
        "filters": {"platforms": ["Windows", "Linux", "macOS", "Cloud"]},
        "sorting": 0,
        "layout": {
            "layout": "side",
            "aggregateFunction": "average",
            "showID": True,
            "showName": True,
            "showAggregateScores": False,
            "countUnscored": False,
        },
        "hideDisabled": False,
        "techniques": techniques_list,
        "gradient": {
            "colors": ["#ffffff", "#ff6666"],
            "minValue": 0,
            "maxValue": 100,
        },
        "legendItems": [
            {"label": "Observed technique", "color": "#ff6666"},
            {"label": "Not observed", "color": "#ffffff"},
        ],
        "showTacticRowBackground": True,
        "tacticRowBackground": "#dddddd",
        "selectTechniquesAcrossTactics": True,
        "selectSubtechniquesWithParent": False,
        "selectVisibleTechniques": False,
    }

    return layer

# Generate and save layer
layer = create_navigator_layer("APT29", technique_map, "APT29 (Cozy Bear) TTP analysis")
with open("apt29_navigator_layer.json", "w") as f:
    json.dump(layer, f, indent=2)
print("[+] Navigator layer saved to apt29_navigator_layer.json")

Layer 的关键字段语义如下(与 standards.md 中 Layer 4.5 Schema 对应):name 为图层显示名;domain 决定渲染哪套矩阵(enterprise-attack / mobile-attack / ics-attack);techniques[] 数组内每个条目用 techniqueID 定位技术、score(0-100 数值)参与聚合计算、color 覆盖显示颜色、comment 存放分析备注、enabled 控制显隐、metadata 附加键值上下文。Layer 中的 score: 100 配合 gradient 渐变区间(#ffffff#ff6666),在 Navigator 中即可渲染为"已观察技术"与"未观察技术"的对比热力图。

仓库根目录的 mappings/attack-navigator-layer.json 提供了一个真实产出范例:它以"每个技术被多少个技能引用"作为 score,并写入 skill_countskills 元数据,展示了大规模覆盖热力图的组织方式——分析单个威胁组织时同样可以照此结构为每条技术附加证据来源与相关度评分。


工作流二:Detection Gap Analysis(检测差距分析)

映射出威胁行为者使用的全部技术后,下一个问题是:我们现有的检测到底覆盖了多少? 本工作流把当前检测规则集与威胁 Layer 叠加,量化出未被监控的技术缺口,并转化为检测工程积压清单。

[Current Detections] --> [Detection Layer] --> [Overlay with Threat Layer] --> [Gap Layer]
                                                                                    |
                                                                                    v
                                                                          [Engineering Backlog]

执行步骤:

  1. Detection Inventory(检测盘点):梳理现有检测规则并映射到 ATT&CK 技术;
  2. Detection Layer(检测 Layer):生成展示"已检测技术"的 Navigator Layer(绿色);
  3. Threat Layer(威胁 Layer):生成展示"对手技术"的 Layer(红色);
  4. Overlay Analysis(叠加分析):合并 Layer,找出未被覆盖的威胁技术;
  5. Gap Prioritization(缺口排序):按威胁行为者相关性与检测可行性对缺口排序;
  6. Engineering Plan(工程计划):根据排序后的缺口创建检测工程积压清单。

编程实现:数据源覆盖与缺口量化

SKILL.md 的 Step 4 给出了实现:先遍历全部企业技术,构建"数据源 -> 可检测技术列表"的覆盖图谱,再与现有检测集合求差集:

from attackcti import attack_client

lift = attack_client()

# Get all techniques with data sources
all_techniques = lift.get_enterprise_techniques()

# Build data source coverage map
data_source_coverage = {}
for tech in all_techniques:
    tech_id = tech.get("external_references", [{}])[0].get("external_id", "")
    data_sources = tech.get("x_mitre_data_sources", [])

    for ds in data_sources:
        if ds not in data_source_coverage:
            data_source_coverage[ds] = []
        data_source_coverage[ds].append(tech_id)

# Compare threat actor techniques against available detections
detected_techniques = {"T1059", "T1071", "T1566"}  # Example: techniques you can detect
actor_techniques = set(technique_map.keys())

covered = actor_techniques.intersection(detected_techniques)
gaps = actor_techniques - detected_techniques

print(f"\n=== Detection Gap Analysis for APT29 ===")
print(f"Actor techniques: {len(actor_techniques)}")
print(f"Detected: {len(covered)} ({len(covered)/len(actor_techniques)*100:.0f}%)")
print(f"Gaps: {len(gaps)} ({len(gaps)/len(actor_techniques)*100:.0f}%)")
print(f"\nUndetected techniques:")
for tech_id in sorted(gaps):
    if tech_id in technique_map:
        print(f"  {tech_id}: {technique_map[tech_id]['name']}")

这里 detected_techniques 集合代表"当前可检测的技术 ID 清单",在实际部署中应由检测规则库(如 Sigma、Splunk SPL、Sysmon 规则)导出的技术映射列表替代。ATT&CK v16+ 的结构化数据源字段(x_mitre_data_sources)是缺口分析的重要杠杆:它让分析师从"缺哪些检测"进一步推导到"缺哪些日志",例如 Process Creation 数据源可以支撑 T1055 系列进程注入检测,Network Traffic Flow 支撑 T1071 系列 C2 检测。

自动化实现:推荐补日志的数据源

仓库的 scripts/process.py 把上述逻辑封装为 gap_analysis()_recommend_data_sources()。后者对缺口清单做数据源频次统计,输出"采购/开启哪个数据源能一次性闭合最多缺口"的 Top 10 建议——直接服务于检测工程的排期决策。命令行用法:

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

其中 detections.json 为当前已检测技术 ID 的 JSON 数组文件,输出会包含 coverage_percentagegap_details(含每个缺口的技术 ID、名称、战术、所需数据源、平台)与 recommended_data_sources


工作流三:Cross-Actor Comparison(跨行为者比较)

单组分析能看清"对手做什么",而多组比较能看清"哪些技术是行业共性、哪些是该组织独有"——这是确定检测投入优先级与辅助归因的核心方法。

[Group A TTPs] --+
                 |--> [Intersection Analysis] --> [Common Techniques] --> [Priority Detections]
[Group B TTPs] --+                                                               |
                 |                                                               v
[Group C TTPs] --+                                                    [Unique Techniques per Group]

执行步骤:

  1. Group Selection(组选择):选择与自身行业/区域相关的威胁组织;
  2. TTP Extraction(TTP 提取):从 ATT&CK 拉取每个组织的技术列表;
  3. Common Analysis(共性分析):找出所有被选组织共用的技术;
  4. Unique Analysis(独有分析):识别特定组织独有的技术;
  5. Detection ROI(检测投资回报):优先为共性技术建设检测(覆盖 ROI 最高);
  6. Actor Attribution(归因):把独有技术作为潜在归因指标。

编程实现:交集与差集分析

from attackcti import attack_client

lift = attack_client()

# Compare techniques across multiple groups
groups_to_compare = {
    "G0016": "APT29",
    "G0007": "APT28",
    "G0032": "Lazarus Group",
}

group_techniques = {}
for gid, gname in groups_to_compare.items():
    techs = lift.get_techniques_used_by_group(gid)
    tech_ids = set()
    for t in techs:
        tid = t.get("external_references", [{}])[0].get("external_id", "")
        if tid:
            tech_ids.add(tid)
    group_techniques[gname] = tech_ids

# Find common and unique techniques
all_groups = list(group_techniques.keys())
common_to_all = set.intersection(*group_techniques.values())
print(f"\nTechniques common to all {len(all_groups)} groups: {len(common_to_all)}")
for tid in sorted(common_to_all):
    print(f"  {tid}")

for gname, techs in group_techniques.items():
    unique = techs - set.union(*[t for n, t in group_techniques.items() if n != gname])
    print(f"\nUnique to {gname}: {len(unique)} techniques")

scripts/process.pycompare_groups() 中,这一逻辑被扩展为结构化输出:除 common_to_all 与每个组的 unique 外,还计算每组的 overlap_percentage(该组技术中与其他组重叠的比例),并输出 technique_frequency——按"被多少个组使用"排序的技术频率表。CLI 用法:

python process.py --compare APT28 APT29 "Lazarus Group" --output comparison.json

从实操角度解读输出:common_to_all 中的技术应进入检测工程 backlog 的最高优先级(一套检测覆盖多个高价值目标);而某组独有的技术(如归因特征明显的特殊载荷技术)可作为 SOC 归因研判的参考信号,但需谨慎使用——TTP 重叠只是归因假设的证据之一,不能单独作为归因结论。


工作流四:Campaign-to-TTP Analysis(战役到 TTP 分析)

前三套工作流处理的对象是 ATT&CK 中已归档的长期组织画像;本工作流面向"正在进行时"——从一起具体攻击战役的 IOC 出发,通过动态分析还原行为并映射为 TTP,再与已知组织画像比对形成归因假设。

[Campaign IOCs] --> [Sandbox/Analysis] --> [Behavior Extraction] --> [TTP Mapping]
                                                                          |
                                                                          v
                                                                 [Compare to Known Groups]
                                                                          |
                                                                          v
                                                                 [Attribution Hypothesis]

执行步骤:

  1. IOC Collection(IOC 收集):收集战役 IOC(恶意软件哈希、C2 域名、钓鱼邮件);
  2. Dynamic Analysis(动态分析):在沙箱中执行样本,捕获行为产物;
  3. Behavior Documentation(行为记录):记录文件操作、注册表变更、网络连接与进程活动;
  4. ATT&CK Mapping(ATT&CK 映射):把观察到的行为映射到技术与子技术;
  5. Group Comparison(组织比对):把战役 TTP 与已知组织画像比对;
  6. Attribution Assessment(归因评估):基于 TTP 重叠程度评估归因可能性。

行为取证视角:记录哪些痕迹

第 3 步"行为记录"是决定映射质量的关键。技能包强调四类核心痕迹:文件操作(创建/修改/删除的文件路径,对应 File 数据源)、注册表变更(如 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 写入,对应 Windows Registry 数据源与 T1547.001 启动项持久化)、网络连接(C2 域名解析与流量特征,对应 Network Traffic 数据源与 T1071.001)、进程活动(命令行参数与父子进程链,对应 Process 数据源与 T1059.001)。

这种从证据到技术的映射逻辑,与工作流一的映射方向(从报告文本到技术)互为补充,其产出可以直接送入工作流三的 compare_groups(),把战役 TTP 作为"候选组"之一参与交并集计算。

归因的边界与报告记录

归因评估要求谨慎:attribution assessment 的输出是"基于 TTP 重叠的可能性评估"而非确定性结论。把战役映射结果与报告模板结合,可产出规范的战役分析记录。模板位于 assets/template.md,其中 TTP Summary 表按 14 个战术统计技术数量并列出关键技术,Detailed Technique Mapping 表记录"ATT&CK ID / 技术 / 子技术 / Procedure 示例"四元组(如 T1566.001 / Phishing / Spearphishing Attachment / "Actor sends macro-enabled documents"),这些表格结构与工作流一的 technique_map、工作流二的 gap_details 输出字段一一对应,可无缝回填。


工作流五:Threat-Informed Defense(威胁知情的防御)

最后一条工作流把单点分析升级为组织级防御决策:从威胁画像出发,沿"数据源 -> 遥测 -> 控制措施"的链路逐层审计,找出既无检测也无缓解的双重空白技术,输出安全改进路线图。

[ATT&CK Mappings] --> [Data Source Analysis] --> [Telemetry Assessment] --> [Control Mapping]
                                                                                   |
                                                                                   v
                                                                          [Security Roadmap]

执行步骤:

  1. Threat Profile(威胁画像):确定相关威胁行为者及其技术;
  2. Data Source Mapping(数据源映射):判断每个技术可由哪些数据源检测;
  3. Telemetry Audit(遥测审计):评估当前实际采集了哪些数据源;
  4. Control Assessment(控制评估):把现有安全控制映射到技术的缓解措施;
  5. Gap Identification(缺口识别):找出既无检测覆盖也无缓解覆盖的技术;
  6. Roadmap Creation(路线图制定):针对最高风险缺口制定安全改进路线图。

数据源到缓解的映射逻辑

ATT&CK 每条技术都关联数据源与缓解措施(M 编号),这使本工作流可以程序化执行:x_mitre_data_sources 字段回答"检测它需要什么日志";get_mitigations_mitigating_technique() 回答"用什么控制可以缓解它"。策略上可以定义三层覆盖矩阵:

技术 数据源已采集(遥测) 缓解已部署 结论
T1071.001 Application Layer Protocol 部分 优先补 Network Traffic 采集
T1059.001 PowerShell 优先部署 Execution Isolation / 脚本块日志
T1053.005 Scheduled Task 最高风险双重空白

_recommend_data_sources() 函数正是为"遥测审计"环节设计的:它统计每个缺口技术所需的数据源,返回按闭合缺口数量排序的建议清单,让分析师直接看到"开启哪个日志源收益最大",这与工作流二的数据源图谱(data_source_coverage)共享同一构建逻辑。

从缺口到路线图

路线图应把输出按风险与成本组织为三档行动:Immediate——为 Top 3 缺口技术部署检测;Short-term——开启某数据源采集以覆盖 N 个技术;Long-term——针对某战术构建行为分析能力。报告模板 assets/template.md 的 Recommendations 章节即采用这一结构,而 Detection Coverage 表(Detected / Partial Detection / No Detection 三态占比)为路线图提供了量化基线,便于后续复测对比改进效果。


统一 CLI 落地:两条可执行的命令路径

技能包把上述工作流沉淀为两个可直接运行的脚本,二者互补:

  • scripts/process.py:基于 attackcti 在线查询 TAXII 服务,提供完整的 ATTACKAnalyzer 类,覆盖工作流一(get_group_techniques + create_navigator_layer)、工作流二(gap_analysis + 数据源推荐)、工作流三(compare_groups)、以及额外的 tactic_breakdown(按 14 战术顺序输出战术分布)。常用命令:

    python process.py --group APT29 --output apt29_layer.json
    python process.py --compare APT28 APT29 "Lazarus Group"
    python process.py --gap-analysis --detections detections.json --group APT29
    python process.py --breakdown --group APT29
    
  • scripts/agent.py:支持离线 bundle(enterprise-attack.json 本地文件)或在线下载两种数据加载方式(load_attack_bundle),内置技术解析、组织解析、uses 关系映射、战术覆盖条形图与检测缺口演示分析,适合无 TAXII 网络访问或需离线复现的环境:

    python agent.py                 # 列出样本组织清单
    python agent.py APT29           # 输出该组织 TTP 映射、战术覆盖与缺口演示
    python agent.py APT29 enterprise-attack.json   # 指定本地 bundle
    

值得注意的实现细节:process.pyget_group_techniques() 中按 external_referencessource_name == "mitre-attack" 精确提取组织 ID 与技术 ID,避免误取其他引用来源;create_navigator_layer() 会为每个技术在其每个所属战术下分别生成一个 Layer 条目(同一条技术 ID 可出现在多个战术列),这与 Navigator 矩阵按战术渲染的机制匹配。agent.py 则通过 tactic_coverage() 的 defaultdict 聚合输出战术覆盖分布,两者对 kill chain 阶段的解析方式完全一致,可交叉验证结果。

验证标准与可交付产出

一条 TTP 分析工作流是否合格,可按 SKILL.md 的 Validation Criteria 逐项核验:

  • ATT&CCK 数据成功经 TAXII 服务器或本地副本查询;
  • 威胁行为者已映射到具体技术,且包含 procedure 示例;
  • ATT&CK Navigator Layer JSON 合法且能正确渲染;
  • 检测差距分析识别出未监控技术;
  • 跨组比较揭示共享与独有 TTP;
  • 输出可直接用于检测工程优先级决策。

最终可交付物通常包括三类:Navigator Layer 文件[group]_navigator_layer.json,在 ATT&CK Navigator 中加载即可看到热力图,Layer 结构可参考仓库根目录 mappings/attack-navigator-layer.json 的大规模覆盖范例)、缺口分析 JSON(含 coverage 百分比、缺口明细与数据源建议)、结构化情报报告(按 assets/template.md 组织,含报告元数据、组织画像、TTP Summary、检测覆盖与分优先级缺口清单)。这五条工作流构成了"从情报到检测工程"的闭环:映射建立事实基线,缺口分析量化差距,跨组比较校准优先级,战役分析连接实时事件,威胁知情防御最终把全部结论沉淀为组织安全路线图。

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

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
docsdocs
暂无描述
Markdown
899
5.83 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.76 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
860
1.35 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
925
1.85 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.84 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
533
601
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
395
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.04 K
525