简介

2010年6月,“游戏改变者”STUXNET被发现。由于这次行动的目标敏感、构思巧妙、技术复杂、行动隐蔽、发现困难,自然引起了广大网络安全研究人员的极大兴趣。尽管事情已经过去了10年,但对它的分析研究一直在延续,在BLACKHAT 2020大会上,就有一篇与它相关的演讲:“Stuxnet利用打印机漏洞10年后:打印仍是通往天堂的阶梯“。

就在这篇演讲发表后几个月,2020年12月,“美国历史上最严重黑客事件”SUNBURST爆出。同样目标敏感,同样构思巧妙,同样技术复杂,同样行动隐蔽,同样发现困难,同样激起了安全研究人员的极大兴趣。

巧合的是,STUXNET的发起者被认为是美国人,参与调查的包括了根基于俄罗斯的顶级安全公司Kaspersky;SUNBURST的发起者被认为是俄罗斯人,对它开展调查的是根基于美国的顶级安全公司FireEye、Microsoft、Crowdstrike以及美国网络空间司令部、CISA、FBI等美政府机构。

更巧的是,在攻击路径的选择上,针对防范极其严密的国家关键设施,STUXNET和SUNBURST不约而同地都采用了 “借道” 第三方的迂回攻击方式――前者“借道“于与伊朗核计划有关联的5家机构,后者“借道”于供应链上游厂商SolarWinds。

就是它们的暴露,也有一些共性。它们之所以被发现,不是目标中安装有各种先进的安防设备,而是攻击过程中出现了大的动静,引起了被攻击者的注意。STUXNET是因为其LNK漏洞利用工具在实现上有些缺陷,造成被攻击的目标机器反复重启,因而被发现;SUNBURST是因为攻击者在FireEye和Microsoft网络内部进行了大量操作,窃取了它们的大量数据,动作实在太大。

时间上相差10年、由不同组织发起的两次重大APT行动,进攻方投入的是全球最精锐的攻击力量,防御方动用的是全球最顶尖的安防团队,为我们展现了两场精彩的网络攻防对抗战。将这两次行动放在一起做对比分析,或许有助于我们更好地理解和认识网络安全领域的一些深层次问题。

本文是STUXNET、SUNBURST对比分析的第一部分,主要从攻击技战术方面对两次行动作一个对比分析。

行动规划

STUXNET SUNBURST
意图 破坏伊朗核设施物理设备

获取资源
目标

运行WINCC和PCS7的特定目标 不明确

方案设计

行动前精心策划

行动过程中策划?

STUXNET行动和SUNBURST行动显然都经过了精心谋划。

STUXNET行动准备十分充分,执行十分坚决,行动十分果断。这可以从以下4个方面得到反映:

第一,攻击代码专为这次行动定制,未在其它APT事件中发现与之相近的代码片段。

第二,攻击代码尽管有很多项功能,也用到了很多项技术,但其中没有一项是多余的。

第三, 一次行动就投入了5个漏洞,且其中4个是0day漏,说明志在必得。设想一下,那个不是0day的MS08-067漏洞,如果在开发攻击工具时也是0day的话,STUXNET 的方案设计最迟在2008年就已经完成。

第四,STUXNET在攻击过程中,感染主机近10万台,其中有其它重要利用价值的目标肯定很多。但无论其有多少利用价值,只要与最终目标无关,STUXNET行动人员的选择是一概无视。

SUNBURST行动也经过了精心准备:其一,其后门也是专为这一次行动定制的;其二,在正式行动前做了一次在线方案验证。

但相比STUXNET,SUNBURST行动的准备工作还是要逊色许多。这主要表现在:

第一,其后门虽然也是为开展这次行动定制的,但其中有些代码片段明显是从其它APT的代码中拷贝过来的。

第二,其目标不是很明确,操作比较随意。根据已公布的调查报告,短短数月内,在SUNBURST的后续行动中,既针对了政府机构,也针对了高科技公司,既读取了邮件,也窃走了大量程序代码,动作之大以至于被人怀疑为“行动投入了上千工程师”。这种大范围、大规模、大流量的活动无疑增加了其被暴露的几率。试想一下,如果SUNBURST不对FireEye和Microsoft采取进一步行动的话,是否就不会被发现呢?

或许SUNBURST行动只是一种临时起意,即因为一个偶然的机会,攻击者成功进入了SolarWinds的开发平台,研究一番后发现可以发起“供应链攻击”,这才开始着手准备。

攻击路径

STUXNET

SUNBURST

攻击路径

“借道”关联机构

“借道”供应链上游厂商SolarWinds

传播方式

“蠕虫”

SolarWinds软件升级

最终目标联网否

攻陷目标掌控

困难

容易

攻陷目标利用

控制

扩张

在攻击路径的选择上,STUXNET和SUNBURST不约而同地都采用了“借道”第三方的迂回攻击方式,并取得了成功。这表明,即使是防范极其严密的关键设施,也不能保证一定就不会被攻破,这也算是对“零信任”的一个很好注解吧。

STUXNET和SUNBURST的“借道攻击”策略,面临一个相同问题:针对哪个目标开展攻击,不是攻击者能够决定的。这样在目标被攻下后,就有一个目标掌控和目标利用的问题。

STUXNET采用“蠕虫”作为传播方式,而且感染对象有些是不联网的,不太容易控制。而一旦控制不好,就很容易造成如1986年C-Brain病毒和1988年Morris蠕虫那样的大范围传播。为了防止出现这种局面,STUXNET采取了多种控制手段,如限定攻击发起时间必须在某个时间点以前、通过C2对联网的攻陷目标实施控制、通过P2P通信对内网攻陷目标进行控制,等等。由于这些措施的采取,STUXNET的传播过程得到了很好控制,这一点可以通过下面的STUXNET 攻陷组织分布图看出。

虽然SUNBURST不存在扩散范围失控的问题,但从风险控制的角度,SUNBURST还是应该对攻陷目标的利用进行适当控制,但SUNBURST行动人员并没有这样做。相反,在通过C2取得对失陷目标的控制权后,其又利用其中的多个目标进行了扩张。

攻击技术

STUXNET

SUNBURST

传播方式

网络扩散

点对点通信

SolarWinds升级

通过硬编码服务器口令感染WINCC机器

网络共享

MS10-061漏洞利用

MS08-067漏洞利用

USB扩散

MS10-046漏洞利用

AutoRun.inf

存在形式

独立文件

嵌入SolarWinds程序

安装权限获取

MS10-073漏洞利用

Windows计划任务漏洞利用

不需要

启动

驱动程序

SolarWinds软件

躲避内容检测

利用窃取的数字证书进行签名

加密

嵌入SolarWinds程序,与正常代码一道被签署

编码处理

躲避行为检测

Rootkit

根据防护软件类型注入不同进程

根据防护软件类型采取不同处理方式

从技术上讲,STUXNET明显要高出很多。且不论4个0days漏洞的挖掘有多困难,单就攻击程序开发而言,“10人团队至少需要2~3年时间才能完成”并非虚言。

SUNBURST用到的技术不多,也不是特别高深,不是说SUNBURST的技术实力不够,是因为它不需要。因为完美地“融入”了SolarWinds系统,攻击中需要的什么传播问题、什么权限问题、什么启动问题、什么证书问题,SolarWinds系统都提供了,不需要再额外加以考虑。

利用系统升级机制实施攻击,并不是SUNBURST的首创。比如,怀疑与STUXNET有关联的DUQU,就用过微软的升级机制。但以往的攻击行动,升级机制仅限于传播攻击代码,而传播过去的需要驻留在攻陷主机上的后门,则一般是要从传播所依赖的系统中独立出来的。像SUNBURST这样,将需要驻留在攻陷目标上的后门,也完美地嵌入到SolarWinds系统中,堪称经典。

C2

STUXNET

SUNBURST

域名形式

静态域名

DGA

通信协议

HTTP

HTTP

SolarWinds专用协议OIP

STUXNET和SUNBURST的C2通信都用到了HTTP协议。

STUXNET使用HTTP还能理解,毕竟10年前的网络通信还是HTTP为主,用它能更好地与正常通信匹配。

SUNBURST也用HTTP就有点搞不懂了,这不是给NTA提供机会吗?

技术储备

技术储备,SUNBURST与STUXNET明显不在一个档次上。

STUXNET和SUNBURST的攻击代码都是定制的,但在细微处还是能够发现区别的。

STUXNET的攻击代码是真正的定制,它只用于那次行动,没有听说其它APT中再有相近代码片段出现。即使有人怀疑DUQU、FLAME、GAUSS与STUXNET有关联,那也是因为它们用到了相同的0day漏洞,而他们攻击代码的架构、功能、甚至编程语言则完全不同,很难从这方面找出它们间的关系。

SUNBURST后门也是定制的,但有些代码模块明显复制自其它APT,其中有些是早已被公开披露的。这是不是美方一口咬定攻击者是谁的真正原因呢?

另外,SUNBURST在后续行动中还使用了Cobalt Strike。

以上事实说明,SUNBURST组织的技术开发能力,远不能满足其攻击需求,STUXNET则不存在这一问题。

本文为CNTIC原创整理

声明:本文来自国家网络威胁情报共享开放平台,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。