999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

可編程邏輯控制器的控制邏輯注入攻擊入侵檢測方法

2023-07-03 14:12:12孫怡亭李長進張紅軍劉俊矯孫利民
計算機應用 2023年6期
關鍵詞:指令程序檢測

孫怡亭,郭 越,李長進,張紅軍,劉 康,劉俊矯,孫利民

(1.物聯網信息安全技術北京市重點實驗室(中國科學院信息工程研究所),北京 100093;2.中國科學院大學 網絡空間安全學院,北京 100049;3.河南中煙工業有限責任公司 許昌卷煙廠,河南 許昌 461000;4.河南新拓途信息技術有限公司,鄭州 450000)

0 引言

工業控制系統(Industrial Control System,ICS)是國家基礎設施的神經中樞,可編程邏輯控制器(Programmable Logic Controller,PLC)是ICS 的基礎控制單元[1]。隨著工業4.0 的興起,PLC 通過互聯網的連通性不斷增強,致使針對PLC 的攻擊面大幅增加。由于PLC 在工業控制過程中的敏感作用,一旦它們被成功利用,將導致物理過程偏離預期的規定運行,造成關鍵設施損壞、非計劃停產和人員傷亡等嚴重后果[2-3]。

在各種PLC 攻擊中,控制邏輯注入攻擊造成的危害最嚴重。攻擊者以PLC 控制邏輯為目標,通過篡改或注入惡意的控制邏輯破壞正常的物理控制過程。例如,Stuxnet[2]感染了控制離心機變頻驅動的西門子S7 300 PLC 的控制邏輯,更改電機轉速從而中斷驅動器的正常運行。近年來,學術界關于控制邏輯攻擊的研究層出不窮,例如DEO(Denial of Engineering Operations attack)[4]、CLIK(Control Logic Infection Attack)[5]和PLCinject[6]等。

因為惡意控制邏輯程序通常通過網絡下載,所以針對網絡流量的深度解析技術常用來檢測此類攻擊;隨著碎片和噪聲填充[7]等更為隱蔽的控制邏輯注入攻擊的出現,攻擊者能夠繞過有效載荷檢查等傳統檢測技術。基于PLC 代碼的形式化驗證技術也常用于防御攻擊,包括PLC 代碼形式化模型構建、狀態縮減、規范生成和模型檢測等,但形式化驗證的狀態爆炸問題使之難以實際應用,而且需要工程人員結合設備所處物理環境制定安全屬性,迫切需要一種能檢測PLC 控制邏輯注入攻擊的實用化方法,高效檢測出多種注入攻擊。

本文提出了一種針對PLC 控制邏輯注入攻擊的入侵檢測方法,稱為PLCShield(Programmable Logic Controller Shield)。首先,逆向了PLC 程序提取的協議交互模式,實現與PLC 的通信過程,主動獲取控制邏輯的基線程序。其次,將提取的PLC 二進制程序統一重構為便于解析的指令表(Instruction List,IL)語言程序。然后,采用詞法、語法和數據流分析等技術自動化分析控制程序,提取程序屬性、地址、值域和結構等檢測規則。以上步驟使得白名單生成流程自動化且無需人工參與。最后,基于檢測規則,提出了主被動結合的攻擊檢測算法,即輕量級、主動地向PLC 請求檢測信息和被動的網絡流量解析,從不同角度實時檢測攻擊行為。

為了驗證PLCShield 的可行性,本文以羅克韋爾AB MicroLogix 1400、西門子S7 300、西門子S7 400 和施耐德M221 這4 款PLC 作為案例,實現了一個原型系統并搭建了一個仿真環境模擬真實的工控環境進行測試。實驗結果表明,本文檢測方法可以在不影響PLC 正常工作的情況下,有效檢測出控制邏輯注入攻擊,準確率在97.71%以上。

本文的主要工作如下。

1)二進制程序反編譯。通過分析PLC 二進制程序結構,從網絡流量中將各種語言編譯的二進制程序重構為便于解析的高級指令表程序。

2)檢測規則自動化生成。通過自動化分析PLC 指令表程序的配置文件、指令功能、變量屬性和執行路徑等信息,提取程序屬性、地址、值域和結構等檢測規則,作為攻擊檢測的基線。

3)主被動相結合的檢測方案。通過主動請求PLC 的運行“快照”和被動監聽網絡流量相結合的方式,實時獲取PLC當前的運行狀態,并與檢測規則比對識別攻擊行為。

1 背景知識

1.1 PLC的控制邏輯程序

PLC 的控制邏輯程序以IEC61131-3 標準[8]中定義的5 種編程語言編寫,包括梯形圖邏輯(LaDder logic programming language,LD)、功能模塊(Function Block Diagram,FBD)語言、順序功能流程圖(Sequential Function Chart,SFC)語言、IL 語言和結構文本化(Structured Text,ST)語言。LD、FBD 語言、SFC 語言屬于圖形化的編程語言;IL 語言類似于匯編語言,由操作碼和操作數組成;ST 語言類似于高級語言。

PLC 的控制邏輯是高度結構化的,以西門子PLC 為例,控制邏輯代碼由各種類型塊組成,例如組織塊(Organization Block,OB)、功能塊(Function Block,FB)、函數(FunCtion,FC)等。一個PLC 控制程序至少包含一個稱為OB1 的組織塊,相當于編程語言中的main 函數,是用戶程序中的主程序。FB、FC 類似于函數實現特定功能,如運動控制、網絡通信等。每個程序塊內部包括變量定義和具體的代碼邏輯實現。

PLC 通常配備有RS-232 串口、以太網和USB 等通信接口,用來傳輸代碼和數據。工程師利用供應商提供的上位機軟件編寫控制程序并編譯為PLC 可執行的二進制程序,然后使用特定的工控協議通過以太網或串口將程序下載到PLC中。同樣,用戶也可以使用上位機軟件從PLC 中獲取控制程序和數據??刂瞥绦蛟谏蟼?下載過程中主要分為3種類型文件:配置文件、代碼文件和數據文件。配置文件記錄了其他類型文件的信息,例如文件地址和大小等,以及PLC 配置信息;代碼文件存儲了PLC 上運行的控制邏輯代碼;數據文件存儲了在代碼文件中使用的變量,例如輸入、輸出、計時器等。

1.2 PLC控制邏輯注入攻擊

PLC 控制邏輯注入攻擊就是通過篡改或注入惡意的控制程序操縱目標PLC的物理控制過程,從而影響工業控制過程,甚至產生破壞,Stuxnet 是現實世界中此類攻擊的典型代表。近年來,與控制邏輯相關的通用漏洞披露(Common Vulnerabilities and Exposures,CVE)呈現快速增長的趨勢[9]。攻擊者可以利用上位機漏洞或接入ICS 網絡訪問PLC 原始控制程序,并進行惡意篡改[2,6,10]。通常攻擊者為了增強隱蔽性只對關鍵控制語句進行微小的改動,例如修改關鍵方程式或設定點信息,這需要攻擊者對程序和物理過程有足夠的了解[5]。除此之外,攻擊者還可以篡改程序字節碼或二進制文件,攻擊者首先對程序字節碼或二進制進行逆向操作,然后修改反編譯后的程序從而產生攻擊,這個過程發生在控制程序從上位機下載到PLC期間,攻擊者作為中間人攔截和修改程序傳輸流量,相關攻擊如:DEO[4]、LLB(Ladder Logic Bombs)[11]。

隨著對抗能力的增強,攻擊者開始使用更高級的手段來逃避各種檢測機制,例如攻擊者通過構造虛假響應向工程人員營造出控制邏輯未被攻擊的假象[2,5]。Yoo 等[7]提出了一種名為碎片和噪聲填充的新型攻擊,隱藏惡意控制邏輯在網絡上的傳輸,逃避了傳統的深度數據包檢查,成功實現對PLC 控制邏輯的注入攻擊,而市面上常見的網絡IDS 很難檢測到這種類型的攻擊。

1.3 相關工作

現如今許多工業協議都支持TCP/IP(Transmission Control Protocol/ Internet Protocol)和以太網通信,PLC 通常配備有RS-232 串口、以太網等通信接口,用來傳輸代碼或數據。一個可行的解決方案是在控制邏輯下載到PLC 之前進行驗證。例如,比較正在傳輸的控制邏輯與正??刂七壿嫞?2-13],即如果PLC 控制邏輯在執行期間僅遵循有效的執行路徑[14],則可以檢查PLC 運行時控制邏輯的控制流。最有效的方法是在ICS 網絡中檢測并阻止控制邏輯數據包的傳輸,除非明確允許該傳輸。通常,可以通過檢查PLC 協議標頭實現,該標頭包含有效負載類型的信息[1,15],或者檢查數據包的有效負載以識別控制邏輯或PLC 配置中的未經授權的更改[16]。

形式化驗證技術長期以來也一直用于防御控制邏輯注入攻擊,該技術是基于某種形式的邏輯來驗證程序是否符合其規范,研究主要集中在行為建模[17-19]、狀態減少[20-21]、規范生成[21-22]和驗證[23-24]。形式化驗證技術具有其他解決方案無法提供的優點。PLC 在控制物理過程時必須嚴格滿足實時性約束,這對于執行大量動態分析的重量級解決方案說是不切實際的;而形式化驗證是輕量級的,能夠適用于控制邏輯注入攻擊的檢測。

2 控制邏輯注入攻擊檢測方法

如圖1 所示,PLCShield 主要包括白名單規則生成階段和基于規則的主被動攻擊檢測階段兩個階段。

圖1 控制邏輯注入攻擊檢測方法Fig.1 Control logic injection attack detection method

2.1 基于基線程序白名單規則的自動化生成方法

本文提出了一種基于基線程序白名單規則的自動化生成方法,相關技術已申請了專利[25],專利僅說明了從基線程序中提取白名單規則,而本文則詳細介紹了如何從基線程序中提取白名單規則以及提取了哪些白名單規則。

在工業控制系統中,PLC 的控制邏輯確定了系統的業務控制流程,諸如定時器設定點信息、一些關鍵變量的取值范圍等。通過分析PLC 基線程序,能夠提取用于控制邏輯注入攻擊檢測的多種白名單信息。

1)程序結構白名單。IEC 標準強調結構化的程序結構,控制邏輯由程序組織單元(Programming Organization Unit,POU)例如程序塊、功能塊、函數等組成。每個POU 都有固定的類型和塊號。在程序執行期間,從主程序塊開始執行,程序塊在執行過程中可以調用其他的函數或者功能塊。當工程人員將定義好的控制邏輯下載到PLC 中時,控制邏輯包含的塊類型、數目和塊之間的結構關系都是固定的,這樣才能保證PLC 進行正常的物理控制過程。許多攻擊者會將惡意程序塊注入PLC 中,并篡改原始程序調用惡意程序塊,使得惡意程序在下一個循環周期中自動執行且不會中斷任何服務。對于程序結構白名單的生成,需要基于IL 語言特征對程序進行控制流分析,提取程序間的結構關系。

2)程序屬性白名單??刂七壿嬛忻總€POU 塊都有一些固定的屬性特征,表明該POU 塊的一些基本信息,例如塊的大小、地址、校驗和梯級數目等。這些POU 塊的基本屬性信息可以提供一些重要的指示,說明PLC 控制程序可能發生的變化或修改。生成程序屬性白名單,需要提取并解析配置文件內容,得到POU 塊的屬性特征。

3)程序地址范圍白名單。程序在執行過程中,只會讀寫程序使用范圍內的物理地址,如果出現超出范圍的讀寫操作,很可能是攻擊者在探測或注入一些非法數據和代碼。生成程序地址范圍白名單,需要對程序進行詞法分析提取變量集合,并將變量信息映射為實際物理地址,從而得到程序有效地址范圍集合。

4)程序數據范圍白名單。PLC 運行時的數據取值范圍受內部程序約束,例如水閘控制的水位閾值等。攻擊者若篡改了控制這些關鍵數據的代碼,會使數據超出合法取值范圍,破壞物理世界的穩定,震網病毒通過篡改與離心機有關的控制語句使得離心機轉速超出預設值。因此可以基于對控制程序進行數據流分析得到程序數據范圍白名單,通過判斷變量取值是否超出合法范圍,從而斷定控制程序或寄存器數值是否遭受惡意篡改。

本文以羅克韋爾AB MicroLogix 1400 PLC 為例,介紹白名單規則的提取過程,包括基線程序采集、二進制程序反編譯和白名單規則提取。

1)基線程序采集。白名單規則是以PLC 正常工作狀態下運行的控制邏輯為依據構建,將PLC 未遭受攻擊狀態下的控制邏輯程序稱為基線程序。該步驟是使用特定的通信協議與PLC 建立連接并發送程序上載請求提取基線程序。MicroLogix 1400 PLC 使 用PCCC(Programmable Controller Communication Command)協議通信,程序上載主要包括3 種類型文件:配置文件、代碼文件和數據文件(輸入、輸出、計時器和計數器等),表1 展示了PCCC 協議中常見的文件類型字段含義。

表1 PCCC協議中常見文件類型Tab.1 Common file types in PCCC protocol

由于代碼和數據文件的數目、映射地址和大小記錄在配置文件中,因此首先需要獲取并解析配置文件。MicroLogix 1400 PLC 的文件信息在配置文件中以10 B 的結構存儲,其格式如表2 所示,多余字節由0x00 填充。基于配置文件結構,解析得到此次傳輸程序中一共包含6 個程序文件和8 個數據文件,如圖2 所示。

表2 配置文件中的文件信息存儲結構Tab.2 File information storage structure in configuration file

圖2 MicroLogix1400 PLC配置文件解析結果Fig.2 Analysis results of MicroLogix1400 PLC configuration file

基于文件類型、起始地址和大小,構造請求數據包,獲取以上文件內容,程序采集流程如圖3 所示。

圖3 MicroLogix1400 PLC程序采集流程Fig.3 Flow of MicroLogix1400 PLC program acquisition

2)二進制程序反編譯為IL 程序。IEC 標準定義了5 種PLC 編程語言,語言之間可以自由混合編程。編程語言的多樣性對開發人員是一個優勢,但對程序分析或檢測卻是一個很大的挑戰,為了提供普遍且適用的檢測方案,應該支持所有語言。因此,本文選擇將各種語言編譯后的二進制程序重構為便于解析的IL 語言程序。

在進行反編譯操作之前,需要分析二進制程序的內部結構,本文以IEC61131-3 標準為基準分析程序結構。如圖4 所示,主要包括程序塊識別、梯級識別、梯級中指令和數據變量識別等,接著基于分析結果進行反編譯操作。該過程以代碼塊、數據塊等作為輸入,并利用IL 指令映射數據庫進行控制程序反編譯。

圖4 二進制程序的反編譯流程Fig.4 Flow of binary program decompilation

表3 展示了MicroLogix 1400 PLC 二進制梯級結構,梯級始終以兩個0x00 開始,緊接著第3~4 字節是梯級的簽名,第5~6 字節是梯級的大?。灰虼耍疚氖褂锰菁壠鹗甲侄魏吞菁壌笮∽侄巫鳛閯澐痔菁壍囊罁V噶顝奶菁壍牡? 字節開始,按順序連續放置。每個指令包括2 個字節的操作碼、1個字節的文件號、2 個字節的字地址和2 個字節的位地址。

表3 MicroLogix1400 PLC二進制梯級結構Tab.3 MicroLogix1400 PLC binary rung structure

表3 中操作碼表示指令的具體操作,例如JMP(跳轉到標簽),SUB(減法)。為了識別指令操作碼,本文維護了一個二進制指令與IL 指令之間的映射表,如表4 所示,存儲在MySQL 數據庫中。而指令中操作數的解析需要文件編號(File No)、字索引(Word index)和位索引(Bit index)這3 個字段來確定。File No 定義了操作數類型,例如0x00 代表輸出,0x01 代表輸入。Word index 定義了該類型數據文件在PLC中的物理地址,Bit index 定義了操作數在數據文件中的偏移位置。其中Word index 是由梯級中的字偏移量(Word Offset)和配置文件中的起始地址作差得到的。圖5 展示了部分程序的反編譯結果。

表4 MicroLogix 1400 PLC部分指令映射表Tab.4 Part of instruction mapping table of MicroLogix 1400 PLC

圖5 MicroLogix 1400 PLC程序反編譯結果Fig.5 MicroLogix 1400 PLC program decompilation results

3)白名單規則生成。該步驟目標是自動分析IL 基線程序并提取白名單規則。程序結構白名單包含MicroLogix 1400 PLC 中合法程序塊之間的調用關系。羅克韋爾MicroLogix 系列PLC 一共有 256 個程序文件,前兩個是系統文件,LAD 2 是主程序文件,文件3~255 為用戶自行創建的子程序。首先,解析MicroLogix 1400 PLC 的配置文件匯總所有的合法程序塊,如圖2 所示,可知程序包括6 個程序文件和9 個數據文件。

本文使用調用圖(Call Graph,CG)來描述程序塊之間的結構。CG 是控制流圖,表示了整個程序塊之間的調用關系,圖中的節點代表程序塊,邊代表程序塊之間調用關系。程序調用白名單生成算法主要分為兩步:基于IL 語言特征采用控制流圖生成算法生成程序塊調用關系圖;遍歷CG,生成程序調用白名單。圖6 為控制程序結構,LAD2 為主程序塊,對LAD2 程序進行控制流分析可知,LAD2 一共調用LAD5、LAD7 和LAD4 這3 個子程序塊,分別用于電機控制和頭輪信號控制等。子程序LAD7 嵌套調用LAD3、LAD6 子程序。

圖6 控制程序結構Fig.6 Structure of control program

程序屬性白名單包含了所有合法程序塊的屬性信息,包括程序塊物理地址、大小和梯級數目等。這些信息都可以通過解析MicroLogix 1400 PLC 的配置文件獲取。根據表1 的文件類型以及文件信息在配置文件的存儲結構,可以獲取控制程序、輸入輸出等其他File Type 類型文件的具體信息。例如,通過解析圖2 配置文件可獲得的程序信息如表5 所示。

表5 配置文件解析結果Tab.5 Configuration file parsing results

表6 LAD2程序地址范圍Tab.6 LAD2 program address range

程序地址范圍白名單包含了程序有效訪問地址集合。例如MicroLogix 1400 PLC 中的變量類型可分為輸入、輸出、字符串、計時器等,這些變量與PLC 的內存物理地址一一對應,通常上位機或組態軟件只會讀寫這些合法的內部地址。因此,通過對IL 程序中的每個程序塊分別進行詞法分析,提取上述合法的內部地址,就可生成程序地址范圍白名單。

程序數據范圍白名單包含程序塊中變量的合法取值范圍。首先,基于IL 語言特征對程序預處理,構建程序控制流圖,遍歷程序控制流圖得到程序可執行路徑集合;然后,分析數據流,最終得到變量合法取值范圍。

圖7展示了對LAD2代碼的數據流分析結果。首先,程序加載整型N7:0,整型N7:0 的數據范圍為(-215,215)。當N7:0取值小于50 時,將N7:0 賦值給N7:17,因此N7:17 取值范圍為(-215,50);當N7:0 取值大于等于50 時,將50 賦值給N7:17,因此N7:17 的取值為50,最終可得N7:17 的取值范圍為(-215,50],計時器T4:34數據范圍為[0,800]等。基于以上分析,圖8 展示了生成的鑄造機LAD2 示例程序塊的檢測規則。

圖7 LAD2程序數據范圍分析Fig.7 LAD2 program data range analysis

圖8 鑄造機LAD示例程序檢測規則Fig.8 Casting machine LAD sample program detection rules

2.2 主被動結合的攻擊檢測算法

控制邏輯注入攻擊最有效的檢測方法是使用上位機軟件從PLC 中獲取當前運行的控制邏輯進行分析和檢查。但如果ICS 遭受網絡攻擊,上位機與PLC 之間的通信并不可靠,攻擊者可能通過構造虛假響應或中間人等手段操縱通信數據,而且攻擊有時并不會反映在網絡流量中,例如通過本地編程接口對PLC 進行攻擊。因此,本文提出了一種主動和被動結合的攻擊檢測方案,多角度檢測控制邏輯注入攻擊。其中:被動檢測通過被動監聽與程序傳輸和數據讀寫相關網絡流量檢測異常;主動檢測是主動與PLC 建立連接并向PLC請求檢測信息,實時監控異常行為。

被動檢測模式下,監聽工業交換機中流經的網絡流量,提取并解析與程序傳輸相關的流量信息,依次驗證是否滿足程序結構白名單rulestruc、程序屬性白名單ruleattri、程序地址范圍白名單ruleaddr和程序數據范圍白名單rulevalue,檢測惡意程序塊注入、控制流劫持、指令或數據篡改等異常行為,并基于匹配結果記錄異常程序塊號及告警信息。

當監聽到與數據讀寫相關網絡流量時,提取IP、數據地址和寫入值。首先,根據設備IP 檢索程序地址范圍白名單和程序數據范圍白名單;然后,驗證數據地址是否滿足程序地址范圍白名單,檢測非法地址寫入/讀取等異常行為;最后,驗證寫入值是否滿足程序數據范圍白名單,檢測非法數值寫入等異常行為。被動檢測流程如算法1 所示。

算法1 被動檢測算法。

主動檢測模式是在不影響PLC 正常工作的前提下,以低頻率、輪詢的方式主動請求PLC當前“快照”進行檢測,檢測流程如算法2所示。首先,根據目標PLC的IP地址,加載該IP下所有的白名單規則。然后,與PLC建立連接,根據通信協議構建程序上載請求獲取當前程序進行解析,驗證是否滿足程序結構白名單rulestruc、程序屬性白名單ruleattri、程序地址范圍白名單ruleaddr和程序數據范圍白名單rulevalue,從而判斷是否存在程序塊調用異常、程序塊屬性異常、程序非法寫地址異常和指令篡改異常等異常行為,基于匹配結果記錄告警信息及異常程序塊號。同時,遍歷程序地址范圍白名單ruleaddr,主動發送請求包讀取該地址下的寄存器數值,驗證是否滿足程序數據范圍白名單rulevalue,檢測非法數值、指令篡改等異常行為。以上流程結束后,結束任務并斷開與PLC的連接。

算法2 主動檢測算法。

3 實驗與結果分析

為了評估本文方法檢測出控制邏輯注入攻擊的準確性,選取工控生產環境中具有代表性的4 款PLC 進行實驗,包括西門子S7 300、西門子S7 400、施耐德M221 和羅克韋爾AB MicroLogix 1400。首先,驗證二進制程序反編譯為IL 源碼的準確性;然后,模擬控制邏輯注入攻擊,評估檢測能力;最后,驗證主動檢測模式對PLC 性能的影響,以說明本文方法不會影響PLC 的正常運行。

3.1 實驗環境

本文利用工控軟硬件設備搭建了一個仿真環境模擬真實的工控系統進行驗證實驗,如圖9 所示,包括工作站、組態軟件、PLC 設備、工業交換機、現場設備和檢測系統。

圖9 實驗環境Fig.9 Experimental environment

PLC 設備選定了工業生產環境中具有代表性的4 款設備,包括西門子S7 300、西門子S7 400、羅克韋爾MicroLogix 1400 和施耐德M221。為了保證PLC 的實時性和穩定性,檢測系統采用旁路部署的方式連接至工業交換機,以便捕獲ICS 系統中的網絡流量。

3.2 反編譯準確度評估

本文為每款設備選取了50 個不同物理過程(例如燃氣管道、交通燈等)下的控制程序評估反編譯的準確度,驗證過程如下:首先將數據集中的程序下載至PLC,然后檢測模塊從PLC 中提取二進制程序并反編譯為IL 語言程序,將反編譯后的代碼與上位機程序進行比較,以驗證其準確度。

本文使用PLC 編程軟件統計了數據集中每條指令出現的頻率并與反編譯后的結果進行比較,表7 展示了4 款PLC反編譯準確度的驗證結果。比較結果顯示反編譯模塊可以100%識別支持的指令。但是,反編譯中指令識別過程依賴于IL 指令映射數據庫,其中西門子S7 300 和S7 400 系列PLC是3 個廠商中支持指令最多的,幾乎能支持IL 語言中所有指令,而施耐德M221 和羅克韋爾Micrologix1400 數據庫支持的IL 指令類型并未完全覆蓋IL 語言中的所有指令類型,后續仍需擴充指令映射數據庫。

表7 四款PLC反編譯準確度驗證結果Tab.7 Four PLC decompilation accuracy verification results

3.3 檢測能力評估

根據1.2 節描述的PLC 控制邏輯注入攻擊,擬定了十幾種攻擊,有些攻擊來源于相關的PLC 攻擊文獻[4-7,9]。檢測系統上線前,需要先錄入目標PLC 的IP 地址,然后使用白名單規則生成功能,整個過程耗時較短。接著,系統上線運行48 h,期間使用自動化工具對每款PLC 設備進行上百次攻擊實驗。為了驗證檢測系統是否能有效檢測出控制邏輯注入攻擊,將從檢測精度、誤報率、漏報率這3 個方面進行評估。檢測精度越高,誤報率和漏報率越低,系統對控制邏輯注入攻擊的檢測效果越好。

表8展示了4款PLC的實驗結果,對各種隱蔽性的控制邏輯注入攻擊的檢測精度都可達到95%以上。其中,西門子S7 300和S7 400的檢測精度可達到98%以上,是3個廠商中檢測效果最好的;這是因為西門子廠商的PLC的程序結構清晰,可解析信息較為全面,所以生成的檢測規則最全面、最細致。

表8 4款PLC檢測能力驗證結果Tab.8 Four PLC detection performance verification results

檢測方案對惡意程序完全替換、惡意程序塊注入等攻擊的檢測效果最佳,因為攻擊隱蔽性最差,也最容易被發現。非法地址讀/寫異常檢測中出現誤報主要是因為上位機在進行正常數據監控的時候,訪問數據地址時可能會連帶訪問鄰近地址,引起誤報。其他產生誤報和漏報的主要原因是反編譯模塊支持的IL 指令類型并未完全覆蓋PLC 中的所有指令,影響了白名單覆蓋度和檢測準確度。

此外,在實際的ICS 中,特別是中小型ICS 系統,控制程序通常小于10 KB。如果攻擊者想要暗中損害ICS 而不被發現,至少也需要修改幾行代碼。隨著攻擊變得更加具有破壞性,注入的惡意代碼往往越多,例如Stuxnet 病毒包含一萬多行代碼,并且需要額外的程序塊或者數據塊存儲。隨著異常程序修改內容的增加,檢測效果也變得越來越好。其中對于隱蔽性較強的虛假響應攻擊,由于攻擊者為了隱藏其惡意攻擊會將正常程序傳輸流量轉發給檢測系統,主動請求方式無法檢測到攻擊,但被動監聽方式會在惡意程序下載過程中發現異常。而對于碎片和噪聲填充攻擊以及通過本地USB 上傳惡意控制程序這種常規的入侵檢測系統無法檢測到的攻擊,本文檢測方法可以通過主動請求方式檢測到。因此,使用主被動結合的方式具有更好的檢測效果。

3.4 主動檢測模式對PLC性能影響

由于PLC 實時性較強,額外的網絡流量可能影響工業控制系統控制的過程。主要原因是PLC 有限的系統資源導致在處理通信的時候可能會影響控制程序的正常運行,使循環周期變長。而檢測系統在主動檢測模式下,涉及對PLC 控制邏輯以及寄存器的讀操作請求,因此需要驗證該模式是否會對PLC 工作過程造成影響。

為了測試主動檢測模式對PLC 性能的影響,實驗使用特定協議每秒向PLC 發送不同頻率的數據包并測量設備的循環周期時間。在正常程序運行狀態下,PLC 的循環周期在1~3 ms,大部分時間處于2 ms 左右。

根據圖10 可知,隨著發包頻率的增加,這4 款PLC 的周期時間幾乎沒有受到影響,而且檢測系統在實際運行過程中,主動檢測的數據包頻率小于實驗中的最大頻率,不會影響PLC 的正常工作。用戶可以根據生產情況,自定義適合的主動檢測頻率。

圖10 不同PLC發包次數對循環周期的影響Fig.10 Influence of different PLC packet sending times on cycle period

4 結語

本文針對PLC 控制邏輯注入攻擊檢測面臨的問題,提出了一種基于PLC 程序的檢測規則自動化生成方法PLCShield,能夠在無需先驗知識的前提下構建完備的檢測規則。采用主被動相結合的檢測模式,在不干擾PLC 正常操作的情況下,準確識別控制邏輯注入攻擊。下一步將擴展支持的PLC 型號和協議:將PLCShield 擴展到更多的PLC 型號和使用的通信協議上以適應不同的工業控制系統。

猜你喜歡
指令程序檢測
聽我指令:大催眠術
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 欧美色综合久久| 午夜国产大片免费观看| 99在线小视频| 亚洲欧美日韩色图| 在线视频精品一区| 久久国产精品国产自线拍| 人人看人人鲁狠狠高清| 成人精品视频一区二区在线 | 亚洲人在线| 国产中文一区a级毛片视频| 熟妇丰满人妻av无码区| 色视频国产| 69av在线| 亚洲视频欧美不卡| 香蕉色综合| 国产精品自在在线午夜区app| 亚洲人成色在线观看| 国产精品免费电影| 日韩av在线直播| 无码AV日韩一二三区| 毛片久久久| 狠狠综合久久久久综| 色综合色国产热无码一| 欧美成一级| 亚洲午夜福利精品无码| 国产成人久久综合777777麻豆| 国产91视频观看| 亚洲不卡影院| 91国内视频在线观看| 国产九九精品视频| AV老司机AV天堂| 91午夜福利在线观看| 亚洲日本韩在线观看| 欧美亚洲国产精品第一页| 五月天天天色| 亚洲AV无码乱码在线观看代蜜桃| 亚洲国产中文综合专区在| 亚洲欧美不卡中文字幕| 亚洲午夜国产片在线观看| 免费一级无码在线网站| 国产精品亚洲欧美日韩久久| 欧美va亚洲va香蕉在线| 欧美高清日韩| 在线综合亚洲欧美网站| 国产天天色| 99热这里只有精品5| 欧美日韩亚洲国产主播第一区| 在线一级毛片| 毛片最新网址| 亚洲三级成人| 广东一级毛片| 亚洲精品成人片在线观看| 国产成人久久综合777777麻豆| 国产99在线| 国产成人8x视频一区二区| 精品人妻AV区| 中国黄色一级视频| 欧美在线综合视频| 欧洲免费精品视频在线| a免费毛片在线播放| 国产激情无码一区二区APP| 99热在线只有精品| 91九色国产porny| 日韩美毛片| 亚洲天堂网在线播放| 日韩专区第一页| av在线5g无码天天| 制服丝袜在线视频香蕉| 日韩免费毛片| 久久久受www免费人成| 一本视频精品中文字幕| 亚洲永久免费网站| 国产精品黄色片| 色天堂无毒不卡| 欧美69视频在线| 日本www色视频| 99爱在线| 国产精品综合久久久| 中文字幕资源站| 国产成人无码播放| 美女视频黄频a免费高清不卡| 精品人妻一区无码视频|