裘 昱
安徽省軍區(qū)數(shù)據(jù)信息室,安徽合肥,230000
異常檢測(cè)是入侵檢測(cè)的一個(gè)重要方面[1]。入侵檢測(cè)是通過檢測(cè)各類系統(tǒng)數(shù)據(jù)(如網(wǎng)絡(luò)數(shù)據(jù)包、系統(tǒng)日志等)來區(qū)分正常數(shù)據(jù)與異常數(shù)據(jù),從而保護(hù)計(jì)算機(jī)系統(tǒng)的一種網(wǎng)絡(luò)安全技術(shù)。對(duì)傳統(tǒng)異常檢測(cè)模型的訓(xùn)練,需要用一個(gè)“完全干凈”(不含異常數(shù)據(jù))的數(shù)據(jù)集來對(duì)檢測(cè)模型進(jìn)行訓(xùn)練[2]。這種方法存在幾個(gè)方面問題:(1)這種數(shù)據(jù)集通常很難得到;(2)如果數(shù)據(jù)集中包含有某些異常數(shù)據(jù),由此得到的檢測(cè)模型將無法檢測(cè)出此類異常數(shù)據(jù);(3)這種模型將很難“在線(online)”訓(xùn)練,因?yàn)闊o法保證“在線”時(shí)的訓(xùn)練數(shù)據(jù)滿足要求[3]。為此,本文提出了一種基于概率分布的,無須“完全干凈”的數(shù)據(jù)集就能夠進(jìn)行異常檢測(cè)模型訓(xùn)練的方法。
本文使用“混合數(shù)據(jù)(正常和異常數(shù)據(jù)均存在)集”來表示訓(xùn)練用數(shù)據(jù)集。在這個(gè)“混合數(shù)據(jù)集”中,每個(gè)數(shù)據(jù)元素均可以表示為:若它的出現(xiàn)為小概率λ,那么它是個(gè)異常數(shù)據(jù);或者它的出現(xiàn)為概率(1-λ),那么它是個(gè)正常數(shù)據(jù)。
本文假設(shè),一個(gè)任意給定的系統(tǒng)程序運(yùn)行序列,如果此序列發(fā)生的概率為(1-λ),則它是一個(gè)正常的系統(tǒng)調(diào)用序列,即為正常數(shù)據(jù);如果一個(gè)系統(tǒng)程序運(yùn)行序列發(fā)生的概率為λ,那么它是個(gè)異常的系統(tǒng)調(diào)用序列,即為入侵?jǐn)?shù)據(jù)。
在本文的方法中,數(shù)據(jù)集中的某個(gè)數(shù)據(jù)元素xi,要么它屬于概率為(1-λ)的主分布M(Majority),要么它屬于概率為λ的異常分布A(Anomalous)。這樣,對(duì)于整個(gè)數(shù)據(jù)集D,則有:
D=(1-λ)M+λA
(1)
因此,數(shù)據(jù)集D就被分為兩個(gè)子數(shù)據(jù)集:正常數(shù)據(jù)的數(shù)據(jù)子集(簡(jiǎn)稱正常數(shù)據(jù)集)和異常數(shù)據(jù)的數(shù)據(jù)子集(簡(jiǎn)稱異常數(shù)據(jù)集),本文使用Mt(At)來表示對(duì)數(shù)據(jù)元素xt分類之后(即t時(shí)刻)的正常(異常)子數(shù)據(jù)集。初始時(shí),沒有任何異常數(shù)據(jù)被檢測(cè),所以M0=D,A0=φ。
可以使用任何一種機(jī)器學(xué)習(xí)算法來得到概率分布模型。對(duì)于正常數(shù)據(jù)集,有函數(shù)lm,其輸入是正常數(shù)據(jù)集中的數(shù)據(jù)元素mt,輸出是該數(shù)據(jù)元素的概率分布Pmt。同樣,對(duì)于異常數(shù)據(jù)集,有函數(shù)Ia,其輸入是異常數(shù)據(jù)元素at,輸出是該異常數(shù)據(jù)的概率分布Pat,即:
Pmt(x)=lm(mt)(x)
(2)
Pat(x)=la(at)(x)
(3)
對(duì)于函數(shù)lm和la,可以是任何概率模型生成算法(如樸素貝葉斯算法等)。注意,由于異常數(shù)據(jù)集初始化時(shí)為空,對(duì)于概率模型生成算法la來說即沒有數(shù)據(jù)用來訓(xùn)練,因此,Pat實(shí)際上是一個(gè)先驗(yàn)概率分布。
在本文的方法中,異常數(shù)據(jù)的檢測(cè)等同于判定一個(gè)給定的數(shù)據(jù)元素是屬于分布A還是屬于分布M,并據(jù)此將該數(shù)據(jù)元素放入相應(yīng)的數(shù)據(jù)子集中。
在時(shí)刻t,數(shù)據(jù)集D分布的可能性L(Likelihood)定義為:
(4)
為了計(jì)算方便,使用對(duì)數(shù)來簡(jiǎn)化計(jì)算,由此得到LL(Log Likelihood)的計(jì)算方法:
(5)
判定某個(gè)數(shù)據(jù)元素是否是異常數(shù)據(jù),即判定它在特征空間中是否為奇異點(diǎn)(outlier)。
算法如下:
(1)對(duì)于一個(gè)給定的數(shù)據(jù)元素xi,計(jì)算其從主分布Mt-1移至異常分布At-1之后的LLt的值,并計(jì)算該值與移動(dòng)之前的LLt-1值的差值。即:
Mt=Mt-1{xt}
(6)
At=At-1∪{xt}
(7)
K=LLt-LLt-1
(8)
(2)設(shè)定閾值c,如果K值大于閾值c,則判定此數(shù)據(jù)元素為一個(gè)異常數(shù)據(jù),并將它從正常數(shù)據(jù)集移至異常數(shù)據(jù)集,否則,此數(shù)據(jù)元素保留在正常數(shù)據(jù)集中。即:
Mt=Mt-1
(9)
At=At-1
(10)
(3)對(duì)數(shù)據(jù)集D中所有的數(shù)據(jù)元素重復(fù)上述過程,最后,得到從原數(shù)據(jù)集D分解出的兩個(gè)數(shù)據(jù)子集:正常數(shù)據(jù)集和異常數(shù)據(jù)集。
這里閾值c的選擇會(huì)影響到模型對(duì)異常數(shù)據(jù)的檢測(cè)。c值越小誤報(bào)律會(huì)下降,但檢測(cè)率也會(huì)隨之下降;c值越大,檢測(cè)律上升的同時(shí)也帶來了誤報(bào)律大的問題[4]。
本文所使用的兩個(gè)數(shù)據(jù)集是在兩臺(tái)計(jì)算機(jī)上采集到的系統(tǒng)程序調(diào)用序列(包括正常程序和入侵程序)的記錄集。
第一個(gè)數(shù)據(jù)集來自MIT Lincoln Labs(麻省理工學(xué)院林肯實(shí)驗(yàn)室),數(shù)據(jù)為某部裝有Solaris操作系統(tǒng)的計(jì)算機(jī)一段時(shí)間內(nèi)的系統(tǒng)程序調(diào)用記錄。其中包含的異常數(shù)據(jù)來自3個(gè)入侵程序:eject、ps(LL)和ftpd。
第二個(gè)數(shù)據(jù)集來自University of New Mexico(新墨西哥大學(xué)),數(shù)據(jù)為操作系統(tǒng)15個(gè)月內(nèi)的系統(tǒng)程序調(diào)用記錄。其中包含的異常數(shù)據(jù)來自4個(gè)入侵程序:named、xlock、login和ps。
表1和表2是這兩個(gè)數(shù)據(jù)集的基本信息匯總。
表1 Lincoln Labs數(shù)據(jù)集基本信息
表2 University of New Mexico數(shù)據(jù)集基本信息
假設(shè)異常數(shù)據(jù)記錄的產(chǎn)生是隨機(jī)的。對(duì)于la函數(shù),在時(shí)刻t能夠得到異常概率分布Pat。對(duì)于lm函數(shù),本文使用定階馬爾可夫鏈(Fixed Order Markov Chain) 算法,在正常數(shù)據(jù)集上得到正常概率分布Pmt。
其概率模型的建立方法是:對(duì)于某個(gè)給定的系統(tǒng)調(diào)用序列xt,在長(zhǎng)度L(L值事先確定)的系統(tǒng)調(diào)用序列后,若出現(xiàn)了xt,便計(jì)數(shù)一次。也就是說,它是某個(gè)特定程序的前L個(gè)系統(tǒng)調(diào)用后的條件概率。即:
P(Xt|Xt-1,Xt-2,…,Xt-L)
(11)
為了避免概率為0的情形出現(xiàn),對(duì)每個(gè)計(jì)數(shù)初始化為一個(gè)非常小的值(0.01),并設(shè)置L=3。
原則上,必須在處理每一個(gè)數(shù)據(jù)之后,重新對(duì)機(jī)器學(xué)習(xí)算法來訓(xùn)練,以得到LL值。但實(shí)際上只需對(duì)擁有同樣前綴的數(shù)據(jù)進(jìn)行計(jì)算,因此,對(duì)數(shù)據(jù)集D只需掃描兩次。第一次掃描假設(shè)所有元素都是正常數(shù)據(jù),得到各種系統(tǒng)調(diào)用序列的概率分布;第二次掃描是計(jì)算當(dāng)一個(gè)數(shù)據(jù)判定為異常數(shù)據(jù)時(shí)的K值。
STIDE算法和t-STIDE算法有著良好的入侵檢測(cè)效果[5]。它們用于訓(xùn)練和測(cè)試的數(shù)據(jù)集是從表2數(shù)據(jù)集中抽取出的正常數(shù)據(jù)記錄。
STIDE(sequence time-delay embedding)算法對(duì)在訓(xùn)練集中看到過的系統(tǒng)調(diào)用序列(序列長(zhǎng)度為6)在測(cè)試集中進(jìn)行掃描。它認(rèn)為任何一個(gè)在訓(xùn)練集中沒有看到過,而出現(xiàn)在測(cè)試集中的系統(tǒng)調(diào)用序列即為異常。t-STIDE算法是STIDE算法的變種,它使用一個(gè)閾值,只有當(dāng)某個(gè)數(shù)據(jù)在訓(xùn)練集中未出現(xiàn)過,但在測(cè)試集中出現(xiàn)了,且數(shù)量超過這個(gè)閾值(通常為數(shù)據(jù)總數(shù)的0.001%)時(shí),才認(rèn)為它是一個(gè)異常。
實(shí)驗(yàn)對(duì)比主要考查兩個(gè)指標(biāo):檢測(cè)率(intrusion detection rate)和誤報(bào)率(false positive rate)。
檢測(cè)率反映的是模型的正確性,誤報(bào)率反映的是模型的健壯性,通常檢測(cè)模型必須在這兩者之間尋求平衡。針對(duì)某一確定的訓(xùn)練/測(cè)試數(shù)據(jù)集,用得到的ROC(Receiver Operating Characteristic)曲線來反映檢測(cè)率與誤報(bào)率之間的關(guān)系。
首先,將本文的算法與上述兩個(gè)算法在同一個(gè)混合數(shù)據(jù)集(異常數(shù)據(jù)的總數(shù)不超過數(shù)據(jù)總數(shù)的5%)上進(jìn)行訓(xùn)練。接著,將本文的算法在混合數(shù)據(jù)集(異常數(shù)據(jù)的總數(shù)不超過數(shù)據(jù)總數(shù)的5%)上進(jìn)行訓(xùn)練,對(duì)兩個(gè)比較算法使用正常數(shù)據(jù)集進(jìn)行訓(xùn)練,結(jié)果分別見圖1和圖2。
圖1 本文方法與t-STIDE算法的檢測(cè)效果比較(a)-(d)分別代表四種入侵程序產(chǎn)生的異常數(shù)據(jù)的檢測(cè)情況,其中(a)ftpd,(b)ps,(c)xlock,(d)named
(1)實(shí)驗(yàn)1:同時(shí)使用混合數(shù)據(jù)集。對(duì)于STIDE和t-STIDE算法來說,這個(gè)數(shù)據(jù)集既是訓(xùn)練集也是測(cè)試集。結(jié)果,STIDE算法沒有檢測(cè)出任何異常數(shù)據(jù),原因是對(duì)于STIDE算法來說,測(cè)試集中的所有系統(tǒng)調(diào)用序列(正常與異常數(shù)據(jù))在訓(xùn)練集中都曾經(jīng)見過。對(duì)于t-STIDE算法,由于閾值必須事先根據(jù)數(shù)據(jù)元素總數(shù)(這在實(shí)際環(huán)境下是不可能事先知道的)決定,所以并不能保證設(shè)定的閾值是正確或合適的,比如對(duì)于由入侵程序ftpd和ps產(chǎn)生的異常數(shù)據(jù),算法就沒有檢測(cè)出來。本文算法與t-STIDE算法的檢測(cè)效果的比較見圖1。圖中,本文算法的ROC曲線用AD標(biāo)識(shí)。
(2)實(shí)驗(yàn)2:本文算法使用混合數(shù)據(jù)集,STIDE和t-STIDE算法使用正常數(shù)據(jù)集。STIDE算法和t-STIDE算法使用正常數(shù)據(jù)集中的1/3數(shù)據(jù)進(jìn)行訓(xùn)練,余下的作為測(cè)試用數(shù)據(jù)。檢測(cè)效果的比較見圖2。圖中,本文算法的ROC曲線用AD標(biāo)識(shí)。
圖2 本文方法與STIDE算法和t-STIDE算法的檢測(cè)效果比較(a)-(d)分別代表四種入侵程序產(chǎn)生的異常數(shù)據(jù)的檢測(cè)情況,其中(a)ftpd,(b)ps,(c)xlock,(d)named
可以看出,圖1中本文提出的算法具有較優(yōu)的檢測(cè)效果。圖2中本文的算法在檢測(cè)效果上與其余兩個(gè)算法不相上下。總體上,本文提出的基于概率分布的異常檢測(cè)模型訓(xùn)練方法具有較好的檢測(cè)效果。
本文提出的異常檢測(cè)的方法是基于以下三點(diǎn)假設(shè)[6]:
(1)對(duì)于正常數(shù)據(jù),可以建立它的概率分布模型。
(2)異常數(shù)據(jù)從本質(zhì)上與正常數(shù)據(jù)不同。
(3)訓(xùn)練數(shù)據(jù)集中的正常數(shù)據(jù)從數(shù)量上遠(yuǎn)遠(yuǎn)超過異常數(shù)據(jù)。
對(duì)于系統(tǒng)程序調(diào)用來說,正常的調(diào)用過程應(yīng)該非常有規(guī)律并能有效地建立模型。由于異常數(shù)據(jù)是以入侵為目的,它們調(diào)用過程往往較為特殊,這就有條件將它們檢測(cè)出來[7]。
對(duì)于第三個(gè)假設(shè),本文也做了進(jìn)一步的研究,方法是調(diào)整數(shù)據(jù)集中的異常數(shù)據(jù)總數(shù),來觀察不同比例下的異常數(shù)據(jù)的檢測(cè)效果,如圖3。實(shí)驗(yàn)結(jié)果顯示,隨著異常數(shù)據(jù)所占比例的增加,模型的檢測(cè)能力明顯下降。從圖3中可以看出,對(duì)于含有較少的異常數(shù)據(jù)(這些數(shù)據(jù)記錄由ftpd、ps(LL)、xlock和named軟件生成)的數(shù)據(jù)集,算法模型擁有較好的檢測(cè)能力。當(dāng)數(shù)據(jù)集中含有較多的異常數(shù)據(jù)時(shí)(這些異常數(shù)據(jù)記錄由login、ps(NUM)軟件生成),算法模型的檢測(cè)能力下降明顯。
圖3 模型對(duì)異常數(shù)據(jù)不同比例的數(shù)據(jù)集檢測(cè)效果比較
本文提出了一種只需“混合數(shù)據(jù)集”的基于概率分布的異常檢測(cè)模型訓(xùn)練方法。評(píng)估了此方法的檢測(cè)效果,并將其與其他兩個(gè)傳統(tǒng)的異常檢測(cè)模型訓(xùn)練方法的檢測(cè)效果進(jìn)行了比較。實(shí)驗(yàn)結(jié)果顯示,本文的方法又有較好的檢測(cè)效果,令人滿意。