PLC信息安全防護技術研究(上篇)
大量的遺留設備、專用的軟硬件、有限的處理能力以及地域上分布的廣泛性,極大的阻礙了傳統計算機體系中低廉且高效的安全防護方案的推廣應用。《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.
【本文為51CTO專欄作者“中國保密協會科學技術分會”原創稿件,轉載請聯系原作者】