从Duqu病毒与Stuxnet蠕虫的同源性看工业控制系统安全

时间 :  2010年10月18日  来源:  安天安全研究与应急处理中心

1.引言


2010年6月,首个针对工业控制系统的计算机蠕虫“震网”(Stuxnet)被发现,该蠕虫利用了西门子公司控制系统的漏洞,感染了伊朗纳坦兹的核设施。从此以后,工业控制系统的安全问题引起了全球计算机信息安全公司的密切关注,并逐渐进入了公众视野。2011年10月,被国内外多数反病毒公司认为是Stuxnet第二版的Duqu病毒被捕获。经分析,Duqu病毒存在向指定服务器秘密发送被感染主机数的行为,且具备接受远程控制的能力,所以被定性为用于窃密的后门程序。由于现有Duqu病毒样本对外发送数据及接受控制的服务器均已失效,其真实目的无法准确判断,目前普遍认为该病毒可能用于情报搜集,并为下一次的攻击做准备。

Duqu病毒通过在特制文档中嵌入精心构造的TrueType字体文件,达到了利用微软公司Windows系统的0day漏洞MS11 -087(CVE-2011-3402,微软公司已于2011年12月发布该漏洞补丁)的目的。一旦某计算机用户接收到该特制文档并打开时,存放于文档中的一段恶意代码就会获得执行机会,从而加载Duqu病毒的各个组件。在此过程中,先后有三个文件被释放,包括:一个未加密的驱动程序,一个被加密的DLL模块(包含了主要功能)和一个被加密的配置文件。Duqu病毒释放的驱动程序中包含了合法的数字签名(可能是事先窃取的),可以绕过多数安全产品的检测。被加密的DLL模块将完全在内存中加载执行,不在磁盘上留有痕迹,这也在一定程度上躲避了安全产品的检测机制。当各个模块均被加载执行后,Duqu病毒便完成了整个部署过程,此时会通过键盘记录等手段窃取被感染主机的信息,并发送到由攻击者所控制的位于印度、比利时、越南及荷兰等地的服务器,这些服务器则作为跳板,再次将信息发送到其它地方,这使得数据的最终去向难以追踪。

虽然并未发现Duqu病毒有针对工业控制系统的破坏能力,但它与Stuxnet蠕虫具有诸多相似之处,而后者又确曾感染核设施相关的工控系统,这使我们不得不对Duqu病毒保持高度警惕。因此,我们对于Duqu病毒和Stuxnet蠕虫从传播方式及主要技术手段等多个角度进行了比较与分析。

2.传播方式


Duqu病毒与Stuxnet蠕虫在传播时都利用了Windows系统的0day漏洞,但传播过程明显不同。前者为定向传播,攻击者将包含漏洞利用代码的特制文档作为附件,以邮件的形式发送给攻击目标;后者具有自我复制、传播能力,利用多个Windows漏洞(包括MS10-046、MS10-061、MS08-067),通过闪存介质(如U盘)、网络共享等渠道传播,从而感染更多的主机(图1、2)。这说明两者的目标不同:Duqu病毒目的明确,用于窃取确定攻击目标的数据,所以不需要具备自我复制、传播能力;Stuxnet蠕虫则需要通过多种传播方式感染尽可能多的主机,并借助闪存介质载体渗透到互联网物理隔绝的内部网络,最终到达攻击目标——安全厂商称此方式为“摆渡攻击”。

图1 Duqu病毒传播方式

图2 Stuxnet蠕虫传播方式

3.隐藏手段


由于安全产品对于具有数字签名的程序多数采取放行的策略,Duqu病毒与Stuxnet蠕虫的驱动程序都使用了数字签名(图3)。对于功能模块和配置文件,两者都采用了加密存放方式,从而躲避了部分安全产品的启发式检测技术。对于功能模块的加载,两者都采用了内存加载、执行的方式,从而躲避了不具备内存实时检测能力的安全产品。对于不得不产生的临时文件,两者也都通过Hook技术进行了隐藏。此外,两者都对自身的生存时间加以限制,超过生存时限即自我删除或自动退出,这使得具备了检测能力的安全产品也很可能无法在受感染主机上检测到它们。

图3 使用数字签名的驱动程序

4.功能实现


Duqu病毒与Stuxnet蠕虫都包括了采用异或(XOR)方式的解密方法,而且密钥相同(0xAE1979DD),在采用4字节长度密钥的情况下,这种可能性只有1/4.398046511×10¹²。两者也都使用了RPC服务形式供其它模块使用,而这使用方法在恶意代码样本中是不常见的。两者的驱动程序向系统注入的方式一致(利用 PsSetLoadImageNotifyRoutine函数,如图4),这使用方法在恶意代码样本中也是鲜见的。

5.编码特点


通过对Duqu病毒与Stuxnet蠕虫关键代码结构、密钥使用方法和代码逻辑的比较,我们发现了大量相似的代码片断(图4、5、6),这说明作者具有相近的编码风格,或者两者基于相同的代码框架开发。

图4 Duqu病毒与Stuxnet蠕虫的代码片断比较

图5 Duqu病毒与Stuxnet蠕虫使用相同密钥

图6 Duqu病毒与Stuxnet蠕虫代码逻辑

表1 Duqu病毒与Stuxnet蠕虫主要异同点

内容

Duqu病毒

Stuxnet蠕虫

利用0day漏洞传播

利用Hook技术隐藏文件

驱动程序使用数字签名

DLL模块加密

配置文件加密

使用异或加密

异或加密密钥

0xAE1979DD

0xAE1979DD

实现RPC服务功能

与命令控制服务器通讯

生存时间限制

自我复制、传播

影响工控系统模块

通过上述比较,我们认为Duqu病毒与Stuxnet蠕虫很可能具有同源性。无论是Duqu病毒还是Stuxnet蠕虫,它们都拥有常人不易获取的0day漏洞资源和经验丰富的躲避安全产品检测的能力,同时也具有明确的目的性。这说明攻击者所在组织可能具有国家背景,其攻击能力已经达到现有安全产品防范能力无法与之抗衡的程度。而且,该组织可以在基础上轻易地对全球任何工业控制系统予以打击,从而对工业控制系统形成巨大的安全威胁。