摘要:工業(yè)控制系統(tǒng)是社會運行和國家安全的重要基礎。為提高工業(yè)控制系統(tǒng)的入侵檢測能力,設計一個基于深度神經(jīng)網(wǎng)絡的工業(yè)入侵檢測方案。采用與真實世界水處理廠非常相似的六級水處理模型SWaT,通過訓練長短期記憶循環(huán)神經(jīng)網(wǎng)絡,對經(jīng)過PCA降維的SWaT預處理數(shù)據(jù)進行檢測和鑒別。結果顯示,檢測方案在測試集的表現(xiàn)上優(yōu)于過去的OCSVM、IF、Matrix Profile這3種檢測方案,并且網(wǎng)絡訓練速度更快,檢測需要的上下文環(huán)境更少,具有一定的實用價值。
引言
工業(yè)控制系統(tǒng)(Industrial Control System)在運輸、供電以及水處理等領域應用廣泛,是工業(yè)基礎設施的核心組成部分,也是國民經(jīng)濟、社會運行和國家安全的重要基礎。自澳大利亞Maroochy廢水系統(tǒng)攻擊、Stuxnet蠕蟲攻擊以及德國鋼鐵廠之后,工業(yè)控制系統(tǒng)的安全提升到一個新的高度,受到人們越來越多的重視。
大多數(shù)入侵檢測系統(tǒng)(Intrusion Detection System,IDS)采用CIDF通用模型。CIDF模型將IDS分為4個相互關聯(lián)的部分——事件生成器(Event Generators)、事件分析器(Event Analyzers)、響應單元(Response Units)和事件記錄器(Event Recorder)。EG負責采集和預處理原始數(shù)據(jù),包括ICS中的數(shù)據(jù)報文、日志以及傳感器數(shù)據(jù)等,格式化為事件并傳遞給其他3個模塊。EA是入侵檢測系統(tǒng)的核心。EA實現(xiàn)入侵檢測算法,分析傳遞給它的事件行為,判斷事件是否構成異?;蛉肭中袨椋⑴袛嘟Y果傳遞到RU。RU根據(jù)EA的判斷結果做出響應,包括發(fā)出切斷電源、停止數(shù)據(jù)傳輸命令或改變訪問權限。ER將入侵檢測系統(tǒng)的工作流程記錄成日志,以供安全人員查看。具體模型如圖1所示。
圖1 CIDF通用模型
傳統(tǒng)的IDS通常沒有考慮ICS特有的通信協(xié)議,如DNP3和Modbus,且ICS的異常檢測不能完全依賴網(wǎng)絡流量,還需要查看與物理過程控制相關的傳感器或執(zhí)行器信息,增加了數(shù)據(jù)特征數(shù)目和各項數(shù)據(jù)關聯(lián)性的復雜程度。傳感器傳遞的數(shù)據(jù)很有可能受到噪聲的影響,導致異常檢測設備產(chǎn)生高誤報率和低攻擊檢測率。
國內外已有大量研究人員進行了大量研究,但大多數(shù)方法高度依賴預定義的模型和特征來檢測異常行為,且現(xiàn)有的入侵檢測方法大多針對特定的協(xié)議和系統(tǒng)定制,缺少一定的通用性。此外,攻擊往往具有時間依賴性,在大多數(shù)檢測方案中沒有涉及。本文設計并實現(xiàn)一個基于LSTM的IDS方案,并在SWaT數(shù)據(jù)集上評估效果。為了獲得更好的對比效果,根據(jù)文獻[6-7]的描述,實現(xiàn)了Isolation Forest、OSCVM和Matrix Profile這3種檢測方案。實驗結果表明,基于LSTM的檢測方法比其他3種檢測方法具有更高的正確率,且測試所需要的時間更短,需要的上下文環(huán)境更少。
本文余下部分組織如下:第1部分概述目前已有的檢測方法;第2部分說明實驗中的數(shù)據(jù)集;第3部分闡述降維方法和主要算法;第4部分分析評估結果并討論;第5部分為結論。
1 相關工作
作為一種有效的防御手段,異常檢測已經(jīng)被廣泛應用在各個領域,如檢測僵尸網(wǎng)絡、檢測物聯(lián)網(wǎng)的攻擊以及檢測程序的異常行為等。
Maglaras和Jiang等人提出使用一類支持向量機(One Class Support Vector Machine,OCSVM)來檢測攻擊。他們將原始的網(wǎng)絡跟蹤文件分割為兩個獨立集合用于訓練與測試,但數(shù)據(jù)集較小,只有不到2000條獨立完整的跟蹤記錄。
Goh等人通過使用遞歸神經(jīng)網(wǎng)絡,檢測網(wǎng)絡物理系統(tǒng)的攻擊。他們同樣使用安全水處理(Secure Water Treatment,SWaT)數(shù)據(jù)集。在他們的工作中,使用RNN是為了預測在接下來的一段時間內某一物理屬性或某一傳感器接收到的數(shù)據(jù)的變化曲線。如果預測曲線和實際信號曲線有較大差別,說明可能存在入侵。
此外,國內外對工業(yè)控制系統(tǒng)的入侵檢測還有許多研究成果。Gao和Morris提出了利用特征碼來檢測Modbus數(shù)據(jù)中攻擊的方法;在Schneider和Bóttinger的研究中,他們通過自動編碼器,以無監(jiān)督的方式檢測工業(yè)數(shù)據(jù)集中的真實攻擊;Knapp和Langill提出了保護工業(yè)網(wǎng)絡安全的方法;Yang等人則針對電力系統(tǒng)網(wǎng)絡入侵檢測問題進行了討論。
2 SWaT數(shù)據(jù)集
新加坡理工大學網(wǎng)絡安全中心iTrust提出的SWaT模擬一個工業(yè)水處理廠,通過膜超濾和反滲透裝置,每分鐘生產(chǎn)5加侖的過濾水。SWaT在正常模式下運行7天,在攻擊模式下運行4天,最終生成與水處理廠和水處理過程有關的物理特性,并與實驗中網(wǎng)絡流量共同構成數(shù)據(jù)集。
水處理分為生水存儲(Raw
Water
Storage)、預處理(Pre-treatment)、膜超濾(Ultrafiltration,UF)、紫外線(Ultraviolet,UV)燈脫氯、反滲透(Reverse
Osmosis,RO)和處理(Disposal)6個子過程。子過程之間的聯(lián)系和轉換關系如圖2所示。工廠將準備處理的水儲存起來,用不同的化學物質預處理。之后使用膜超濾再進行脫氯處理,輸送給反滲透設備。根據(jù)水清潔度的高低,決定存儲在干凈的儲水池中還是回到膜超濾環(huán)節(jié)。
圖2 模擬處理過程
SWaT數(shù)據(jù)集基于攻擊的特點,區(qū)分了4種類型的攻擊。
( 1 ) 單級別單點攻擊(Single Stage Single Point,SSSP):在一個子過程中,對一個點(傳感器或執(zhí)行器)進行攻擊。
( 2 ) 單級別多點攻擊(Single Stage Multiple Point,SSMP):在一個子過程中,集中對多個點進行攻擊。
( 3 ) 多級別單點攻擊(Multiple Stage Single Point,MSSP):在多個子過程中,分別對一個點攻擊。
( 4 ) 多級別多點攻擊(Multiple Stage Multiple Point,MSMP):在多個子過程中,對多個點進行攻擊,可以看做是單級別多點攻擊在多個子過程上的實現(xiàn)。
在11天的數(shù)據(jù)收集過程中,共有36次攻擊。表1列出了攻擊的分類。
表1 SWaT中攻擊類型和次數(shù)
3 研究方法
3.1 基于LSTM的入侵檢測建立網(wǎng)絡模型
3.1.1 PCA降維
雖然SWaT是較為簡單的典型工業(yè)控制系統(tǒng),一項物理屬性記錄中只有53個數(shù)據(jù)項,物理控制過程可以抽象為只有51個屬性的數(shù)據(jù)(其他兩個數(shù)據(jù)項分別為時間戳和標簽Normal/Attack),但為了不失一般性,抽取數(shù)據(jù)特征對數(shù)據(jù)進行降維處理。
使用卡方檢驗返回最佳特征,并使用PCA(主成分分析)算法進行降維。為了獲得最好的降維效果,在SWaT數(shù)據(jù)集上測試最佳特征返回數(shù)目為8~14時降維數(shù)據(jù)的完整性,具體測試結果如表2所示。抽取數(shù)據(jù)保留11個屬性(時間戳和標簽除外),分別是'LIT101'、'AIT203'、'FIT201'、'DPIT301'、'FIT301'、'LIT301'、'AIT402'、'LIT401'、'AIT502'、'PIT501'、'PIT503'。此時數(shù)據(jù)的損失較少,數(shù)據(jù)完整性保留程度高。圖3與圖4分別顯示了降維前后特征之間的關聯(lián)性。PCA處理前,各個屬性之間均存在一定關聯(lián),其中有部分屬性存在明顯的正相關與負相關聯(lián)系。PCA提取出主要特征分量,將抽取后的特征變換為線性無關的表示,因此圖4顯示各個維度之間關聯(lián)性為0。
表2 保留屬性與完整性
圖3 降維前特征間關聯(lián)性
圖4 降維后特征間關聯(lián)性
為了能夠更好地應用SWaT數(shù)據(jù)集(以及其他工業(yè)控制系統(tǒng)中數(shù)據(jù))的時序性特點,將降維后的數(shù)據(jù)每30條分作一組,每一組內部數(shù)據(jù)都是時序的。將每一組數(shù)據(jù)組成的矩陣轉置,形成類似字符串embedding后的編碼結果。
3.1.2 LSTM網(wǎng)絡
LSTM是一種特殊的RNN。通過精巧的設計,解決長序列訓練過程中梯度消失和梯度爆炸問題。標準RNN由簡單的神經(jīng)網(wǎng)絡模塊按時序展開成鏈式,內部結構如圖5所示。這個重復模塊結構簡單且單一,記憶疊加方式顯得簡單粗暴。
圖5 RNN網(wǎng)絡內部結構
LSTM內部有較為復雜的結構,能通過門控狀態(tài)選擇調整傳輸?shù)男畔ⅲ涀⌒枰L時記憶的信息,忘記不重要的信息,如圖6所示。
圖6 LSTM網(wǎng)絡內部結構
LSTM內部主要有3個階段。
( 1 ) 忘記階段。這個階段主要是對上一個節(jié)點傳進來的輸入進行選擇性忘記——“忘記不重要的,記住重要的”。通過計算得到的zf(f表示forget)作為忘記門控,ct-1來控制上一個狀態(tài)哪些需要保留哪些需要遺忘。
( 2 ) 選擇記憶階段。該階段將輸入有選擇性地進行“記憶”。主要對輸入xt進行選擇記憶,重要內容著重記錄,不重要內容則少記一些。當前的輸入內容由前面計算得到的z表示。選擇的門控信號則由zi(i代表information)進行控制。將上面兩步得到的結果相加,即可得到傳輸給下一個狀態(tài)的ct。
( 3 ) 輸出階段。這個階段將決定哪些將會被當成當前狀態(tài)的輸出。主要通過zo控制,且對上一階段得到的co進行放縮(通過一個tanh激活函數(shù)進行變化)。
LSTM通過門控狀態(tài)控制傳輸狀態(tài),記住需要長時間記憶的,同時忘記不重要的信息。這對很多需要“長期記憶”的任務尤其好用,但也因為引入了很多內容導致參數(shù)變多,加大了訓練難度。
3.1.3 網(wǎng)絡結構
本文實現(xiàn)了一個基于LSTM的深度網(wǎng)絡。網(wǎng)絡包含2個LSTM網(wǎng)絡層和1個全連接層,最后使用Sigmoid進行歸一化。由于Sigmoid會帶來過擬合問題,在網(wǎng)絡各層間添加Dropout并設置LSTM的recurrent_dropout為0.2。第4部分評估結果顯示,這樣的方法是合適的。
3.2 其他入侵檢測方法
3.2.1 OCSVMOCSVM
即一類支持向量機。該模型將數(shù)據(jù)樣本通過核函數(shù)映射到高維特征空間,使其具有良好的聚集性。在特征空間中求解一個最優(yōu)超平面,實現(xiàn)目標數(shù)據(jù)與坐標原點的最大分離。OCSVM使用一個類進行訓練,以確定測試用例的元素是否屬于該類,非常適合單類占主導地位的應用場景,如異常檢測。
3.2.2 孤立森林
孤立森林算法是一種適用于連續(xù)數(shù)據(jù)的無監(jiān)督異常檢測方法。與其他異常檢測算法通過距離、密度等量化指標來刻畫樣本間的疏離程度不同,孤立森林算法的核心是通過孤立數(shù)據(jù)點檢測異常值。
孤立森林利用一種名為孤立樹的數(shù)據(jù)結構來孤立樣本。孤立樹是一種二叉樹。因為異常值的數(shù)量較少,且與大部分樣本具有疏離性,因此異常值更容易被孤立出來,即異常值會距離孤立樹的根節(jié)點更近,而正常值距離根節(jié)點更遠。此外,相較于LOF、K-means等傳統(tǒng)算法,孤立森林算法對高維度的數(shù)據(jù)具有較好的魯棒性。
3.2.3 Matrix Profile
Yeh等人于2016年開發(fā)了Matrix
Profile,將其作為模式識別算法。具有時序性的數(shù)據(jù)集被分割成長度為m的序列。每個序列從數(shù)據(jù)集中的一個點開始,以滑動窗口的方式計算每個序列之間的距離,如用z代表歸一化距離。
歐式距離與歸一化距離有如下關系:
式中,x和y都是具有時序性的序列,μ是各自的均值,σ是各自的標準差。Matrix Profile將最小距離保存在一個矩陣中。一個較大的最小距離表示了一個異常值,因為這說明序列中沒有與他相似的序列。相反,一個小的最小距離表明在數(shù)據(jù)集中這個序列有較多相似序列,因此異常的可能性較低。
4 實驗評估
將SWaT數(shù)據(jù)集應用到第3部分介紹的算法中。這里選取了近50萬條(449 920)物理設備數(shù)據(jù)記錄。在原始的csv文件中,各條記錄按時間戳的順序排列,每條記錄對應一個標簽Normal/Attack。
實驗在顯卡GeForce 940MX、處理器I7-7500U的硬件環(huán)境下進行。第3部分中的4個模型訓練與測試所需時間分別為5 min、3 h、3.6 min和5 h。
4.1 基于LSTM的入侵檢測評估
訓練過程中的損失如圖7所示??梢钥吹?,網(wǎng)絡在訓練過程中不存在梯度爆炸或梯度消失問題。
如圖8所示,在測試集中,LSTM網(wǎng)絡達到96.5%的準確率,而其他方法效果較差:一類支持向量機在運行3 h后能達到87.96%的正確率,孤立森林只有不到40%(37.14%)的正確率。
為了對比查準率和查全率,將測試結果可視化為圖9的混淆矩陣。
圖7 訓練中的損失
圖8 正確率對比
4.2 其他檢測方法評估
4.2.1 OCSVM
按照第3部分方法介紹中所描述的,實現(xiàn)了一個一類支持向量機。由于實驗中樣本數(shù)較多而特征數(shù)目較少,訓練模型時選擇的核函數(shù)為高斯核函數(shù),即rbf。
LSTM網(wǎng)絡混淆矩陣,如圖9所示。同樣的,將測試結果表示為混淆矩陣,并繪制為圖10。對比圖9的左下部分,可以明顯看出,OCSVM將更多的攻擊判定為正常數(shù)據(jù),表明使用OCSVM作為檢測方法會隱含更大的風險。
圖9 LSTM網(wǎng)絡混淆矩陣
圖10 OCSVM網(wǎng)絡混淆矩陣
4.2.2 孤立森林
孤立森林在同一個數(shù)據(jù)集上的表現(xiàn)比預期結果糟糕——調參過程中,分類準確率最高只有37.14%。與前兩種算法相同,將PCA降維后的數(shù)據(jù)輸入孤立森林模型進行訓練,混淆矩陣繪制如圖11所示。對比OCSVM的結果,孤立森林在檢測過程中漏掉的攻擊更少,但誤報率相當高。在實際的系統(tǒng)中,誤報率高會顯著增加系統(tǒng)運營和人工排查的成本。
圖11 孤立森林混淆矩陣
盡管樣本數(shù)據(jù)是按順序輸入模型進行訓練的,但無論是OCSVM算法還是孤立森林算法,都沒有將時間戳當作影響模型的因素之一。打亂樣本后再測試的結果相同,這與基于LSTM的檢測方法和Matrix Profile有顯著不同。
4.2.3 Matrix Profile
Matrix Profile和評估過的3種算法有較大差別。Matrix Profile針對某一物理屬性在一個連續(xù)時間段內的取值進行分析,計算長度為m的序列之間的距離并確定距離的閾值,因此直觀上對單點的攻擊檢測更有效。
經(jīng)過多次測試,最終將超參數(shù)m確定為500,此時繪制的圖像對比最明顯。圖12顯示了SWaT系統(tǒng)中水箱LIT-401的水位分析結果。其中,第1行為經(jīng)過z分數(shù)規(guī)范化后的樣本數(shù)據(jù),第2行為計算得到的序列之間距離,第3行為修正弧曲線。可以看到,在噪音的影響下,攻擊被隱藏,Matrix
Profile算法的檢測效果不理想。
圖12 LIT-401的水位分析
4.3 討論
基于LSTM的檢測方法在檢測準確率上,顯著優(yōu)于孤立森林和一類支持向量機。孤立森林不僅準確率較低(只有不到40%),而且誤報率非常高,難以應用到實際的工業(yè)生產(chǎn)過程。OCSVM盡管測試數(shù)據(jù)集的準確率接近90%,但對比圖9和圖10的混淆矩陣可以明顯看到,OCSVM將更多的攻擊判定為正常數(shù)據(jù),表明相比于LSTM,使用OCSVM作為檢測方法會隱含更大的風險,即更多的攻擊無法被檢測出來。Matrix Profile則嚴重受到數(shù)據(jù)中噪音的影響。正常數(shù)據(jù)中的噪音會導致模型計算的序列距離更大,一定程度上將實際的攻擊數(shù)據(jù)隱藏起來。而在實際的工業(yè)生產(chǎn)過程中,夾雜噪音的數(shù)據(jù)往往很常見。
除此之外,基于LSTM的檢測方法在測試和部署上也有較大優(yōu)勢。為了計算最小距離,Matrix Profile需要至少m+1個數(shù)據(jù)(研究中m為500),且為了存儲最小距離矩陣,空間復雜度為n2。為了獲得更準確的最小距離,研究中嘗試輸入40萬條數(shù)據(jù),模型運行時間超過6 h。OCSVM模型需要的計算時間同樣較長,需要至少3 h。
通過多次實驗,最終確定基于LSTM的檢測方法在一次判別中只需要30個時序上連貫的數(shù)據(jù)就可以達到較高的判別可信度,檢測一條數(shù)據(jù)需要的上下文環(huán)境更少。而其他3種檢測方法中,Matrix Profile在實驗中至少需要500條連續(xù)數(shù)據(jù),最終獲得的曲線圖才有較好的區(qū)分度(如圖12所示)。另外,兩種方法并不直接考慮工控數(shù)據(jù)的時序性特點,都只獨立地判斷一條工控記錄。
5 結語
本文實現(xiàn)了4種工業(yè)控制系統(tǒng)入侵檢測方法。通過使用SWaT數(shù)據(jù)集進行模型訓練和測試,本文評估了這些方法,并將測試結果可視化為混淆矩陣等圖表。結果顯示,基于LSTM的檢測方法在檢測準確率(96.5%)上遠遠高于孤立森林的準確率(37.14%),并優(yōu)于一類支持向量機(87.96%)。
除了進一步深入研究基于LSTM的入侵檢測,今后研究有兩個主要方向。第一,入侵往往具有時序性特點,LSTM網(wǎng)絡考慮到這一特點,因此測試效果比對比方法好。第二,考慮復雜攻擊之間的關聯(lián)性。第2章節(jié)數(shù)據(jù)集的介紹中提到4種攻擊方式,可知MatrixProfile等分析單個屬性數(shù)值異常情況的檢測方法局限性較大。若能具體考慮屬性之間的關聯(lián),如復雜攻擊引起物理屬性連鎖變化等,此類方法或許能有更好效果。
本文檢測方法在設計和實現(xiàn)上還存在一定的缺陷和問題,需要在今后的研究中不斷改進。在對數(shù)據(jù)的分割上,本文按照實際的測試效果得到分割方式,這在實際應用中無法實現(xiàn)。因此,如何更好地分割數(shù)據(jù)需要進一步研究。此外,數(shù)據(jù)集不應該局限于SWaT數(shù)據(jù)集,因為SWaT數(shù)據(jù)集來自較為簡單的工業(yè)控制系統(tǒng),所以在更多的數(shù)據(jù)集上訓練和測試將會是以后工作的一個方向。
原文來源:信息安全與通信保密雜志社