刘伟,梁光明,鲍金鹏
(国防科学技术大学电子科学与工程学院,湖南长沙410073)
摘要:深入研究了当前工业控制系统PLC现场可编程的原理,从数据的保密性、完整性和身份可认证性三个方面分别建立安全性模型,分析出现场可编程的安全机制在以上三个方面缺乏必要的安全防护。搭建实验平台,通过模拟实验验证了存在的安全隐患。
教育期刊网 http://www.jyqkw.com
关键词 :工业控制系统;现场可编程;安全隐患;工业以太网
中图分类号:TN710?34 文献标识码:A 文章编号:1004?373X(2015)17?0153?05
0 引言
随着工业化和信息化的融合不断深入,信息技术开始更加广泛地运用到工业控制领域。当前,信息化工业控制系统已经广泛应用于能源、电力、化工等工业领域,工业控制系统已然成为国家安全战略的重要组成部分。为了方便工业控制系统中各个部件的协同和信息共享,工业控制系统正逐渐打破原有的封闭性,向开放化的方向发展,采用标准、通用的通信协议和软硬件系统,将导致工控系统面临病毒、黑客入侵等安全威胁。2010 年,伊朗布什尔核电站遭到“震网”(Stuxnet)蠕虫病毒攻击[1],“震网”病毒以伊朗核电站使用的数据采集与监视控制(SCADA)系统作为攻击目标,利用Windows和工业控制系统PLC的动态链接库(DLL)缺陷进行传播和攻击,致使伊朗核电计划被延缓。在这次事件后,工控系统安全成为工控领域的热点问题。如何有效的保护工业控制系统PLC的安全,防止不法分子和黑客对工业控制系统PLC实施入侵和破坏,具有重大的经济和战略意义。
相较以往工业控制系统的安全报告和相关文献的重点突出在数据的实时采集与监控安全[2]、外网到内网的保护[3]上,本文从工控系统的现场可编程机制出发,对工控系统潜在的安全隐患和面临的威胁进行分析,提出了安全隐患分析方法和模型,并对存在的安全威胁进行了总结。
1 工业控制系统现场可编程原理
工业控制系统的现场可编程,就是在工业控制系统的运行现场,编程上位机通过现场总线或以太网对工业控制器进行编程控制(包括用户程序下载、工程信息修改等),可以即时改变现场设备的运行状态。现场可编程技术在工控系统的广泛应用使得工业生产中工控系统对现场设备的实时控制达到了一个全新的阶段。
1.1 工业控制系统的基本构成
工业控制系统主要由以下几个部分组成:SCADA(Supervisory Control And Data Acquisition)系统,即数据采集与监控系统,分布式过程控制系统DCS(DistributedControl System),可编程逻辑控制器PLC(ProgrammableLogic Controller),人机界面HMI(Human Machine Inter?face)等。其中的工业控制器即PLC是整个工业控制系统的核心部件,直接控制外部设备和工业生产。PLC直接受到编程上位机和监控站的控制,图1为工业控制系统简化结构图。
PLC的现场编程包括以下几个步骤:
首先在编程上位机编写STL/LAD高级程序,由编程软件编译成可执行代码;再将可执行二进制代码组合到网络数据包中,通过以太网接口下载到控制器PLC中,PLC的以太网接口接收到数据包后,解析并执行这些代码,这样就实现了远程上位主机对PLC的现场编程。随着网络技术的发展,PLC的现场编程不仅包括传统的用户程序代码编程,更是延伸到了更底层的固件代码,例如可以通过以太网接口实现固件版本更新等高级操作。
工业控制系统现场编程的数据采用现场总线传输,其中使用最广泛的是工业以太网连接,图3是工业以太网的层次模型[4]。
如图3所示,工业以太网协议基本上是直接在TCP/IP层以上附加应用层协议实现的,通过直接把应用层报文嵌入到TCP报文中,组成工业以太网数据帧。所以工业以太网协议的低层次数据链路层、传输层、网络层采用的是标准协议,应用层则一般采用内部非公开协议。工控系统的安全策略大多都在应用层中实现,具有一定的研究意义。
工控系统应用层协议主要具有以下几个特点:
保密性:传统IT 网络的应用层协议都已经对外公开,具有统一的标准,所以按照协议格式,可以轻松分析得到包头和各数据段表示的信息。而工业控制系统的应用层协议则没有统一的标准,工业控制领域的系统开发公司针对自己的产品都指定了具有各自特点的应用层协议,且不对外公开。
实时性:工业控制系统设计过程中最重要的指标就是实时性,从而要求工业控制系统的应用层协议也必须满足实时性的要求。然而正是由于必须满足实时性的要求,应用层协议在设计过程中主要的系统资源消耗在实时控制方面,导致无法消耗更多资源在系统安全的保护上。
可侦测性:工业控制系统采用的网络结构与传统IT网络类似,具有分层结构。如果能侵入工业控制内网,则可以利用传统IT 网络的嗅探、侦测技术对工业以太网的数据进行截获、窃取等操作,甚至对关键数据进行篡改。
2 现场可编程安全隐患分析模型设计
工业控制系统在设计过程中注重系统的可用性和实时性,而对系统信息的安全没有做出应有的防护。尤其在现场可编程机制中,编程上位机通过工业以太网与PLC连接实现数据传输,上位机将PLC应用程序下载到PLC,实际上是将PLC直接连接到了上位机和监控站所在的内部网里。仅仅通过在工业以太网上设置工业防火墙,防止内部网络的非法访问,不能保证内部数据的安全。因此,现场可编程机制存在严重的安全隐患。下面从保密性、完整性、可认证性三个方面对工控系统现场可编程机制的安全性进行分析建模[5?6]。
2.1 现场编程数据的保密性模型
保密性是指网络信息不被泄露给非授权的用户或实体,信息只为授权用户使用的特性。
数据信息的保密性主要分为两个方面:信息的防侦收和信息加密。
根据信息数据的传输和处理,建立基于信息流的现场编程数据保密性安全模型,如图4所示。
在工控系统的现场可编程机制中,数据的保密性主要表现在对PLC用户程序指令的可执行代码的加密和解密、PLC 的数据经过工业以太网时的防护(主要通过工业防火墙)等安全措施。如图4所示,上排横向过程表示用户程序数据A 经过加密变换E 后,组包进入工业以太网传输;接收端经过解包,得到加密通信数据,再经过解密变换D 还原出原始数据A。其中工业以太网设有工业防火墙,防止非授权访问。若是黑客突破了工业防火墙,窃取了工业以太网中的通信数据,即使破译了应用层的不公开协议,由于不能获取数据的加密方式和密钥,只能分析得到加密数据,而不能恢复出原始数据A。
然而,课题组对工控系统的现场编程过程的研究结果却令人大吃一惊,工业以太网的二进制通信数据竟然毫无加密处理,而是以明文的形式传输。这就给黑客和不法分子侵入工控系统、窃取核心机密可乘之机。由于工控系统缺乏对数据的加密处理,黑客通过网络手段获取通信数据,就能直接得到现场编程的重要指令,造成极大的安全威胁。
2.2 现场编程数据的完整性
完整性是指在传输、存储信息或数据的过程中,确保信息或数据不被未授权的篡改或在篡改后能够被及时发现。图5为工控系统现场编程数据完整性验证模型图。
如图5所示,通信数据A 在发送之前,使用杂凑函数f ( ) 计算出信息摘要f (A) 附在数据A 后,通过工业以太网传输到PLC,PLC使用函数f ( ) 对接收到的数据部分B 再次计算,比较f (A), f (B),以此验证数据A 的完整性。假设通信数据被黑客截获且关键数据被篡改,如图中虚线表示,信息数据部分被篡改为B,而摘要部分f (A) 保持不变,通信数据到达接收端后,对信息数据部分B 再次计算f (B),并与原摘要f (A) 作比较,以此检验数据完整性是否被破坏。
工控系统的现场可编程机制,为了更简单、快捷、实效地传输程序指令,需要尽量减少通信数据的冗余,提高传输效率。因此,目前主流工控系统的现场可编程机制没有设置对数据的完整性验证,忽略了系统的安全性,也就可能导致通信数据程序指令存在被恶意篡改的危险。
2.3 上位机身份的可认证性
可认证性是指对操作客体对操作主体的认证。在工控系统的现场可编程机制中,编程上位机拥有对下位PLC的直接操作权限。为了保证系统的安全,PLC需要对编程上位机的身份信息进行认证[7],上位机身份认证模型如图6所示。
工控系统的现场编程过程,首先需要编程上位机与PLC建立以太网通信连接(一般采用TCP 3次握手),然后通过工业以太网发送消息相互验证身份信息。
如图6所示,倘若黑客使用工业以太网上另一台非上位主机与PLC建立伪上位机连接,PLC接收端会对上位机的身份进行验证,确认该上位主机是否有对PLC操作的权限,确认身份后,才接收目标主机传来的信息数据,这样就能保证现场可编程数据的安全。通过对现有工控系统上位机与PLC通信机制的研究发现,为了节省系统资源,降低通信数据冗余,现阶段普遍使用的PLC尚未设置对上位机的身份验证环节,故不能对系统安全实施有效保护。因此,在上位机的身份认证方面,PLC依旧保持较弱的安全性,存在安全隐患。
综上所述,可以总结出工控系统现场可编程安全机制主要分为三个方面:现场编程保密性、现场编程完整性和可认证性,每个方面都存在一定的安全隐患,主要有以下几点:
(1)工业以太网中引入了交换机,似乎提高了安全性,但交换机本身就存在大量安全漏洞,例如,更改交换机配置,ARP欺骗攻击,监视端口被利用都可能导致交换机被黑客攻破,从而获得直接侵入PLC的机会[8]。
(2)以太网的通用标准早已被人们所熟知,工业以太网应用层以下的协议都是通用协议,可以直接解析,所以,不法攻击者只需掌握或破译应用层协议格式,就能轻易构造合法的数据包,模仿编程上位机对PLC进行实时操作。
(3)工业以太网的数据传输大多采用明文,未使用任何加密手段,这又给黑客实施攻击提供了方便,黑客一旦破译了应用层协议格式,就可能得到PLC中运行的应用程序,这是相当危险的。
(4)PLC 对编程上位机发送的网络数据包不验证来源的可靠性,这些数据包中包含重要的程序指令,伪造的数据包能轻易对PLC运行状态进行更改。黑客甚至可能利用内网肉机与PLC建立伪上位机可编程连接,对PLC实施恶意操纵[9]。
3 隐患验证实验
根据工控系统现场可编程机制安全性的三个方面,进行以下3个小实验来验证现场可编程机制存在的安全隐患。
搭建一个简单的实验平台,包括实验编程上位机、监视监控主机、可编程控制器(PLC)、模拟攻击主机等,通过交换机相连构成工业控制局域网系统。假设通过某种手段,黑客侵入了内部局域网的一台主机,利用该主机对系统实施攻击。
3.1 现场可编程信息破译实验
正常运行实验平台,使用编程上位机对PLC进行现场编程(例如发送删除DB1数据块的指令),同时抓取工控系统现场编程过程的网络通信数据,图7为利用抓包软件wireshark获取的实时通信二进制数据包。
如图7 所示,数据包的末尾可以清楚地看到0A00001B._DELE 的AsciI 码。显然,实验平台使用工控系统的网络传输过程采用的是未加密的明文传输,一旦被网络黑客获取网络数据,就能轻易破译现场编程的重要指令,存在严重的安全隐患。
3.2 通信数据篡改实验
工控系统正常运行,现场编程传送给PLC一个包含2 s时间周期的DB块。利用网卡混杂模式获取网络数据包,找到表示2 s时间数据的二进制代码,修改为1 s,然后按照原DB模块下载的通信时序重新下载,观测实际通信周期。
从二进制通信数据中提取核心信息,对其进行篡改并按照相同的时序重新发送至PLC,观测工控系统的相关指标。将表示时间的二进制数据0x02 改为0x01,并按照相同的时序重新发送至PLC,观测工控系统的实时压力数值,如图8所示,显然对通信数据的篡改已经生效,数据周期由2 s变为1 s。
3.3 伪上位机恶意控制实验
截获上位机和PLC通信的网络数据包之后,使用另一台内网实验主机,利用socket向PLC发送相同的数据内容,如图9所示。
完成相同的通信时序之后,在PLC上实现了相同的编程效果。实验证明,PLC 对上位机身份没有验证,倘若黑客利用内网肉机建立了伪装的上位机,就能实现对PLC的恶意控制。
实验分析如下:工控系统的现场可编程机制存在严重的安全隐患,如采用普通网线传输数据,通信数据可能被监听和截获;不验证上位机信息就能与PLC建立现场编程连接,可能存在恶意伪上位机连接;通信数据被篡改后仍然能正常下载到PLC并生效,缺乏对数据完整性的验证。
4 结语
本文从工控系统的现场可编程机制入手,研究了工控系统通过工业以太网实现现场编程所存在的安全隐患,主要就保密性、完整性、认证性等方面对现场可编程过程进行了安全性分析,总结了系统存在的部分安全威胁。
当前工控系统逐渐向开放化、智能化的方向发展,方便用户的同时也会存在一些安全隐患,如工业以太网的安全漏洞、PLC对外来数据无验证等。如何在丰富系统功能、简化操作过程的同时确保工控系统的安全,是一个需要深入探索研究的课题[10]。