李 萍,吳金霖,陳一民
隨著Internet的不斷發(fā)展,計算機(jī)網(wǎng)絡(luò)已經(jīng)漸漸深入到社會生活的各個方面,計算機(jī)網(wǎng)絡(luò)的安全就顯得尤為重要。近年來網(wǎng)絡(luò)安全事件越來越頻繁,黑客們?yōu)榱烁鞣N各樣的目的對計算機(jī)系統(tǒng)和網(wǎng)絡(luò)進(jìn)行入侵和破壞,竊取機(jī)密信息或個人隱私,給廣大用戶帶來巨大的麻煩和損失。在CNCERT/CC的報告[1]中指出:2010年CNCERT 抽樣監(jiān)測結(jié)果顯示,在利用木馬控制服務(wù)器對主機(jī)進(jìn)行控制的事件中,木馬控制服務(wù)器IP 總數(shù)為479626 個,木馬受控主機(jī)IP總數(shù)為10317169 個,僵尸網(wǎng)絡(luò)控制服務(wù)器IP 總數(shù)約為1.4萬個,僵尸網(wǎng)絡(luò)受控主機(jī)IP 地址總數(shù)為562 萬余個,被篡改網(wǎng)站數(shù)量為34845 個,CNCERT 通過國際合作渠道接收到境內(nèi)感染惡意代碼的主機(jī)數(shù)量為83.1 萬余個,日均2279個。用此可見,目前的網(wǎng)絡(luò)安全狀況令人堪憂。而且隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)安全的形式也勢必越來越嚴(yán)峻。
計算機(jī)網(wǎng)絡(luò)安全問題涉及到政治、軍事、經(jīng)濟(jì)、科技、教育以及企業(yè)、個人等領(lǐng)域,為了確保這些信息不被破壞或竊取,加大計算機(jī)網(wǎng)絡(luò)安全的研究勢在必行?;谙到y(tǒng)調(diào)用序列的入侵檢測屬于異常檢測范疇,通常是對特權(quán)進(jìn)程進(jìn)行監(jiān)控。如果一個程序中沒有選擇和循環(huán)語句,那么他在運行過程中所涉及的系統(tǒng)調(diào)用序列是固定的,雖然執(zhí)行選擇和循環(huán)語句時產(chǎn)生的系統(tǒng)調(diào)用有一定的隨機(jī)性,但經(jīng)Forrest 等學(xué)者的研究發(fā)現(xiàn)[2],整個進(jìn)程在運行時的產(chǎn)生的系統(tǒng)調(diào)用具有很明顯的局部穩(wěn)定性和一致性。這樣就可以將整個系統(tǒng)調(diào)用序列分成一定長度的短序列,并將此作為檢測的參考標(biāo)準(zhǔn)。在進(jìn)程受到攻擊時,這些短序列將會發(fā)生一定的變化。這種方法一般分為兩個階段:訓(xùn)練階段和檢測階段。在訓(xùn)練階段,獲取系統(tǒng)所有進(jìn)程的系統(tǒng)調(diào)用序列集合。首先對每個進(jìn)程根據(jù)其系統(tǒng)調(diào)用序列,通過一定的算法形成正常模式表,然后將每個進(jìn)程的正常模式表進(jìn)行合并,形成整個系統(tǒng)的正常行為模式庫。在檢測時,將檢測的進(jìn)程與其對應(yīng)的正常行為模式表進(jìn)行模式匹配,如果不匹配的數(shù)量超過設(shè)定的閾值,則認(rèn)為入侵,反之則為正常。
目前基于系統(tǒng)調(diào)用序列的入侵檢測方法有:短序列時序分析方法[2,3,4]、隱馬爾科夫模型[5,6]和基于數(shù)據(jù)挖掘的檢測方法[7,8,9]等等。基于以上的分析,本文從系統(tǒng)調(diào)用的角度,給出了基于STIDE的算法和基于RIPPER的算法,同時分析、研究了基于這二種算法的系統(tǒng)調(diào)用、建模方法的特點及效果。
基于STIDE的檢測算法具有較高的準(zhǔn)確率,算法的具體做法是:對于系統(tǒng)中的每個進(jìn)程,利用strace 進(jìn)程跟蹤程序跟蹤的其正常運行時的狀態(tài),獲取其正常運行時的系統(tǒng)調(diào)用序列。然后利用stide 滑動窗口技術(shù),也就是定義一個長度為k的窗口,在該系統(tǒng)調(diào)用序列上滑動,每次滑動一格,并將每次在窗口中的序列作為進(jìn)程的一個正常短序列模式,這樣所獲得的所有正常短序列模式,就組成了該進(jìn)程的正常行為模式庫。系統(tǒng)中的所有進(jìn)程的正常行為模式庫合并起來就是系統(tǒng)的正常行為模式庫。
在檢測時,可以利用滑動窗口技術(shù),獲取待檢測的系統(tǒng)調(diào)用短序列。對于每個待檢測的系統(tǒng)調(diào)用短序列,求其與正常行為模式庫中的正常短序列的最小海明距離,,越大,發(fā)生入侵的可能越大。在實際檢測過程中,我們設(shè)定一個閾值,當(dāng) 小于這個閾值時,認(rèn)為該短序列是正常的,否則視為異常。最后計算整個系統(tǒng)調(diào)用序列的異常度,當(dāng)異常度大于給定的異常度閾值時,則認(rèn)為進(jìn)程運行異常。
在利用此算法進(jìn)行訓(xùn)練時,首先要設(shè)定一些參數(shù),如滑動窗口的長度,然后,根據(jù)給定的滑動窗口長度,對正常運行的系統(tǒng)調(diào)用序列,利用滑動窗口技術(shù),形成正常短序列模式庫。其流程圖,如圖1所示:
圖1:基于STIDE的算法訓(xùn)練流程圖
在進(jìn)行檢測時,也要先設(shè)定一些閾值,包括海明距離閾值和異常度閾值。然后,根據(jù)這些閾值判斷短序列的進(jìn)程是否異常。其流程圖,如圖2所示:
圖2:基于STIDE的算法檢測流程圖
在本文中,用海明距離(Hamming Distance)的大小來衡量待檢測短序列和正常短序列之間的相似度,并以此判斷是否異常。即是指兩個序列在相同位置上數(shù)字不同的的位數(shù)。待檢測短序列與正常行為模式庫中的所有正常短序列的海明距離的最小值為其最小海明距離,并以此作為該序列的最大相似度。另外,在實現(xiàn)過程中,本文采用樹形結(jié)構(gòu)存儲正常短序列,具有相同的頭元素的短序列存放在同一棵樹中,該樹以該相同的頭元素為根節(jié)點。樹中從根節(jié)點到葉子節(jié)點的路徑即為一條短序列。所用的樹組成的森林即為正常行為模式庫。用樹形結(jié)構(gòu)存儲短序列能夠節(jié)省空間和加快檢測匹配速度。在生成正常行為模式庫時,先在森林中查找以當(dāng)前短序列的頭元素為根節(jié)點的樹是否存在,若存在,將其插入該樹中;否則,新建一課以該頭元素為根節(jié)點的樹,并將該序列插入新建的樹中。在進(jìn)行查找和插入時,都是遞歸進(jìn)行的。
基于RIPPER的算法是一種分類規(guī)則生成算法,算法是建立在REP(Reduce Error Pruning)和IREP(Incremental Reduce ErrorPruning)的基礎(chǔ)之上的。算法通過更改IREP中對規(guī)則價值的的評估公式,改善判斷停止添加規(guī)則的條件,增加規(guī)則優(yōu)化模塊,大為提高了分類的準(zhǔn)確率。此算法首先根據(jù)訓(xùn)練樣本中每類的實例數(shù)從小到大進(jìn)行排序,然后按此順序為每個分類建立規(guī)則集,最后將所有類的規(guī)則集合并起來,就是其對應(yīng)訓(xùn)練樣本的規(guī)則集?;赗IPPER的算法所建立的規(guī)則流程,如圖3所示:
圖3:基于RIPPER的算法所建立的規(guī)則流程圖
基于RIPPER的算法規(guī)則流程實現(xiàn)過程如下:
(1)將訓(xùn)練集隨機(jī)的分為兩個子集:growdata(用于建立規(guī)則)和prunedata(用于裁剪規(guī)則)。
(2)用growdata 建立規(guī)則。首先將規(guī)則的條件置空。然后不斷選擇信息量最大的條件,將其加入到規(guī)則中,并在每次添加條件后縮減growdata。這樣直到growdata 為空或者所有的屬性都已被用。
(3)用prunedata 裁剪(2)中建立規(guī)則。依次從規(guī)則的條件中刪除條件,使函數(shù)值V=(p -n)/(p+n)最大。其中p是裁剪集prunedata 中符合該規(guī)則的實例數(shù)量,n 是prunedata中不符合該規(guī)則的數(shù)量。重復(fù)的執(zhí)行這個過程直到通過刪減條件無法使V 值增大。該過程能產(chǎn)生裁剪集上的更精確的規(guī)則,改善規(guī)則的普適精度和簡化規(guī)則。
基于RIPPER的算法檢測流程,如圖4所示:
圖4:基于RIPPER的算法檢測流程圖
基于RIPPER的算法所建立的規(guī)則集流程,如圖5所示:
圖5:基于RIPPER的算法所建立的規(guī)則集流程圖
最后在Ri,repRi和revRi中做一個選擇,作為最終的規(guī)則,其決定的標(biāo)準(zhǔn)是使得整個規(guī)則集和數(shù)據(jù)集的DL(description length)[10]最小。
分類器建好之后,對進(jìn)程行為進(jìn)行檢測。利用滑動窗口技術(shù),形成系統(tǒng)調(diào)用短序列實例。然后,對每個短序列實例與生成的規(guī)則庫進(jìn)行模式匹配,若一個短序列實例違背了一個置信度為P的規(guī)則,那么該短序列的異常度為100*P,如果該短序列實例在規(guī)則庫中找到了與之相符的模式,則認(rèn)為該短序列實例是正常的,其異常度為0。最后的進(jìn)程的異常度為每個短序列的異常度的平均值。若該異常度大于給定的異常度閾值,則認(rèn)為該進(jìn)程是異常的;反之,視為正常。
本文研究的是基于系統(tǒng)調(diào)用的主機(jī)安全分析,因此實驗的數(shù)據(jù)是系統(tǒng)調(diào)用,在實際分析過程中使用系統(tǒng)調(diào)用號代表系統(tǒng)調(diào)用,這樣更方便和明了。
本文的所有系統(tǒng)調(diào)用數(shù)據(jù)集都來自新墨西哥大學(xué)免疫系統(tǒng)網(wǎng)站,該網(wǎng)站提供了Linux 系統(tǒng)中sendmail、ftp、lpr、login、ps、inet、xlock 等程序的正常運行系統(tǒng)調(diào)用序列集及相應(yīng)的受攻擊的系統(tǒng)調(diào)用序列集。每個系統(tǒng)調(diào)用序列集都以文本格式存儲。其格式是:每一行有兩個整數(shù),第一個整數(shù)是所監(jiān)控進(jìn)程的進(jìn)程號,第二個整數(shù)是進(jìn)程運行過程中產(chǎn)生的系統(tǒng)調(diào)用號,如:
其中,509 為進(jìn)程號,90、125、106、5、90、6、5、3為系統(tǒng)調(diào)用號。并且其排列順序是按進(jìn)程運行過程中產(chǎn)生系統(tǒng)調(diào)用的順序,這樣就可以分析系統(tǒng)調(diào)用的時序關(guān)系。
本系統(tǒng)在實際運行和測試中使用了sendmail的有關(guān)數(shù)據(jù)作為測試用例[11]。一共包括以下文件:包括6 個正常數(shù)據(jù)文件:bounce.int、bounce1.int、plus.int、queue.int、sendmail.int、sendmail1.int。在運行時選用sendmail.int 作為訓(xùn)練數(shù)據(jù)源,其他幾個作為測試數(shù)據(jù)。異常數(shù)據(jù)文件包括16 個樣本文件,如表1所示:
表1 異常數(shù)據(jù)分布
在進(jìn)行結(jié)果分析之前,先了解一下在分析過程中涉及的概念[12]。具體包括:真陽性TP(true positive),表示實際為正常的實例被檢測為正常。真陰性TN(true negative),表示實際為異常的實例被檢測為異常。假陽性FP(false positive),表示實際為正常的實例被檢測為異常。假陰性FN(false negative),表示實際為異常的實例被檢測為正常。具體計算方法如表2所示。
表2:攻擊檢測衡量指標(biāo)
另外,本文中將使用ROC 曲線描述系統(tǒng)的檢測性能。ROC(Receiver Operating Characteristic,ROC)曲線又稱為接收者操作特征,是一種對靈敏度進(jìn)行描述的功能曲線??梢酝ㄟ^TPR 和FPR 來實現(xiàn)。由于ROC 是通過比較兩個操作特征(TPR 和FPR)作為標(biāo)準(zhǔn),因此ROC 曲線也可看成是相關(guān)操作特征曲線。
3.1.1 基于STIDE的算法結(jié)果
在此算法中,在異常度閾值為0.100的情況下,筆者根據(jù)短序列的長度進(jìn)行了3 組實驗(短序列長度為6,8,11),每組實驗中,根據(jù)不同的海明距離閾值分別進(jìn)行檢測。系統(tǒng)的精確度、誤報率、漏報率隨海明距離閾值的變化如圖6,圖8,圖10所示。系統(tǒng)檢測性能的ROC 曲線如圖7,圖9,圖11所示,其中L 表示不同的短序列長度。
圖6:精確度、誤報率、漏報率隨海明距離閾值變化(L=6)
圖7:ROC 曲線(L=6)
圖8:精確度、誤報率、漏報率隨海明距離閾值變化(L=8)
圖9:ROC 曲線(L=8)
圖10 精確度、誤報率、漏報率隨海明距離閾值變化(L=11)
圖11:ROC 曲線(L=11)
從上面實驗數(shù)據(jù)可以看出,隨著海明距離閾值的增大,檢測的精確度逐漸下降,系統(tǒng)的誤報率越來越小,但漏報率卻越來越高。但并不是說海明距離越小越好,海明距離越小時,檢測的精確度雖然變高了,但是同樣系統(tǒng)的誤報率也變高了。因此,關(guān)鍵在于找到一個精確度、誤報率、漏報率的平衡點。
ROC 曲線中,在參考線越上面的點,性能越好。從3組實驗中的ROC 曲線可以看出,在海明距離閾值為0 和1時,系統(tǒng)的檢測命中率是比較高的,系統(tǒng)的檢測錯誤命中率比較都比較低,因此在檢測時將海明距離閾值設(shè)為0 或1時,系統(tǒng)將有比較高的檢測性能。3 組數(shù)據(jù)對比分析可以發(fā)現(xiàn),在短序列長度為11 時,檢測的精確度較其他兩組要高。
3.1.2 基于RIPPER的算法結(jié)果
在此算法中,筆者根據(jù)短序列的長度進(jìn)行了3 組實驗(短序列長度分別為6,7,8),每組實驗中根據(jù)設(shè)定的異常度閾值的不同分別進(jìn)行檢測(L 表示不同的短序列長度),如圖12~圖17所示:
圖12:精確度、誤報率、漏報率隨異常度閾值的變(L=6)
圖13:ROC 曲線(L=6)
圖14:精確度、誤報率、漏報率隨異常度閾值的變化(L=7)
圖15 ROC 曲線(L=7)
圖16:精確度、誤報率、漏報率隨異常度閾值變化(L=8)
圖17:ROC 曲線(L=8)
3.2.1 基于STIDE的算法性能
基于STIDE的算法中正常行為數(shù)據(jù)集的大小大約為O(Nk),算法的時間復(fù)雜的大約為O(k(PAN+1)),其中N為系統(tǒng)調(diào)用的總數(shù)目,k為系統(tǒng)調(diào)用序列長度,PA為異常行為和正常行為的比例。
總體來講,該算法的效率比較高,計算和空間代價不是太大。從以上的實驗檢測結(jié)果可以看出,該算法的檢測的效率較高,準(zhǔn)確率較高。然而其不足之處是,正常行為和異常行為的異常度差距不明顯,這樣閾值較難確定。
3.2.2 基于RIPPER的算法性能
基于RIPPER的算法由于使用規(guī)則集,所以不記錄正常行為數(shù)據(jù)庫。其時間復(fù)雜度為O(NR),其中N為系統(tǒng)調(diào)用的總數(shù)目,R代表RIPPER 中規(guī)則的總數(shù)。算法在生成規(guī)則時,計算量較大,在檢測時,計算量較少。由于生成規(guī)則只要進(jìn)行一次,因此,從整體來講,其效率還可以。
從異常的算法實驗結(jié)果可以看出,此算法的檢測準(zhǔn)確率比較高,而且正常行為和異常行為的異常度的差距較明顯,這樣異常度閾值的設(shè)定相對與基于STIDE的算法更簡單。
入侵檢測作為一種積極主動的網(wǎng)絡(luò)系統(tǒng)安全防護(hù)技術(shù),提供了對內(nèi)部攻擊、外部攻擊和誤操作的實時保護(hù)。而基于主機(jī)系統(tǒng)調(diào)用的入侵檢測,具有準(zhǔn)確率高、誤報率低和穩(wěn)定性好等特點,是主機(jī)安全中一種重要的方法。本文采用智能學(xué)習(xí)中兩種不同分析方法,分別對基于系統(tǒng)調(diào)用序列的主機(jī)入侵檢測進(jìn)行研究,從實驗結(jié)果可以看出,基于STIDE的算法隨著海明距離閾值的增大,檢測的精確度逐漸下降,系統(tǒng)的誤報率越來越小,但漏報率卻越來越高。而且,就總體而言,基于RIPPER的算法較基于STIDE的算法的檢測準(zhǔn)確率高,而且正常行為和異常行為的異常度的差距較明顯,異常度閾值的設(shè)定比基于STIDE的算法設(shè)置更簡單。另外,二種算法通過不同閾值選擇,前者可獲得80%以上的準(zhǔn)確率,而后者可獲得90%左右的識別準(zhǔn)確率。因此,通過本文的理論分析和實驗可以看出,二種算法都有著很不錯的性能,在入侵檢測領(lǐng)域有著不錯的應(yīng)用前景。
[1]CNCERT/CC 國家互聯(lián)網(wǎng)應(yīng)急中心,2010年中國互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報告http://www.cert.org.cn/articles/docs/common/201104222 5342.shtml.
[2]Forrest S.A Sense of Self for UNIX Processes[C].IEEE Proceeding of Symposium on Security and Privacy,Oakland,CA,IEEE Press,1996:120-128.
[3]Qian Q.Wu J.L.Zhu W.Xin M.J.Improved Edit Distance Method for System Call Anomaly Detection[C].IEEE 12th International Conference on Computer and Information Technology (CIT 2012),Chen Du,China,2012:1097-1102.
[4]Hofmeyr S.A.Forrest S.Somayaji A.Intrusion Detection Using Sequences of System Calls[J].Journal of Computer Security,1998,Vol.6,No.3:152-180.
[5]Mutz D.Valeur F.Vigna G.Kruege C.Anomalous system call detection[J].ACM Transactions on Information and System Security (TISSEC),2006,Vol.9,No.1:61-93.
[6]Mazeroff G.Markov models for application behavior analysis[C].Proceedings of the 4th annual workshop on Cyber security and information intelligence research,New York,USA,2008:1-2.
[7]Yasami Y..Mozaffari S.P.A novel unsupervised classification approach for network anomaly detection by k-Means clustering and ID3 decision tree learning methods[J].The Journal of Supercomputing,2010,Vol.53,No.1:231-245.
[8]Cohen W.W.Fast Effective Rule Induction[C].Proceedings of the Twelfth International Conference on Machine Learning,Morgan Kaufmann Press,California,USA,1995:115-123.
[9]Tandon G.Chan P.Learning Rules From System Call Arguments and Sequences for Anomaly Detection,Workshop on Data Mining for Computer Security(DMSC),Melbourne,Florida,2003:20-29.
[10]Rissanen.J.An introduction to the MDL principle.2 006,Available at http://www.mdl-research.org/jorma.r issanen/pub/Intro.pdf
[11]Computer Immune Systems,Data Sets and Software.In http://www.cs.unm.edu/~immsec/systemcalls.htm.
[12]ROC 曲線.In http://zh.wikipedia.org/wiki/ROC%E6%9 B%B2%E7%BA%BF.