禹 寧 竹瑞博 狄 婷 任曉剛 王建華
1(國網山西省電力公司信息通信分公司 山西 太原 030021) 2(山西聯拓科技有限公司 山西 太原 030021) 3(太原理工大學信息與計算機學院 山西 太原 030024)
工業控制系統(ICS)是國家關鍵基礎設施的重要組成部分,在國家安全、社會民生、經濟發展和政府事務中的基礎性作用不斷凸顯,逐步成為保障社會穩定和持續運轉的重要支撐。隨著國家智能制造、物聯網、“互聯網+”等各種戰略規劃不斷發展和深入,工業控制系統逐步實現了信息數字化、網絡化和共享化。然而,網絡環境所帶來的不安全因素對關鍵基礎設施的安全構成極大威脅。從2010年眾所周知的“震網病毒”事件,2011年“Duqu病毒”和2012年的“火焰病毒”到2015年波蘭航空公司黑客攻擊事件,每年都有幾百起針對ICS的攻擊事件,給相關國家造成了不可估量的損失,這充分顯示了國家基礎關鍵設施安全問題的現實迫切性,保障工控系統安全也成為新的網絡形勢下的關鍵問題。
對惡意攻擊溯源可以有效對工控系統做出主動的防護,傳統的攻擊者溯源方式為IP溯源技術。這種技術為單一溯源,通過設置并更改專門的物理設備,使用概率包標記法[1]、日志信息溯源法[2]等進行IP溯源。然而,由于攻擊者使用代理的普遍性,導致傳統的IP溯源技術效率和精度都不高。除此之外,在工控系統中,有組織的大型攻擊行為往往都不是一個攻擊者來進行攻擊,這就使得對惡意攻擊者的溯源無法滿足當前的需要。例如,Shodan[3]作為一個公開的設備搜索引擎,可以識別具有可路由IP地址的設備,包括計算機、打印機、網絡攝像頭和工業控制設備等。Shodan7×24小時都在運行多個序列式的掃描代碼,從而每月收集大約5億臺聯網設備和服務的信息。攻擊者通過Shodan可以發現暴露在互聯網上的工業控制設備以及與該設備相關的IP地址、開放的服務和存在的漏洞等信息,進而發動攻擊,對工控系統造成嚴重破壞。除Shodan外還有許多私密、私有的掃描引擎或攻擊組織,意在非法地探測ICS系統設備的信息,試圖對ICS安全造成威脅。因此,我們把具有相同或相似攻擊行為的惡意IP定義為同一組織,同源攻擊檢測就是為了找到互聯網中存在的惡意攻擊組織,以此來提高工控系統安全性。
為此,本文提出基于CNN-LSTM的工控協議同源攻擊檢測方法,實現攻擊者溯源。主要是通過長時間部署工控協議蜜罐,來收集互聯網上的一些針對工控協議的攻擊事件,使用深度學習的CNN和LSTM神經網絡分析攻擊者各項特征,找到具有相同或相似攻擊特征的攻擊源或攻擊組織,以達到檢測同源攻擊的目的。
本文的主要貢獻有兩點:
1) 基于蜜罐數據流,提出基于卷積神經網絡(Convolutional Neural Network,CNN)-長短期記憶(Long Short-Term Memory,LSTM)的工控協議同源攻擊檢測方法,相比較于傳統方法[4-5]和基于無監督的聚類方法[6]等,本文方法具有更好的性能表現。
2) 通過基于注意力機制(Attention Mechanism)的模型優化方法,對模型進行無監督訓練和有監督調整,使模型分類的準確率大幅提高,并找到了除Shodan外的多個攻擊組織。
概率包標記法和日志溯源法是傳統的IP溯源方法,Luo等[7]提出了一種單一封包溯源的方法,在包的報頭中使用32位空間來記錄攻擊者的攻擊路徑,并使用生存時間字段來減少溯源的誤報率。Snoeren等[8]提出了一種基于報文摘要(Hash)的IP追蹤溯源方法,相比較于傳統的日志溯源法,該方法節約日志空間。設備的修改以及日志格式的不統一使得這種傳統的IP溯源技術成本開銷高、誤報率高、實際可操作性不強,需要對網絡基礎設備進行一些修改、改變,使得這種方法開銷很大。在工業控制系統領域,這種傳統的方法在PLC等工業控制系統設備上進行應用更是不安全且難以實現。因此,在近些年的研究中,ICS安全的研究人員通常使用較為成熟的蜜罐法來確定針對ICS設備的惡意IP攻擊源。Li等[6]部署了分布式蜜罐系統來收集威脅數據庫,并根據三種不同的工控協議蜜罐數據,對攻擊方法、攻擊模式和攻擊源分析,并提出一種聚類算法,進行對攻擊組織追溯。Xiao等[9]通過對S7comm協議中的功能碼特征和攻擊數據中的各項參數,構建了一個名為ICSTrance的惡意IP溯源模型,使用短序列概率方法將攻擊行為特征轉換為向量,并對該向量進行Partial Seeded K-Means算法模式聚類,追溯攻擊組織。然而,他們并沒有用任何標識數據進行驗證,無法解釋結果的好壞。
如今,深度學習在廣泛的應用中取得了巨大的成功,包括在自然語言處理、計算機視覺等領域[10]。卷積神經網絡(CNN)是一種前饋神經網絡,對于大型圖像處理有出色表現,近些年也成功地應用于網絡安全領域[11]。Kang等[12]已有研究表明,在入侵檢測領域,通過引入深度學習模型來訓練分類器,可以提高入侵或攻擊檢測方法的準確性和效率。而長短期記憶網絡是一種神經循環網絡,對于處理時間序列中的一些數據流或事件具有一定的優勢。CNN是一種具有特征提取功能的深度神經網絡[13],利用多個過濾器對輸入數據進行逐層卷積、池化操作,自動提取數據流中的數據特征。然而,CNN不能學習序列的相關性[14]。Zhang等[15]提出字符級卷積神經網絡,將字符的序列轉換成大小固定的向量序列。我們依據這些靈感,將預處理后原始數據流使用CNN進行特征提取。
長短期記憶(LSTM)網絡是一種特殊的循環神經網絡(Recurrent Neural Network,RNN),而RNN是一種時間遞歸網絡,具體來說是同一個神經網絡結構在時間軸上循環多次得到的結果。相比于其他神經網絡,RNN更加擅長處理序列數據。而LSTM作為一種特殊的RNN,其增加了輸入門、遺忘門、輸出門等門控機制,控制記憶過程,解決了長序列訓練中的梯度消失與梯度爆炸問題,因此,在長序列中有比普通RNN更好的表現。王紅等[16]發現LSTM模型能夠充分利用整個文本序列的信息,包括詞之間的相互關系信息,并將該種信息用于對每個詞的處理。由于當前社會的網絡攻擊行為通常都是具有多個復雜步驟和多條攻擊序列的攻擊行為[17],我們充分依據現實情況,考慮攻擊數據流之間的上下文關系,使用LSTM來處理序列標注問題。因此,本文加入LSTM對序列化的攻擊流進行分析和分類,以此進行工控同源攻擊檢測。
Modbus協議由Modicon公司于1979年為其生產的PLC設計的一種通信協議,該協議廣泛應用于電力、水利、能源等領域的監控系統中,由于其開放性和透明性,成為了業界的主流通信協議[18]。由于TCP/IP協議在數據鏈路層已經保障了數據傳遞的正確性,因此Modbus TCP相對于Modbus協議來說,減少了LRC校驗域。Modbus TCP的報文格式如圖1所示。

圖1 Modbus TCP協議報文格式
蜜罐作為一種新興的攻擊誘騙技術,經過近些年的發展,已經在互聯網安全威脅監測方向上得到了較為廣泛的應用[19]。Glastopf項目在github上發布了第一個開源工控蜜罐框架Conpot[20],該系統是工業控制系統服務器端的低交互的蜜罐技術,該框架實現了協議棧上的請求-應答交互,整體框架設計易于配置、部署、修改和擴展。使用者可以通過內置提供的各種通用工控協議,模擬構建基礎設施,構建所需的虛擬系統。
通常情況下,攻擊者利用漏洞的速度要比供應商創建和推出補丁的速度快得多,如果僅僅依靠傳統的防御方式,例如入侵檢測系統和動態防火墻,并不能對檢測出新的和正在出現的攻擊模式提供全面的覆蓋[21]。蜜罐是誘餌計算機資源,其價值在于被探測、攻擊或危害[22],蜜罐技術不是一種解決方法,相反它是一個工具,如何使用這個工具依賴于你期望它能取得何種結果。因此,我們提出應用工控蜜罐技術對工控攻擊者行為進行分析。
網絡流量中包含許多冗余和與溯源無關的屬性,這些屬性會降低模型準確率,而且會增加基于CNN-LSTM模型的計算負載和計算復雜度。依據Moore等[23]提出的248個流量統計特征,本文依據工控協議Modbus TCP特有的數據報文特點,來進行基于流量統計特征的特征選擇,最終選擇了15種工控流量特征。選取特征及特征描述如表1所示,前6個為Modbus TCP特有特征,其余為流量傳統特征。

表1 流量層特征描述
根據2.1節介紹的Modbus TCP數據報文格式,依據數據流中的關鍵字段,轉化為可供CNN進行特征學習使用的多維向量。然后對設置的CNN卷積神經網絡進行卷積和最大值池化操作,隨后將CNN網絡輸出的特征向量作為LSTM網絡的輸入層,并加入注意力機制計算權值,使用反向傳播算法(Back Propagation algorithm,BP)對權值進行迭代尋優,以此找到最優特征向量,最后進行數據流分類和模型評估。
具體方法是:
1) 由于數據包的二進制形式,若關鍵字段長為m/8字節,將數據嵌入一個m維空間中,數據總量為n,則生成一個m×n的位矩陣。
2) 根據數據特性,我們使用一維卷積層進行卷積計算。其中,卷積核個數為k=3,過濾器大小為m×q,若步幅為2,那么該層輸出矩陣大小為3×(n/2)。
3) 在池化層,我們使用的最大值池化法(Max Pooling)來降低特征值的維度,并生成對應的特征圖。若窗口值為2,那么輸出特征圖大小為3×(n/4)。
4) 將CNN特征圖結果輸入至構建好的LSTM網絡中,此時輸入為5維特征向量c0。
5) 通過在LSTM網絡中進行無監督學習訓練和有監督的微調,得到數據特征l0,再使用基于注意力機制的模型優化方法,對全連接層特征向量使用BP算法進行權值迭代優化。
6) 通過Softmax激活函數對數據流特征向量實現進行歸一化,計算概率進行分類并使用交叉熵損失函數來進行模型評估。圖2顯示了本文方法的總體結構和流程。

圖2 總體結構和流程
注意力機制(Attention Mechanism)是將有限的注意力資源聚集到具有大量數據包中部分關鍵的信息維度上,從而避免將資源平均到各個信息維度上所造成的資源浪費和精度降低。從本質上看,注意力機制就是對輸入內容的加權并求和。計算公式如式(1)所示。
Z=tanh(WtY+bt)
α=softmax(wTZ)
R=YαT
(1)
式中:Wt代表t時刻的權值矩陣;Y代表數據特征l0所組成的矩陣;bt則為有監督微調下的偏差值;α為注意力向量;w代表迭代尋優的權值矩陣;R代表基于注意力機制的數據流表達。在注意力機制基礎下,我們選擇BP算法來對權值矩陣進行迭代尋優,使模型特征向量的偏差值達到最小。BP算法包含激勵傳播和權值更新兩個階段,第一個階段通過將訓練輸入網絡來獲得激勵,再通過反向輸入對應的目標來得到隱層和輸出層的誤差。第二個階段通過式(2)來進行權值更新。
wn=w0-δ(l0w0-bn)
w=(w1,w2,…,wn)T
(2)
式中:w0表示初始權重;δ為梯度的修正比例;bn為第n個偏置項。
根據我們提出的基于CNN-LSTM神經網絡模型通過一系列訓練學習調整得到了特征向量值等,為了解決流量分類的問題,我們通過Softmax激活函數來計算概率,計算公式如式(3)所示。
(3)
由于模型參數以及向量預測高度復雜等多重因素的影響,LSTM神經網絡無法做到準確的預測。我們計算了真實值與估計值的偏差,并以交叉熵損失來評估模型的輸出,交叉熵的值越小,實際與期望差距越小。交叉熵的計算公式如式(4)所示。
(4)
式中:概率分布p(xi)為期望輸出;q(xi)為實際輸出。我們通過迭代注意力向量和注意力矩陣來降低交叉熵損失。
為了測試模型的性能,通常的方法是將一個標準的標記數據集分成兩部分,一部分訓練網絡模型,另一部分用于測試其準確性。據我們所知,很少有公共工控蜜罐數據集來對攻擊組織、攻擊事件進行標定,例如Shodan組織對某水處理廠設備的掃描序列、攻擊組織對某電廠基礎設備的攻擊事件等。因此,我們花費超過十二個月的時間來進行工控蜜罐數據收集,以此來進行對模型的實驗評估和同源攻擊分析。
我們通過部署分布式工控蜜罐,并在不同國家的虛擬專用服務器(Virtual Private Servers,VPS)上部署了16個分布式的蜜罐節點,VPS部署國家包括中國、以色列、巴西、美國、英國、南非、德國和加拿大等,收集了專有的工控蜜罐數據集,蜜罐以Conpot[20]框架為基礎進行開發,它們可以在預先定義好的響應機制下進行響應請求,并設置了蜜罐數據捕捉模塊,捕獲與攻擊者的所有交互數據流。為了使蜜罐更具欺騙性,我們根據反蜜罐識別的一些措施,更改了Conpot蜜罐框架的一些自定義屬性和字段,改變硬編碼特征,以達到欺騙攻擊者的目的。此外,每個蜜罐集成了開源認證發布-訂閱協議(Hpfeeds),將捕獲的數據傳輸到數據中心Mongodb數據庫中。工控蜜罐構造和部署如圖3所示。

圖3 蜜罐構造和部署
基于CNN-LSTM的工控協議同源攻擊分析主要是依靠網絡數據流進行分析,因此,本文方法對于所有的工控協議具有一定的通用性。蜜罐數據總量達17 315條Modbus TCP數據包,每月收集數量如圖4所示。

圖4 蜜罐Modbus TCP收集數據量
蜜罐環境中,通常認為所有的流量均為攻擊者的惡意流量。由于一些國家法律等原因,具有資質的物聯網設備服務商、設備掃描引擎等企業會公開所擁有的設備掃描IP節點,這就使得我們可以對其中一部分數據進行標記。具體地,我們通過反查DNS的方式,對所有蜜罐攻擊源中的Shodan、Censys[24]和Plcscan[25]節點進行統計,得到一系列有標識的數據用于調整模型。以Modbus根據反查DNS的結果,Shodan、Censys,Plcscan等組織的ip數量分別為:27、16、18。而數據流中,這三個組織的攻擊事件數量分別為3 579、1 854和2 325。
無監督的學習和有監督的微調[26]消除了學習時人為標記的瓶頸,增加了原始數據的計算能力和可用性。因此,我們首先使用數據流特征以及基于CNN-LSTM的模型進行無監督的學習和訓練。其次,根據模型優化策略,我們使用BP算法,根據最優交叉熵值的變化進行注意力權值迭代,以此來達到對模型有監督的微調。最后,由于蜜罐數據集的特殊性,并沒有完全的標識數據可供訓練和驗證,相比于完全的無監督學習,本文方法可以最大程度地保障基于CNN-LSTM的分類模型的性能。
在實驗分類結果驗證方面,有標簽數據進行十折交叉驗證;無法反查DNS信息的攻擊源通過比對公開的惡意IP庫-IBM X-Force Exchange[27]進行攻擊組織對比驗證。IBM X-Force Exchange作為公開的情報分析庫可以找到在近5年內,某一IP的活動情況,包括其何時被識別為掃描IP、何時自動運行木馬、是否運行惡意軟件。這樣的驗證方式不能全面地考察所有惡意IP的攻擊組織情況,但是這是現有數據下最好的驗證方式。
通過對預處理的數據流字段嵌入基于CNN-LSTM的模型中進行一系列處理,我們基于Softmax激活函數計算概率進行流量分類,相比較于基于無參的貝葉斯模型聚類[6]、基于TTL存活時間特征的攻擊組織檢測[4]、基于位置信息的傳統分析方法[5]和基于Partial Seeded的K-Means聚類方法[9],本文方法具有更高的精度和F值(F1 Score)。實驗結果對比如圖5所示。此時,本文的準確率為93.7%,召回率為90.5%;而基于TTL特性方法的準確率為75.4%,召回率為61.3%;基于無參貝葉斯模型方法準確率為82.9%,召回率為87.1%;基于Partial Seeded的K-Means模型準確率為91%,召回率為79.3%,這一模型是除本文方法外最好的;基于物理信息的準確率為75%,召回率為64.7%。綜上顯示,基于CNN-LSTM的工控協議同源攻擊檢測方法對于工控蜜罐數據集,具有最好的性能表現。

圖5 各模型實驗結果對比
對本文模型來說,更多的迭代次數意味著時間消耗的增加,圖6顯示了迭代次數和交叉熵趨勢、模型F值之間的關系,可以看出迭代次數越高,模型性能越好。然而在迭代42次之后,兩條曲線變化趨勢放緩,我們認為這一迭代次數是綜合時間復雜度和模型性能來看最適合的。

圖6 迭代次數與交叉熵趨勢和F值的關系
根據模型的迭代推優,我們基于CNN-LSTM的工控協議同源攻擊檢測方法發現了包括Shodan、Censys、Plcscan,東北大學和密歇根州立大學等在內的10個攻擊(包括設備掃描)組織,一共涉及的IP數量超過200個。
本文提出一種基于CNN-LSTM的工控協議同源攻擊檢測方法。通過提取數據流中的序列和字段特征,經過CNN進行數據流特征卷積、池化運算,將生成的特征向量輸入LSTM進行序列學習。加入注意力矩陣,使用BP算法進行權值尋優和更新,而后基于Softmax激活函數得到分類概率值的同時使用交叉熵函數進行模型評估。在處理離線蜜罐數據時,模型隨著長時間的迭代,相比其他模型具有最優的準確率和召回率,有最好的F值效果。我們通過基于CNN-LSTM的工控協議同源檢測方法發現了10個攻擊組織,涉及IP超過200個。