网络攻击模型:从攻击树到ATT&CK,安全专家手里的“攻防地图”到底怎么用?

搞安全的人,手机里多少都存着几张攻击链、ATT&CK矩阵的截图。但说句实在话,真到做渗透测试或者应急响应的时候,这些模型到底怎么落地,很多人其实是一笔糊涂账。

我这篇文章不想堆概念,就聊点实在的——攻击树、杀伤链、ATT&CK这仨玩意儿到底是干啥的,谁适合红队,谁适合蓝队,以及你实际工作中到底该拿它们怎么办。

先从最“老派”的攻击树模型说起

攻击树这玩意儿,说白了就是一棵倒着长的树

树根是你想保护的那个目标——比如一台核心数据库服务器、一个OA系统的管理员权限、或者某个业务系统的后台入口。树干往上分叉,每个分叉就是一条可能的攻击路径。

根节点代表被攻击目标,中间那些节点就是攻击者为了达成目标要做的各种动作。比如你要拿下一个数据库,可能得先搞定一个跳板机,再提权,再横向移动……这些在攻击树里就是一层层的子节点。

这个模型起源于故障树分析,最早是工控、航空这些领域用来做安全风险评估的。后来被安全圈捡过来,用来做渗透测试的路径推演。

攻击树有个很实在的好处——能做费效分析。什么意思呢?就是你可以给每个攻击路径算一笔账:攻击者要花多少成本(时间、资源、技术门槛),成功概率有多大,收益有多高。防守方也可以反过来算:我在哪条路径上多投一块钱,能最大程度提高攻击者的成本。

而且攻击树特别适合专家头脑风暴。你把几个懂业务、懂网络、懂系统的老油条拉到一起,对着攻击树一顿讨论,往往能碰撞出很多脚本小子永远想不到的攻击路径。

但攻击树有个致命短板

树结构天生就有局限

什么意思?树只能从上往下分叉,子节点之间是独立的。但真实的网络攻击往往是这样的:

  • 攻击者会反复尝试——今天扫一遍端口没扫开,明天换个工具再扫
  • 攻击者会循环操作——拿到A权限,用A去搞B,搞完B再回来深化A的权限
  • 攻击者会利用时间窗口——比如你值班人员吃饭那半小时,或者系统补丁刚发布但还没打上的那几天

这些场景,攻击树统统没法建模。树就是树,分叉了就回不去了,循环、重试、交叉依赖这些事儿,树结构天生不擅长。

所以攻击树虽然在学术论文和风险评估报告里很常见,但真正在一线红队渗透或者蓝队应急里,很少有人对着攻击树干活——太死板了,跟不上实战节奏。

网络杀伤链:把攻击拆成七个步骤

杀伤链这个模型,最早是军方用的,用来描述一次打击行动从目标侦察到最终毁伤的完整过程。后来洛克希德·马丁公司(对,就是那个造战斗机的)的安全团队把它搬到了网络攻防领域。

杀伤链的核心思路很简单:一次网络攻击,不管多复杂,都可以拆成七个阶段

侦察→武器化→投递→利用→安装→指挥与控制→目标达成

这个框架最大的价值在于——给防守方提供了一个“在哪拦截”的思路。以前大家防守就是堆设备,防火墙、IDS、WAF堆上就完了。有了杀伤链之后,蓝队可以问自己一个问题:我在哪个阶段能最有效地打断攻击?

比如你在“投递”阶段拦得住,那就在邮件网关和Web应用防火墙上使劲。如果在“指挥与控制”阶段拦得住,那就在网络流量分析和DNS监控上砸资源。

杀伤链的局限

杀伤链的问题是太线性了。现实中的攻击者不会傻乎乎地按顺序走完七个步骤,人家会跳步、会并行、会反复横跳。

而且杀伤链是攻击者视角的模型,它告诉你攻击者在干什么,但没告诉你攻击者具体用了什么技术。这就好比你知道了小偷要从窗户进来,但你知道他是用撬棍、用玻璃刀、还是直接用砖头砸吗?不知道。

所以杀伤链后来慢慢被另一个更细的模型取代了——就是下面要说的ATT&CK。

ATT&CK:目前最接地气的攻击知识库

2013年,MITRE这帮人(对,就是维护CVE和CWE那个机构)搞了个大工程。

他们基于真实世界中发生的攻击事件,把攻击者的战术(Tactics)、技术(Techniques)和攻击过程中积累的常识(Common Knowledge)整理成了一个矩阵,起了个缩写叫ATT&CK

MITRE虽然标榜自己是“非营利性组织”,但这个话题有点敏感,咱们不展开说。只说事实:ATT&CK是目前业内公认最全面、最贴近实战的攻击行为知识库

ATT&CK到底好在哪?

如果说杀伤链把攻击分成了7个阶段,那ATT&CK把攻击拆成了14种战术,每种战术下面又有几十上百种具体技术。而且这些技术都有编号,有真实的攻击案例对照,有缓解措施建议。

举个例子:杀伤链说“侦察”,ATT&CK会告诉你侦察下面有主动扫描、被动信息收集、社会工程学侦察等具体技术,每个技术再往下细分到工具、命令、数据源。

这就好比你以前只知道“小偷会踩点”,现在你有一本手册告诉你:小偷踩点时会假装快递员、会看你家阳台晾的衣服判断住了几个人、会在楼道里藏工具……而且每个行为都有对应的监控建议。

更重要的是,ATT&CK是活的。社区不断地往里面加新的攻击技术,也不断地更新缓解措施。这就让ATT&CK成了一个动态更新的攻防知识库,而不是躺在纸面上的死模型。

实际工作中ATT&CK怎么用?

说几个真实的应用场景:

红队渗透测试——做攻击路径设计的时候,打开ATT&CK矩阵,像点菜一样从不同战术下面选技术组合,确保自己的攻击手法覆盖全面、不遗漏关键步骤。

蓝队防御评估——把自己现有的安全设备、监控策略、响应流程,对着ATT&CK矩阵一个一个对照,看看哪些攻击技术是你能发现的,哪些是盲区。这个差距分析过程,比任何合规检查都实在

威胁情报——外部情报说某个APT组织用了某个技术,你打开ATT&CK一看,就知道这个技术在你的环境里能不能用、用什么数据源能检测、有没有现成的缓解措施。

安全培训——新来的安全工程师,对着ATT&CK矩阵过一遍,基本上就能对“攻击者到底会怎么做”有个全景式的认知。

ATT&CK也不是万能的

ATT&CK最大的问题是——信息量太大了。14种战术,几百种技术,上千个子技术,新手进去就跟进了迷宫一样。

而且ATT&CK的很多技术描述偏向理论化,真要落地到具体环境里,怎么检测、怎么响应,还得靠工程师自己的经验和判断。

另外,ATT&CK对云原生、容器、微服务这些新场景的覆盖虽然在快速追赶,但相比传统企业内网,还是有差距的。

总结:这三个模型到底怎么选?

说了这么多,给你一个我的个人判断:

  • 攻击树——适合做前期风险评估和威胁建模,特别是专家讨论会上,画棵树出来,大家对着讨论,效率很高。但别指望它指导实战。
  • 杀伤链——适合做高层次的防守策略规划,帮你回答“我应该在哪个阶段投入资源”的问题。但粒度太粗,没法指导具体的技术选型。
  • ATT&CK——适合做日常的攻防对抗和差距分析,是目前最能落地、最贴近实战的模型。红队用它做攻击路径设计,蓝队用它做检测能力覆盖。

三个模型不是替代关系,而是互补关系。你完全可以在一次完整的攻防演练里,用杀伤链定大方向,用ATT&CK定具体技术,用攻击树做某个关键路径的深度推演。

最后说句掏心窝子的话:模型就是模型,它是帮你理解复杂世界的工具,不是让你死记硬背的考点。真正到了实战里,攻击者才不会管你用的是ATT&CK还是杀伤链,人家怎么好使怎么来。你能做的,就是把工具变成自己的直觉——看到一种攻击行为,脑子里自动弹出“哦,这是ATT&CK里的TA0004战术下的T1046技术,我用Sysmon的EventID 3可以抓到”——到了这个份上,模型才算真正学到了。