当我们首次揭示关于Stuxnet病毒攻击伊朗用于铀处理的可编程逻辑控制器(PLC)时,我们记录了两次攻击所用的策略。同时,我们还注意到针对417 PLC设备的策略已被禁用。目前,我们得到Stuxnet病毒的早期版本,该版本包括运行417 PLC设备的全部攻击代码。
经过仔细分析,我们确定417 PLC设备的攻击代码可以修改浓缩铀离心机提供六氟化铀气体的阀门的状态。这样可以关闭输铀阀门导致铀流量受阻并破坏离心机及其相关系统。此外,该病毒会用快照记录系统正常运行的状态,然后在攻击过程中回放这些正常的操作参数,这样就可以避免机器操作者察觉系统存在的异常。它还会阻止机器操作者修改阀门状态,以免攻击过程中出现离心机设置被修改的情况。
图 1 Stuxnet0.5攻击策略概要
Stuxnet0.5是Stuxnet病毒的早期版本,它所使用的攻击策略——“417PLC”也被后来Stuxnet1.x版本所用的“改变离心机速度”所取代。
Stuxnet1.x存在代码缺失的情况,而这些缺失的代码恰好出现在Stuxnet0.5里。这些代码可以在417PLC策略部署前,对目标系统进行必要的指纹识别,并创建一个重要的PLC数据块(DB8061)。接下来,我们将全面解析417PLC攻击策略。
指纹识别目标系统
Stuxnet0.5在激活有效载荷之前,通过指纹识别判断目标系统是否处在正确的位置。为确保判断准确,该病毒首先检测受感染系统是否运行Step7软件,并解析目标系统中符号表。这些符号表包含目标系统中每一个物理设备的识别标签,例如,每一个阀门、油泵和传感器都有唯一的识别符。这些符号表大致遵循 ANSI/ISA-5.1仪表符号及识别标准,该标准应用于管道仪表流程图(P&ID)。
下表总结了Stuxnet病毒在上述符号表中所要查询的设备名称及其识别标签。
设备类型 | | |
辅助阀门 | {HS,HV,PV,EP},{ZLO,ZO},{ZLC,ZC} | |
离心机阀门 | {NVS,RVS,VS},{MV,RV,SV,YV} | |
阶段压力传感器 | PT,PCV,PIA#,PIT,PIC,PI,PS | |
离心机压力传感器 | PT,PCV,PIA#,PIT,PIC,PI,PS | |
流速传感器 | {FIA},{FIT},{FITC},{FIC,FT,MFC,MFM} | |
这些设备的识别标签遵循下列特殊格式:
<FunctionIdentifier><Cascade Module>Cascade Number<Device Number>
例如,一阀门为“module A21, incascade eight, associated with centrifuge 160, the label would be PV-A21-8-160”。
用于解析这些字符串的逻辑为我们提供了额外有趣的线索。例如,级联模块必须在A21到A28之间,这样才能与位于伊朗纳坦兹的级联模块的配置信息匹配。Stuxnet病毒的每一个模块最多有18套级联,每套级联有165个离心机(分为15个等级),这些与纳坦兹公布的配置信息相匹配。
如下所示,这些离心机被分布在铀浓缩过程的不同阶段。
表 2离心机和阶段配置信息
每一阶段内,离心机会被进一步划分为4个一组的子集。
在指纹识别过程中,Stuxnet为每一个设备配置一个与其配置信息相符的计时器。一旦这个计时器的数值超过某个特定的阀值,Stuxnet病毒则认为该系统正在通过指纹识别与目标系统进行匹配,并向系统中注入PLC攻击代码。Stuxnet病毒还能判断出18个级联中6最具攻击价值的目标,并将这些信息连同设备地址及其配置信息一起存储在数据块DB8061里。
攻击过程
与Stuxnet1.x相似,417PLC设备攻击代码包含一个可能具有8种状态的状态机。各个状态通过关闭位于18套级联中的6个级联内的阀门来达到攻击目的。
Ø 状态0-等待:完成系统识别,等待铀浓缩过程达到稳定状态,之后进行攻击(大约30天)。
Ø 状态1-记录:进行快照和创建虚假输入信息数据块,以备后续使用。
Ø 状态2-攻击离心机阀门:开始回放虚假输入信息,关闭大部分离心机上的阀门(最初阶段离心机的阀门除外)。
Ø 装态3-读取二级压力:打开处于最后阶段级联的阀门,获取较低压力读数。
Ø 状态4-等待改变压力:等待所需的压力变化或时间限制。这一阶段大概需要2小时。
Ø 状态5-攻击辅助阀门:打开除了接近阶段1(或阶段10)的所有阀门,此过程需要持续3分钟。
Ø 状态6-等待实施攻击:等待6分钟,同时阻止任何状态的变化。
Ø 状态7-攻击完成:重启回至状态0。
通过关闭除了位于初始阶段的阀门,UF6(六氟化铀)可继续在系统内流动。仅是这一行为就可引起离心机的严重破坏,然而,攻击的目的是使这一压力达到正常压力的5倍。在此压力下,铀浓缩系统可能会被严重损坏,UF6甚至可能凝华为固体。
这种攻击方法是否取得成功,我们无从考证。即使这种方式是成功的,攻击者还是转换了攻击策略——将“改变离心机速率”的技术应用于Stuxnet1.x。
对于科学与国际安全研究所(ISIS)在分析铀浓缩离心机系统所提供的帮助,我们表示非常感谢。
我们会将接下来的博客、视频及技术白皮书里分享更多关于Stuxnet 0.5组件的细节信息,如:
Ø Stuxnet 0.5: 缺少的环节
Ø Stuxnet 0.5: 演变过程
Ø Stuxnet 0.5: C&C 能力
Ø 视频: Stuxnet时间线和攻击策略