大量的遗留设备、专用的软硬件、有限的处理能力以及地域上分布的广泛性,极大的阻碍了传统计算机体系中低廉且高效的安全防护方案的推广应用。《GB/T 33008.1-2016 工业自动化和控制系统网络安全可编程序控制器(PLC)第1部分:系统要求》[1]给出了系统能力等级(CL)如下:

(1)CL1:提供机制保护控制系统防范偶然的、轻度的攻击;

(2)CL2:提供机制保护控制系统防范有意的、利用较少资源的和一般技术的简单手段可以达到较小破坏后果的攻击;

(3)CL3:提供机制保护控制系统防范恶意的、利用中等资源、PLC特殊技术的复杂手段可能达到较大破坏后果的攻击;

(4)CL4:提供机制保护控制系统防范恶意的、使用扩展资源、PLC特殊技术的复杂手段与工具可能达到重大破坏后果的攻击。

基于《GB/T 33008.1-2016》的安全要求,我们从硬件设备、通信及协议、执行行为、网络隔离、控制组态等方面对PLC的安全防御技术进行了归类整理。在上篇部分,我们将着重介绍基于硬件设备、通信及协议和执行行为的PLC安全防护技术。

基于硬件设备的PLC安全防护

对于PLC设备的安全防护主要包括:

1)验证固件的完整性,对固件的修改进行及时感知。Adelstein等[2]引入基于固件签名的检测方法,包含一个固件“验证编译器”,允许固件在运行时接受检验,通过检测确定的执行流特性、内存及队长完整性。Zhang等[3]提出IOCheck框架,在运行时验证固件完整性和IO配置,在假设可信的BIOS启动之后,IOCheck利用X86 CPU架构下的系统管理模式来运行完整性校验。Duflot等[4]提出NAVIS框架,来检测网卡固件的完整性。

2)采用可信计算等技术,提高底层数据传输的可信性。Stephen McLaughlin等[5]提出应该在PLC中配备可信计算基(TCB,Trusted Computing Base)。可信计算基由一组可信软硬件组成,用来保证PLC对安全策略的执行。如图1。

图1是一个基于TCB的安全策略的执行过程

基于通信及协议的PLC安全防护

由于原来的PLC控制协议没有加密、认证等机制,导致攻击者只要能和PLC通信,简单的构造畸形数据包就可以达到实施破坏的目的,因此可以从协议及通信的角度对PLC进行安全防护。Spenneberg等[6]指出,他们设计出的专门针对PLC的蠕虫防护非常有效,但是在遭受感染期的过程中,PLC大概有10秒钟是不工作的,在此期间原始用户的程序也不会运行,而且会产生大量的不正常流量。而且在扫描和感染阶段,会发送很多可疑的数据包。这些都是可以被基于流量的检测机制发现。Malchow等[7]引入一款PLC Guard安全防护设备,分析PLC和工程师站之间的通信流量。当工程师站向PLC传输代码时,PLC Guard分析代码的传递,并和以前版本进行比较(如图2所示),包括不同层次上的图形抽象和概括。操作员可以选择接受或拒绝代码传输,所以此设备很难被攻破。Nelson等[8]提出使用MAC地址绑定来保证物理上连接的端口安全,对PLC和工程师站之间的通信进行加密,从而增加逆向分析控制协议的难度。Bestak等[9]提出对PLC等设备使用一种加密算法来对测量的数据进行加密,保证通信过程中不被攻击者恶意篡改,从而达到数据完整性的目标。Heo等[10]提出,可以对自动化控制中的PLC通信网络进行加密,从而保证数据真实性。Bestak等[11]指出可以尝试在PLC网络中使用加密算法,从而保证通信安全性。Andrew Clark等[12]提出了一种新型的防御框架,利用一组随机化的加密密钥对系统操作员发送给PLC的控制命令进行认证。框架利用加密分析、控制理论、博弈论的方法来对恶意控制指令造成的影响进行量化分析,如图3所示,在过程控制网络(PCN,Porocess Control Network)与控制系统网络(CSN,Control System Network)交互过程中加入了主动加密机制,用来对发送的控制命令进行认证。

图2  PLC Gurad防护过程示意图

图3  PLC主动加密机制

Haroon Wardak等[13]指出目前报道的大多数针对PLC的攻击都是基于PLC以一种未授权的方式建立通信,并对PLC访问控制问题进行了研究,分析了通常采用的是基于密码的访问控制机制的脆弱性,指出可以在PLC和其他设备之间配置工业自动化环境下的数据安全模块(Scalance S)的问题得到解决。Stanislav Ponomarev等[14]提出了一种通过测量和验证通过网络传输的数据来检测入侵网络的ICS的方法。

基于执行行为的PLC安全防护

包括对PLC的内存行为、发包的时间、动作执行等进行建模,从而能够对PLC的执行行为进行监控。Spenneberg等[6]指出蠕虫在感染PLC的过程中会自动重启,这是属于异常执行动作。而Langner等[15]指出在攻击过程中OB1需要首先调用恶意代码,执行终止条件等,这些都是可以被检测到的异常行为,从而可以采取相应的安全措施。Chih-TaLin 等[16]对Modbus协议的深入分析,提出了一种基于自动学习的恶意入侵检测方法,并在开发的测试平台上进行了各种测试,入侵检测框架如图4所示。

图4  基于机器学习的入侵检测机制

Ken Yau 等[17]提出使用半监督机器学习,即单类支持向量机(OCSVM,One-class Support Vector Machine),根据捕获的PLC存储器地址值来检测PLC异常行为,主要步骤如图5所示。Saman Zonouz等[18]提出了一种利用PLC代码符号执行的方法来检测工业控制恶意软件。具体过程如图6所示,首先对安全要求取反,生成对应的不安全要求(UR),然后寻找满足条件的路径P。其中P为TEG和UR的笛卡尔积。如果不存在满足条件的路径,则说明代码符合安全要求,可以安全执行;否则,生成连接路径条件并计算样本输入向量,该向量可用来进行调试。Henry Senyondo 等[19]提出了PLCloud,一种基于云的安全防护架构,通过最小的基于云计算的可信安全验证模块来最小化基础设施可信计算基。PLCloud包含两个部分:PLCloud Agent和虚拟的PLC模拟器。PLCloud Agent负责搜集PLC的控制指令和传感器输入,同时接收模拟器的通知并执行响应的操作。PLC模拟器功能比较强大,实时与物理PLC设备状态保持同步,周期性的保存快照以备恢复时使用,并可以执行模型检验、控制流图符号执行、安全要求校验、线性时序模型检测等功能,从而提供最小化基础设施可信计算基。

图5  利用OCSVM的异常检测步骤

图6  PLC代码符号执行安全检测机制

参考文献

[1]GB/T 33008.1-2016 工业自动化和控制系统网络安全 可编程序控制器(plc) 第1部分:系统要求.[S].2016.

[2]Adelstein F, Stillerman M, Kozen D. Malicious code detection for open firmware [C]//Computer Security Applications Conference, 2002. Proceedings. 18th An-nual. IEEE, 2002:403-412.

[3]Zhang F, Wang H, Leach K, et al. A framework to secure peripherals at runtime [C]//European Symposium on Research in Computer Security. Springer, Cham, 2014: 219-238.

[4]Duflot L, Perez Y A, Morin B. What if you can’t trust your network card?[C]//International Workshop on Recent Advances in Intrusion Detection. Springer, Ber-lin, Heidelberg, 2011: 378-397.

[5]McLaughlin S E, Zonouz S A, Pohly D J, et al. A Trusted Safety Verifier for Process Controller Code[C]//NDSS. 2014, 14.

[6]Spenneberg R, Brüggemann M, Schwartke H. Plc-blaster: A worm living solely in the plc[J]. Black Hat Asia, Marina Bay Sands, Singapore, 2016.

[7]Malchow J O, Marzin D, Klick J, et al. Plc guard: A practical defense against attacks on cyber-physical sys-tems[C]//Communications and Network Security (CNS), 2015 IEEE Conference on. IEEE, 2015: 326-334.

[8]Nelson T. Common control system vulnerability[R]. Idaho National Laboratory (INL), 2005.

[9]Bestak I, Orgon M. Performance measurement of en-cryption algorithms used in PLC devices[J]. Inter-na-tional Journal of Research and Reviews in Computer Science (IJRRCS), 2011, 2(5).

[10]Heo J, Hong C S, Ju S H, et al. A security mecha-nism for automation control in PLC-based net-works[C]//Power Line Communications and Its Appli-cations, 2007. ISPLC’07. IEEE International Symposium on. IEEE, 2007: 466-470.

[11]Bestak I, Orgon M. The use of encryption algo-rithms in PLC networks[J]. Simulation, 2012, 3(64): 168.

[12]Clark A, Zhu Q, Poovendran R, et al. An impact-aware defense against Stuxnet[C]// American Control Con-ference. IEEE, 2013:4140-4147.

[13]Wardak H, Zhioua S, Almulhem A. PLC access control: a security analysis[C]// Industrial Control Systems Se-curity. IEEE, 2017:1-6.

[14]Ponomarev S. Intrusion Detection System of industrial control networks using network telemetry[J]. Disserta-tions & Theses – Gradworks, 2015.

[15]Langner R. A time bomb with fourteen bytes[J]. Available: hUp: llwww. langner. comlen, 2011.

[16]Lin C T, Wu S L, Lee M L. Cyber attack and defense on industry control systems[C]//Dependable and Secure Computing, 2017 IEEE Conference on. IEEE, 2017: 524-526.

[17]Yau K, Chow K P, Yiu S M, et al. Detecting anomalous behavior of PLC using semi-supervised machine learn-ing[C]// IEEE Conference on Communications and Network Security.IEEE, 2017:580-585.

[18]Zonouz S, Rrushi J, Mclaughlin S. Detecting Industrial Control Malware Using Automated PLC Code Analyt-ics[J]. IEEE Security & Privacy, 2014, 12(6):40-47.

[19]Senyondo H, Sun P, Berthier R, et al. PLCloud: Com-prehensive power grid PLC security monitoring with zero safety disruption[C]// IEEE International Confer-ence on Smart Grid Communications. IEEE, 2015:809-816.

作者:徐震 周晓军

责编:丁昶

声明:本文来自中国保密协会科学技术分会,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。