【剑思庭专栏之故事会】攻击西门子PLC病毒的来龙去脉

2006年,伊朗违背协议,重启核计划,在纳坦兹核工厂安装大批离心机,生产浓缩铀,为进一步制造核武器准备原料。纳坦兹(Natanz)核工厂。伊朗人选择的时机不错。被孤立已久的他们早就习惯了制裁,当时美国又深陷阿富汗、伊拉克两大泥潭,无力发动第三场战争。果然,美国发出了战争威胁,但并没有实质动作。至于联合国的经济制裁决议,伊朗完全应付得住。这令美国非常难堪——不解决伊朗核问题,怎么对以色列交待?以色列此时态度强硬,要像1981年空袭伊拉克核反应堆一样,也对纳坦兹核工厂来一场外科手术式的打击,将伊朗核计划消灭在萌芽状态。这无疑会将局面推向失控。此时,一个新奇的建议被中央情报局提出——向纳坦兹核工厂传播计算机病毒。

布什总统无奈之下同意了,不过并没有寄予太大希望。中央情报局试探性的联系了以色列情报部门,没想到,以色列态度很积极,还献上一份厚礼:纳坦兹核工厂的图纸!美国人喜出望外,立即升级原计划:感染全部设备,控制整个工厂。为了确保计划万无一失,美国人甚至照图纸造了一座模拟核工厂,又招募了一批顶级黑客和核工程专家,在这片模拟战场上对症下药,针对其薄弱环节设计病毒,并且在实际运行中反复测试,反复改进。病毒武器在布什即将卸任时开发完成,测试非常成功。美国政府和中央情报局的首脑一起开会,人们对它的应用却开始犹豫,因为这种攻击方式一旦开启,各国必争相效仿,一场网络攻击的军备竞赛即将拉开帷幕。

 

震网病毒非常独特的一点,是它将互联网上泛滥的病毒,应用到了工业系统中。工业控制是一种恐龙式的技术,古老的通信方式、隔绝的网络连接、庞大的系统规模、缓慢的技术变革,这些都让工控系统看上去跟互联网截然不同。此前从没人想过这种结合。震网病毒代码片段,安全专家通过反汇编来研究其功能举个例子。研究人员在病毒代码中发现一个数组,用以描述离心机的级联方式,数组的最后几位是:20,24,20,16,12,8,4。

 

将上文出现的总统视察图的左下角放大,可以看到在图片最下方一排灰色小柱子。他们将绿色小点分为若干块,从右往左数,每块含有的列数分别是1,2,3,4,5,6,5。每列包含有4个离心机。可以看出,纳坦兹核工厂的离心机级联方式,从左往右正是20,24,20,16,12,8,4。这就是上文中震网病毒的数组,量身定做,绝对贴合。可以说,这款昂贵的、开创性的病毒,已经足够给伊朗制造麻烦。但美国和以色列的情报部并不满足于此,他们想要长久的战略效果。因此,震网病毒进入工厂后,本可以制造一起工业灾难,一举摧毁整个工厂。但它却没有马上发作,悄悄地潜伏下来,每隔一个月才攻击一次。攻击期间,它会首先修改西门子工控系统的数据,让离心机看上去运转正常。但背地里大幅提高离心机的转速,迫使其在临界速度以上运转,从而迅速毁坏一台离心机。

这时候,如果走到那台遭受攻击的离心机旁,会听到机器转动声异常,声音频率比正常状态要高得多。但工厂内有几百台离心机在同时运行,巨大的背景噪声往往会掩盖单台离心机的问题,不仔细听根本注意不到。更何况由于背景噪声太大,工程师都是带着耳罩进入车间,根本无法辨别相对细小的差别。控制系统的屏幕上监控更具欺骗性——震网病毒早已控制了监控系统,呈现给操作人员的,是一切正常的运行状态。伊朗工程师无法积累足够的应对经验,搞不清楚毛病究竟出在哪里。且震网病毒极具隐蔽性,即使是今天,震网病毒已经暴露了数年之后,最新的Windows仍然会把它当作合法程序。