独家连载 | 零日漏洞:震网病毒全揭秘(61)
作者: 日期:2015年12月02日 阅:2,752

640.webp

震网0.5版的本事有多大?传播层面,它成功穿越了物理隔离;攻击层面,它的复杂程度完全不逊于后续的版本……

第十六章 奥运会(接上)

与此同时,用于对离心机进行攻击测试的“小山”地上部分设施也在建设当中。据信,初期的主要研究目标是,判断对纳坦兹实施动能攻击(kinetic attack)会对离心机造成何种程度的破坏。后来的研究中,“网络攻击对离心机的影响”才得到了与“空袭对地下核设施中离心机的影响”同样的关注。而人们一开始提出网络攻击的思路时,并没有想到使用病毒直接破坏纳坦兹的离心机,而只是考虑在铀浓缩工厂的设备中植入用于侦察的恶意代码,帮助研究员判断伊朗铀浓缩的实施进度。但在某个时点,用于直接破坏离心机的网络攻击项目和之前的网络侦察项目合二为一,形成了一个完整的数字动能打击(digital kinetic attack)计划。当时的情况有可能是这样的:测试离心机的大多数科学家并不知道有这样一个破坏性攻击的计划,只管做好“评估不同条件会对离心机造成怎样影响”的本职工作即可。所以,他们只需要考虑“离心机的转速提高、转速降低或内壁压力增大时的状态”这些问题,而无须考虑这些条件的变化是由何种原因引起的。

在宽敞的测试厂房中,西门子和其他供应商高大的控制系统支架,像图书馆中的书架一样摆放在前排,十多台一人来高的离心机则遍布整个空旷的厂房。临时铺设的线缆从部分离心机上弯弯曲曲的延伸出来,一直连到各种传感器上,以记录诊断结果,测量“离心机外壳温度”“用于保持平衡的栓钉和球状轴承的晃动幅度”等数据。

部分离心机持续数月的高速旋转,期间所有数据均被记录下来。这些离心机只是研究样本,还有一些则扮演着更悲惨的角色。在厂房的入口里面,有一个散发着丙烯酸和金属气味的巨型加固笼子,这就是为离心机“执行死刑”的场所。如果让《流言终结者》(MythBusters,一档由2位前好莱坞特效专家和3位充满魅力、博学多才的联合主演明星主持的有线电视节目)节目组的人来设计一个医院婴儿探视室,估计就会是这么个样子。每当有离心机在笼中死于非命之时,都会发出可怕的爆炸声,附近的地板也会随之隆隆作响,让现场工作人员为之一怔。

到了2008年,整个项目已经比较成熟完善了,离心机猎杀实验更是家常便饭。“项目组可以说是花钱如流水。”这位熟悉项目的匿名人士说。或许,布什总统从国会拿到用于打击伊朗核计划秘密行动的4亿美金预算,恰恰就在这个时候。

据报道,与橡树岭实验项目同步进行的,还有以色列迪莫纳核设施中的离心机实验。但是,关于“这些实验持续了多久”“官员何时认为掌握了成功发动网络攻击的足够数据”等问题,并没有准确的消息。

2006年橡树岭进行实验的同时,另一个团队正在编写攻击代码。虽然不清楚研发的精确时间表,但赛门铁克的研究员发现,攻击代码中的一个关键函数似乎在2006年5月被改动过。这个函数是针对315型PLC攻击代码的一部分,其功能是,与变频器之间建立通信连接。如前所述,用于该版本震网的两个指挥控制服务器mypremierfutbol.com和todaysfutbol.com中的代码,编译时间也是2006年5月。攻击代码中的另一个关键函数在2007年9月被改动过,两个月后的2007年11月,震网0.5版被人发现并提交至VirusTotal网站。

在某一时刻,橡树岭或其他某个实验室中部分离心机的用途发生了改变,它们被直接用于测量网络攻击的功效。当概念验证实验完成后,官员们向布什总统进行了汇报,用离心机的残片为攻击计划的有效性做了完美的注脚。与橡树岭实验室的姊妹机构——爱达荷国家实验室于2007年初进行的极光发动机试验类似,离心机实验充分证明,在一段精心制作的代码面前,再庞大的机器也不堪一击。

那么,震网0.5版是何时进入纳坦兹内部计算机的?它又是怎么进去的?这仍然是个谜。因为,纳坦兹的工业控制系统与互联网之间没有直接连接,而震网0.5版的传播机制却非常弱,因此要想突破物理隔离,攻击者必须亲自进入设施内部,或向内网发送一封邮件。震网0.5版只有一种传播途径,就是感染Step 7系统的项目文件。这意味着,它必须要直接感染编程人员或操作人员的计算机。一种方式是使用U盘“摆渡”,要么通过不知情的承包商充当带毒者,要么花钱买通某个内奸。另一种方式是给纳坦兹中的某个人发送邮件,把病毒藏在Step 7项目文件中“夹带”进去。如果病毒从编程人员或操作人员的计算机起跳,只需一到两步就可以进入目标PLC。在震网后续版本中有一个日志文件,它会记录所有染毒计算机的基本信息和感染时间,但研究员发现,震网0.5版中根本没有这项功能。

震网0.5版的目标不是315型PLC和变频器,而是417型PLC和阀门。其功能是,通过频繁开关阀门,操纵含铀气体的流动。

纳坦兹的离心机级联系统共分为15层,每一层中的离心机数量都不一样。随着层次的提高(层号变小),需浓缩的气体量不断减少,因此所需的离心机数量也不断减少。

第10层是“气体注入层”,共有离心机24台。在这一层,新一批含铀气体被泵入。离心机中的转子高速旋转,将铀同位素分离开来,“富铀235浓缩气体”被提取并运送到第9层。第9层有20台离心机,气体经过再次浓缩后,“富铀235浓缩气体”进入第8层的16台离心机。同时,含铀238较多的废弃气体从第10层进入第11层,进行进一步分离。第11层提取的“富铀235浓缩气体”又会被送往第8层,与那里的气体相混合。这个过程不断循环,直到富铀235浓缩气体进入第1层,废弃气体被排出系统为止。而级联系统的最高层一般只有2台离心机,1台主用,1台作为备份。

每个级联系统都有多个用来控制气体出入系统、出入各个层次的辅助阀门。此外,每一台IR-1型离心机顶部都有3个狭窄的管道,每个管道上有一个控制气体出入离心机的阀门。进气管道用于向离心机注入气体,成品管道用于向更高层发送“富铀235浓缩气体”,废气管道用于向下层发送废弃的“富铀238浓缩气体”。

震网0.5版并未攻击纳坦兹的所有阀门,而是有所选择。安装离心机的地下车间被分成了多个单元,也就是级联系统机房。每个机房可容纳18个级联系统,每个级联系统又包括164台离心机,因此每个机房中的离心机数量约为3000台。震网0.5版上线时,纳坦兹的地下车间中,只有1个机房是满编的,有18个级联系统。但震网只会攻击其中的6个级联系统。同时,震网不会攻击级联系统中的所有离心机,而只会攻击其中110台离心机的阀门,放过另外54台。

震网0.5版进入纳坦兹的级联系统后,会首先潜伏30天左右。在此期间,它会对系统进行全面检查,以确定各种阀门、压力传感器和其他部件是否与预期一致,并监控其活动。

在全面监测系统的同时,它还会将级联系统运行的正常值记录下来。与针对315型PLC的攻击一样,当真正的破坏行动开始后,它会将监测的真实值替换为这些正常值,反馈给操作人员。比如,它在潜伏的过程中,会迅速开启级联系统第1层的某个阀门,并从压力传感器上读取正常的压力值,然后在攻击时把这个值发送给操作人员,以掩盖压力升高的事实。

当它完成数据收集工作后,仍会继续等待,等待级联系统中出现某个特定的时机。在攻击开始前,震网0.5版会在单个级联系统中潜伏超过35天;如果要攻击6个连在一起的级联系统,则需要潜伏至少298天。

一旦攻击启动,病毒会关闭除第10层(气体注入层)之外各层次上的部分阀门。比如,在第9层,它会关闭20台离心机中14台的“废气管道阀门”;在第8层,会关闭16台离心机中13台的“废气管道阀门”。具体关闭哪一台离心机上的阀门,则是通过一个复杂运算进程随机挑选的。

关闭阀门后,震网0.5版会停止动作,等待只进不出的气体,让离心机中的压力不断上升。等待期结束的条件是:时间满2小时,或离心机内部压力升高至初始值的5倍。条件满足后,震网0.5版将转入下一个阶段,打开除气体注入层附近3个阀门之外的所有辅助阀门。然后,它会转入3分钟的等待期,同时向操作人员发送更多伪造监控数据。之后,进行7分钟的静默观察。在攻击的最后一步中,它会再次打开一组约25个阀门。奥尔布赖特和他ISIS的同事推测,这组阀门位于“应急排放管”。级联系统中的每一层都有一个与“应急排放管”相连的通道,以防离心机或铀浓缩进程出现故障时,可以迅速将离心机中的气体排放到一个冷却容器中。那么,震网打开这组阀门后,离心机中的气体就会迅速进入冷却容器,并彻底变为废气。

整个过程结束后,攻击将跳转至启动部分,开始新一轮循环。

由于攻击仅仅持续两个小时,受影响的只是部分离心机的部分阀门,而且在这个过程中操作人员看到的数值都是“正常的”,这让纳坦兹的工作人员陷入了空前的困惑之中。长期以来,他们一直目睹着离心机出现这样那样的问题,面对浓缩铀产量不断下降的情况,却无法确定故障的模式,也找不出真正的原因。

研究人员至今仍不清楚,震网打开、关闭的具体是哪些阀门,因此也很难说清具体的影响有多大。但基于一般性的假设,奥尔布赖特和他的同事推演出两种可能版本。第一种,被关闭的是级联系统最高层的成品气体输出阀门和最低层的废气排放阀门,因此气体会持续泵入级联系统,却无法排出。这种情况下,内部压力会迅速升高,当气压上升到正常水平5倍时,离心机内的含铀气体会开始凝结、凝固。凝固的铀化物固体进入高速旋转中的离心机转子后,会立即破坏转子,或令其失去平衡、敲打离心机的外壳。强烈的晃动会使离心机底部的轴承变得不稳定,从而令整个离心机脱离平衡状态。而一个高速旋转的离心机从静止状态中脱离出来,其破坏力将会非常之大,必然会对临近的其他离心机造成严重影响,从而产生灾难性的连锁反应。

在这种情形下,处于较高层次离心机中的压力增速,比较低层次离心机中的压力增速更快,因此更先出故障。奥尔布赖特团队估计,一次攻击可以同时对每个级联系统中的30台离心机造成破坏。他们认为,把含“富铀235浓缩气体”较多的高层次离心机作为攻击的重点,具有更显著的破坏效果。接近“气体注入层”(第10层)的离心机中的“富铀235浓缩气体”最少,而接近最高层(第1层)的离心机中则汇集了几乎全部“富铀235浓缩气体”,因此,攻击后者造成的损失更大,对铀浓缩进度的延迟更显著。

不过,还存在另一种可能,震网0.5版并没有关闭级联系统两端的成品阀门和废气阀门。如果是这样,震网0.5版所能造成的影响会小得多——只是减少铀浓缩成品的生产量,而不会破坏设备。含铀气体原料泵入级联系统后,由于164台离心机中有110台遭到了震网的攻击,阀门被关闭,因此只有剩下的54台还可以正常运转。这样一来,参与浓缩进程的含铀气体大幅减少,最终得到的成品气体也会大幅减少。

此外,在震网0.5版一边实施攻击,一边向操作人员发送伪造的正常数据之前,它已经废掉了生产线中的安全系统。其功能是,当发现离心机出现运行故障时,及时使之脱离级联系统,以免造成破坏。安全系统的设计非常精密,主要包括两类装置:一类是安装在每台离心机上的加速度传感器,用于监控离心机的振幅;另一类是安装在每个级联系统上的数十个压力传感器,用于监控级联系统中各部分的压力。如果某台离心机出现故障,应急响应系统会做出毫秒级的反应——关闭该离心机与级联系统之间的阀门,使离心机及其中的气体与系统隔开。故障离心机中蕴含的能量,可能使其中的高温气体喷涌而出,在级联系统中发散开来,对其他离心机造成损害。而正常运行的应急响应系统可以快速采取相关措施,阻止高温高速气流从故障离心机中喷出。但是,震网对安全系统的攻击,让这些功能全都成了摆设。(待续)

译者:李云凡

 

关键词:

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


相关文章