張松清,劉智國
(中國電子信息產業集團有限公司第六研究所,北京 100083)
當前,工控網絡重要性日益凸顯。隨著計算機和網絡技術的發展,工業控制廣泛采用開放的工業通信協議、網絡設施和通用軟硬件,甚至與互聯網和企業管理信息系統交換數據,針對工控網絡的攻擊也快速增多。工控領域的網絡威脅極大地危害工業控制的正常運行,使得工業控制系統的脆弱性開始逐漸顯現,針對工業控制系統的攻擊行為快速增長[1]。2010年爆發的“震網”病毒、2012年的“火焰”超級病毒以及2014年的Havex 病毒等專門針對工業控制系統的病毒給用戶造成了巨大的損失,同時也威脅到了國家安全。分析此后2015年發生的烏克蘭電力遭受攻擊事件,可以看出攻擊的成本在降低,而攻擊所帶來的影響在進一步加重。2017年5月WannaCry勒索病毒席卷全球,影響到近百個國家上千家企業及公共組織。
工業控制系統是為了完成各種實時控制功能而設計的,當初并沒有考慮到安全防護方面的問題,通過網絡互聯使它們在網絡空間中暴露,無疑將給它們所控制的重要系統、關鍵基礎設施等帶來巨大的安全風險和隱患。為了避免工控安全事件的發生,有效地對網絡攻擊進行檢測及提前預防顯得至關重要。
目前已經有許多基于規則匹配的網絡入侵檢測方法[2],這類方法對已知的病毒、木馬等威脅的檢測效果明顯。目前基于智能學習的網絡入侵檢測研究已成為趨勢,包括支持向量機(SVM)、樸素貝葉斯網絡、神經網絡等。這些方法對有監督分類問題效果明顯,而工控網絡流量數據已有大量標記好的異常流量數據以及大量的無標注流量,有監督分類方法并不適合解決這一問題。本文提出一種基于半監督機器學習的工控網絡入侵檢測方法,該方法的運用能夠提高未知威脅的檢測能力。
入侵檢測技術是一種主動的保障信息安全的技術,可以有效彌補防火墻等傳統安全防護技術被動防御的缺陷,因此針對復雜的工控系統網絡攻擊,入侵檢測技術是有效發現和防御入侵的防護手段。
入侵檢測技術包括特征檢測和異常檢測。特征檢測有較高的檢測準確率,存在的問題是無法檢測未知的攻擊;異常檢測有較強的通用性,可以對未知攻擊進行檢測,有比較廣闊的應用前景,其主要缺陷是誤檢率較高。
機器學習是人工智能的核心。當前,已有大量基于機器學習的入侵檢測技術的研究,包括基于聚類分析、數據挖掘、行為統計、神經網絡等技術的入侵檢測方法[3-4],然而這些技術存在處理速度慢、模型難以建立、誤報率高、純凈訓練數據難以獲取等不足,無法滿足工控系統較高的實時性和可用性要求。
研究基于機器學習的入侵檢測技術對建立智能化的高效入侵檢測模型,提高工控網絡異常行為檢測精度意義重大。本文針對工控系統網絡數據的特點,提出一種基于半監督機器學習[5-8]的入侵檢測方法,該方法可以提高網絡攻擊流量的檢測準確率。
該入侵檢測技術由四個主要的功能模塊組成,分別是網絡數據獲取、特征提取、模型訓練以及網絡流量檢測,各主要模塊之間相對獨立,總體架構如圖1所示。

圖1 系統總體架構圖
2.2.1網絡數據獲取
使用機器學習訓練模型時,需要利用正負樣本數據集。對于工控系統網絡入侵檢測,正樣本數據就是入侵的異常網絡流量,負樣本為正常網絡流量。
對于正樣本數據,即入侵的異常網絡數據,目前已有一些機構進行了標記,例如KDD99(MIT Lincoln實驗室提供的1998 DARPA入侵檢測評估數據集)以及密西西比州立大學關鍵基礎設施保護中心于2014年提出的用于工控系統入侵檢測評估的數據集等。但很少有對正常流量的標記,在實際網絡數據中,標記樣本需要人工完成,耗時耗力,而未標記樣本既容易獲取也非常充裕。
2.2.2特征提取
在某個時間周期內對網絡流量進行捕獲,這些網絡流量由多次的TCP網絡連接數據組成,每一次完整的TCP連接作為一次記錄,對每次記錄進行分析,統一處理。特征提取方式參考KDD99數據集的提取方式,共計41個特征,如表1所示。

表1 網絡數據特征提取
這些特征中有的是數值型,有的是字符型,但是本文中的技術只能處理數值型的向量,因此,在模型訓練之前需要先將輸入數據作數值化處理以及正規化處理。例如,協議類型(TCP、UDP以及ICMP)可以用1、2和3表示;每條記錄是否是攻擊流量用1和-1表示,1代表正常流量,而-1表示攻擊流量。
2.2.3模型訓練
針對獲取到的網絡流量數據特點,該技術采用半監督分類的方式來訓練模型。該方法結合了Rocchio以及LIBLINEAR[9]兩種技術。

(1)
其中,α和β是調整訓練樣本相關與不相關性的影響參數。在分類中,對于每個測試集網絡流量數據td,使用余弦相似性的方法來計算td與每個原型向量的相似性,td與哪個原型向量更相似,就把該原型向量的類型賦給td。
LIBLINEAR是由LIN C J博士設計和開發的,它是為線性分類問題而設計的。使用LIBLINEAR時,可以容易地處理百萬到千萬級別的數據,這是因為LIBLINEAR本身就是設計用于解決較大規模樣本的模型訓練。
模型訓練的思路是先使用Rocchio技術從大量的未標記網絡數據中挑選出可信賴的正常網絡數據,然后再使用LIBLINEAR技術訓練模型。該算法如圖2所示。

圖2 半監督分類方法流程圖
本文設計了一種使用Rocchio技術來從未標記網絡數據(記為U)中提取可靠的負樣例數據(記為RN)的方法,其中正樣例數據記為P,算法的偽代碼如公式2所示。
1. 將未標記網絡流量數據U賦值成負類,正樣本網絡流量數據P賦值成正類


(2)
4. forU中的每條網絡流量d′ do
6. RN←RN∪{d′}
在基于正樣本的學習方法中,未標記數據集U中的負樣本數據通常包含多種類型,在向量空間中,占有很大區域,而正樣本數據通常是同一類型的,覆蓋一個小得多的區域,如圖3所示。Rocchio是線性分類器,假設真的有一個決策面S能夠區分正負樣本,那么,由于Rocchio中的向量疊加原理,正原型向量會比負原型向量更接近決策面S,這種方式識別出的負樣本數據純度很高。

圖3 Rocchio分類效果圖
Rocchio學習到的模型通常比LIBLINEAR弱,而噪聲對LIBLINEAR技術影響較大。為了更好地分類,本文提出將Rocchio與LIBLINEAR結合。使用Rocchio從U中提取出RN后,再使用P和RN來運行LIBLINEAR,最后生成一個分類效果較好的模型。
2.2.4網絡入侵檢測
通過機器學習算法獲得了檢測異常網絡流量的模型后,可以用來對未知網絡流量數據進行檢測。流量檢測流程如圖4所示。先對待檢測數據使用相同的特征提取過程,然后利用訓練好的模型進行檢測,從而識別出正常網絡流量和異常網絡流量。

圖4 網絡流量檢測流程圖
本文采用KDD99數據集進行實驗,KDD99訓練數據集包括494 021條記錄,測試集包括311 029條記錄。訓練數據集中有22種攻擊類型,測試集中增加了14種新的攻擊類型。在測試檢測算法時,使用指標precision和recall進行評估,其定義為:
(3)
(4)
檢測的結果precision和recall值越高,效果越好,但實際上這兩者并沒有必然的關系。在實際應用中,兩者也是相互制約的,因此,需要新的指標將二者結合,其中一個重要的指標就是F-measure。公式如下:
(5)
如果precision和recall同等重要,β值設為1,這樣得到的結果稱為F1。如果β比1大,recall比precision更重要;如果β比1小,precision比recall更重要。在網絡入侵檢測的研究中,recall(不遺漏任何異常流量)比precision(沒有把正常流量識別成異常流量)是更重要的。沒有檢測出異常流量可能會導致網絡入侵,或者對系統安全留下了隱患。因此,本文同時選取F1、F2及F3進行評估。
實驗中從KDD99的訓練集中隨機選取10 000條異常網絡數據作為訓練集的正樣本數據集,然后使用Rocchio方法從KDD99訓練集中的剩余樣本中識別出10 000條正常數據作為負樣本數據,再使用LIBLINEAR進行模型訓練。實驗的測試集為從KDD99測試集中隨機選取的6 000個樣本,其中正樣本數據1 550個。實驗結果如表2所示。

表2 實驗結果
表1中的檢測結果依賴于各個環節的處理,技術實現時盡可能對各個部分進行了優化。
在本文的的半監督分類方法中,只有正樣本數據,沒有負樣本數據。有一種方法可以只利用一種類型的數據進行模型訓練,例如one-class SVM,實驗發現使用one-class SVM方法,只用異常網絡流量數據訓練模型時,檢測結果并不好,precision和recall值不足0.6。另外,Liu Bing等人實現了一種半監督分類工具,并且提供二進制文件下載[10]。該分類工具中包含S-EM和Roc-SVM兩種方法,實驗發現,S-EM檢測結果中絕大多數測試集數據被識別成正樣本數據,而Roc-SVM則剛好相反,對于本實驗來說,效果并不理想。
本文中技術實現時包含很多環節,許多因素會對檢測結果產生影響。其中一個因素是特征提取環節,選取不同特征對模型訓練會有很大影響;另外一個影響因素是測試數據的選取,算法對網絡異常流量檢測具有通用性,但是針對不同的數據集,還需對算法的處理細節進行調整。
工控系統的應用已經變得普及,工控網絡也逐漸與互聯網開始融合,使得工業控制系統的脆弱性正在逐漸顯現。本文針對工控網絡數據特點,結合多種機器學習算法,設計了一種基于半監督機器學習的入侵檢測技術,使用該技術可以有效地檢測出工控系統網絡中的異常流量,從而及時發現和防御入侵攻擊。未來的網絡攻擊變種會更具欺騙性,關于準確性這一問題還需要進行更具創新性的研究和更多細致完善的工作。
[1] 劉廣生, 張松清. 智能電網信息安全威脅及對策分析[J]. 微型機與應用, 2017,36(5):8-10.
[2] 程冬梅, 嚴彪, 文輝,等. 基于規則匹配的分布式工控入侵檢測系統設計與實現[J]. 信息網絡安全, 2017(7):45-51.
[3] 羅耀鋒. 面向工業控制系統的入侵檢測方法的研究與設計[D]. 杭州:浙江大學, 2013.
[4] 楊安, 孫利民, 王小山, 等. 工業控制系統入侵檢測技術綜述[J]. 計算機研究與發展, 2016, 53(9):2039-2054.
[5] 劉建偉, 劉媛, 羅雄麟. 半監督學習方法[J]. 計算機學報, 2015,38(8):1592-1617.
[6] 牛罡, 羅愛寶, 商琳. 半監督文本分類綜述[J]. 計算機科學與探索, 2011, 5(4):313-323.
[7] 杜芳華. 基于半監督學習的文本分類算法研究[D]. 北京:北京工業大學, 2014.
[8] 譚建平, 劉波, 肖燕珊. 基于半監督的SVM遷移學習文本分類算法[J]. 無線互聯科技, 2016(4): 71-75.
[9] Fan Rongen, Chang Kaiwei, HSIEH C J, et al. LIBLINEAR: a library for large iinear classification[J]. Journal of Machine Learning Research, 2010, 9(12):1871-1874.
[10] Liu Bing, Li Xiaoli. LPU: learning from positive and unlabeled examples[EB/OL].(2003-07-10) https://www.cs.uic.edu/~liub/LPU/LPU-download.html.