独家连载 | 零日漏洞:震网病毒全揭秘(1)
作者: 日期:2015年09月11日 阅:13,631

本书是目前关于震网病毒入侵伊朗核设施事件最为全面和权威的读物,由美国自由撰稿人Kim Zetter以在《连线》杂志期间的工作为基础,广泛采访事件相关人物,多方收集一手信息,精心梳理而成的一本非小说类著作,出版于2014年10月。

全书共分为序幕和19个章节。

640.webp

《零日漏洞:震网病毒全揭秘》

序幕 离心机故障

第一章 早期预警

第二章 神秘的500k

第三章 纳坦兹

第四章 破解震网

第五章 内贾德的春天

第六章 寻找零日漏洞

第七章 “零日”到期

第八章 载荷

第九章 工控系统“失控”

第十章 精确制导武器

第十一章 策划数字阴谋

第十二章 新的作战域

第十三章 数字弹头

第十四章 震网的后代

第十五章 火焰病毒

第十六章 “奥运会”项目

第十七章 离心机之谜

第十八章 够格的成功

第十九章 数字潘多拉

现由信息安全爱好者翻译并在安全牛上连载。

------------

序幕 离心机故障

2010年1月,联合国负责核查伊朗核设施的国际原子能机构(IAEA)开始注意到,纳坦兹铀浓缩工厂出现了问题。

640.webp (1)

核设施埋在沙漠之下50英尺的深处,那里有一个巨大的离心机车间。过去2年间,这里的铀浓缩离心机正常运转着,从六氟化铀中提炼高纯度铀。在过去数周,工人们大批量的拆掉离心机,并换成新的。故障比例高得令人吃惊。

在纳坦兹,离心机型号为IR-1,预期使用寿命10年。但似乎它们很脆弱、很容易损坏。即使是正常情况下,伊朗都会由于原料不达标、维护问题和工人操作错误等原因,每年更换10%的离心机。

2009年11月,纳坦兹大概有8700台离心机,也就是说正常情况下一年替换800台。但IAEA的官员发现,在2009年12月到2010年1月期间,离心机的替换率高得不正常。

IAEA核查人员大约每2个月去一次,有时提前通知,有时临时行动。每次工人们都会把坏的离心机换下来,堆放在一个房间里,等待检查。核查人员用手持伽马射线探测仪对其检查,看是否有放射性物质溢出,然后再批准其报废,把每次报废数量记录下来、报给维也纳总部。

IAEA在每一间离心机堆放库外面都设立了摄像头,监督技术人员和工人的一举一动。每次核查人员去了之后,要看摄像头有没有被人动过,并检查视频录像,看纳坦兹的人有没有偷做手脚。几周后,总部负责详查视频的人发现,报废的离心机数量严重超出正常水平。

IAEA官方并未公布报废离心机的具体数量。但新闻报道中引述一名欧洲外交人士的说法是900至1000台。2010年10月退休的前IAEA官员、监察部门副主管海诺宁说,“凭我的经验推测,大约有2000台。”

不管具体数量是多少,很明显,设备的确出问题了。可是,伊朗人无需向IAEA解释到底发生了什么,IAEA检察人员也无权过问。监察部门的任务是检查铀浓缩工厂的铀,而不是跟踪坏了多少设备。

检察人员并不知道,问题的答案就在他们眼皮底下,在工业控制室的计算机中。几个月前,2009年6月,有人在其中悄悄地释放了一个破坏性的数字弹头,随后这个弹头一步一步攻入纳坦兹的核心系统,带着明确的目标——破坏伊朗铀浓缩项目、阻止伊朗总统内贾德制造核武器。

答案就在那里,但核查人员用了一年的时间才明白。而这还是在一大群计算机安全专家耗时几个月、对病毒进行解构的基础上才达成的。这段程序是如此特殊,以至于它创造了历史——它是世界上第一个数字武器。它的到来,宣告了数字战争时代的开启。


------------

第一章 早期预警

舍基·乌尔森(Sergey Ulasen)一看就不是会被卷进国际大事漩涡的人。这位31岁的白俄罗斯人有一头金色短发和少年般瘦削的轮廓,不仅面善,而且性格和蔼友善,看上去是在生活中完全没有敌人甚至对手的那种宅男……他最爱的度假方式就是去明斯克郊外的奶奶家,在那里放下手机、离开网络,充分释放压力。就是这样一个人,在2010年6月,干了一件惊天大事,成为世界瞩目的焦点。

640.webp (2)

舍基·乌尔森

他是白俄罗斯一家小型反病毒公司VirusBlockAda反病毒部门负责人,和同事奥莱格·库普瑞(Oleg Kupreev)一起,在坐落于明斯克市中心、离斯维斯洛奇河不远的一座苏联时期建造的灰褐色大楼里办公。他们正在系统地梳理近期在伊朗计算机上发现的恶意文件,突然有什么东西让库普瑞激动了起来。他坐在椅子上,大声喊:舍基,快过来看呐。舍基把这段代码看了一遍又一遍,最终确信他所看到的东西就是这么不可思议。他激动得有些喘不过气来。这段代码他们已经研究好几天了,直到现在他们才发现,它绝非一种温和而有趣的普通病毒,而是一部如恶魔般可怕又冷静的顶级作品。

它不仅有效利用了后门(rootkit)来躲过反病毒引擎的扫描,还利用了“零日漏洞”(zero-day)将其从一台计算机传播到另一台计算机,从而能突破Windows系统,让百万台计算机暴露于风险之下。

漏洞利用程序(exploit)是黑客用于植入病毒的攻击代码,一般利用IE等浏览器或PDF阅读器等应用程序中的安全漏洞,把病毒代码植入进去。这需要受害者浏览或点击带毒链接或文件。当软件开发者意识到漏洞的存在后,会制作并发放补丁。

“零日漏洞”利用程序(zero-day exploits),是黑客世界中最牛的东西。因为它利用的漏洞是软件开发者和反病毒公司尚未发现的——这意味着根本没有补丁。

这种程序非常少见。这需要很多时间去发现无人发现的新漏洞,并研究、分析、并制作利用漏洞实现攻击的程序。因此多数黑客只是简单依赖已知漏洞和漏洞利用程序(exploit)来传播恶意代码。他们利用从漏洞补丁发布到用户安装补丁这个时间差,或者有些用户因为大意没有安装补丁的情况,来进行攻击。虽然每年有超过1200万种恶意代码出现,但“零日漏洞”大概只有10来个。这次的攻击者使用的正是这种价值很高的“零日漏洞”利用程序和高超的攻击技术。从乌尔森他们看来,伊朗设备上的这些病毒在漏洞利用(exploit)技术和后门(rootkit)运用技术方面的表现,是空前的。简直不能再牛了。

早在一周前,这个神秘的病毒就已经引起了Ada公司的注意。Ada公司在伊朗的一家安全软件中间商发现,顾客的机器反复出现故障。计算机反复重启,Ada公司技术团队进行了远程扫描,寻找反病毒软件漏掉的恶意程序,但一无所获。因此后来他们找到了乌尔森。

乌尔森自从读大学起就受雇于Ada公司。但公司规模很小,而乌尔森非常优秀,所以当他26岁时已经成为公司的技术大拿,负责开发维护反病毒引擎。他偶尔还与破解恶意代码的研究团队一起工作。尽管偶尔为之,但他非常喜欢从事反编译研究。因此,当技术支持团队找他解决伊朗客户的问题时,他欣然接受。

乌尔森起初认为,问题出在软件配置错误,或是操作系统中不同软件无法兼容上。但之后他了解到,并不是一台机器出现问题,而是很多台,而且当重装系统后问题仍然存在。于是他推测,攻击者一定是将病毒潜伏在目标网络中,这样就可以反复感染被清理干净的计算机了。他还怀疑,攻击者利用后门逃过了反病毒软件的监测。乌尔森已经为公司编写反后门(anti-rootkit)代码很久了,因此他很有信心把它找到。

当获准远程接入遭感染计算机后,乌尔森和库普瑞将目光锁定在6个可疑文件上,其中2个驱动程序文件,4个其他文件。他们认为这些文件就是问题的根源。然后,在同事的帮助下,他们花了几天时间对这些可以文件进行破译、努力解释令人惊异的复杂代码。由于他们只是一个服务于政府客户的小公司,所以并不擅长这种挑战。但他们经过持续努力,终于发现:其中一个驱动程序文件,扮演着“内核级”后门(kernel-level rootkit)的角色,这印证了乌尔森的怀疑。

后门有很多变种,最难的是探测出那个能获得与反病毒软件一样的系统特权的“内核级”后门。如果把计算机系统结构想象成一个靶子,内核层就是靶心,就是操作系统让计算机运作起来的起点。多数黑客编写的漏洞利用程序(exploit)仅能获得用户级权限,这是比较容易做到的。但反病毒软件可以探测到这种“提权”。因此,真正高明的黑客将漏洞利用程序(exploit)瞄准系统内核级别,这样就能逃脱反病毒软件的扫描。在那里,漏洞利用程序与恶意代码“内外勾结”,为恶意代码大行其道提供运行接口,反病毒软件却无法扫描和跟踪。内核级后门绝非常见,制作它需要复杂的知识背景和高超的技巧。但乌尔森发现的这一个,是超赞的。

库普瑞认为,这个后门是用来隐藏四个恶意的.lnk文件的。病毒看来是使用了由4个恶意文件构成的漏洞利用程序来通过USB设备传播自己,而通过后门可以做到让这些U盘上的恶意文件对用户“不可见”。就在这时,库普瑞找乌尔森过来,让他看看到底是什么情况。

利用漏洞通过U盘传播病毒,不像通过互联网上的网站和邮件传播那样普遍,但也非闻所未闻。库普瑞和乌尔森之前所见过的所有U盘传播病毒,都是利用了Windows系统的自动运行功能,这样当U盘插入计算机时,U盘上的恶意代码就会立刻执行。但这个家伙更加聪明。

在Windows系统中,.lnk文件负责渲染U盘或其他移动存储介质中的文件图标。当我们插入U盘时,资源管理器或类似工具就会自动扫描其中的.lnk文件,来显示各种格式的文件,如音乐文件、Word文档、其他程序等。在这个病毒中,攻击者精心设计了一个漏洞利用程序,并将其插入其中.lnk文件中。当Windows扫描时,它能执行这个漏洞利用程序,秘密地将U盘上的恶意文件“货物”运送到计算机上,就像军用运输机将伪装的伞兵投放到敌方领土上一样。

乌尔森在想,利用漏洞通过.lnk文件攻击Windows系统如此基础的功能,为什么之前没有人想到过呢?这比利用“自动运行”功能要牛逼得多,因为后者可以通过关闭“自动运行”功能使攻击失效,很多网管都对这一点很了解。但并没有禁用自动扫描.lnk文件而不引发其他问题的办法。

乌尔森搜索了漏洞利用程序的档案库,试图找到其他通过.lnk文件的类似病毒,但一无所获。此时,他开始怀疑,这是一个“零日漏洞”。

乌尔森找到一个被感染的U盘,把它插入一台安装了Win7的测试机上。这台计算机安装了微软官方发布的所有补丁。如果微软已经发现这个漏洞,那么补丁程序将会阻止其向系统注入病毒。如果这是一个“零日漏洞”,则补丁将并无卵用。乌尔森等待了几分钟,然后检查计算机,没错,恶意文件进来了。(待续)

注释 :rookit

NSA安全和入侵检测术语字典(NSA Glossary of Terms Used in Security and Intrusion Detection)对rootkit的定义如下:

A hacker security tool that captures passwords and message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network, mask the fact that the system is compromised, and much more. Rootkit is a classic example of Trojan Horse software. Rootkit is available for a wide range of operating systems.

很多人有一个误解,认为rootkit是用作获得系统root访问权限的工具。实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。

译者:李云凡

关键词:

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


相关文章