独家连载 | 零日漏洞:震网病毒全揭秘(3)
作者:星期一, 九月 14, 20150

640.webp

第二章 神秘的500k

6年来,里阿姆•奥•莫楚(Liam O’Murchu)一直以分析各种蠕虫和病毒为业,但从没有见过这样的代码。它运用的技术远远超越了他所见过的其他病毒。所以,当他坐在南加州办公室的计算机前,打开欧洲同事连夜发来的震网病毒时,压根没想到,居然会碰到这样一个“神兽”。

那是个周五,2010年7月16日,震网新闻在科技业界发布的第二天。当时莫楚像往常一样,正有一搭无一搭的浏览着病毒代码。这位33岁的爱尔兰人是赛门铁克公司卡尔弗城办公室应急响应团队的运营负责人,他的任务是检视恶意代码,并决定是否有必要对它们进行更深入的研究。

公司在爱尔兰都柏林的同事已经在前一天下午拿到了病毒文件,几小时后,文件就送到了早上刚刚起床的莫楚这里。赛门铁克公司的恶意代码分析团队遍布各个大洲,这样不管什么时候,只要有重要事件发生,都会有人处于值班状态、迅速跟踪事态发展。一个分部下班的同时,就有另一个分部上班,前一个分部的员工把工作文档交给后一个分部的员工,就像传递接力棒一样。

当然,并非所有病毒都有这种“追着日出跑”的待遇。每个月赛门铁克及其他安全公司都会发现大约100万种恶意文件,绝大多数都是技术模仿者利用已知工具改写、希望通过改变特征指纹的方式骗过反病毒扫描引擎。对于这些“标准化”病毒,可以通过导入特定算法对其代码进行分析,寻找与已知病毒相匹配的特征和行为方式。只有当算法搞不定的时候,才会把代码导出到研究人员这里,进行人工分析。如果一个恶意程序利用或可能利用了“零日漏洞”进行攻击,肯定是由人而非算法来进行检测的。这也是震网的文件会到莫楚手上的原因。

640.webp (6)

里阿姆•奥•莫楚Liam O’Murchu

莫楚是个充满激情的滑板青年,说话富有感染力,留一头棕色短发,前额上还做了一个醒目的“直立烫”造型。他2004年起在赛门铁克公司上班,不过从都柏林来到美国时间不长,至今才在赛门铁克加州公司工作两年。他领导着一个技术出众的恶意代码分析和逆向工程团队,连年征战在处理数字威胁事件一线,每个人都身经百战。但任何人都没有预料到,莫楚会从震网当中“挖出核弹”。

震网的主文件大得不可思议——500k字节,而常见恶意代码文件大小仅为10k到15k之间。即便是臭名昭著的Conficker,这个两年前(2008年)感染了600万台计算机的“怪物级”病毒,其大小也不过35k。大于这个量级的恶意文件,通常会包含一块非代码区域,一般是用图片文件填充来使其占用更大空间。但震网中并没有图片文件,也没有无关填充物。而且,当莫楚开始将文件一步步打开时,他意识到,震网的代码比他和其他人所见过的任何恶意代码都要复杂。

莫楚与恶意代码的第一次亲密接触是在1996年,那时他在都柏林大学学习计算机科学专业,然后有个奇葩同学自己制作了一款病毒,把学校机房里所有的计算机都感染了。在3月15日,病毒获得了所有终端的控制权,大家都没法上机了。用户必须先答对屏幕上出现的10道问题,才能登录。大多数同学都被搞烦了,但莫楚一心想着能得到一份病毒文件的拷贝,然后把它拆开来看看。他的个性是“见啥拆啥”。莫楚从小在吉尔戴尔郡阿赛镇外的乡村长大,跟别家孩子喜欢玩汽车不同的是,他最喜欢把汽车拆成零件,看它是怎么工作的。

年轻时,莫楚并没有打算成为一个专门摆弄病毒的。他一开始上大学的时候为拿到一个自然科学的学位,勤勤恳恳的苦学各种物理和化学课程,后来才转向计算机科学课程并为之着迷。他快速抛弃了化学实验室,开始沉浸在计算机房里。在大学中,黑客攻击逐渐成为众人关注的话题,但莫楚从未想过信息安全会成为一种职业发展的可能路径,直到有一天,攻击者黑掉了机房的服务器,然后一大帮同学来帮忙打补丁、清除病毒修复机器。莫楚被这场“猫鼠大战”深深吸引着,他目睹了入侵者一次又一次地使用计谋,把防守一方戏弄到团团转。

这种翻越数字障碍的本事,在莫楚和朋友们大学毕业到美国后派上了用场。他们得到一份为一家圣迭戈创业公司测试付费阅读网站(kiosk)的工作。他们的任务是看能不能绕过网站的“付费门槛”,越权打开本应花钱才能浏览的网页。这公司没有找普通的计算机用户来测试,而是故意找了他们这么一个黑客团队。包括6个付费阅读点的系统搭建完毕后,莫楚团队的工作开始了。公司打算给他们两个星期的测试时间,然后就把系统上线。但莫楚和他的朋友们一直能找到绕开“付费门槛”的新办法。2个月过去,他们还在不断发现新的破解方法,这家公司实在受不了了,终止了测试,让系统就这样上线了。

接下来的几年里,莫楚带着他心爱的滑板,满世界旅行,心中对进入信息安全行业怀着一种模糊的情愫,却又没有明确的计划。2002年,他加入了都柏林的一家名为“光明邮件”的反垃圾邮件公司。他当时想法很简单,挣点钱,供养自己游玩的开销。而当2004年赛门铁克公司收购光明邮件时,莫楚看到了进入信息安全行业的真正机会。在作为被收购公司雇员参观赛门铁克都柏林公司办公室的过程中,他耐着性子跟人们一个部门一个部门地转悠,实际上他只想去看那令他心驰神往的病毒研究团队。但是,当见到了研究团队老大美国人埃里克•钱(Eric Chien,下称“钱哥”)的时候,他的梦碎了一地。莫楚原以为公司在世界各地会有几百个病毒分析师的岗位,所以进来会比较容易。但钱哥告诉莫楚,他的团队只有五、六个人,每个人都已经干了很多年,而且“没人想离开,他们都很热爱这份工作。”

640.webp (7)

埃里克•钱(钱哥)

莫楚并未被吓住。他开始自学分析师们用来破译病毒、提取特征码的工具。几个月后,出现了间谍软件和广告软件大爆发的情况,公司研究团队需要增加人手,而这时的莫楚已经做好准备了。接下来的几年里,莫楚仍然在有着赛门铁克最大研究团队的都柏林公司工作,直到2008年搬到美国卡尔弗城。

多年来,莫楚和他在赛门铁克公司的同事们处理了多起令人瞩目的、复杂的安全威胁事件。但没有任何一次比得上震网这么刺激、这么具有挑战性。

当莫楚检测震网主文件时,他很快发现,文件采取了多层加密机制来保护其核心和多个组件。很幸运,第一层是容易破解的“打包”(packer)。

打包,是一种压缩和分割代码的软件工具,目的是增加反病毒引擎识别代码特征的难度,防止病毒检测者迅速搞清楚代码的功能。恶意代码每次打包时,都会在外表上出现细微的变形,所以将同样的代码打包一千次,就会得到一千个不同的版本,而其内部的代码是不变的。反病毒引擎能认出使用已知打包工具的恶意文件,将其解包,并识别出内部代码的特征。为规避这种查杀,高明的攻击者会定制出更不易识别和去除的打包工具。但震网的制作者并没有这样做。他们只是用了一种名为UPX——全称“可执行文件终极打包器”的现成打包工具,所以很容易识别并破解。考虑到它其他部分的高级特征——零日漏洞利用程序、盗取数字签名——他们选择用UPX而不是更专业的定制版打包工具,让人觉得有点奇怪。因此,莫楚断定,打包的主要目的很明确,就是压缩文件、减小体积。解包解压完成后,主模块的体积增大至1.18M。

解包之后,莫楚可以清楚的看到弗兰克之前提到的有关西门子公司软件的线索。更重要的是,他还发现了一个经过加密的代码块,它就是震网病毒的主干。这个代码块是一个包含30多个DLL(动态链接库)文件和其他组件的巨大DLL文件,像俄罗斯套娃一样一层一层加密、嵌套在一起。他还发现了一个功能强大的配置文件,攻击者可以对其中400多项内容进行设置,从与震网保持通信的指挥控制服务器的网址(URL),到每次通过U盘上的漏洞利用程序感染计算机的数量。莫楚还幸运地发现,病毒为自己的感染设定了终止日期:2012年6月24日。每当震网病毒进入一台新的计算机,都会检查计算机上的日期,如果晚于这个日期,病毒就会停下来,放弃感染。已经被感染机器上的恶意程序载荷仍然会继续运作,但震网病毒将不再感染新的计算机。推算下来,这个终止日期比震网首批感染伊朗计算机要晚3年。看来,攻击者觉得,3年的时间足够他们完成预定任务了。

震网最令莫楚感到牛逼之处,是他在目标计算机上隐匿文件的复杂方法,和调用一个貌似普通的函数完成超级任务的精巧招数。莫楚花了一天时间来搞清楚这些细节。当他完成的时候,被惊呆了。(待续)

译者:李云凡

 

关键词:

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