張壯壯,陳永樂,王建華,陳俊杰
(太原理工大學(xué) 信息與計算機學(xué)院,山西 太原 030024)
工控系統(tǒng)是用于監(jiān)視、控制工業(yè)生產(chǎn)過程的系統(tǒng)統(tǒng)稱[1]?,F(xiàn)在其更多被暴露在互聯(lián)網(wǎng)下,并缺乏有效的安全機制[2]。而PLC Blaster[3]、PLC Inject[4]、Ladder Logic Bomb[5]、Click[6]等攻擊對它的安全也造成了很大的威脅。
為此,工控入侵檢測作為常用的安全防護技術(shù),已被大量研究,其可分為基于網(wǎng)絡(luò)流量[7]與系統(tǒng)參數(shù)信息[8-11]。本文對基于網(wǎng)絡(luò)流量的檢測方法進(jìn)行研究。針對工控流量檢測,本文將工控流量分為流量、數(shù)據(jù)包、內(nèi)容3層,其中流量層指傳輸層及以下信息,數(shù)據(jù)包層指工控數(shù)據(jù)包應(yīng)用層包頭信息,內(nèi)容層指代負(fù)載信息。而據(jù)本文調(diào)查,目前工控流量入侵檢測大都存在檢測范圍過窄,僅考慮其中的一層或兩層,且缺乏不同層次內(nèi)隱含關(guān)系的考量,易導(dǎo)致檢測效果不理想。
故本文提出了分層依賴關(guān)系建模的異常檢測方法,利用流量層、數(shù)據(jù)包層及內(nèi)容層信息,建立由宏觀到微觀的分層依賴關(guān)系模型。
本文貢獻(xiàn)主要有3點:
(1)以流量數(shù)據(jù)的分層依賴關(guān)系作為切入點設(shè)計模型,為工業(yè)控制系統(tǒng)的異常檢測提供了一個新的角度;
(2)該方法最大限度降低了不同類型特征相互干擾的問題,提高了異常流量檢測的準(zhǔn)確性,擴大了傳統(tǒng)流量檢測的范圍,并使用數(shù)據(jù)集進(jìn)行了驗證;
(3)實現(xiàn)了系統(tǒng)原型,并在相同的數(shù)據(jù)集上進(jìn)行了不同模型的對比實驗,實驗結(jié)果表明,本方法在精確率、F值等指標(biāo)上均優(yōu)于對比方案。
工控系統(tǒng)具有高實時性、資源有限、與物理環(huán)境緊密相連等特性,導(dǎo)致傳統(tǒng)入侵檢測分類標(biāo)準(zhǔn)無法直接應(yīng)用在工控領(lǐng)域。故一些研究者[12-14]將工控入侵檢測分為了基于流量、基于協(xié)議、基于系統(tǒng)參數(shù)信息。前兩種檢測手段通過分析工控協(xié)議以及工控系統(tǒng)流量數(shù)據(jù),檢測面向工業(yè)控制系統(tǒng)的普通網(wǎng)絡(luò)攻擊。而第3種檢測手段主要利用對特定控制系統(tǒng)或物理生產(chǎn)過程的先驗知識,檢測語義攻擊[13]。
基于流量的入侵檢測技術(shù)在不解析應(yīng)用層協(xié)議獲取具體字段含義的情況下檢測入侵,主要處理傳輸層及以下的信息,其通過對流量數(shù)據(jù)建模的方式檢測異常流量。傳統(tǒng)基于流量的檢測方法[14]主要提取源目的地址、流量持續(xù)時間、平均包間隔時間等。在提取到流量特征后,常利用統(tǒng)計學(xué)習(xí)或者神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進(jìn)行分析。文獻(xiàn)[15]提出了基于蟻群算法的特征選擇方法用于入侵檢測。該方法通過去除冗余的流量特征,提高了檢測性能。另外,相對于傳統(tǒng)檢測方法,該方法可以檢測出更多的惡意行為。但此類方法僅可有效檢測DDos等空間時間特征明顯的攻擊,序列攻擊檢測能力弱。
基于協(xié)議的檢測會解析工控協(xié)議的具體格式,獲取數(shù)據(jù)包字段信息,最終提取特征構(gòu)建檢測模型。Yusheng等[16]提出了一種針對Modbus TCP協(xié)議采用深度包檢測技術(shù)進(jìn)行實時入侵檢測的算法SD-IDS。該算法首先提取協(xié)議的攻擊行為規(guī)則,然后利用該規(guī)則對Modbus TCP協(xié)議數(shù)據(jù)包進(jìn)行實時檢測。為考慮到包序列間的復(fù)雜關(guān)聯(lián)關(guān)系,文獻(xiàn)[17]提出了基于HMM的入侵檢測方法,該方法利用工控協(xié)議的獨有字段信息,通過HMM構(gòu)建了工控攻擊序列的行為模型。此類方法常用于對流量的實時檢測,但易導(dǎo)致時間消耗性過高。
基于系統(tǒng)參數(shù)信息的檢測主要檢測工控系統(tǒng)設(shè)備的工作參數(shù),相對于前兩種檢測方式,其考慮了底層設(shè)備的生產(chǎn)流程,在檢測語義攻擊方面具有較大優(yōu)勢。而通常來說,語義攻擊并未出現(xiàn)明顯的違反協(xié)議規(guī)約以及流量異常特性,故針對流量的檢測難以發(fā)現(xiàn)這一類攻擊。而攻擊者針對控制流程[18]常采用對控制信息進(jìn)行修改的方式進(jìn)行攻擊,造成系統(tǒng)損壞。針對此類攻擊,文獻(xiàn)[12]、文獻(xiàn)[19]采用觀察實際值與期望值的方式進(jìn)行檢測,若超出一定的閾值則認(rèn)為檢測到異常。針對工控環(huán)境常具備多個子業(yè)務(wù)環(huán)境的問題,有文獻(xiàn)[20]提出基于業(yè)務(wù)過程挖掘的入侵檢測方法,該方法通過監(jiān)控分析控制設(shè)備的日志抽象出控制過程模型,并利用此模型檢測任何不符合該模型的行為。由于這一類方法更加接近真實的生產(chǎn)環(huán)境,故可以有較低的誤報率,但其檢測范圍較窄,易導(dǎo)致檢測率較低。同時這類方法采用了侵入式的檢測機制需有訪問底層生產(chǎn)環(huán)境的權(quán)限,而工控環(huán)境作為一種相對封閉的生產(chǎn)環(huán)境很難獲取此類權(quán)限。
為平衡此類問題,本文提出了基于LSTM分別從流量層、數(shù)據(jù)包層、內(nèi)容層提取依賴關(guān)系,構(gòu)建異常檢測模型。相較已有研究,結(jié)合了基于流量檢測范圍廣與基于協(xié)議分析檢測精度高的優(yōu)點,可達(dá)到較好的檢測結(jié)果。并且本方法在沒有獲取系統(tǒng)參數(shù)的情況下,利用內(nèi)容層依賴關(guān)系可有效提升針對流量的語義攻擊檢測能力,降低IDS對工控系統(tǒng)的影響。
本節(jié)主要描述檢測方案的實現(xiàn)細(xì)節(jié)。首先對框架進(jìn)行簡略概述,然后詳細(xì)描述本框架,最后對異常檢測過程進(jìn)行了介紹。
針對工業(yè)控制系統(tǒng)工業(yè)生產(chǎn)流程高度固定具有周期性的特點,本文提出對流量數(shù)據(jù)包進(jìn)行分層次依賴關(guān)系提取的方式,構(gòu)建工控流量模型,并以此為依據(jù)進(jìn)行異常檢測。本框架通過監(jiān)控統(tǒng)計學(xué)習(xí)近期已收到的流量,并利用分層依賴關(guān)系模型探測異常流量,其主要針對modbus/TCP協(xié)議。整體流程如圖1所示,首先,分別建立不同層次的依賴關(guān)系,本文依據(jù)各個層次的獨有特性,確立了不同層次的特征提取方法;其次,利用抽取到的特征,基于LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行流量層、數(shù)據(jù)包層、內(nèi)容層依賴關(guān)系建模,并輸出不同層次的測試結(jié)果;最后利用自編碼器對上述3層次的輸出結(jié)果進(jìn)行整合,并輸出異常值進(jìn)行異常流量檢測。本文在下面的部分中將更詳細(xì)地描述各個步驟。
圖1 框架
針對工控流量的異常檢測,特征的覆蓋率、準(zhǔn)確率直接影響模型的效果。為有效降低特征之間的相互干擾,提高目前研究特征提取的準(zhǔn)確性,本文將網(wǎng)絡(luò)流量特征分為流量層、數(shù)據(jù)包層、內(nèi)容層3層分別進(jìn)行提取,其粒度由粗到細(xì)。接下來詳細(xì)介紹各層行為特征的提取。
2.2.1 流量層特征提取
針對流量層面,為提取出流量在時間上的變化規(guī)律,本文采用滑動一大小為m窗口的方式,依次提取不同窗口內(nèi)的數(shù)據(jù)包個數(shù)、包速率、接收的字節(jié)數(shù)、數(shù)據(jù)包時間間隔等特征,如圖2所示,具體特征見表1。其中由于mod-bus協(xié)議攻擊一般都以建立連接以及設(shè)備操作為開始,故設(shè)置m初始值為4。詳細(xì)步驟如下:
圖2 流量層特征提取
首先,確立滑動窗口并設(shè)置窗口大小m=4,在此窗口內(nèi)采集流量數(shù)據(jù)信息;
其次,以窗口大小m為單位計算表1中的特征值;
表1 流量層特征描述
最后,此窗口大小可動態(tài)設(shè)置,采用m=m+2計算。
2.2.2 數(shù)據(jù)包層特征提取
針對數(shù)據(jù)包層面,本文依次對接收到的每個數(shù)據(jù)包進(jìn)行協(xié)議解析,獲取協(xié)議應(yīng)用層信息,modbus協(xié)議處于應(yīng)用層,而依據(jù)工控協(xié)議規(guī)約功能碼用于標(biāo)明一個數(shù)據(jù)幀的用途,即可以表示數(shù)據(jù)包的功能。例如,modbus功能碼0x03,表示讀取保持寄存器,在工業(yè)生產(chǎn)環(huán)境中HMI周期性發(fā)送這種數(shù)據(jù)包,讀取設(shè)備的狀態(tài)獲取系統(tǒng)工作的各項指標(biāo)。另外在工業(yè)流程中modbus幀長度呈周期性變化,而Unit ID作為工控協(xié)議中特定的地址字段,在同一IP地址下可區(qū)分不同的設(shè)備。為此本文采用功能碼、modbus幀長度、Unit ID等特征構(gòu)建每個數(shù)據(jù)包的特征向量,并使用此向量唯一標(biāo)識每個數(shù)據(jù)包,從而準(zhǔn)確定義數(shù)據(jù)包的行為特征。在數(shù)據(jù)包層提取的特征見表2。
表2 數(shù)據(jù)包層特征描述
2.2.3 內(nèi)容層特征提取
針對內(nèi)容層面,為獲取深層次的語義特征,并以此提取內(nèi)容層面的不同語義間的依賴關(guān)系,本文提出抽取訪問的地址以及操作內(nèi)容作為語義特征。其方法是在提取過程中依序?qū)邮盏降臄?shù)據(jù)包進(jìn)行協(xié)議解析,獲取數(shù)據(jù)包應(yīng)用層工控協(xié)議負(fù)載(payload)信息。相對于前兩類特征,此類特征可以較容易體現(xiàn)出是否有異常地址被訪問或是否傳遞異常內(nèi)容。由于modbus協(xié)議有離散輸入、線圈、輸入寄存器、保持寄存器4種地址區(qū)域類型,故針對不同的區(qū)域類型有不同的取值范圍。具體特征見表3。
表3 內(nèi)容層特征描述
2.3.1 攻擊流量依賴關(guān)系
本文依賴關(guān)系主要指網(wǎng)絡(luò)數(shù)據(jù)流量中前序攻擊行為與后序攻擊行為之間存在的關(guān)聯(lián)關(guān)系。比如現(xiàn)階段網(wǎng)絡(luò)中大規(guī)模存在的modbus PLC設(shè)備注入攻擊,其前序操作讀取保持寄存器的特定位置與后序傳入惡意負(fù)載操作有較大關(guān)聯(lián)。對于攻擊者,其獲取某特定位置的存儲信息,是為下一步注入攻擊提供情報依據(jù),若依據(jù)返回的信息發(fā)現(xiàn)有足夠空間,則會執(zhí)行注入操作。即讀取保持寄存器操作與注入操作存在某種條件概率。
而在攻擊者發(fā)起攻擊{e1,e2,e3,…,en},其亦會有不同的攻擊形式,e表示不同的攻擊行為。圖3為一攻擊依賴關(guān)系圖示例,其中P表示攻擊發(fā)生的條件概率,本文將依賴關(guān)系量化為不同事件間的條件概率。從圖中可以看出攻擊事件e3與e3,e2都存在關(guān)聯(lián),攻擊事件e5同理。但由于工控網(wǎng)絡(luò)攻擊行為之間依賴關(guān)系較為復(fù)雜,故本文采用了LSTM對其進(jìn)行學(xué)習(xí)表示,提取不同行為之間存在的復(fù)雜依賴關(guān)系。接下來本節(jié)將詳細(xì)描述相關(guān)過程。
圖3 攻擊依賴關(guān)系示例
2.3.2 LSTM神經(jīng)網(wǎng)絡(luò)
LSTM是一種特殊的RNN,而RNN是一種時間遞歸網(wǎng)絡(luò),可以理解為同一個神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在時間軸上循環(huán)多次得到的結(jié)果。相比于其它神經(jīng)網(wǎng)絡(luò),RNN更加擅長處理序列數(shù)據(jù)。
而LSTM作為一種特殊的RNN,其增加了輸入門、遺忘門、輸出門等門控機制,控制記憶過程,解決了長序列訓(xùn)練中的梯度消失與梯度爆炸問題,故在長序列中有比普通RNN更好的表現(xiàn)。
LSTM以序列的形式接收時間序列x=(x1,…,xT),并通過在時刻1到T的時間段內(nèi)迭代式(1)和式(2)計算隱藏向量序列h=(h1,…,hT),從而產(chǎn)生相應(yīng)的輸出y=(y1,…,yT)
ht=H(wxhxt+whhht-1+bh)
(1)
yt=Whyht+by
(2)
其中,W表示權(quán)重系數(shù)矩陣,b表示偏差,H表示隱藏層函數(shù)。
LSTM單元結(jié)構(gòu)主要由輸入輸出門、遺忘門構(gòu)成,其隱藏層計算公式組如式(3)所示,其中ht-1表示上一單元的輸出,xt表示當(dāng)前單元的輸入,σ表示sigmod函數(shù),i,f,o,c分別對應(yīng)輸入門、遺忘門、輸出門以及單元狀態(tài)信息
(3)
2.3.3 基于LSTM神經(jīng)網(wǎng)絡(luò)的依賴關(guān)系模型
本文利用并行LSTM神經(jīng)網(wǎng)絡(luò)建立了不同層次的攻擊行為模型,相對于已有研究可以降低單層次LSTM中存在不同類型特征相互干擾的情況。因為在基于單層次LSTM的檢測模型中不同類特征同時輸入,而訓(xùn)練過程中由于各神經(jīng)網(wǎng)絡(luò)節(jié)點權(quán)重的差異,易減弱相關(guān)特征值的作用,造成檢測效果不佳。
LSTM神經(jīng)網(wǎng)絡(luò)具體結(jié)構(gòu)如圖4所示,是一個全連接式的LSTM神經(jīng)網(wǎng)絡(luò),主要包含輸入層、3個隱含層、輸出層,其中輸入層節(jié)點數(shù)分別為流量層、數(shù)據(jù)包層、內(nèi)容層對應(yīng)特征向量的維度,包含3個隱含層,隱含層節(jié)點數(shù)分別為其輸入層結(jié)點數(shù)的3倍。它通過獲取時間序列上不同狀態(tài)關(guān)系,生成網(wǎng)絡(luò)流量模型,并利用此模型對后續(xù)行為作預(yù)測。詳細(xì)步驟如下。
圖4 LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
(1)數(shù)據(jù)標(biāo)準(zhǔn)化處理,為避免不同量綱值對模型精度造成影響,對流量層、數(shù)據(jù)包層、內(nèi)容層特征分別采用式(4)計算z-score值,其中μX與σX分別是預(yù)測偏差的均值與標(biāo)準(zhǔn)差,zx是z-score值
(4)
(2)行為向量預(yù)測,將處理后的特征數(shù)據(jù)分別輸入對應(yīng)的LSTM神經(jīng)網(wǎng)絡(luò),并利用此模型對下一時刻的流量層、數(shù)據(jù)包層及內(nèi)容層特征進(jìn)行預(yù)測,獲取LSTM神經(jīng)網(wǎng)絡(luò)輸出的預(yù)測值,輸出預(yù)測值;
(5)
2.4.1 自編碼器
自編碼器是一種無監(jiān)督學(xué)習(xí)算法,其利用反向傳播算法使得神經(jīng)網(wǎng)絡(luò)輸出值等于輸入值?;镜淖跃幋a器,由解碼層、隱含層、編碼層構(gòu)成,編碼層輸出函數(shù)如式(6),其中θ={W,b}為神經(jīng)網(wǎng)絡(luò)參數(shù),W,b分別為神經(jīng)節(jié)點權(quán)重以及偏置信息
y=hθ(x)=δ(W×x+b)
(6)
式中:δ為神經(jīng)元的激活函數(shù),定義如式(7)
(7)
隱含層與解碼層的重構(gòu)函數(shù)為式(8)
z=hθ′(y)=δ(W′×y+b′)
(8)
而自編碼器的主要目的是最小化函數(shù)(9),保證可以生成與原始數(shù)據(jù)近似的值,其中d為數(shù)據(jù)維度
(9)
在訓(xùn)練集上訓(xùn)練后,其具備重構(gòu)與訓(xùn)練集具有相同分布規(guī)律數(shù)據(jù)的能力。
2.4.2 基于自編碼器的分層依賴關(guān)系整合
分層依賴關(guān)系處理后,由于輸出結(jié)果分別為流量層、數(shù)據(jù)包層、內(nèi)容層的預(yù)測偏差,故本文采用3層自編碼器對不同輸出結(jié)果進(jìn)行整合,從而產(chǎn)生最終的異常值。其具體結(jié)構(gòu)如圖5所示,包含編碼層、隱含層、解碼層。
圖5 自編碼器神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
自編碼器在接受輸入數(shù)據(jù)后,通過編碼、解碼這一過程重構(gòu)輸入數(shù)據(jù)。在訓(xùn)練的過程中,不斷利用式(10)計算損失RMSE,并最小化其損失,其計算公式如下。通過訓(xùn)練,就可得到此類數(shù)據(jù)大致的損失范圍
(10)
本文引入自編碼器是利用此能力,在訓(xùn)練階段接收LSTM神經(jīng)網(wǎng)絡(luò)模型的輸出數(shù)據(jù),并將此數(shù)據(jù)作為自編碼器的輸入,獲取到正常數(shù)據(jù)的重構(gòu)關(guān)系,從而在接收到異常數(shù)據(jù)后,輸出產(chǎn)生較大偏差,其具體步驟如下:
(1)訓(xùn)練模型,獲取正常流量的損失范圍;
(2)計算異常檢測閾值,此閾值需使得模型輸出的所有RMSE值都小于T,即maxRMSE 算法1: 獲取閾值 輸入: 正常流量數(shù)據(jù)X 輸出: 閾值T (1)InitializeT=-1 //初始化閾值T (2)fori=1toi=len(X) //遍歷數(shù)據(jù) (3)s=RMSE(x,h(x)) //計算損失 (4)if(s>T)then//獲取最優(yōu)閾值 (5)T=s (6)endif (7)endfor (8)outputT//輸出最優(yōu)閾值 (3)異常判斷,在獲取到閾值T后,依據(jù)本文在時間序列中獲取得到的異常值判斷t時刻數(shù)據(jù)包是否是異?;蛘呤枪?。若模型最后輸出值大于此閾值,則表示檢測到異常。用公式表示如式(11) (11) 在本節(jié)中,本文首先對攻擊數(shù)據(jù)集進(jìn)行了介紹,其次設(shè)計實驗對異常檢測算法進(jìn)行評估、測試;最后與別的檢測模型進(jìn)行了對比實驗。 在本文中,對模型進(jìn)行訓(xùn)練、評估的數(shù)據(jù)來源于公開數(shù)據(jù)集[21]。為便于對后續(xù)實驗的理解,本節(jié)對數(shù)據(jù)進(jìn)行簡單的介紹。此數(shù)據(jù)為針對modbus協(xié)議的攻擊數(shù)據(jù),以網(wǎng)絡(luò)流量的形式進(jìn)行保存。為收集攻擊數(shù)據(jù),文獻(xiàn)[21]使用SCADA sandbox模擬了SCADA網(wǎng)絡(luò)環(huán)境,主要包括MTU、controller以及Field Device。在此數(shù)據(jù)中,包含惡意與非惡意的modbus流量,并且使用CSV文件存儲了對應(yīng)流量的標(biāo)簽。數(shù)據(jù)集內(nèi)容如表4所述,包括11部分?jǐn)?shù)據(jù)集,其中前6部分?jǐn)?shù)據(jù)全部為正常流量,后5部分?jǐn)?shù)據(jù)中在正常流量中含有少量異常流量。 表4 數(shù)據(jù)集描述 本文依據(jù)文獻(xiàn)[21]中構(gòu)建的原始數(shù)據(jù),對數(shù)據(jù)進(jìn)行進(jìn)一步的解析處理,依照本文提出的特征提取方法提取了數(shù)據(jù)包時間間隔、數(shù)據(jù)包數(shù)量及應(yīng)用層字段信息等特征。 本文主要采用均方根誤差(RMSE)、精確率(Precision)、F值(F1-Score)、MCC系數(shù)以及AUC值評估模型性能。均方根誤差是評估模型訓(xùn)練過程中預(yù)測值與真實值之間的損失變化,用來對模型訓(xùn)練過程作評估。精確率表示檢測出的異常樣本中真異常所占比例,F(xiàn)值是綜合考量了精確率與召回率的評價指標(biāo),該值越高就表明模型越穩(wěn)定,其中召回率表示在樣本中有多少異常樣本被檢測出。MCC同時考慮了正常與異常樣本的檢出能力,適合在樣本不平衡的條件下,做出合理評價。AUC作為ROC曲線下的面積,是模型將某個隨機異常樣本排列在正樣本之上的概率,值越大模型檢測效果越好。 在本文的實驗中,將數(shù)據(jù)分為正常數(shù)據(jù)與異常數(shù)據(jù)(正常數(shù)據(jù)內(nèi)含有異常數(shù)據(jù)),正常數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),異常數(shù)據(jù)作為測試集。同時為對模型進(jìn)行參數(shù)調(diào)優(yōu),按照7∶3的比例將正常數(shù)據(jù)分為訓(xùn)練集與驗證集。需要特別注意的是,訓(xùn)練集、驗證集全部是正常流量,在測試集中有正常與異常流量。 在訓(xùn)練過程中,本文將模型學(xué)習(xí)率設(shè)置為0.001,并通過更改觀察窗口大小即LSTM神經(jīng)網(wǎng)絡(luò)步長,獲取前序攻擊行為序列長度對模型依賴關(guān)系建模的影響。在此處將樣本訓(xùn)練次數(shù)(epoch)設(shè)置為12,并改變窗口大小,觀察窗口大小對模型預(yù)測誤差的影響,相關(guān)結(jié)果如圖6所示。從圖6可知,隨著窗口長度的增加,模型損失均方根誤差RMSE不斷下降,表明在一定范圍內(nèi),隨著窗口長度的增加,模型對流量的依賴關(guān)系構(gòu)建愈加準(zhǔn)確,在窗口長度達(dá)到8時,模型趨于穩(wěn)定,并在之后維持在一個較為理想的區(qū)間,依據(jù)此實驗結(jié)果可選取8為最優(yōu)窗口長度。因此,本文將窗口長度設(shè)為8,并將該模型用于后續(xù)性能的比較。 圖6 窗口大小對模型預(yù)測均方根誤差的影響 為考慮到模型的迭代次數(shù)對模型預(yù)測準(zhǔn)確性的影響,本文觀察了不同迭代下的RMSE值,其在一定迭代次數(shù)之后波動幅度下降,逐漸趨于平穩(wěn),結(jié)果如圖7所示。觀察圖7可知,隨著迭代次數(shù)的增加,模型愈加準(zhǔn)確,但在一定程度后對模型影響可忽略。 圖7 迭代次數(shù)對模型預(yù)測均方根誤差的影響 為驗證本文提出的檢測模型,本文引入異常流量即惡意樣本對模型進(jìn)行測試。本文將含少量異常流量的數(shù)據(jù)作為測試集輸入,觀察模型在接收到異常流量后的輸出,相關(guān)結(jié)果如圖8所示。從圖中可以看出模型在接收到異常流量后,均方根誤差較大,利用這一特性可檢測異常。 圖8 正異常數(shù)據(jù)的均方根誤差對比 同時為考慮到數(shù)據(jù)集數(shù)量對實驗結(jié)果的影響,我們變更數(shù)據(jù)量,進(jìn)行實驗。依次增加數(shù)據(jù),觀察模型異常檢測的F值,實驗結(jié)果如圖9所示,從圖中可以看出隨著數(shù)據(jù)量的不斷增加,F(xiàn)值不斷上升,最后在接近一萬條數(shù)據(jù)時,趨于平穩(wěn)。由此可見,在一定范圍內(nèi),數(shù)據(jù)量直接影響了最終的實驗結(jié)果,但在達(dá)到一定量后,數(shù)據(jù)量對檢測結(jié)果并無明顯影響。 圖9 數(shù)據(jù)集對F值的影響 為評估本方法分層依賴關(guān)系的有效性,本文對采用分層次與不分層依賴關(guān)系構(gòu)建模型的性能進(jìn)行評估。其中不分層將流量、數(shù)據(jù)包、內(nèi)容3層特征映射到同一特征向量中處理,實驗結(jié)果見表5。從圖中可以看出分層后模型性能顯著提升,這驗證了在工控異常檢測中分層次依賴關(guān)系模型可更好地提取出不同層次之間的依賴關(guān)系,從而提升整個檢測模型的性能。從表中數(shù)據(jù)亦可看出數(shù)據(jù)包層及內(nèi)容層特征在檢測準(zhǔn)確率上有較大優(yōu)勢,但可能存在一定程度的漏報。 表5 分層檢測性能對比 為進(jìn)一步對本方法進(jìn)行評估,本文選用了SVM[22]、SDA[23]與本方案(M-LSTM)進(jìn)行對比,同時為評估在相同數(shù)據(jù)相同特征值上模型的表現(xiàn),又選取了K近鄰算法(KNN)與隨機森林(RF)進(jìn)行對比實驗。所有的對比實驗都采用相同的數(shù)據(jù)集,并從精確率(Precision)、F值(F1-Score)、MCC系數(shù)以及AUC(ROC曲線下的面積)進(jìn)行對比,實驗結(jié)果如圖10所示,圖中縱坐標(biāo)為4種不同類型的評價指標(biāo),橫坐標(biāo)為不同檢測模型在相同評價指標(biāo)下的性能表現(xiàn)。從圖中可以看出,本文提出的方案在所有性能指標(biāo)上均優(yōu)于其它幾類模型。由此可見,該方法的漏報率較低,檢測覆蓋率有所提升。其中SDA在各項指標(biāo)上均有不俗的表現(xiàn),但由于SDA方法僅對單個數(shù)據(jù)包進(jìn)行檢測,缺乏對不同數(shù)據(jù)包之間關(guān)聯(lián)性的考慮,故其在各項指標(biāo)上仍然落后于本方法。 圖10 4種檢測方案對比 同時,由圖10的實驗結(jié)果可見,本文提出的方法在本數(shù)據(jù)集上對攻擊的檢測精度達(dá)到了96.9%,與已有的方法對比時檢測能力也有較大提升。因此,分層依賴關(guān)系建模的方法對工控攻擊具有較好的檢測能力。 本文首先闡述了針對工控系統(tǒng)的異常檢測,并在此基礎(chǔ)上,提出了針對網(wǎng)絡(luò)流量建立分層依賴關(guān)系的異常檢測算法。其通過分別建立流量層、數(shù)據(jù)包層以及內(nèi)容層的依賴關(guān)系,擴大流量攻擊檢測的覆蓋率,降低不同層次間特征的干擾,從而提高了針對流量異常檢測的檢測性能。 同時,本算法還可以進(jìn)一步完善,模型存在優(yōu)化空間。實驗所用數(shù)據(jù)有待進(jìn)一步擴充,用以驗證本方法的有效性。另外,本文提取流量層、數(shù)據(jù)包層以及內(nèi)容層作為特征輸入,該類特征雖能最大限度獲取流量行為,但并未考慮到時間消耗帶來的影響,這是采用深度包檢測技術(shù)解析協(xié)議的弊端,也是本文下一步工作中有待解決的問題之一。3 實驗評估
3.1 樣本集
3.2 檢測模型評價指標(biāo)
3.3 模型訓(xùn)練
3.4 檢測能力評估
3.5 對比實驗
4 結(jié)束語