人类首次网络战争:伊朗核工厂是如何被攻击的?

原创:明昊观察

连载1:

2009年的短时间内,震网病毒就感染了伊朗国内外的10多万台计算机。国际原子能机构(IAEA)的监测表明,伊朗位于纳坦兹的铀浓缩工厂出现了大面积的离心机损坏,产量直线下降。震网病毒是怎么对工厂进行破坏的?又是怎样被外界发现的?我们接着说。

伪装和破坏:你从未见过如此精巧的病毒

前面说过,震网病毒的目标是西门子的SIMATIC Step 7和SIMATIC WINCC两个软件。Step 7是用来为其S7系列PLC编写、编译指令和代码用的工具软件。而且必须配合Simatic WinCC软件使用。Simatic WinCC是一种可视化工具,PLC会向其发送自身运行及数据的报告。工程师可以通过Simatic WinCC来监视其所控制的PLC运行状况。

在震网病毒打包的大量dll文件中,具有和Step 7软件中同名dll文件的全部功能,并增加了一些读取和写入的指令。当系统对目标PLC执行这种操作的时候,就对其进行劫持。这意味着震网病毒成了“史上第一个”针对工业控制系统的后门。震网病毒将原本的s7otbxdx.dll文件改名为s7otbxsx.dll,然后把假冒的s7otbxdx.dll文件放进去。这样,当系统调用这个文件执行任务的时候,病毒文件就生效了。

震网病毒震网病毒针对S7-315型PLC的代码有15段。在攻击之前,会确认PLC系统所控制的是芬兰产的某型变频器或者它的伊朗山寨版。这种变频器的工作频率在807hz至1210hz之间,属于美国核管委限制出口的产品。震网病毒要找的目标就是一个安装有186个这种变频器的工厂。

一台S7-315控制6X31共计186个变频器的控制机构

每当操纵员向PLC发送指令时,震网病毒都会把自己的恶意指令跟着一起发送出去。震网病毒并不会替换命令代码,而是在正常的代码前面增加一段。为确保恶意指令的执行,病毒还PLC上嵌入代码废掉了PLC的自动报警系统,防止安全系统发现离心机转速异常时将其离心机关机停车。同时病毒为防被发现,会在工程师检查PLC代码时反馈给他们“清洁版”的代码。如果工程师重新发送指令,病毒就会重新对指令代码进行感染。

为了进行伪装,震网病毒会在PLC上潜伏并记录下正常的运行数据。当恶意代码开始运行之后,就将之前记录的正常数据发送给负责监控的Simatic WinCC。所以当值班工程师检查运行情况的时候,他们看到的是“运行正常”。于是,破坏行动就这样开始了。

在13天的潜伏后,震网病毒通过变频器把离心机的旋转频率提升至1410赫兹,并持续15分钟;然后降低至正常范围内的1064赫兹,持续26天。在这26天当中,震网会将所需信息全部收集完毕。之后它会让频率在2赫兹的水平上持续50分钟,然后再恢复到1064赫兹。再过26天,攻击会再重复一遍。

而针对S7-417型PLC的攻击代码很奇怪,共有40段,他的目标系统是一个由每组164台,共6组合计984台离心机组成的运行网络,并破坏其中的110台离心机。纳坦兹的每台离心机上有3个控制气体出入的阀门,还有其他的联机机组的辅助阀门。如果按照震网病毒的控制模式来开关阀门,这些离心机也将损坏。

然而这段攻击代码上有一个故意留下的错误导致其无法执行。或许其他未知版本的震网病毒会通过升级来将攻击动作重新激活。

这样一来,伊朗人将陷入莫名其妙的工厂事故中去,当他们检查设备的时候又只能发现他们运转正常。 那么,隐匿如此之深的震网病毒是如何被发现的呢?

国际马拉松:病毒的发现和破解

根据国际原子能机构(IAEA)的核查报告,2009年11月,纳坦兹大概有8700台离心机,根据正常的10%损坏率,一年大约只需要替换800台。但IAEA的官员发现,在2009年12月到2010年1月短短两个月内,离心机的替换率高得不正常,大约有2000台离心机被替换。而铀浓缩的产量也同时骤减。某车间的18个机组中甚至有11个出现了故障。

病毒的传播和破坏

2010年6月,白俄罗斯的一家小杀毒软件公司Ada的伊朗客户出现了电脑反复重启的毛病,因此他们对客户电脑进行了扫描,并发现了可疑的驱动程序文件(盗用了台湾瑞昱公司的数字签名)。这个驱动正是用于隐藏那些在u盘中的lnk文件的。

这个病毒在中东大量发现并快速传播,于是他们将这个发现公布在国际安全论坛上。微软开始针对这两个漏洞制作补丁。

欢迎光临 电子游戏 版权所有 Power by DedeCms