写在前面
笔者曾在《威胁情报专栏 | 特别策划 - 网空杀伤链》一文中提到:“网络安全攻防的本质是人与人之间的对抗或每一次入侵背后都有一个实体(人或组织)”。这不是一个新的观点。为什么要强调这个观点?高质量的APT报告通常具备3+1个要素:威胁情报分析、“作案现场”取证和样本分析+Cui bono。每一次入侵背后都有一个实体,通过现场取证分析,可提取用于跟踪入侵者的“指纹”。毫无疑问,理解“网络安全攻防的本质是人与人之间的对抗”这一观点,无论是在纵深防御体系设计、APT分析以及入侵响应等方面都能为我们开展工作提供清晰的思路。
痛苦金字塔(the Pyramid of Pain)、网络杀伤链(Cyber Kill Chain)、钻石模型(the Diamond Model of Intrusion Analysis)和ATT&CK,是网络安全领域(入侵分析和威胁情报方向上)短短50~60年历史上最知名的入侵分析框架或模型。
1. 痛苦金字塔(The Pyramid of Pain):
- 提出者:David Bianco
- 提出时间:2013年
- 核心思想:将网络攻击中的各种指标(IOC)按照对攻击者造成"痛苦"(即打击)的程度由低到高排列成金字塔形状,从下至上依次为:哈希值、IP地址、域名、网络/主机工件、工具、TTPs。越往塔尖,越难被攻击者替换,检测价值越高。
2. 网络杀伤链(Cyber Kill Chain):
- 提出者:洛克希德·马丁公司(Lockheed Martin)
- 提出时间:2011年
- 核心思想:将APT攻击分为7个阶段:侦察、武器化、投递、漏洞利用、安装、命令与控制、达成目标。防御者通过在多个环节检测和响应,形成一个"杀伤链",打断攻击。
3. 钻石模型(The Diamond Model of Intrusion Analysis):
- 提出者:Sergio Caltagirone, Andrew Pendergast, Christopher Betz
- 提出时间:2013年
- 核心思想:将所有入侵分析元素抽象为钻石的四个顶点:对手(Adversary)、能力(Capability)、基础设施(Infrastructure)和受害者(Victim)。分析师从任一顶点展开分析,不断发现新线索,深入了解整个攻击事件。
4. ATT&CK矩阵:
- 提出者:MITRE公司
- 提出时间:2013年,持续更新中
- 核心思想:将已知APT组织的TTPs收录为一个攻击技战术、技术、程序或过程知识库,按战术目的分类整理成矩阵,旨在帮助威胁猎手和防御者全面了解对手,评估自己的防御力,指导检测和响应行动。
George E.P. Box说过:“所有模型都是错误的,少数模型是有用的。”每一个模型都是一个有助于理解问题的抽象。另一方面,存在一个非常自然的现象,每一个模型都是还原主义者,它容易丢掉重要的细节。因此,能否将所有数据适配到特定模型中并不重要,但使用模型作为理解和改进思维方式的方法始终是有价值的。
对以上4个模型的关键理解在于:
1)以结构化的方式对入侵者的行为进行建模;
2)以整体的视角理解入侵者的行为。
痛苦金字塔的起源
十多年前,有一个刚进入大公司的年轻安全工程师。公司新组建了一个全球安全团队,他们要对付一群老对手。凭借业内同行的情报共享,他们对敌人有一定了解。其中有一伙格外难缠的家伙,他们有个通过C&C服务器控制受害主机的木马。安全团队利用金字塔底层的IoC指标开始对付他们,不断积累经验,添加检测规则。攻击者见状就各种变招,HTTP改成FTP,换各种花样。
可攻击者没想到,当他们还在金字塔底层缠斗时,安全团队已经积累了他们在内网活动的大量知识,在工具层、战术层布下天罗地网。终于有一天,内外告警同时响起,安全团队立即切断了攻击者的C&C信道,把这个大团伙赶出了网络,永远不再回来。
几年后,安全专家所在公司要开会,讨论新的威胁情报系统。但专家发现大家对情报的理解有偏差。他绞尽脑汁,想找个恰当的比喻。一天晚上,灵光乍现,金字塔!对,就是金字塔!不同的IoC处在金字塔的不同层级,越靠上对付攻击者越有效。第二天,专家把"痛苦金字塔"的图拿到会上一亮相,大家立马恍然大悟。
原来,这个看似简单的理论,凝结了专家多年与黑客斗智斗勇的智慧。是在无数次胜利和失败中,一点点领悟出来的。古人云:"台上一分钟,台下十年功",说的就是这位专家吧。这个金字塔,见证了网络安全的进化,也塑造了一代又一代安全人的思想。它的背后,是无数默默无闻的安全英雄,是他们用汗水和智慧铸就了我们今天的网络安全。
痛苦金字塔与入侵分析
基本上你可以把这个金字塔看作一个参考,了解在防御中可能会用到哪些威胁情报指标,以及我认为这些指标的相对价值。
我判断这些指标的价值,不是看它们对我们有多有用,而是看它们给攻击者造成了多少麻烦。攻击者在所有攻击行为中都会留下一些无法避免的痕迹,我们的工作就是找到并及时发现这些痕迹,迅速做出响应,中断他们的活动,最好能在攻击链完成前阻止。如果我们能可靠地做到这一点,就等于让他们的那个指标失效了。他们不得不找新的东西来替代被我们发现的指标。这就是"痛苦金字塔"的由来。有些指标并不难替换,比如金字塔最底层的哈希值。我把它们标注为"微不足道",因为文件中哪怕只改一个比特,哈希值就会完全不同。这里说的是一般的静态哈希,不包括模糊哈希。有时候哈希值改变甚至不是有意为之,比如传输中的一个错误就翻转了一个比特,但程序还能正常运行。
所以,哈希值作为检测手段其实很糟糕,除了少数特殊情况。之所以放在金字塔底部,是因为攻击者并不在乎你发现了他们的哈希值。他们会直接换个新的。域名和IP地址是下面两层,攻击者要备用一大堆,比如一万个IP地址,你发现一个他就换一个,很容易。域名差不多,就是可能要多花点功夫注册或者从合法持有者那里弄到手,但对有些和本国域名注册商关系密切的攻击者来说也不难。
再往上一层是工具特征,我叫它们"网络/主机遗留物"。比如攻击者如何实现持久化,有没有特定的注册表键或文件,C&C信道的构造方式,发送的user agent,URL模式(即便是随机的,也可能有规律)等等。如果你能发现这些特征,攻击者为了防止被再次发现,就得修改代码,哪怕只是改个注册表键名或URL构造方式,也要重新编译、测试、部署,多少有点麻烦。你积累了足够经验后,就能开发出鲁棒性更强的检测,Paul Nelson今天上午讲过,用Yara规则之类的,不管攻击者小改动多少次,都能可靠地发现。这就等于你告诉攻击者,这个工具从此别想用了。
他们要么从头开发新工具,要么设法弄到新工具,总之都得重新训练熟练掌握,这就很有挑战性了。如果你逼得他们非改不可,那就更难了。
再往上是所谓的TTPs,战术、技术和规程。换成"行为"可能更贴切,就是攻击者惯用的手法,他们在你的网络或系统上活动的特点。不管用什么工具或留下什么痕迹,你都能在高层次上察觉他们的行为。等下我会举几个例子。如果你连攻击者的训练有素的习惯都能攻破,逼得他们不得不改变,那就太不容易了。我喜欢说这就是把他们逼到金字塔尖,非常不舒服,要么改变习惯,要么夹着尾巴滚蛋。
所以痛苦金字塔的核心思想是,把人力资源优先用在性价比最高的地方,让系统对特定攻击者的抵御能力最强。
往期精选
围观
热文
热文