4、攻击路径分析:攻击树(Attack Tree)的绘制、攻击路径的量化评估、攻击可行性分析

攻击路径分析,说白了就是回答一个问题:攻击者到底能不能打进来?

我在做TARA项目时,见过不少团队把威胁场景写得天花乱坠,但一到攻击路径就卡壳了。要么画得过于抽象,要么路径多到没法看。其实,攻击树就是帮你把「攻击者怎么一步步达成目标」这件事,变成一张可视化的逻辑图。

4.1 攻击树的核心逻辑

攻击树是一种树形结构。根节点是攻击者的最终目标,子节点是达成目标需要满足的条件。节点之间有两种关系:

  • AND关系:所有子条件必须同时满足,攻击才能成功。
  • OR关系:任意一个子条件满足,攻击就能成功。

举个例子。攻击者的目标是「远程控制车辆制动系统」。那子节点可能是:

  • OR:通过T-Box远程注入 / 通过蓝牙近距离注入
  • AND(如果走T-Box):突破防火墙 + 获取CAN总线访问权限 + 发送制动指令

嗯,这里要注意:攻击树不是越细越好。我见过有人把「打开车门」拆成「左手拉把手」和「右手拉把手」,这就过度设计了。攻击树的粒度,应该跟你的资产颗粒度对齐。

核心原则:攻击树的叶子节点,必须是可量化、可测试的攻击动作。比如「发送特定CAN ID报文」比「利用漏洞」更具体。

4.2 攻击树的绘制方法

我个人习惯用自顶向下的方式画。先定根目标,再逐层分解。工具方面,Visio、draw.io、甚至纸笔都行。但关键不是工具,是逻辑。

画攻击树时,我建议你遵循这四步:

  1. 定义根节点:攻击者的最终目标是什么?比如「窃取用户隐私数据」。
  2. 识别攻击入口:攻击者从哪里进来?外部接口、无线通信、物理端口?
  3. 分解攻击步骤:每一步需要什么条件?需要什么权限?
  4. 标注AND/OR关系:明确节点间的逻辑关系。

我曾经在一个项目中,团队画了整整三天的攻击树,结果发现根节点定义错了——他们把「车辆被盗」当成了目标,但实际应该分析的是「攻击者如何绕过防盗系统」。所以,根节点一定要跟威胁场景严格对应。

避坑指南:我曾经在画攻击树时,把「物理访问」和「远程访问」混在一个分支里,导致后续量化评估完全没法做。后来我强制要求:不同攻击向量必须分叉画,物理路径和网络路径不要混在一起。

4.3 攻击路径的量化评估

光画树不够,你得知道每条路径到底有多难。量化评估,就是给每条攻击路径打分。

常用的量化维度包括:

维度 说明 常见评分(1-5)
攻击成本 攻击者需要投入多少资源(金钱、设备、人力) 1=极低(免费工具),5=极高(专用设备+团队)
攻击难度 攻击者需要多高的技术水平 1=脚本小子,5=国家级APT
攻击时间 从开始到成功需要多久 1=几分钟,5=数月
检测概率 攻击过程中被安全机制发现的概率 1=几乎不会被发现,5=极易被发现

你想想看,如果一条路径的攻击成本是1,难度是1,时间也是1,那基本就是「裸奔」状态。反之,如果成本5、难度5、时间5,那攻击者大概率会放弃。

我习惯用加权求和的方式算总分。比如:

攻击可行性 = 攻击成本 × 0.3 + 攻击难度 × 0.4 + 攻击时间 × 0.2 + (6 - 检测概率) × 0.1

注意,检测概率是反向指标——检测概率越高,攻击可行性越低,所以用6减去它。

重要提醒:量化评估不是数学考试。分数只是参考,最终判断还是要结合业务场景。我曾经见过一个项目,某条路径量化得分很低,但攻击者就是通过那条路径攻进来了——因为攻击者根本不在乎成本。

4.4 攻击可行性分析

量化评估之后,就是判断这条攻击到底能不能发生。攻击可行性分析,说白了就是回答三个问题:

  • 攻击者有没有动机?
  • 攻击者有没有能力?
  • 攻击者有没有机会?

这三个问题缺一不可。举个例子,攻击者有能力也有机会,但没动机——比如攻击者是个白帽子,他根本不想搞破坏。那这条路径的可行性就是0。

我建议用攻击可行性矩阵来做最终判断:

动机 能力 机会 可行性结论
高 高 高 极高风险,必须处理
高 高 低 中等风险,可监控
高 低 高 低风险,攻击者可能放弃
低 高 高 低风险,缺乏动机

为什么会这样?因为攻击者也是理性的。如果动机不足,哪怕能力再强,他也不会动手。反过来,动机再强,能力不够也是白搭。

实战经验:我在做某个OEM的TARA时,发现一条攻击路径的量化得分很高,但攻击可行性分析显示「动机低」。后来跟业务方一聊,发现那个功能只在实验室环境下使用,量产车根本不会部署。所以,攻击可行性分析一定要结合业务上下文,不能只看数字。

4.5 攻击树与攻击路径的SVG结构图

下面这张图展示了攻击树的核心结构、量化评估流程以及可行性分析的逻辑关系。你可以把它当作本章的知识骨架。

攻击路径分析知识结构图 攻击路径分析:攻击树 → 量化评估 → 可行性分析 攻击树(根节点) OR:远程攻击路径 OR:物理攻击路径 OR:无线攻击路径 AND:突破防火墙 AND:获取CAN访问 AND:发送制动指令 量化评估:攻击成本 + 攻击难度 + 攻击时间 + 检测概率 → 加权总分 攻击可行性分析:动机 × 能力 × 机会 → 可行性结论 输出:高风险路径清单 + 安全需求 说明:攻击树提供结构,量化评估提供分数,可行性分析提供决策依据,三者缺一不可

4.6 实战中的常见误区

最后,我总结几个我在项目中踩过的坑,希望能帮你少走弯路。

  • 误区一:攻击树画得太完美。现实中攻击路径往往有交叉,攻击树不可能覆盖所有可能性。别追求完美,够用就行。
  • 误区二:量化评估只看总分。总分低不代表安全。如果某个维度(比如攻击成本)是1,其他维度再高,攻击者也可能赌一把。
  • 误区三:忽略攻击者的学习曲线。攻击难度不是一成不变的。今天难,明天可能就简单了。所以攻击可行性分析要定期更新。

我的习惯:每次做完攻击路径分析,我都会问自己一个问题——「如果我是攻击者,我会选哪条路?」然后顺着那条路再走一遍,往往能发现遗漏的细节。

攻击路径分析不是一次性的工作。随着系统迭代、新漏洞曝光、攻击技术演进,你的攻击树和量化评估都需要跟着更新。保持动态,才能让TARA真正落地。