独家连载 | 零日漏洞:震网病毒全揭秘(52)
作者: 日期:2015年11月23日 阅:3,543

640.webp

Showtime热播电视剧《嗜血法医》中,德克斯特既是法医专家,又是地下杀手,但他只杀罪犯。毒区中的漏洞利用程序,竟然在向他致敬。然而,天网恢恢,疏而不漏。胆敢攻击CA,让他们最终吞下了暴露的苦果……

第十四章 震网的子孙(接上)

起初,谁也不知道毒区是怎样实现感染的。震网利用了一个.LNK零日漏洞,将U盘上的恶意文件植入目标计算机。但CrySyS实验室在巴图斯公司的染毒计算机上,没有发现病毒注入器,也没有发现零日漏洞。钱哥也意识到了这个问题。在赛门铁克发布毒区消息后,他请求本恰特再次对匈牙利目标公司的系统进行排查,看在8月11日毒区被发现前后,还有哪些可疑迹象。之后,钱哥得知,当时,NetLock公司曾收到一封附有Word附件的电邮。附件大小为700k,比公司平时所收邮件中的附件大得多。这引起了他们的高度重视。果然,当CrySyS实验室在测试机上打开这封邮件的附件后,毒区的恶意文件悄悄的跟了进来。

考虑到至今仍未发现实施感染的代码,CrySyS实验室怀疑其必定利用了零日漏洞。尔后,本恰特把这封带附件的邮件交给了钱哥。赛门铁克团队发现,它确实利用了Windows字体解析器(font-parsing engine)中的一个缓冲区溢出零日漏洞。字体解析器的功能是将某种字体在屏幕上显示出来。当Word文档中出现某种字体对应的代码时,解析器就会查阅对应文件,以确定字体的显示形态。但在毒区这里,当解析器要读取字体代码时,却会被攻击者利用缓冲区溢出漏洞将其劫持至他们的漏洞利用程序上。

一位研究员对这个漏洞利用程序的评价是“干得漂亮!”因为,一般情况下,利用缓冲区溢出漏洞的攻击者只能获得用户级访问权限,要想获得足以顺利加载恶意代码的系统级访问权限,必须要同时找到并利用第二个漏洞。然而,毒区中的漏洞利用程序一步到位,突破了防护体系,进入系统内核,完成了“安装并运行恶意代码”的目标。要知道,能在内核级利用的缓冲区溢出漏洞极其稀有,在利用这种漏洞的同时又不引发系统崩溃则更加困难。但毒区的设计者却做的非常完美。毒区中漏洞利用程序的复杂度,要比震网中的.LNK漏洞利用程序高出几个数量级。2010年7月震网代码刚一曝光,就有网络犯罪分子学会了.LNK漏洞利用程序的运用技巧;而要想用好毒区中的漏洞利用程序,恐怕至少得花上几个月。

或许是想要戏弄一下受害者,除了这个漏洞利用程序之外,攻击者还在代码中放置了一些“彩蛋”。他们将用于执行攻击的伪造字体命名为“德克斯特正体”,并专门为它标注了版权信息:“Copyright © 2003 文娱时间(Showtime)公司.版权所有. 德克斯特正体.”

显然,他们引用的是当年在文娱时间电视网上热播的电视剧《嗜血法医》(Dextor)。奇怪的是,这部剧的上映日期是2006年10月1日,版权日期却是2003年。谁也说不清,攻击者这样做,到底是有什么寓意,还仅仅是开玩笑而已。不过,对《嗜血法医》的引用似乎在暗示,毒区与震网之间有某种联系。这部剧的主角德克斯特·摩根(Dexter Morgan)既是一名法医专家,又是一名地下杀手。但是,他只杀十恶不赦的罪犯。这让德克斯特成了“有道德的杀手”的代名词。在他看来,他作恶的目的,是为了寻求更大的善。实际上,美国和以色列对伊朗发动网络攻击、袭击伊朗核科学家的行为,恰恰反映了与之相近的价值观——这是为了更大的善而必须使用的手段。

640.webp (2)

字体名称和版权日期,只是给研究员们提供了一些谈资。真正值得关注的,是病毒注入器的编译日期——2008年2月21日。这个日期,为回答“震网已经存在了多久”这一问题提供了线索。在首个注入器发现不久之后,卡巴斯基就在苏丹的一台计算机上发现了第二个注入器,它的编译时间比第一个还要早。

苏丹与伊朗之间,有着密切的军事关系。在2004到2006年间,苏丹获得了伊朗提供的价值1200万美元的武器援助,同时,苏丹是伊朗核计划的坚定支持者。2006年,伊朗曾公开宣称,将与苏丹分享核领域的研究成果。此外,苏丹还是联合国制裁的对象。毒区在苏丹的目标是一家贸易服务公司,感染时间为2011年4月,比发生在匈牙利的感染早4个月。它利用了与匈牙利同样的德克斯特漏洞,也是通过钓鱼邮件的手段实施感染。这封钓鱼邮件发自韩国,发件人是一位名叫杰森(B.Jason)的销售经理。据估计,这台发送邮件的计算机也遭到了入侵。邮件内容为:“亲爱的先生,我对贵公司网站上的一些细节非常感兴趣,希望能和贵公司开展商务合作。附件中是我方的需求清单,请您详查。”附件中有一系列的调查问题,还有一个画有新芽吐绿形象的绿色地球。一旦受害者打开附件,德克斯特漏洞利用程序就会立即起效,并将其中的恶意文件释放到计算机上。

其中,用于释放毒区文件的注入器,编译时间为2007年8月。这进一步确认,毒区在被匈牙利人发现之前,确已存在多年。不过,这并不是毒区出现早于震网的孤证。研究人员还发现,毒区中的情报收集器文件也早在多年前就出现了。说来偶然,攻击者在代码中的一个错误,暴露了这一点。

当毒区的自毁机制在感染36天后被触发时,它将擦除染毒计算机上的所有痕迹。这样,受害者就再也无法知道自己曾遭受攻击了。但卡巴斯基研究团队发现,当毒区执行删除操作时,不小心落下了用于存储盗取数据的临时文件。就这样,卡巴斯基从伊朗目标的镜像文件中发现,其中一个临时文件的创建日期是2008年11月28日。

一直以来,卡巴斯基和赛门铁克总在怀疑,攻击者在使用震网攻击伊朗离心机之前,事先通过间谍活动获取了西门子PLC的配置数据等关键情报。之前他们怀疑伊朗方面有内奸,毒区出现后,他们转而相信,通过使用类似间谍工具获情的可能性更大。

从毒区攻击匈牙利数字证书认证机构的情况来看,攻击者之前使用的瑞昱和智微公司签名密钥和数字证书,很可能也是用毒区盗取的。

如果说,毒区早在2007年或更早就开始实施感染却一直未被发现,那么,为什么到了2011年,它突然被匈牙利人发现了?拉伊乌思考再三,得出了他的结论:毒区之所以被匈牙利人发现,其原因必定是攻击者傲慢自大的心态,让他们选择了一个错误的目标。多年来,毒区的攻击者屡屡得手、信心爆棚,认为根本没人能逮到他们。他们可能会想,去年震网的暴露完全是个意外,因为感染的计算机太多了。但是,毒区的目标均经过精心挑选、受到严格管控,暴露的可能性极小。但是,在匈牙利,他们着实选错了攻击对象。这家匈牙利CA对网络安全问题的敏感性,比之前遭攻击的贸易公司和设备制造商可高多了。所以,毒区攻击者在匈牙利遭遇滑铁卢,虽属意料之外,也在情理之中。

尽管震网和毒区使用了很多相同的代码和技术,拉伊乌团队仍然做出了“他们是两个团队基于共同平台分别开发”的判断。由于毒区和震网中都有很多以“~D”打头的文件,他们将这个开发平台命名为“~D”平台。

实际上,卡巴斯基还发现,除了震网和毒区之外,还有一系列恶意代码也出自同一平台。他们发现,至少有6种驱动文件具有相同特征,都可以归入“~D”家族成员之列。其中,2个来自震网,1个来自毒区,另外3个“幽灵驱动”来自与震网和毒区之外的其他文件。这让人很难判断,它们究竟是用来配合震网或毒区的,还是另外用于其他攻击的。不过,这3个驱动所使用的算法和密钥,都与震网和毒区的驱动文件完全相同或高度近似,所以可以断定,它们定与“~D”团队有关。

其中,1号“幽灵驱动”是斯洛伐克反病毒公司ESET在2010年7月发现的,上面有智微公司的数字签名。尽管它不是在感染震网的计算机上被发现的,但由于它的曝光时间只比震网晚几天,所有人都猜测它与震网有关。这个驱动简直就是震网驱动和毒区驱动的混合体,从代码上看与震网驱动几无二致,从使用的函数和技术上看又像极了毒区驱动。不过,与震网驱动中使用的4重循环密码(four-round cipher)相比,它使用了更为复杂的7重循环密码。因此,拉伊乌和格斯特夫怀疑,它要么是震网的变种,要么是震网的“搭档”。

2号“幽灵驱动”是在某人发现并将其提交到VirusTotal后,而曝光的。它的编译日期是2008年1月20日。它也使用了7重循环密码,说明它和1号是用来实施同一场攻击的。据推测,它们可能来自震网的另一个版本,也可能是与其他攻击配合使用的“搭档”。

3号驱动也是被人提交到VirusTotal后曝光的。它来自一个中国IP,发现日期是2011年5月17日,比毒区在匈牙利被发现还早几个月。它使用了与震网驱动相同的4重循环密码和相同的加密密钥,编译日期和盗用的数字签名也与震网驱动一致,只是认证日期稍有不同——它的认证日期是2010年3月18日,而震网驱动的认证日期是2010年1月25日。3月18日距离震网2010年4月版本上线仅相隔数周,但是不知出于何种原因,攻击者却没在4月的版本中使用3号驱动。实际上,攻击方在震网2010年4月版本中沿用了2009年6月版本中的驱动。这表明,3号驱动或许另有它用。

在格斯特夫和拉伊乌心中,有几个问题不断闪现:这几个幽灵驱动到底是干什么用的?谁是它们的受害者?是否还有新的证据,能证明在2009年6月之前或2010年4月之后,还有震网的其他版本存在呢?

看来,震网的故事离剧终还远……(待续)

译者:李云凡

 

关键词:

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章