張壯壯,陳永樂,王建華,陳俊杰
(太原理工大學 信息與計算機學院,山西 太原 030024)
工控系統是用于監視、控制工業生產過程的系統統稱[1]。現在其更多被暴露在互聯網下,并缺乏有效的安全機制[2]。而PLC Blaster[3]、PLC Inject[4]、Ladder Logic Bomb[5]、Click[6]等攻擊對它的安全也造成了很大的威脅。
為此,工控入侵檢測作為常用的安全防護技術,已被大量研究,其可分為基于網絡流量[7]與系統參數信息[8-11]。本文對基于網絡流量的檢測方法進行研究。針對工控流量檢測,本文將工控流量分為流量、數據包、內容3層,其中流量層指傳輸層及以下信息,數據包層指工控數據包應用層包頭信息,內容層指代負載信息。而據本文調查,目前工控流量入侵檢測大都存在檢測范圍過窄,僅考慮其中的一層或兩層,且缺乏不同層次內隱含關系的考量,易導致檢測效果不理想。
故本文提出了分層依賴關系建模的異常檢測方法,利用流量層、數據包層及內容層信息,建立由宏觀到微觀的分層依賴關系模型。
本文貢獻主要有3點:
(1)以流量數據的分層依賴關系作為切入點設計模型,為工業控制系統的異常檢測提供了一個新的角度;
(2)該方法最大限度降低了不同類型特征相互干擾的問題,提高了異常流量檢測的準確性,擴大了傳統流量檢測的范圍,并使用數據集進行了驗證;
(3)實現了系統原型,并在相同的數據集上進行了不同模型的對比實驗,實驗結果表明,本方法在精確率、F值等指標上均優于對比方案。
工控系統具有高實時性、資源有限、與物理環境緊密相連等特性,導致傳統入侵檢測分類標準無法直接應用在工控領域。故一些研究者[12-14]將工控入侵檢測分為了基于流量、基于協議、基于系統參數信息。前兩種檢測手段通過分析工控協議以及工控系統流量數據,檢測面向工業控制系統的普通網絡攻擊。而第3種檢測手段主要利用對特定控制系統或物理生產過程的先驗知識,檢測語義攻擊[13]。
基于流量的入侵檢測技術在不解析應用層協議獲取具體字段含義的情況下檢測入侵,主要處理傳輸層及以下的信息,其通過對流量數據建模的方式檢測異常流量。傳統基于流量的檢測方法[14]主要提取源目的地址、流量持續時間、平均包間隔時間等。在提取到流量特征后,常利用統計學習或者神經網絡對數據進行分析。文獻[15]提出了基于蟻群算法的特征選擇方法用于入侵檢測。該方法通過去除冗余的流量特征,提高了檢測性能。另外,相對于傳統檢測方法,該方法可以檢測出更多的惡意行為。但此類方法僅可有效檢測DDos等空間時間特征明顯的攻擊,序列攻擊檢測能力弱。
基于協議的檢測會解析工控協議的具體格式,獲取數據包字段信息,最終提取特征構建檢測模型。Yusheng等[16]提出了一種針對Modbus TCP協議采用深度包檢測技術進行實時入侵檢測的算法SD-IDS。該算法首先提取協議的攻擊行為規則,然后利用該規則對Modbus TCP協議數據包進行實時檢測。為考慮到包序列間的復雜關聯關系,文獻[17]提出了基于HMM的入侵檢測方法,該方法利用工控協議的獨有字段信息,通過HMM構建了工控攻擊序列的行為模型。此類方法常用于對流量的實時檢測,但易導致時間消耗性過高。
基于系統參數信息的檢測主要檢測工控系統設備的工作參數,相對于前兩種檢測方式,其考慮了底層設備的生產流程,在檢測語義攻擊方面具有較大優勢。而通常來說,語義攻擊并未出現明顯的違反協議規約以及流量異常特性,故針對流量的檢測難以發現這一類攻擊。而攻擊者針對控制流程[18]常采用對控制信息進行修改的方式進行攻擊,造成系統損壞。針對此類攻擊,文獻[12]、文獻[19]采用觀察實際值與期望值的方式進行檢測,若超出一定的閾值則認為檢測到異常。針對工控環境常具備多個子業務環境的問題,有文獻[20]提出基于業務過程挖掘的入侵檢測方法,該方法通過監控分析控制設備的日志抽象出控制過程模型,并利用此模型檢測任何不符合該模型的行為。由于這一類方法更加接近真實的生產環境,故可以有較低的誤報率,但其檢測范圍較窄,易導致檢測率較低。同時這類方法采用了侵入式的檢測機制需有訪問底層生產環境的權限,而工控環境作為一種相對封閉的生產環境很難獲取此類權限。
為平衡此類問題,本文提出了基于LSTM分別從流量層、數據包層、內容層提取依賴關系,構建異常檢測模型。相較已有研究,結合了基于流量檢測范圍廣與基于協議分析檢測精度高的優點,可達到較好的檢測結果。并且本方法在沒有獲取系統參數的情況下,利用內容層依賴關系可有效提升針對流量的語義攻擊檢測能力,降低IDS對工控系統的影響。
本節主要描述檢測方案的實現細節。首先對框架進行簡略概述,然后詳細描述本框架,最后對異常檢測過程進行了介紹。
針對工業控制系統工業生產流程高度固定具有周期性的特點,本文提出對流量數據包進行分層次依賴關系提取的方式,構建工控流量模型,并以此為依據進行異常檢測。本框架通過監控統計學習近期已收到的流量,并利用分層依賴關系模型探測異常流量,其主要針對modbus/TCP協議。整體流程如圖1所示,首先,分別建立不同層次的依賴關系,本文依據各個層次的獨有特性,確立了不同層次的特征提取方法;其次,利用抽取到的特征,基于LSTM神經網絡進行流量層、數據包層、內容層依賴關系建模,并輸出不同層次的測試結果;最后利用自編碼器對上述3層次的輸出結果進行整合,并輸出異常值進行異常流量檢測。本文在下面的部分中將更詳細地描述各個步驟。

圖1 框架
針對工控流量的異常檢測,特征的覆蓋率、準確率直接影響模型的效果。為有效降低特征之間的相互干擾,提高目前研究特征提取的準確性,本文將網絡流量特征分為流量層、數據包層、內容層3層分別進行提取,其粒度由粗到細。接下來詳細介紹各層行為特征的提取。
2.2.1 流量層特征提取
針對流量層面,為提取出流量在時間上的變化規律,本文采用滑動一大小為m窗口的方式,依次提取不同窗口內的數據包個數、包速率、接收的字節數、數據包時間間隔等特征,如圖2所示,具體特征見表1。其中由于mod-bus協議攻擊一般都以建立連接以及設備操作為開始,故設置m初始值為4。詳細步驟如下:

圖2 流量層特征提取
首先,確立滑動窗口并設置窗口大小m=4,在此窗口內采集流量數據信息;
其次,以窗口大小m為單位計算表1中的特征值;

表1 流量層特征描述
最后,此窗口大小可動態設置,采用m=m+2計算。
2.2.2 數據包層特征提取
針對數據包層面,本文依次對接收到的每個數據包進行協議解析,獲取協議應用層信息,modbus協議處于應用層,而依據工控協議規約功能碼用于標明一個數據幀的用途,即可以表示數據包的功能。例如,modbus功能碼0x03,表示讀取保持寄存器,在工業生產環境中HMI周期性發送這種數據包,讀取設備的狀態獲取系統工作的各項指標。另外在工業流程中modbus幀長度呈周期性變化,而Unit ID作為工控協議中特定的地址字段,在同一IP地址下可區分不同的設備。為此本文采用功能碼、modbus幀長度、Unit ID等特征構建每個數據包的特征向量,并使用此向量唯一標識每個數據包,從而準確定義數據包的行為特征。在數據包層提取的特征見表2。

表2 數據包層特征描述
2.2.3 內容層特征提取
針對內容層面,為獲取深層次的語義特征,并以此提取內容層面的不同語義間的依賴關系,本文提出抽取訪問的地址以及操作內容作為語義特征。其方法是在提取過程中依序對接收到的數據包進行協議解析,獲取數據包應用層工控協議負載(payload)信息。相對于前兩類特征,此類特征可以較容易體現出是否有異常地址被訪問或是否傳遞異常內容。由于modbus協議有離散輸入、線圈、輸入寄存器、保持寄存器4種地址區域類型,故針對不同的區域類型有不同的取值范圍。具體特征見表3。

表3 內容層特征描述
2.3.1 攻擊流量依賴關系
本文依賴關系主要指網絡數據流量中前序攻擊行為與后序攻擊行為之間存在的關聯關系。比如現階段網絡中大規模存在的modbus PLC設備注入攻擊,其前序操作讀取保持寄存器的特定位置與后序傳入惡意負載操作有較大關聯。對于攻擊者,其獲取某特定位置的存儲信息,是為下一步注入攻擊提供情報依據,若依據返回的信息發現有足夠空間,則會執行注入操作。即讀取保持寄存器操作與注入操作存在某種條件概率。
而在攻擊者發起攻擊{e1,e2,e3,…,en},其亦會有不同的攻擊形式,e表示不同的攻擊行為。圖3為一攻擊依賴關系圖示例,其中P表示攻擊發生的條件概率,本文將依賴關系量化為不同事件間的條件概率。從圖中可以看出攻擊事件e3與e3,e2都存在關聯,攻擊事件e5同理。但由于工控網絡攻擊行為之間依賴關系較為復雜,故本文采用了LSTM對其進行學習表示,提取不同行為之間存在的復雜依賴關系。接下來本節將詳細描述相關過程。

圖3 攻擊依賴關系示例
2.3.2 LSTM神經網絡
LSTM是一種特殊的RNN,而RNN是一種時間遞歸網絡,可以理解為同一個神經網絡結構在時間軸上循環多次得到的結果。相比于其它神經網絡,RNN更加擅長處理序列數據。
而LSTM作為一種特殊的RNN,其增加了輸入門、遺忘門、輸出門等門控機制,控制記憶過程,解決了長序列訓練中的梯度消失與梯度爆炸問題,故在長序列中有比普通RNN更好的表現。
LSTM以序列的形式接收時間序列x=(x1,…,xT),并通過在時刻1到T的時間段內迭代式(1)和式(2)計算隱藏向量序列h=(h1,…,hT),從而產生相應的輸出y=(y1,…,yT)
ht=H(wxhxt+whhht-1+bh)
(1)
yt=Whyht+by
(2)
其中,W表示權重系數矩陣,b表示偏差,H表示隱藏層函數。
LSTM單元結構主要由輸入輸出門、遺忘門構成,其隱藏層計算公式組如式(3)所示,其中ht-1表示上一單元的輸出,xt表示當前單元的輸入,σ表示sigmod函數,i,f,o,c分別對應輸入門、遺忘門、輸出門以及單元狀態信息
(3)
2.3.3 基于LSTM神經網絡的依賴關系模型
本文利用并行LSTM神經網絡建立了不同層次的攻擊行為模型,相對于已有研究可以降低單層次LSTM中存在不同類型特征相互干擾的情況。因為在基于單層次LSTM的檢測模型中不同類特征同時輸入,而訓練過程中由于各神經網絡節點權重的差異,易減弱相關特征值的作用,造成檢測效果不佳。
LSTM神經網絡具體結構如圖4所示,是一個全連接式的LSTM神經網絡,主要包含輸入層、3個隱含層、輸出層,其中輸入層節點數分別為流量層、數據包層、內容層對應特征向量的維度,包含3個隱含層,隱含層節點數分別為其輸入層結點數的3倍。它通過獲取時間序列上不同狀態關系,生成網絡流量模型,并利用此模型對后續行為作預測。詳細步驟如下。

圖4 LSTM神經網絡結構
(1)數據標準化處理,為避免不同量綱值對模型精度造成影響,對流量層、數據包層、內容層特征分別采用式(4)計算z-score值,其中μX與σX分別是預測偏差的均值與標準差,zx是z-score值
(4)
(2)行為向量預測,將處理后的特征數據分別輸入對應的LSTM神經網絡,并利用此模型對下一時刻的流量層、數據包層及內容層特征進行預測,獲取LSTM神經網絡輸出的預測值,輸出預測值;

(5)
2.4.1 自編碼器
自編碼器是一種無監督學習算法,其利用反向傳播算法使得神經網絡輸出值等于輸入值。基本的自編碼器,由解碼層、隱含層、編碼層構成,編碼層輸出函數如式(6),其中θ={W,b}為神經網絡參數,W,b分別為神經節點權重以及偏置信息
y=hθ(x)=δ(W×x+b)
(6)
式中:δ為神經元的激活函數,定義如式(7)
(7)
隱含層與解碼層的重構函數為式(8)
z=hθ′(y)=δ(W′×y+b′)
(8)
而自編碼器的主要目的是最小化函數(9),保證可以生成與原始數據近似的值,其中d為數據維度
(9)
在訓練集上訓練后,其具備重構與訓練集具有相同分布規律數據的能力。
2.4.2 基于自編碼器的分層依賴關系整合
分層依賴關系處理后,由于輸出結果分別為流量層、數據包層、內容層的預測偏差,故本文采用3層自編碼器對不同輸出結果進行整合,從而產生最終的異常值。其具體結構如圖5所示,包含編碼層、隱含層、解碼層。

圖5 自編碼器神經網絡結構
自編碼器在接受輸入數據后,通過編碼、解碼這一過程重構輸入數據。在訓練的過程中,不斷利用式(10)計算損失RMSE,并最小化其損失,其計算公式如下。通過訓練,就可得到此類數據大致的損失范圍
(10)
本文引入自編碼器是利用此能力,在訓練階段接收LSTM神經網絡模型的輸出數據,并將此數據作為自編碼器的輸入,獲取到正常數據的重構關系,從而在接收到異常數據后,輸出產生較大偏差,其具體步驟如下:
(1)訓練模型,獲取正常流量的損失范圍;
(2)計算異常檢測閾值,此閾值需使得模型輸出的所有RMSE值都小于T,即maxRMSE 算法1: 獲取閾值 輸入: 正常流量數據X 輸出: 閾值T (1)InitializeT=-1 //初始化閾值T (2)fori=1toi=len(X) //遍歷數據 (3)s=RMSE(x,h(x)) //計算損失 (4)if(s>T)then//獲取最優閾值 (5)T=s (6)endif (7)endfor (8)outputT//輸出最優閾值 (3)異常判斷,在獲取到閾值T后,依據本文在時間序列中獲取得到的異常值判斷t時刻數據包是否是異常或者是攻擊。若模型最后輸出值大于此閾值,則表示檢測到異常。用公式表示如式(11) (11) 在本節中,本文首先對攻擊數據集進行了介紹,其次設計實驗對異常檢測算法進行評估、測試;最后與別的檢測模型進行了對比實驗。 在本文中,對模型進行訓練、評估的數據來源于公開數據集[21]。為便于對后續實驗的理解,本節對數據進行簡單的介紹。此數據為針對modbus協議的攻擊數據,以網絡流量的形式進行保存。為收集攻擊數據,文獻[21]使用SCADA sandbox模擬了SCADA網絡環境,主要包括MTU、controller以及Field Device。在此數據中,包含惡意與非惡意的modbus流量,并且使用CSV文件存儲了對應流量的標簽。數據集內容如表4所述,包括11部分數據集,其中前6部分數據全部為正常流量,后5部分數據中在正常流量中含有少量異常流量。 表4 數據集描述 本文依據文獻[21]中構建的原始數據,對數據進行進一步的解析處理,依照本文提出的特征提取方法提取了數據包時間間隔、數據包數量及應用層字段信息等特征。 本文主要采用均方根誤差(RMSE)、精確率(Precision)、F值(F1-Score)、MCC系數以及AUC值評估模型性能。均方根誤差是評估模型訓練過程中預測值與真實值之間的損失變化,用來對模型訓練過程作評估。精確率表示檢測出的異常樣本中真異常所占比例,F值是綜合考量了精確率與召回率的評價指標,該值越高就表明模型越穩定,其中召回率表示在樣本中有多少異常樣本被檢測出。MCC同時考慮了正常與異常樣本的檢出能力,適合在樣本不平衡的條件下,做出合理評價。AUC作為ROC曲線下的面積,是模型將某個隨機異常樣本排列在正樣本之上的概率,值越大模型檢測效果越好。 在本文的實驗中,將數據分為正常數據與異常數據(正常數據內含有異常數據),正常數據作為訓練數據,異常數據作為測試集。同時為對模型進行參數調優,按照7∶3的比例將正常數據分為訓練集與驗證集。需要特別注意的是,訓練集、驗證集全部是正常流量,在測試集中有正常與異常流量。 在訓練過程中,本文將模型學習率設置為0.001,并通過更改觀察窗口大小即LSTM神經網絡步長,獲取前序攻擊行為序列長度對模型依賴關系建模的影響。在此處將樣本訓練次數(epoch)設置為12,并改變窗口大小,觀察窗口大小對模型預測誤差的影響,相關結果如圖6所示。從圖6可知,隨著窗口長度的增加,模型損失均方根誤差RMSE不斷下降,表明在一定范圍內,隨著窗口長度的增加,模型對流量的依賴關系構建愈加準確,在窗口長度達到8時,模型趨于穩定,并在之后維持在一個較為理想的區間,依據此實驗結果可選取8為最優窗口長度。因此,本文將窗口長度設為8,并將該模型用于后續性能的比較。 圖6 窗口大小對模型預測均方根誤差的影響 為考慮到模型的迭代次數對模型預測準確性的影響,本文觀察了不同迭代下的RMSE值,其在一定迭代次數之后波動幅度下降,逐漸趨于平穩,結果如圖7所示。觀察圖7可知,隨著迭代次數的增加,模型愈加準確,但在一定程度后對模型影響可忽略。 圖7 迭代次數對模型預測均方根誤差的影響 為驗證本文提出的檢測模型,本文引入異常流量即惡意樣本對模型進行測試。本文將含少量異常流量的數據作為測試集輸入,觀察模型在接收到異常流量后的輸出,相關結果如圖8所示。從圖中可以看出模型在接收到異常流量后,均方根誤差較大,利用這一特性可檢測異常。 圖8 正異常數據的均方根誤差對比 同時為考慮到數據集數量對實驗結果的影響,我們變更數據量,進行實驗。依次增加數據,觀察模型異常檢測的F值,實驗結果如圖9所示,從圖中可以看出隨著數據量的不斷增加,F值不斷上升,最后在接近一萬條數據時,趨于平穩。由此可見,在一定范圍內,數據量直接影響了最終的實驗結果,但在達到一定量后,數據量對檢測結果并無明顯影響。 圖9 數據集對F值的影響 為評估本方法分層依賴關系的有效性,本文對采用分層次與不分層依賴關系構建模型的性能進行評估。其中不分層將流量、數據包、內容3層特征映射到同一特征向量中處理,實驗結果見表5。從圖中可以看出分層后模型性能顯著提升,這驗證了在工控異常檢測中分層次依賴關系模型可更好地提取出不同層次之間的依賴關系,從而提升整個檢測模型的性能。從表中數據亦可看出數據包層及內容層特征在檢測準確率上有較大優勢,但可能存在一定程度的漏報。 表5 分層檢測性能對比 為進一步對本方法進行評估,本文選用了SVM[22]、SDA[23]與本方案(M-LSTM)進行對比,同時為評估在相同數據相同特征值上模型的表現,又選取了K近鄰算法(KNN)與隨機森林(RF)進行對比實驗。所有的對比實驗都采用相同的數據集,并從精確率(Precision)、F值(F1-Score)、MCC系數以及AUC(ROC曲線下的面積)進行對比,實驗結果如圖10所示,圖中縱坐標為4種不同類型的評價指標,橫坐標為不同檢測模型在相同評價指標下的性能表現。從圖中可以看出,本文提出的方案在所有性能指標上均優于其它幾類模型。由此可見,該方法的漏報率較低,檢測覆蓋率有所提升。其中SDA在各項指標上均有不俗的表現,但由于SDA方法僅對單個數據包進行檢測,缺乏對不同數據包之間關聯性的考慮,故其在各項指標上仍然落后于本方法。 圖10 4種檢測方案對比 同時,由圖10的實驗結果可見,本文提出的方法在本數據集上對攻擊的檢測精度達到了96.9%,與已有的方法對比時檢測能力也有較大提升。因此,分層依賴關系建模的方法對工控攻擊具有較好的檢測能力。 本文首先闡述了針對工控系統的異常檢測,并在此基礎上,提出了針對網絡流量建立分層依賴關系的異常檢測算法。其通過分別建立流量層、數據包層以及內容層的依賴關系,擴大流量攻擊檢測的覆蓋率,降低不同層次間特征的干擾,從而提高了針對流量異常檢測的檢測性能。 同時,本算法還可以進一步完善,模型存在優化空間。實驗所用數據有待進一步擴充,用以驗證本方法的有效性。另外,本文提取流量層、數據包層以及內容層作為特征輸入,該類特征雖能最大限度獲取流量行為,但并未考慮到時間消耗帶來的影響,這是采用深度包檢測技術解析協議的弊端,也是本文下一步工作中有待解決的問題之一。
3 實驗評估
3.1 樣本集

3.2 檢測模型評價指標
3.3 模型訓練


3.4 檢測能力評估


3.5 對比實驗


4 結束語