基于验证分离的PLC保护系统
原文
PLC Protection System Based on Verification
申明
版权归原文作者及出版单位所有,如有侵权请联系删除。
摘要
监督控制和数据采集系统(SCADA)在工业控制系统(ICS)中的可编程逻辑控制器(PLC)的帮助下,在监督和控制工业生产方面发挥了重要作用。PLC从SCADA接收控制信息或程序以控制生产设备,并将生产数据反馈给SCADA。一旦SCADA被攻击者控制,就可能威胁到工业生产的安全。由于缺乏安全保护,如工业控制协议的身份认证和加密,增加了潜在的安全风险。在本文中,我们提出了一个PLC保护系统,它与SCADA和PLC之间的监控器以及物理上分离的监控站相结合。通过使用PLC保护系统,身份验证和命令验证被分开,操作员的身份和相应的命令都被记录下来。实验表明,即使SCADA被攻击者控制,我们的系统仍然可以保护现场的PLC,并记录关键命令操作者的身份,这有利于对恶意活动进行追踪和取证。
1. 简介
工业控制系统(ICS)广泛应用于电力、污水处理、石油化工和其他社会基础工业设施。工业控制系统一般由可编程逻辑控制器、人机界面(HMI)、远程终端单元(RTU)等组成。随着信息技术和互联网技术的发展,过去与互联网物理隔离的传统工业控制系统正在被网络化,变得更加智能化[1]。为了将监测和控制分开,工业系统中的传统协议逐渐采用传统网络中的TCP。例如,Modbus协议被扩展为Modbus TCP。然而,原有的工业控制协议缺乏认证和数据加密等安全措施。随着这些隐患的逐渐暴露,连接到公共网络或企业办公网络的工业系统变得越来越脆弱。
人机界面和工程站对本地PLC有很高的控制能力,如果攻击者获得人机界面和工程站的控制权,可能会导致生产事故和经济损失。例如,Stuxnet利用HMI中WinCC软件的漏洞来控制WinCC,它可以截获PLC数据并发送恶意指令[2]。2011年,伊利诺伊州的供水SCADA被黑,造成水泵损坏[3]。2013年,以色列的交通部门被黑客攻击,导致大规模交通堵塞[4]。2014年,Havex病毒入侵了欧美能源部的SCADA[5]。2015年,在乌克兰大停电事件中,攻击者控制了一个工程站,并通过工程站远程控制PLC,造成电网故障[6]。在黑帽会议上,黑客组织展示了一种驻扎在PLC中的蠕虫病毒。一旦蠕虫感染了PLC,该蠕虫可以自动寻找局域网中的其他PLC并替换其中运行的程序,造成大规模感染[7]。2019年,挪威海德鲁铝厂被黑客攻击,导致生产中断,几个工厂关闭,全球铝价上涨1.2%[8]。
图1是中国国家统计局的数据。全球工业系统正受到越来越多的攻击。工业系统广泛用于水处理、石油化工和其他基础设施。工业安全关系到国家安全和人民生活。越来越多的国家已经意识到工业系统安全的重要性。
目前,在工业控制系统中,监控系统和PLC存在着许多安全威胁。主要问题如下:
(1) 人机界面和工程站在Windows或Linux操作系统上运行,存在各种漏洞。此外,运行在它们上面的监控和配置软件也有安全漏洞。显然,人机界面和工程站运行在一个不可靠的环境中。它们面临着被攻击者控制的风险。
(2) 人机界面和工程站缺乏身份管理和命令类型及命令时间的记录,因此难以追踪相关操作[9]。
(3) 工业控制系统协议中缺乏认证、数据加密和其他方法,使得通信流量很容易被窃听和伪造[10]。没有办法验证命令的来源及其合法性。
(4) PLC缺乏认证和其他安全功能。他们薄弱的处理能力、固件封闭、工业协议中缺乏安全控制以及其他原因使他们容易受到攻击。
为了解决上述问题,我们研究了一个基于验证分离的PLC保护系统。该系统由一个监测站和一个监视器组成。监测站是在物理上与工业控制网络和互联网隔离。它用于监控和拦截HMI、工程站或其他组件发送的数据。此外,当人机界面或工程站被攻击者控制时,系统采用数据分类、流量加密、权限分类等方法来确保工业生产设备的安全。发送给PLC的关键命令被记录下来,便于追踪攻击命令和流量的来源。
本文的其余部分组织如下。第2节介绍了PLC安全方面的相关工作,第3节描述了所研究的系统结构和相关方法,第4节介绍了我们的实验结果和评估,第5节概述了我们的总结和未来研究。
2. 相关工作
这项工作旨在解决工程站或HMI被恶意控制,向PLC发送恶意代码和命令的问题。Malchow等人[11]设计了一个PLC防护装置,通过在PLC和工程站之间增加一个防护装置,对所有西门子PLC程序的MC 7代码进行解码并与以前的版本进行比较。工程师通过与PLC防护装置的物理交互来批准或拒绝代码的上传。然而,这种方法不用于检测发送到PLC的相关数据,只用于检测PLC的代码,而且没有能力阻止恶意数据的注入。Zonouz等人[12]提出了一种基于PLC代码的符号执行的方法来检测PLC恶意程序。该方法首先反转了安全要求,并生成了相应的不安全要求(UR)。然后,它找到满足条件的路径P,其中P是TEG和UR的笛卡尔乘积。如果没有满足条件的路径,代码符合安全要求,可以安全执行。该方法自动确定恶意代码。在路径求解过程中,存在路径爆炸问题。该方法的检测效率相对较低。由于是自动判断,有可能出现误判。Clark等人[13]提出了一个新的防御框架,该框架使用一组随机加密密钥来验证系统操作员发送给PLC的控制命令。该框架使用密码学分析、控制理论和博弈论方法来量化恶意控制指令的影响,并判断相关的控制指令。这种类型的自动判断也有一定的误报率。误报可能对现场生产安全造成严重威胁。Lin等人[14]在深入分析工业协议中的Modbus协议的基础上,提出了一种基于自动学习的恶意入侵检测方法。该方法也存在同样的问题,即无法拦截相关的命令,并给出假阳性结果。Ponomarev等人[15]提出了一种通过测量和验证网络传输的数据来检测入侵网络的ICS的方法。该入侵检测系统在检测同一网络上的攻击者和工程站时能够达到94.3%的准确率,在检测不同网络的攻击者和工程站时能够达到99.5%的准确率。这种自动判断也存在一些误报率的问题。Yau等人[16]提出使用半监督的机器学习来检测基于捕获的PLC内存地址值的异常PLC行为。Halas等人[17]提出使用加密算法对PLC上的数据进行加密以达到数据完整性的目的。这种方法与现有使用的协议有兼容性问题。
当工程站或HMI被攻击者控制时,没有有效的方法来解决现场设备的安全问题。Bestak等人[18]提出了一种用于PLC的加密算法来加密数据。这种方法与现有的协议存在兼容性问题,不能防止主机在被黑客控制后对PLC进行攻击。Wardak等人[19]认为,对PLC的攻击都是利用了未经授权访问PLC的漏洞。他们提出,PLC和其他设备之间的数据安全模块可以解决这个问题。然而,攻击者仍然可以利用主机来攻击现场设备。Zhang等人[20]设计了一个基于状态的无深度网络深度包检测(DPI)系统,可以检测恶意网络包的有效载荷。当主机被控制时,这个系统不能防止对现场设备的攻击。FigueroaLorenzo等人[21]提出一个新的基于角色的访问控制模型(RBAC)。该模型使用角色和单位ID的消息授权方法来确保访问的合法性。单位ID是用于授权Modbus帧的唯一标识符。这种方法只能防止外部设备非法操作现场设备,不能保证攻击者控制下的主机的安全。Lin等人[22]提出了一种基于自动学习的恶意入侵检测方法。他们认为,为了渗透工业网络,必须首先确定ICS网络的拓扑结构。当攻击者发起攻击时,必须】然有一些异常的流量。然而,这种方法不能避免在主机被控制后对现场设备的攻击。Yong等人[23]分析了行业控制协议的交互行为,并使用机器学习方法收集设备的物理指纹信息,为PLC和物理设备建模。然后,该方法利用这些信息来发现协议和PLC的异常行为。
3. 基于验证分离的PLC保护系统
3.1 工业系统安全问题
一个典型的工业控制系统架构,包括HMI、工程站、历史数据服务器、办公网络、交换机、防火墙、PLC和现场设备,如图2所示[24]。人机界面是一个允许操作者监视和控制生产过程的设备。工程站是一个工作站,供工程师用来配置、编程和修改计算机系统[25]。历史数据服务器是一个数据库服务器,记录过程控制系统的历史状态。办公室网络通过防火墙与生产网络相连。一个PLC,可以使用工业通信协议接收来自HMI的控制命令,它是一个现场设备,可以直接连接到传感器、执行器或其他现场设备[26]。
一个人机界面和工程站可以控制PLC[27]。然而,在工业控制系统中,企业信息网络和现场控制网络只使用网络防火墙进行隔离。攻击者可以将企业信息网络渗透到工业控制网络中,攻击PLC。APT攻击也是一种持续的高威胁攻击:攻击者通过一系列手段渗透到现场控制网络中,然后进一步控制HMI或工程站,以控制现场设备。一旦HMI或工程站被攻击者控制,攻击者就可以截获和篡改员工操作的正常数据,从而攻击现场设备。这种类型的数据篡改来自HMI或工程站,使其难以拦截。一般的攻击路径如图3所示。攻击者利用办公网络的漏洞,通过互联网攻击办公网络。然后利用办公网络来攻击监控和收集系统,如HMI、工程站或历史数据服务器。在控制这些设备后,他们利用这些设备来攻击PLC,如通过程序篡改和数据篡改。
图4显示了一个对乌克兰发电厂的攻击模拟。攻击者利用办公室电脑的CVE- 2014-4114漏洞来攻击办公室电脑。然后,办公室电脑被用来控制SCADA电脑。出现这种情况是因为SCADA电脑与PLC相连。访问PLC不需要认证,而且指令都是纯文本的。攻击者利用SCADA计算机向PLC发送停止指令,使现场设备停止工作,从而造成大规模停电。
目前基于流量分析、访问控制和设备监控的保护方法不能防止主机被黑客控制后攻击PLC。我们需要一种新的保护策略和方法来防止黑客利用主机来攻击现场设备。如果我们能对主机上的PLC发送的命令进行认证,将大大减少此类事件的发生。我们设计了一个基于验证分离的PLC保护系统。在保护验证服务器的同时,该系统在不影响现有架构的情况下,对发送到PLC的指令的合法性进行验证。
3.2 系统结构
为了解决上述问题,考虑到与现有工业控制系统的兼容性,我们设计了一个将认证与现有数据传输分离的系统。其结构如图5所示。
该系统由一个监视器、监测站和高速无线网络组成。监视器直接与PLC物理连接,而它通过一个独立的高速无线网络与监测站相连。监控器拦截传输到PLC的命令,对命令进行加密,并通过高速无线网络将其传输到监控站。相关的命令被记录下来,以便后续查询。监控监测站确定命令的合法性,并验证核实命令的人的身份和权限。高速无线网络在监测站和监测器之间使用低延迟的网络进行通信。高速无线网络不与现有的工业网络连接,以确保与工业网络的物理隔离。
其工作流程如图6所示。监控器收到来自人机界面或工程站的命令后,它确定命令的类型。如果该命令是一个存储操作或一个停止/启动操作,数据将被加密并发送到监控站。然后,工作人员确认数据的安全性,并向监视器发送接受或拒绝命令。监控器收到来自监控站的命令,并决定是否丢弃数据包或将其转发给PLC设备。
监测站与工业网络物理隔离,禁止未经授权访问外部设备,以确保监测器运行环境的可信度。监测站和监测器使用加密的通信方式,以确保通信的可靠性。监控器能够记录命令,以确保其可追溯性。未经监控站允许,监控器不会转发数据,确保外部攻击无法控制PLC。
3.3 基于验证分离的PLC保护系统模型
工业通信网络中传输的数据分为两类:实时数据和非实时数据[28]。非实时数据包括用户程序数据、配置数据和部分系统状态监测数据。这些数据对其实时性要求并不苛刻,允许相对较长的时间延迟[29]。过程监控和控制应用的丢包和抖动不那么敏感,它们可以容忍二类传输延迟[30]。因此,我们拦截从HMI或工程站传输到PLC的数据,并对命令进行分析。如果该命令是内存操作命令,如上传数据块、删除数据块、写入内存、关机或启动,我们将通过高速无线网络将加密的数据发送到监控站。考虑到机器学习或深度学习方法有一定的误报率,对于这类数据,建立的程序变更或数据变更模型的准确性会大幅降低,因此,我们采用工作人员的方式来验证数据是否被恶意篡改,以保证数据安全。我们将工作人员分为四个级别,如表1所示。
我们还记录了负责检查的人的身份,以确保这种危险操作的可追溯性,从而对内部员工的恶意行为提供一定的保护。为了确保身份的唯一性和钥匙的安全性,我们采用了双钥匙的方法。这两种类型的密钥是共享密钥和私人密钥。监控器使用可以改变的共享密钥向监控站传输加密数据。每个工作人员都有自己独特的私人密钥。在工作人员审查了监控器上传的数据后,他们用自己的私钥对发送给监控器的命令进行加密。这样做的好处是,即使共享密钥被破解或泄露,监控者上传的数据可能被篡改,而工作人员发出的命令仍然可以保证没有被篡改。在工作人员的私钥被泄露的情况下,由于每个人都有自己独特的私钥和权限限制,也可以减少系统被完全控制的风险。
为了减少数据库的安全风险,我们将数据库分开。监控站和监视器各有一个数据库。监测站的数据库用于存储工作人员信息,包括权限信息、通信密钥、ID信息、创建者、创建信息和监测站的密钥索引。监测站存储的密钥索引是监测器中工作人员密钥的索引,可用于减少查表时间。监视器中的数据库存储了工作人员的ID、工作人员的钥匙、创建者和权限信息,并记录了相关的命令和时间。
系统的模型如图7所示。该监控器由一个加密模块、一个解密模块、一个控制模块、一个认证模块、一个数据库和网卡设备组成。加密模块负责对来自工程站或HMI的数据进行加密。解密模块负责对来自监测站的数据进行解密。数据库用于记录合法身份、权限等级、私钥等信息。认证模块负责对来自工程站或HMI的数据进行分类,网卡负责转发数据。
监控站的解密模块负责解密来自监视器的数据。加密模块负责对工作人员发送给监视器的数据进行加密,如命令、身份和时间。客户端模块负责显示监控器发送的数据并验证工作人员的身份。数据库用于存储工作人员的身份、工作人员的私钥、监视器中的私钥索引和其他数据。
工程站和HMI负责发送相关指令或在现场监控PLC。它们由一个控制或监控程序和一个网卡组成。
工程站将数据发送至监控器。监控器对数据进行加密,并将其发送到监测站。监测站进行命令显示、身份验证和命令验证。然后,监测站对数据进行加密,并将其发送给监视器。监测站根据数据确认身份并执行相应的行动。
3.4 系统工作流程
为了确保监测器和监测站之间的安全通信,我们使用了一种加密方法。主流加密算法分为对称加密算法和非对称加密算法。非对称加密算法需要很高的计算资源,一般只用于数字签名。因此,我们采用对称加密法进行加密。主流加密方法的特点见表。AES算法在运行速度、安全性和资源消耗方面具有优势。因此,我们采用128位AES算法进行加密。
如图8所示,首先,工程站或HMI向监视器发送数据[33]。监控器接收数据并获取命令,以确定它是一个内存操作、停止或启动命令。如果该命令是这些命令之一,监控器将使用与监控站共享的密钥PKr对监控器的mac地址、时间戳和数据进行加密,形成消息{PKr(数据,mac,Ts)}。然后,监控器将向监控站发送该消息。如果如果没有发生这种情况,数据将直接转发到PLC。此外,时间监控将被启动。30秒后,如果监测站没有发出指令,那么数据将被丢弃。
在收到监测器的数据后,监测站使用PKr对数据进行解密。然后,它验证时间戳Ts和mac,以验证一个消息是否是重放攻击。此外,开始进行时间监测。如果30秒后没有任何操作,该信息将被忽略。在员工接受或拒绝命令R后,监测站查询自己的数据库以验证身份ID,并获得该员工的私钥PKID和密钥在监测器中的索引。然后,该监控站使用PKID对命令R、雇员的身份ID和时间戳进行加密,形成一个带有索引的消息(PKID {ID, R, Ts}, index)发送给监控人员。
监控器在从监控站获得的信息中取出索引,并用索引查询数据库,以获得雇员的私钥PKID,该私钥随后被用来解密雇员的ID、R和Ts。然后,监测站验证Ts以防止重放攻击,并验证ID以确保身份的合法性。如果R是一个接收命令,它将把雇员的ID、数据和Ts记录到文件中,并将数据发送到PLC。如果R是一个拒绝命令,则将员工的ID、数据和Ts记录到文件中,并将数据丢弃。
当监控器收到PLC发送的数据时,数据会直接转发到HMI或工程站。
4. 实验评估
4.1 系统验证
我们使用MacBook Pro作为显示器,模拟了一个HMI和工程站被控制着向PLC发送数据。网络拓扑结构如图9所示。监测站和显示器在同一个局域网上。它们以无线方式进行通信。HMI和监视器在同一个局域网上,监视器和PLC在同一个局域网上。
在这个实验中,我们拦截了西门子S7协议中的0×05(写)、0×29(停止PLC)和0×28(启动PLC)等命令。实验表明,没有任何主机(包括HMI和工程站)可以在没有人员验证的情况下对PLC内存进行修改。它可以很好地保护现场的工业设备。图10是我们的实验设备。
我们向PLC发送了一条写命令,如图11所示。该命令写的是(0×05)。数据长度为3字节,数据为0×00000000。
图12显示,监测站接收来自监视器的数据。收到的数据是加密的二进制数据。解密后,数据内容被恢复。操作指令被写入。数据长度为3字节。数据地址块为1,数据为00000000。
图13显示了员工的ID、时间和监控器在收到指令后记录的接受数据。接受的数据被记录为HMI发送的原始数据
由于我们拦截的是对PLC内存进行操作的各种HMI命令,而且这类命令受人类行为的影响较大,因此对这类命令进行时间延迟测量意义不大。然而,有些程序,如监控程序和数据库程序,会不断查询PLC数据。在我们的系统中,我们需要拦截人机界面发送的数据来确定命令。如果一个命令是一个内存操作命令,那么它将被加密并发送到监控站。如果一个命令是一个查询命令,那么它将被直接转发到PLC。因此,这个过程会增加一定的时间延迟。因此,我们对查询命令进行了时间延迟测试。我们对每个查询数据长度进行了200次测试,然后对结果进行了平均。时间延迟的情况如图14所示。横轴代表我们查询数据的长度。纵轴代表时间延迟。黄色一栏是我们系统中没有查询数据时的时间延迟。蓝色一栏是查询数据被添加到我们系统后的时间延迟。查询数据加入我们的系统后,时间延迟的增加低于6%,这可以忽略不计。方差显示在图15中。加入我们的系统后方差增加,这意味着网络波动增加。然而,增加的幅度非常小,这意味着网络波动趋于稳定。这说明添加我们的系统对查询等监测功能的影响比较小。
4.2 保护验证
如图16所示,我们模拟了一个SCADA被APT攻击的场景。我们设计了一个包含攻击命令的Excel文件,它可以关闭现场的PLC。如果我们打开这个Excel文件,它将自动向PLC发送一个停止命令。当这个Excel文件被打开时,现场的设备将停止运行。加入我们的设备后,没有我们的保护系统,现场设备正常运行,并记录了发送命令的时间等信息。图17是我们的实验设备。
5. 总结与未来工作
我们设计了一个基于验证分离的PLC保护系统。该系统不会影响原系统的运行。此外,增加的时间延迟小于6%。与其他保护系统不同的是,该系统为了兼容,没有对原始协议进行加密。由于监控器的存在,我们可以截获一些比较重要的指令,并通过加密将其发送到另一台与工控外网隔离的服务器。一些不重要的指令,如读取指令,则不会被处理。这大大减少了时间上的延迟。此外,我们还记录了每个关键指令的发送时间,并确认了操作者的身份。这对一些攻击的定位和源头追踪有很大帮助。我们可以利用这些信息来快速定位相关的攻击时间和攻击。由于该系统可以拦截和复制主机发送的命令,因此可以拦截一些命令的替换和主机被控制的攻击。这是其他基于身份认证和流量识别的保护方法所不能做到的。
不重要的指令,如读取指令,则不会被处理。这大大减少了时间上的延迟。此外,我们还记录了每个关键指令的发送时间,并确认了操作者的身份。这对一些攻击的定位和源头追踪有很大帮助。我们可以利用这些信息来快速定位相关的攻击时间和攻击。由于该系统可以拦截和复制主机发送的命令,因此可以拦截一些命令的替换和主机被控制的攻击。这是其他基于身份认证和流量识别的保护方法所不能做到的。
该系统结构也有一些不足之处。例如,由于PLC到PLC的通信对延迟的要求很高,而且其数据通信量很大,所以无法进行人工验证。考虑到监控设备和数据库是实时读取PLC数据的,我们没有检测或拦截读取-数据的动作,这可能会造成隐私泄露。在未来,我们将实现PLCtoPLC通信中关键命令的自动判断。由于数据流量大和生产现场的特殊性,自动判断过程不允许出现误报,这对系统的可靠性和准确性是一个挑战。