一種針對工控系統攻擊的遠程檢測方案(工控系統安全)


論文標題:SHADOWPLCS: A Novel Scheme for Remote Detection of Industrial Process Control Attacks
論文作者:Junjiao Liu, Xiaodong Lin, Xin Chen,Hui Wen,Hong Li,Yan Hu,Jiawei Sun,Zhiqiang Shi and Limin Sun
論文連接https://ieeexplore.ieee.org/document/9301471
期刊名:網絡安全頂刊TDSC

本文系原創,轉載請說明出處
Welkin Chan. 一種針對系統攻擊的遠程檢測方案.


內容提煉

該論文的檢測思想很完備,從主動與被動的兩種角度出發構建檢測方式。同時,該論文從工控流程本身出發,以兩類攻擊方式:惡意數據注入以及控制邏輯注入為主,將攻擊場景設定成非法地址訪問攻擊、惡意數據注入攻擊、篡改配置攻擊、控制邏輯干擾攻擊、控制程序替換攻擊五種,按照這些攻擊方式在工控過程中的向量分布構想檢測方案。

  1. 首先通過對PLC代碼分析獲取有效地址規則、有效值范圍規則、控制邏輯規則
  2. 然后,被動檢測通過對通信數據流分析的方式,對數據流按照協議規則進行分解,提取出源端口、源地址等要素,按照三種白名單依次分析是否有非法連接、操作非法地址、非法值
  3. 主動檢測針對惡意數據注入、密鑰配置以及控制程序被篡改或替換等攻擊,通過與PLC主動建立連接,按協議構建網絡數據包,讀取寄存器變量,在不影響PLC正常運作的情況下對PLC的存儲空間進行映射,並將映射所獲取的內存空間中的值與有效值呵控制邏輯白名單進行對比,以驗證是否遭到注入、篡改或替換等攻擊。

優點:

  1. 深度結合工業過程。PLC通過PLC程序自動控制實際的工業過程。因此,由PLC代碼生成的檢測規則比基於網絡流量的建模和規則提取更全面,能夠充分反映真實的受控過程。同時,使用程序規則來檢測工業過程控制攻擊更為有效。
  2. 無需額外人力。ShadowPLC可以通過對PLC控制代碼的自動分析,自動、全面地生成權威的檢測規則,而無需人工依賴經驗和手動配置和建模。
  3. 進程控制攻擊很難被繞過。我們的方案結合了主動和被動方法,從不同角度檢測攻擊行為。由於我們深入了解受控過程並主動映射相應的PLC寄存器變量,這使得攻擊者更難進行隱蔽攻擊。為了逃避檢測,攻擊者需要了解真實的工業流程,並能夠實時響應IDS符合受控流程的虛假數據。這通常需要深入PLC,攻擊PLC固件並修改其網絡處理模塊,而不是簡單地通過中間商避免檢測。
  4. 應用廣泛。根據我們提出的檢測方案,我們可以定制不同PLC設備的開發,並實際實施,以對IC進行實質性防御。

缺點:

  1. 型號局限性。盡管幾乎所有PLC語言都遵循IEC 61131-3標准,但不同品牌和型號的PLC的編程語言可能存在一些差異。因此,當通過分析PLC代碼生成檢測規則時,必須針對不同類型的PLC進行定制開發。
  2. ShadowPLCs不適用於加密的專用工控系統協議。無論是被動檢測還是主動檢測,對ICS協議的分析都是最基本和必要的。IDS工程師需要能夠深入理解協議格式和通信方法,能夠提取重要信息並構建數據包,以便基於ICS協議與PLC通信。
  3. 主動檢測方法無法對設置了訪問權限的PLC設備執行攻擊檢測。然而,大量PLC設備目前並不限制PLC寄存器變量的遠程讀取。

摘要

隨着針對工業控制系統(ICS)的攻擊越來越多,工業控制系統(ICS)安全變得越來越重要。盡管過去已經提出了許多現成的工業網絡入侵檢測機制,但攻擊者總能找到獨特的偽裝方法來繞過檢測並破壞實際的工業控制過程。為了緩解這一缺陷,我們提出了一種新的檢測工業過程控制攻擊的方案,稱為ShadowPLC。具體來說,該方案首先自動分析PLC的控制代碼,然后提取PLC的關鍵參數,包括有效寄存器地址、有效值范圍和控制邏輯規則,作為評估攻擊的基礎。通過與PLC的主動通信和對網絡流量的被動監控,從不同角度實時檢測攻擊行為。我們以西門子S7-300系列PLC為例實現了一個原型系統。使用部署在天然氣管網平台上的兩台西門子S7-300 PLC對我們的方案進行了評估。實驗表明,該方案能夠在不影響PLC正常工作的情況下實時並准確地檢測過程控制攻擊。與其他四種具有代表性的檢測模型相比,該方案具有更好的檢測性能,檢測准確率達97.3%。


主要內容

1 背景知識

1.1 工業控制系統的基本環境組成

在這里插入圖片描述

工控系統環境由控制中心和工業廠點構成,連接控制中心和工業廠點的便是PLC。PLC是一種帶有微處理器的數字邏輯控制器,這些微處理器通過編程定義控制邏輯,以維持物理過程的預期狀態。PLC通過監測網絡連接到控制中心。工程站將過程控制程序下載到PLC,然后PLC根據程序指示的控制邏輯自動控制工業生產。操作員站點通過從PLC請求工業現場的測量數據來監控工業過程。必要時,操作員可向PLC發送控制命令,對生產過程進行相應操作。在工業廠點,PLC連接到傳感器和執行器,控制程序使用傳感器數據作為輸入並設置輸出以激活執行器。

1.2 PLC的工作過程

在這里插入圖片描述
(PLC內部結構)
在這里插入圖片描述
(PLC工作流程)
PLC的工作過程在循環掃描中執行。當PLC處於運行狀態時,其運行周期可分為三個基本階段:

  1. 輸入采樣階段。PLC逐個掃描每個輸入端口,將所有輸入設備的當前狀態保存到相應的存儲區,並將專用於存儲輸入設備狀態的存儲區作為輸入映像初始化(在計算機系統中image一般翻譯為鏡像);
  2. 程序執行階段。CPU從用戶程序存儲區讀取用戶指令,在執行相應操作后,生成相應結果,並刷新相應的輸出映像寄存器。在此期間需要輸入映像寄存器、輸出映像寄存器、中間寄存器等的相應狀態;
  3. 輸出刷新階段。系統程序將輸出映像寄存器的內容傳輸到輸出鎖存器,並通過輸出終端來傳遞輸出以驅動外部負載。輸出鎖存器保持其狀態直到下一個周期,而輸出寄存器的狀態在程序執行階段是動態的。

1.3 PLC規范語言

國際電工委員會標准IEC 61131-3是PLC語言的國際標准,規定了控制邏輯編程中的語法、語義和顯示,並對以前的編程語言進行了部分修改,形成了當前通用的五種語言:梯形圖(LD),順序功能圖(SFC)、功能框圖(FBD)、結構化文本(ST)和指令表(IL)。

1.4 PLC控制邏輯監測

在這里插入圖片描述
TIA在線檢測PLC程序的運行狀態
幾乎所有的PLC編程軟件都提供了一種程序監控模式,允許遠程直觀地監控PLC程序的運行狀態。如圖3所示,TIA門戶V13在線監控西門子S7-300 PLC的梯形圖程序。它主動與PLC通信,以獲取當前運行狀態並以圖形方式顯示。圖3中的梯形圖邏輯可以轉換為數學表達式(I0.0&M30.0)|(I0.1&┒DB20.DBX0.0)| M30.0 = Q0.0。此時,在PLC中,輸入寄存器I0.0I0.1、中間寄存器M30.0M30.1、數據塊DB20.DBX0.0(原文次數少寫了個字母)和輸出寄存器Q0.0的值分別為1,0,1,0,1,1。
將它們引入到數學邏輯運算中,我們可以得到與圖3相同的結果。這是一種低干擾方法,不會影響PLC的正常運行。受此啟發,我們的入侵檢測方案從PLC代碼中提取檢測規則,並使用低干擾方法與PLC通信,映射其內存中的當前信息,對工業控制過程進行實時遠程監控,並發現過程控制攻擊行為。


2 攻擊模型構建

對於攻擊者來說,攻擊ICS的最終目標是在不被高級IDS或工廠操作員檢測到的情況下操作物理進程。在本節中,我們首先討論正在考慮的對手模型,然后介紹五種典型的攻擊場景。
在這項工作中,我們調查了近年來對PLC的網絡攻擊,將主要的攻擊方法分為兩類:1)虛假數據注入。2)控制邏輯注入

2.1 攻擊者模型

  1. 虛假數據注入是指將不符合工業控制過程的惡意數據注入PLC,最終導致過程控制的破壞。例如,寫入反轉或最小/最大值,修改關鍵設定點變量值和過程值。
  2. 控制邏輯注入是指篡改或替換目標PLC上運行的原始控制邏輯。攻擊者通過干擾正常下載/上傳控制邏輯工程操作,將惡意控制邏輯注入目標PLC。”Stuxnet“蠕蟲篡改了PLC控制程序,加快了伊朗核電站的離心機速度,並對歷史數據做出反應,使控制中心感到困惑。

2.2 攻擊場景

基於上面討論的對手模型,我們考慮了以下攻擊場景,這可能會嚴重破壞工業控制過程:非法地址訪問攻擊、惡意數據注入攻擊、配置篡改攻擊、控制邏輯感染攻擊和控制程序替換攻擊。在本文中,我們只關注這五個工業過程控制攻擊場景,並且不考慮物理攻擊、固件攻擊、側信道攻擊等,因為它們可能不太可行或有害,或者可以被現有的IDSs檢測到。

(1) 非法地址訪問攻擊。在此攻擊場景中,假設攻擊者面對的是黑盒PLC,但對手有能力遠程訪問PLC的寄存器空間。為了有效地攻擊PLC,對手將首先探測PLC的寄存器空間,以找到關鍵的攻擊執行點。例如探索PLC使用的輸入和輸出接口、定時器、計數器、關鍵參數。這種攻擊很容易發動,對手不需要知道實際的工業過程。
(2) 惡意數據注入攻擊。假設對手已經知道PLC中的一些關鍵控制點,如寄存器Q0.0,以控制閥門的開啟或關閉。常見的攻擊方法是強制對寄存器地址執行寫操作,覆蓋寄存器的當前值。例如,在污水凈化完成之前,閥門關閉。此時,寄存器Q0.0為“0”。對手強行將“1”注入Q0.0,覆蓋了Q0.0的實際狀態,導致閥門打開,污水泄漏。這種攻擊簡單而粗魯,效果顯著,但不易隱藏。
(3) 篡改配置攻擊。假設對手對工業過程有所了解,他們通過惡意篡改關鍵程序配置信息間接破壞工業過程。例如,篡改計時器和計數器設置等,會發起釋放攻擊。
(4) 控制邏輯感染攻擊。假設對手有能力竊取PLC的當前控制程序。它們通過感染控制程序干擾實際的工業過程。例如,將I/O寄存器中的值替換為內存中的某個可控值,以控制執行器的狀態、插入/刪除指令-s/梯級、替換方程式中的運算符、修改設定點、修改控制流行列式(影響控制邏輯條件分支決策的變量)等。
(5) 控制程序替換攻擊。在此攻擊場景中,對手不會感染原始PLC控制程序,而是植入惡意控制代碼並嘗試讓PLC執行它們。由於這種攻擊完全由對手控制,以摧毀他們想要完成的任何工業過程,因此具有很強的隱蔽性,具有破壞性,隨時可以發動。典型的攻擊,如數據執行攻擊、碎片攻擊和噪聲填充攻擊。

2.3 尋址攻擊

最先進的ICSIndustrial Control System) 的IDS本質上是周期性地監控ICS網絡消息的內容,並驗證它們是否發生了重大變化。由於它們在ICS網絡中是恆定的或可預測的,因此這些IDS對非法地址訪問攻擊和惡意數據注入攻擊具有一定的檢測效果。然而,ICS網絡流量缺乏對程序配置、控制邏輯運行狀態等的實時監控,因此IDSs對控制邏輯感染攻擊和控制程序替換攻擊的檢測效果一般較差。


3 方法

3.1 利用PLC代碼生成基於簽名的檢測規則

控制邏輯是在控制實際工業過程的PLC中重復執行的程序。PLC代碼攜帶最全面和完整的控制過程信息,如觸點、線圈、指令等,它們以常量值或寄存器地址的形式作為變量,僅通過鏡像ICS網絡流量是無法獲取這些信息的。而通過分析PLC代碼,可以識別出IDS簽名集主要有三種白名單規則:有效地址規則、有效值范圍規則和控制邏輯規則。
1) 有效地址規則。PLC內部的有效地址空間是固定的,它與控制程序有關。在正常情況下,控制中心只訪問一些有效地址,並且讀取大多數操作,因為有效地址存儲當前設備狀態信息。由於缺乏對ICS的了解,許多攻擊者使用暴力方法感染易受攻擊的寄存器。如果存在超出有效地址范圍的訪問,則可以快速識別這種異常行為。
2) 有效的值范圍規則。PLC代碼包含重要的配置信息,一旦它們被篡改,被PLC控制的設備穩定狀態就會被破壞。舉個例子,設置點信息,如計時器和計數器,篡改它們可能會導致提前或延遲攻擊;一些關鍵變量的數值范圍,如離心式變頻器驅動器的頻率轉換范圍在807Hz和1210Hz之間;又如一些特殊指令也會影響數值范圍,如“div”指令不能除以0,否則會導致設備故障。我們分析PLC代碼並生成有效的值范圍規則來監控PLC中的關鍵配置信息。
3) 控制邏輯規則。ICS通過PLC程序的控制邏輯指導工業生產過程。常用的控制方法有開關邏輯控制、模擬控制、運動控制、過程控制等。PLC中的各種寄存器變量(如輸入寄存器、輸出寄存器、中間寄存器、定時器、計數器等)相互配合以完成自動化控制目標。因此,我們解析PLC代碼,提取寄存器變量之間的邏輯關系,然后生成控制邏輯規則。使用這些規則作為基線,檢測惡意攻擊,如PLC控制邏輯感染或程序替換。

在這里插入圖片描述
如圖4所示,我們以單向交通燈控制為例,演示如何使用PLC代碼生成基於簽名的檢測規則。單向交通燈控制程序包含兩個文件。一個文件是程序源代碼,它是信號燈的自動控制程序。另一個文件是PLC變量表,它記錄變量名稱、實際PLC地址和數據類型。我們首先查詢變量表並替換源代碼中的變量名。
如圖4的前兩個塊,即PLC Control Code的所示,例如“Run”<-> I0.0,“Stop”<-> I0.1和“Tag_1”<-> M0.0
在這里插入圖片描述
即PLC控制代碼的右側雙引號包括一欄為“name”一欄,對應着地址。然后對代碼指令進行詞匯、語法和語義分析,生成有效地址規則,如有效地址I0.0、I0.1、M0.0、T2、T0;有效的值范圍規則,如T2∈ [0,60s];和控制邏輯規則,如I0.0&¬I0.1→ M0.0,M0.0&¬T2→ T0。
因此,由PLC Control Code、PLC Variable Table組合,可以生成控制邏輯規則、有效值范圍規則以及有效地址規則,一一對應圖四中的三個板塊。

注:這個PLC控制代碼是西門子S7-400PLC代碼的指令集,可關注公眾號信安科研人,發送“西門子指令集”獲取pdf版文件。
在這里插入圖片描述

3.2 基於主動和被動的攻擊檢測模型

該論文提出了一種主動和被動相結合的入侵檢測方案。如圖5所示,該IDS包括兩部分:被動檢測引擎主動檢測引擎。被動檢測引擎通過被動監控網絡流量來檢測異常行為,如非法地址操作和非法值沖突。主動檢測引擎主動與PLC進行通信,以低中斷和輪詢映射PLC的存儲空間,並實時監控工業控制過程中的異常情況。
攻擊者很難繞過主動和被動相結合的入侵檢測方案,並且很難隱藏自己。因為他們需要不斷模擬工業生產現場的正常狀態,符合控制邏輯,甚至需要篡改設備的固件或網絡通信模塊,而不是通過簡單的ARP欺騙和重放數據包等傳統手段欺騙IDS和控制中心。
在這里插入圖片描述

3.2.1 被動檢測

被動檢測引擎首先鏡像(復制數據流)流經工業交換機的網絡流量,通過深入解析工業控制協議,提取五元組信息(源IP、目的IP、源端口、目的端口、傳輸層協議)、操作地址操作指令具體值。然后檢查上述信息是否符合有效地址白名單和有效值范圍白名單,並檢測非法連接、非法地址操作、非法值等異常行為。
在這里插入圖片描述
如圖6所示,網絡信息列表的紅色部分表示異常。計數器C1.0的有效范圍在0到20之間,但網絡中C1.0的值為23,因此報警為C1.0非法越界。在第2行數據里面,M30.0不在有效地址規則的白名單中,因此M30.0是非法地址。第3行數據里面, IP 192.168.20.4和端口35555是新連接,不在白名單中,因此將被認作是非法連接。
在這里插入圖片描述
算法1顯示了被動檢測的過程:
第1行表示深度解析協議,並提取五個元組、地址、操作和值。
第2行是非法連接檢測。當網絡流量中出現未知IP、未知端口和未知通信時,會報警以非法鏈接。
第4行檢測非法地址。當網絡流量中存在PLC實際未使用的地址時,會報警以非法地址;
第6行表示檢測到非法值范圍。當值超出范圍等時,會報警以非法值范圍。

3.2.2 主動檢測

主動檢測引擎主要檢測程序控制邏輯的異常,防止重要的內存地址被注入惡意數據、密鑰配置以及控制程序的被篡改或替換。控制邏輯規則通常由多個寄存器變量組成。這些變量一度可以被用來檢測PLC的當前程序運行狀態,由於PLC與控制中心之間的通信網絡是靜態的,工業現場狀態監測采用請求-響應方式,無法滿足同時監測相關的多寄存器變量的要求。
我們主動地與PLC建立連接,根據通信協議格式構建網絡數據包,一次讀取多個相關寄存器變量,並在不影響PLC正常運行的情況下映射PLC的存儲空間。具體的說,主動檢測模塊首先主動連接到PLC並映射相應的內存空間,然后驗證它們是否滿足有效值范圍白名單和控制邏輯白名單。
在這里插入圖片描述
圖7展示了控制邏輯攻擊檢測的例子DataItemMap<address,value> 表示被主動檢測模塊映射的內存空間。寄存器地址和參數值則是<>中的鍵值對(圖7中的藍色字體),即左邊是寄存器地址,右邊是寄存器的值。控制邏輯規則是檢測基准,如第一行的DB20.DBX0.06&DB20.DBX0.0 | (DB20.DBX0.1&¬DB20.DBX0.0)|M32.0 →Q0.0
如果任意一個結果,即DB20.DBX0.6 & DB20.DBX0.0DB20.DBX0.1&¬DB20.DBX0.0M32.0中任意一個結果為1,則Q0.0輸出1,否則輸出0。因此,1&1|(0&¬0)|0→ 1與控制邏輯規則1匹配,這意味着行為正常。同樣,紅色表示1&0 |(0&0)→ 0, 0 & (10 = 0) & ¬0 → 11&0 | (0&¬1) 0→ 1與控制邏輯規則不匹配規則2及規則3,它將警告PLC可能的控制邏輯攻擊,並可定位可疑寄存器和代碼段。
主動檢測引擎以主動、低干擾和輪詢的方式檢測PLC是否被攻擊,其核心部分如算法2所示。
在這里插入圖片描述

首先,與PLC(1號線)建立通信連接;然后攻擊檢測(第2行至第16行);
最后,當有任務更改需求時,連接斷開,任務被銷毀(第17行,第18行)。
在攻擊檢測階段,第一步是加載控制邏輯規則、有效值范圍規則和有效地址規則(第4行),以獲取寄存器地址和數據類型。其次,根據協議格式構建請求包並發送到PLC(第5行、第6行)。第7行和第8行表示接收響應數據並解析協議以提取寄存器變量值;最后,檢查有效值范圍和控制邏輯是否存在異常(第9行至第15行)。第16行表示請求頻率的設置,以實現對PLC的低干擾。


4 實驗設計與評估結果

4.1 實驗設計

階段一: 基於PLC代碼生成攻擊檢測規則
1、 在進行攻擊檢測前,需要提取檢測規則,這就需要對PLC代碼進行分析。一般來說,有兩種方法獲取PLC代碼,一種是直接從官網等獲取源代碼,另一種是通過反編譯機器代碼。本工作使用第二種方法。
在這里插入圖片描述

反編譯的流程見圖9這里需要知道STL是 statement list的縮寫。如圖9,按照MC7代碼的特征值對原數據字節進行分塊,並按照特征(見TABLE 1)對分的塊進行語義分析,也就是按照MC7的結構進行數據分塊。
在這里插入圖片描述

反編譯完成后,就到了檢測規則的生成階段。
1、首先對西門子S7-300/400的STL程序文本文件進行預處理,預處理主要包括代碼段剪切和程序壓縮。通過代碼段切割,可以划分STL的主程序段;程序壓縮可以消除不影響控制邏輯的不必要指令,減少程序自動分析和白名單規則提取的負擔。
2、經過預處理后,我們對STL程序進行了自動分析。通過詞法分析和語法分析,解決了操作類型、地址類型、比較條件等問題,推測了過程變量最可能的數據類型和取值范圍,提取了有效地址白名單和有效取值范圍白名單。通過語義分析,可以准確提取過程變量之間的相關性,提取控制邏輯白名單。階段1的具體流程見下圖
在這里插入圖片描述
階段二
在此階段,我們將介紹進程控制攻擊檢測的實現細節。在這項工作中,我們采用低干擾、主被動相結合的入侵檢測方法,並且不影響PLC的正常運行。據我們所知,這是首次將主動和被動相結合應用於ICS攻擊檢測的工作。如圖8所示,我們的過程控制攻擊檢測由兩部分組成:被動檢測引擎和主動檢測引擎。在攻擊檢測之前,將有效值范圍白名單、有效地址白名單和控制邏輯白名單植入檢測引擎。兩個檢測引擎同時運行並協同工作,從不同角度檢測ICS的攻擊行為。
ICS協議的深度解析是ICS網絡入侵檢測的基礎。S7通信(S7comm)是西門子S7-300/400系列PLC采用的專用通信協議。控制中心上傳/下載PLC程序、控制命令的讀/寫請求以及PLC對應的響應均按照本協議執行。
在這里插入圖片描述

在圖8中,主動檢測引擎和被動檢測引擎相互協作,從不同角度檢測異常行為。被動檢測引擎首先鏡像流經工業交換機的網絡流量,然后深入解析S7comm協議,提取五個元組、操作、地址和值,最后匹配有效地址白名單和有效值范圍白名單,檢測非法鏈接、非法操作地址和非法值。
特別地,主動檢測引擎通過低干擾、切片、輪詢和主動分組發送來讀取有效地址空間的當前值。主動檢測引擎首先加載控制邏輯規則,並根據S7comm協議格式構造多地址讀取數據包。然后,它與PLC通信以發送和接收數據。最后,驗證控制邏輯是否異常。

4.2 實驗結果

在這里插入圖片描述
幾個IDS 對五種不同攻擊檢測的准確率結果如上圖,這里不再贅述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM