WinCC之后发生了什么?
——浅析攻击工业控制系统对现场设备的影响过程
时间 : 2012年01月17日 来源: 安天实验室微电子与嵌入式安全研发中心
1.重化工业企业自动控制系统全景——工业控制系统体系结构
目前工业控制系统主要有集散控制系统(DCS)和现场总线控制系统(FCS)两种类型,DCS和FCS的体系结构分别如图1和图2所示。
图1 DCS体系结构
图2 FCS体系结构
DCS的特点是现场仪表基于模拟信号,例如4mA—20mA模拟电流信号进行通信;FCS的特点是现场仪表基于现场总线和现场总线协议进行数字化通信,除此之外,组态软件(例如WinCC、浙大中控、组态王等)在DCS和FCS中的作用基本相同,其主要功能是实现自动控制系统中的控制器(调节器),相当于用软件实现虚拟控制器。变送器、控制器和执行器是现代自动控制系统中的三大核心部件。
现代自动控制系统(过程控制系统)的基本组成原理框图如图3所示。
图3 现代自动控制系统基本组成原理框图
某些企业的自动控制系统混合有DCS和FCS的特征,这主要是因为现场仪表不全是基于单片机和嵌入式系统的智能仪表,但无论是DCS方式和FCS方式,控制器均由组态软件实现。
现代控制器可以选择多种控制算法,例如P(比例)、PI(比例积分)、PD(比例微分)、PID(比例微分积分)等,控制算法和相关参数是决定自动控制系统特性和实际性能的核心。对于组态软件而言,控制算法和相关参数一般保存在配置文件或者数据库中,例如WinCC使用SQL Server数据库保存。
2.攻击工业控制系统对现场设备的影响过程
(以Stuxnet蠕虫攻击WinCC组态软件为例)
2.1 从天然铀中分离核燃料铀235的原理
天然铀一般不能够直接作为核燃料或者原子弹核装药,因为只有同位素铀235才具备慢中子引发裂变的能力,而天然铀有3种同位素:铀238、铀235和铀234,其中铀238占99%以上,铀235只占0.7%左右,铀234痕量。如果作为反应堆核燃料,铀235浓度要达到4%左右,作为原子弹核装药的武器级铀235,其铀235浓度一般在90%以上。
由于铀的3种同位素化学性质完全相同,因此不可能用化学方法分离或者浓缩铀235,分离或者浓缩铀235一般采用物理方法,其原理是:天然铀矿石经过水冶工艺得到重铀酸铵[(NH4)2U2O7],俗称黄饼(Yellow Cake),然后进一步制得挥发性的六氟化铀(UF6),然后利用六氟化铀238和六氟化铀235气体密度的微小差异进行分离。
最早使用的方法是气体扩散法,我国第一颗原子弹的核装药即采用该方法分离,效率较低。上世纪60—70年代,气体离心法(以下简称离心法)投入实用,核心设备是离心机。可以用一个简单的比喻来说明离心法的基本原理:将大米和谷糠一起放在筛箩中转动,则较重的大米先被“甩”到边缘,而谷糠较轻,不容易被“甩”出,集中在中间,在离心法中,六氟化铀238即相当于“大米”,六氟化铀235则相当于“谷糠”。
2.2 离心法分离铀235的设备及其自动控制
离心法分离铀235的基本设备是离心机,为了得到较高浓度的铀235,通常将多台离心机串联使用。
离心机的自动控制相当复杂,被控变量可达7个。仅举一个简单的例子:离心机转速是影响分离功率和分离系数的重要参数,对于一台特定的离心机,必须保持离心机转速为一个恒定值,否则会严重影响铀235的分离。为了保持离心机转速恒定,使用转速传感器和变送器测量离心机转速,转速数据发送到控制器,再由控制器控制调速器(执行器),完成离心机转速的自动控制。
2.3 攻击工业控制系统对离心机的影响过程
在离心法铀235浓缩工厂中,可以使用DCS自动控制系统,并使用WinCC组态软件实现虚拟控制器,作为自动控制系统的核心。WinCC将测控数据,包括控制算法和相关参数保存在SQL Server数据库中。
Stuxnet蠕虫攻击WinCC,由于WinCC使用硬编码保存访问SQL Server数据库所需的用户名和密码,因此Stuxnet蠕虫可以轻易修改保存在SQL Server数据库中的WinCC测控数据。
一个可能的攻击场景:假设离心机转速采用PID算法实现自动控制,Stuxnet蠕虫攻击WinCC,修改SQL Server数据库中的PID算法相关参数,则离心机转速就会发生变化,甚至导致离心机转速自动控制失灵,轻则导致离心机分离功率和分离系数下降,分离核燃料级或者武器级铀235失败(铀235浓度不足),重则可能损坏离心机,最终导致停产事故。参见图4。
图4 一个可能的攻击场景图