探索Duqu木马的身世之谜—Duqu和Stuxnet同源性分析
2012-05-21 13:10阅读:
探索Duqu木马的身世之谜
——Duqu和Stuxnet同源性分析
文/
安天实验室 antiviruser
sky
摘要
同源(Homology),是生物遗传学领域的重要概念,主要用于描述物种或DNA序列是否具有相同的祖先。计算机病毒分析工程师也经常通过分析病毒同源性的方法,追踪病毒制造者的身份——比如,dvldr(口令蠕虫)和lovegate(爱门蠕虫)的制造者曾被认为是同一人,安天实验室的反病毒工程师通过同源性分析方法,否定了该观点。本文以对
Duqu
木马与Stuxnet蠕虫的分析比较为例,介绍病毒同源性分析方法。
背景介绍
2012年3月20日,知名计算机反病毒厂商Symantec在其官方博客(New Duqu Sample Found in the
Wild)中宣布捕获到了最新的Duqu木马变种,样本的编译时间显示为2012年2月23日。时隔数月,曾备受关注的Duqu木马又回来了? 或者说,它从没有消失过?Duqu木马是什么?为什么会这样令人瞩目?原来,Duqu木马一直被认为是此前更为著名的Stuxnet蠕虫的第二代。那么,Stuxnet蠕虫又是什么?
Stuxnet蠕虫(亦称震网蠕虫、超级工作蠕虫),具有对工业控制系统的破坏能力,被看作是第一个以现实世界中的关键工业基础设施为目标的计算机蠕虫。有媒体形容它为“超级武器”和“潘多拉的魔盒”,因为它开启了真正意义上的网络战,也为以后的网络攻击形式和恐怖主义行为树立了“榜样”。Stuxnet蠕虫曾于2010年7月爆发,利用了微软公司的4个Windows操作系统漏洞(其中3个是当时全新的零日漏洞)和2个WinCC操作系统漏洞,2个有效的数字证书,通过一套完整的入侵和传播流程,突破工业专用局域网的物理限制,攻击用于数据采集与监控的工业控制系统。伊朗政府已经确认该国的布什尔核电站遭到Stuxnet蠕虫的攻击。
Stuxnet蠕虫具有以下特点:
1.
同时使用了多个零日漏洞。普通病毒作者一般不会这样做(即使是当年肆虐横行的冲击波蠕虫和震荡波蠕虫,也只是使用了一个微软操作系统的RPC漏洞而已)。
2.
模块结构复杂,制作周期较长。Stuxnet蠕虫包含了驱动程序、PLC(Programmable Logic
Controller,可编程逻辑控制器)指令以及命令与控制服务器(以下简称C&C服务器)通讯模块等,普通病毒作者不需要、也不愿意付出这样的开发代价。
3.
传播过程复杂而漫长。普通的病毒作者一般急于获得利益。
4.
主要用于攻击伊朗的核设施。据发表在德国新闻杂志《Der Spiegel》的一篇文章(Stuxnet Virus Opens New Era of Cyber
War)介绍,该蠕虫感染了伊朗IR-1型离心机后,将其正常运行速度由1,064 赫兹增加到1,410赫兹,并在15分钟后回到正常频率,从而造成离心机的损坏。伊朗核计划当局认为Stuxnet蠕虫破坏了约1000台离心机。伊朗也承认其核计划遭到了阻碍,并遭受了“潜在的重大损失”。普通的病毒作者,显然无法由此获得利益。
通过以上分析不难看出,Stuxnet蠕虫更可能是团队制作。知名计算机反病毒厂商Kaspersky实验室甚至认为,Stuxnet蠕虫的攻击是具有国家和政府的支持和协助的。
与Stuxnet蠕虫的复杂相比,出现于2011年的Duqu木马则显得有些单薄,它主要功能是数据的采集和回传。这些功能似乎并不比常见的QQ盗号木马具有更大的危害,可是,由于它采用了与Stuxnet蠕虫极为相似的技术手段,引起了多个计算机反病毒厂商的密切关注。假设Duqu木马与Stuxnet蠕虫具有相同出处(即两者具有同源性),那么它出现的意义是什么?是否意味着新的Stuxnet蠕虫即将问世?新的Stuxnet蠕虫的攻击目标又是哪种工业设施?该工业设施会属于哪个国家?另外,通过对Duqu木马的分析,是否可以找出Stuxnet蠕虫的作者或者制作团队?
计算机病毒分析工程师通过判断新病毒与已有病毒是否在编写上存在相互借鉴、衍生、复用等关系,找到新病毒的某些线索,最终确定两个病毒是否具有同源性。主要考查病毒样本的以下几个方面:
模块结构相似性
编译器架构相似性
关键功能实现相似性
数据结构相似性
病毒作者编码心理特点
Duqu木马与Stuxnet蠕虫的同源性分析过程
模块结构相似性分析
Duqu木马的模块结构如图1所示,由驱动模块(使用数字签名)、DLL模块和配置文件组成。其中,驱动模块为jminet7.sys,用于解密负载代码和注入系统进程;DLL模块和配置文件均以加密形式存储在磁盘上,仅在需要时解密到内存;DLL模块的资源中还包含一个负责进程注入的DLL模块,因为不需要保存在磁盘,所以没有文件名;该无名模块提供了多种注入方式,通过这些注入方式中的一种,将自身的资源节代码(用于与C&C服务器通讯)注入到目标进程。
[图1]Duqu木马模块结构图
Stuxnet蠕虫的模块结构如图2所示,由驱动模块(使用数字签名)、DLL模块和配置文件组成。驱动模块分为Rootkit功能(主要用于躲避反病毒软件)的mrxnet.sys文件和负责解密和注入的mrxcls.sys文件;DLL模块和配置文件均以加密形式存储在磁盘上,仅在需要时解密到内存;Stuxnet蠕虫的漏洞攻击代码和工控系统攻击代码均存储在主DLL模块的资源节中,在需要的时候释放出来,主DLL资源中包含了用于与C&C服务器通讯的功能。
[图2]Stuxnet蠕虫模块结构图
通过模块结构的对比,不难看出两者非常相似。两者所使用的驱动模块均采用了有效的数字签名,这一情况在一般的病毒中很少出现。至于两者模块数量的差异是由于两者功能和技术实现方式不同造成。比如,Duqu木马在Stuxnet蠕虫的基础上又加入了新的注入方法,从而增加了新的模块。
编译器架构相似性分析
Duqu木马的jminet7.sys使用Microsoft Visual C++
6.0编译。
Stuxnet蠕虫的mrxcls.sys使用Microsoft Visual C++ 7.0编译。
Duqu木马和Stuxnet蠕虫的主