劉文怡,薛 質(zhì),王軼駿
(上海交通大學(xué)電子信息與電氣工程學(xué)院,上海 200240)
入侵者假冒或偽裝成合法用戶(hù)進(jìn)入操作系統(tǒng)的入侵行為稱(chēng)為偽裝入侵(masquerade intrusion)[1]。未授權(quán)用戶(hù)(或稱(chēng)為“偽裝攻擊者”)通常通過(guò)偽裝成合法用戶(hù)的手段進(jìn)入系統(tǒng)訪(fǎng)問(wèn)關(guān)鍵數(shù)據(jù)或執(zhí)行其他非法操作。由于合法用戶(hù)的行為本身是發(fā)展變化的,且偽裝攻擊者可能?chē)L試模仿合法用戶(hù)的行為,這些不確定因素使得偽裝入侵檢測(cè)比傳統(tǒng)的網(wǎng)絡(luò)入侵檢測(cè)更復(fù)雜[2]。目前的偽裝攻擊檢測(cè)系統(tǒng)大多采用異常檢測(cè)技術(shù)——這種技術(shù)對(duì)合法用戶(hù)的正常行為特征進(jìn)行建模,通過(guò)被檢測(cè)用戶(hù)的實(shí)際行為特征與合法用戶(hù)的行為特征進(jìn)行比較,從而檢測(cè)入侵??梢钥闯觯瑐窝b入侵檢測(cè)牽涉兩大關(guān)鍵技術(shù):用戶(hù)特征建模以及入侵檢測(cè)算法。近年來(lái),學(xué)術(shù)界與工業(yè)界就這2個(gè)話(huà)題開(kāi)展了廣泛研究。
在用戶(hù)特征模型方面,早期的研究者大多利用Unix與Linux平臺(tái)用戶(hù)所鍵入的shell命令,如Schonlau等人通過(guò)展開(kāi)Linux平臺(tái)的shell命令數(shù)據(jù)集對(duì)偽裝攻擊檢測(cè)方法進(jìn)行研究[3]。之后的學(xué)者則著眼于Windows系統(tǒng),Li等人與Garg等人分別將Windows系統(tǒng)的用戶(hù)進(jìn)程與用戶(hù)的鍵盤(pán)鼠標(biāo)作為建模對(duì)象[4-5]。更有學(xué)者則將目光轉(zhuǎn)向用戶(hù)的網(wǎng)絡(luò)行為,例如Strasburg等人提出將用戶(hù)的網(wǎng)絡(luò)服務(wù)器登錄信息與NetFlow記錄作為建模對(duì)象[6]。然而,可以發(fā)現(xiàn),以上特征模型牽涉用戶(hù)的敏感信息,采用以上方案必將帶來(lái)諸多隱私問(wèn)題,為檢測(cè)系統(tǒng)的部署帶來(lái)局限性。
在入侵檢測(cè)算法方面,Schonlau等人研究了基于統(tǒng)計(jì)理論的檢測(cè)方法,包括Uniqueness算法、貝葉斯單步算法等[3];Maxion等人對(duì)Schonlau的檢測(cè)方法進(jìn)行了改進(jìn),引入了貝葉斯分類(lèi)算法[7]。Lane等人開(kāi)展了基于機(jī)器學(xué)習(xí)的偽裝攻擊檢測(cè)研究,將加窗平滑后的相似度曲線(xiàn)作為檢測(cè)用戶(hù)異常學(xué)習(xí)的依據(jù)[8]。Kim等人提出利用支持向量機(jī)(Support Vector Machine,SVM)作為異常檢測(cè)算法[2],也有學(xué)者將免疫遺傳[9]、Markov鏈[10]、區(qū)間值2型模糊集[11]等理論應(yīng)用于偽裝入侵檢測(cè)系統(tǒng)。
在現(xiàn)有工作基礎(chǔ)上,本文提出一種新的偽裝入侵攻擊檢測(cè)方法。該方法利用用戶(hù)的網(wǎng)絡(luò)流特征作為原始審計(jì)數(shù)據(jù),在不侵犯用戶(hù)隱私的前提下,采用AdaBoost與支持向量機(jī)結(jié)合的機(jī)器學(xué)習(xí)算法對(duì)審計(jì)數(shù)據(jù)進(jìn)行學(xué)習(xí)和預(yù)測(cè)。
支持向量機(jī)是一種適用于小樣本訓(xùn)練的大邊緣分類(lèi)器。該算法的宗旨是尋找一個(gè)分類(lèi)規(guī)則,使其能對(duì)未知類(lèi)別的新樣本做盡可能正確的劃分。將支持向量機(jī)用于分類(lèi)問(wèn)題其實(shí)就是尋找一個(gè)最優(yōu)分類(lèi)超平面,把此平面作為分類(lèi)決策面,它不但可以將給定的輸入樣本正確地劃分為正常和異常兩類(lèi),而且使得被分成的兩類(lèi)數(shù)據(jù)間的分類(lèi)間隔盡可能大。當(dāng)訓(xùn)練數(shù)據(jù)線(xiàn)性不可分時(shí),SVM先通過(guò)非線(xiàn)性變換,將數(shù)據(jù)映射到一個(gè)高維的內(nèi)積空間,再在此高維的內(nèi)積空間上做線(xiàn)性分類(lèi),在新的特征空間上求取最優(yōu)分類(lèi)超平面。這種非線(xiàn)性變換是通過(guò)定義適當(dāng)?shù)膬?nèi)積函數(shù)來(lái)實(shí)現(xiàn)的。不同形式的內(nèi)積核函數(shù)K,可生成不同形式的支持向量機(jī),在特征空間中對(duì)應(yīng)著不同的最優(yōu)分類(lèi)超平面。常用的核函數(shù)主要有以下4種:
核函數(shù)的作用是將數(shù)據(jù)特征映射到高維的特征空間。本文選擇的核函數(shù)為徑向基核函數(shù)(Radial Basis Function,RBF)。徑向基核函數(shù)有2個(gè)優(yōu)點(diǎn):(1)它可以將數(shù)據(jù)特征映射到更高維的特征空間,而并不增加計(jì)算復(fù)雜度;(2)徑向基核函數(shù)只有一個(gè)參數(shù),降低了計(jì)算復(fù)雜度。
AdaBoost是一種常用的學(xué)習(xí)算法,這個(gè)算法允許設(shè)計(jì)者不斷地加入新的分類(lèi)器,直到達(dá)到某個(gè)足夠小的誤差率為止。在AdaBoost中,每個(gè)訓(xùn)練樣本都被賦予一個(gè)權(quán)重,代表它被某個(gè)分量分類(lèi)器選入訓(xùn)練集的概率。若某個(gè)樣本點(diǎn)已經(jīng)被準(zhǔn)確地分類(lèi),則在構(gòu)造下一個(gè)訓(xùn)練集時(shí),它被選中的概率就被降低;相反,若某個(gè)樣本點(diǎn)沒(méi)有被正確分類(lèi),則它的權(quán)重就將得到相應(yīng)的提高。通過(guò)以上方式,AdaBoost方法能夠著眼于那些較難分類(lèi)的樣本上。其具體實(shí)現(xiàn)方法如下:最初令每個(gè)樣本的權(quán)重都相等;對(duì)于第k次迭代操作,根據(jù)這些權(quán)重來(lái)選取樣本點(diǎn),進(jìn)而訓(xùn)練分類(lèi)器Ck;然后根據(jù)這個(gè)分類(lèi)器的分類(lèi)結(jié)果,提高被它錯(cuò)分的那些樣本點(diǎn)的權(quán)重,并降低可以被正確分類(lèi)的樣本點(diǎn)的權(quán)重。經(jīng)過(guò)權(quán)重更新后的樣本被用來(lái)繼續(xù)訓(xùn)練下一個(gè)分類(lèi)器Ck+1,整個(gè)訓(xùn)練過(guò)程如此反復(fù)進(jìn)行,直到誤差率達(dá)到可接受范圍。
本文基于網(wǎng)絡(luò)流統(tǒng)計(jì)數(shù)據(jù)進(jìn)行用戶(hù)特征建模,并利用此模型進(jìn)行偽裝入侵檢測(cè)。本文將研究重點(diǎn)放在TCP協(xié)議上,因此將網(wǎng)絡(luò)流(network flow)定義為用戶(hù)與某網(wǎng)絡(luò)服務(wù)器之間(方向不限)的一次完整TCP會(huì)話(huà)。每一條網(wǎng)絡(luò)流記錄包含了同一次TCP會(huì)話(huà)中的若干統(tǒng)計(jì)數(shù)據(jù)。網(wǎng)絡(luò)流統(tǒng)計(jì)數(shù)據(jù)通常應(yīng)用于網(wǎng)絡(luò)流類(lèi)型檢測(cè)、網(wǎng)絡(luò)攻擊檢測(cè)(DDos,R2L等);而本文創(chuàng)新地將網(wǎng)絡(luò)流統(tǒng)計(jì)數(shù)據(jù)作為原始審計(jì)數(shù)據(jù)參與的機(jī)器學(xué)習(xí)的訓(xùn)練與判斷,用以檢測(cè)偽裝入侵攻擊。
3.1.1 用戶(hù)特征列表
常用的網(wǎng)絡(luò)流統(tǒng)計(jì)特征有上百種之多,在本文的檢測(cè)方法中,僅選取19種較有意義、較能反映用戶(hù)網(wǎng)絡(luò)使用習(xí)慣的特征。具體特征及描述見(jiàn)表1。
表1 網(wǎng)絡(luò)流量特征
對(duì)表1中的網(wǎng)絡(luò)流特征,注意以下問(wèn)題:(1)每個(gè)網(wǎng)絡(luò)流特征都是針對(duì)一條網(wǎng)絡(luò)流而言。以maxWindow為例,該特征指某條特定的網(wǎng)絡(luò)流中出現(xiàn)的最大TCP窗口。(2)除網(wǎng)絡(luò)流持續(xù)時(shí)間外,所有統(tǒng)計(jì)數(shù)據(jù)含有從用戶(hù)端到服務(wù)器端的數(shù)據(jù)包統(tǒng)計(jì)數(shù)據(jù)和從服務(wù)器端到用戶(hù)端的數(shù)據(jù)包統(tǒng)計(jì)數(shù)據(jù)2個(gè)值,默認(rèn)序號(hào)為奇數(shù)的特征體現(xiàn)客戶(hù)端到服務(wù)器端的數(shù)據(jù)、序號(hào)為偶數(shù)的特征體現(xiàn)相反方向的數(shù)據(jù)。以noPackets為例,特征1指該網(wǎng)絡(luò)流中從客戶(hù)端到服務(wù)器端的數(shù)據(jù)包的總數(shù),特征2指相反方向的數(shù)據(jù)包總數(shù)。
3.1.2 特征采集與預(yù)處理
網(wǎng)絡(luò)流數(shù)據(jù)采集方案分為本地采集與集中采集2種。本地采集指在用戶(hù)操作系統(tǒng)中部署一個(gè)簡(jiǎn)單的抓包工具,在現(xiàn)有工具中,tcpdump,tshark等都可以完成相應(yīng)工作,該方案適用于個(gè)人的或小型局域網(wǎng)的偽裝入侵檢測(cè)系統(tǒng);集中采集指在路由器或者其他網(wǎng)絡(luò)設(shè)備上部署抓包探針,對(duì)大量用戶(hù)的網(wǎng)絡(luò)流進(jìn)行集中采集,該方案適用于大型局域網(wǎng)(例如企業(yè)網(wǎng)絡(luò))以及域環(huán)境中的偽裝入侵檢測(cè)系統(tǒng)。用戶(hù)可結(jié)合自身的實(shí)際需求選擇適合的特征采集方案。
使用TSTAT工具[12]對(duì)采集的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理,該工具可以高效地提煉出上百種網(wǎng)絡(luò)流統(tǒng)計(jì)數(shù)據(jù),利用腳本語(yǔ)言在這些數(shù)據(jù)中提取表1中列舉的網(wǎng)絡(luò)流特征,并將這些特征按照機(jī)器學(xué)習(xí)工具LIBSVM[13]所要求的格式排列。
本文提出的檢測(cè)算法AdaBoost-SVM參考文獻(xiàn)[14]所述方法,先使用SVM對(duì)一組數(shù)據(jù)進(jìn)行訓(xùn)練得到相應(yīng)弱分類(lèi)器,再用AdaBoost算法對(duì)每個(gè)弱分類(lèi)器進(jìn)行加權(quán)投票。具體的AdaBoost-SVM算法的設(shè)計(jì)流程如下:
(1)在 Dt(i)下訓(xùn)練,使用SVM訓(xùn)練得到弱分類(lèi)器:ht: X →{+1,-1};
(2)計(jì)算弱分類(lèi)器ht的錯(cuò)誤率:
(3)計(jì)算分類(lèi)器ht的權(quán)重:
(4)更新樣本點(diǎn)權(quán)重(Zt為歸一化因子):
由于AdaBoost-SVM仍是一個(gè)二進(jìn)制分類(lèi)器,即僅返回{+1,–1},對(duì)分類(lèi)函數(shù)H(X)再進(jìn)行Sign運(yùn)算,當(dāng)H(X)的值大于等于零時(shí)返回+1,其他情況返回–1。
為測(cè)試本文提出的偽裝入侵檢測(cè)方法的性能,對(duì)該方法進(jìn)行仿真實(shí)驗(yàn)。實(shí)驗(yàn)數(shù)據(jù)采用文獻(xiàn)[15]中的網(wǎng)絡(luò)抓包數(shù)據(jù)集6(Trace 6)。該數(shù)據(jù)集記錄2007年5月?2007年6月之間,某教育機(jī)構(gòu)中的132名用戶(hù)與以太網(wǎng)連接所產(chǎn)生的數(shù)據(jù)包。關(guān)于這個(gè)數(shù)據(jù)集還有以下說(shuō)明:(1)所有用戶(hù)都使用固定IP地址,每個(gè)IP地址與一名特定用戶(hù)一一對(duì)應(yīng)。(2)出于隱私保護(hù)的目的,Barbosa等人對(duì)該抓包數(shù)據(jù)集經(jīng)過(guò)了匿名化處理,即該教育機(jī)構(gòu)網(wǎng)絡(luò)環(huán)境中的所有IP地址都被隨機(jī)映射到192.168.0.0/16(子網(wǎng)A)中的某個(gè)地址;此外,該抓包數(shù)據(jù)集僅含數(shù)據(jù)包報(bào)頭(header),不含負(fù)載(payload)。在實(shí)驗(yàn)中,首先利用腳本語(yǔ)言將屬于子網(wǎng)A中任一IP地址的數(shù)據(jù)包分離出來(lái)(內(nèi)網(wǎng)),得到132個(gè)不同的PCAP文件,使用3.1.2節(jié)中所述的預(yù)處理方法對(duì)PCAP文件進(jìn)行預(yù)處理,得到屬于不同用戶(hù)的網(wǎng)絡(luò)流特征記錄。將IP地址為192.168.0.1的用戶(hù)命名為用戶(hù)1,并將其指定為目標(biāo)用戶(hù);將隨機(jī)選擇的另外9個(gè)IP地址命名為用戶(hù)2~用戶(hù)10,并將其指定為偽裝入侵者。為了研究測(cè)試集大小對(duì)檢測(cè)性能的影響,分別構(gòu)建3組訓(xùn)練集TS1,TS2,TS3與1組測(cè)試集PS1,如表2所示。
表2 訓(xùn)練集與測(cè)試集
在進(jìn)行機(jī)器學(xué)習(xí)實(shí)驗(yàn)之前,為了證明網(wǎng)絡(luò)流統(tǒng)計(jì)特征可以有效區(qū)分目標(biāo)用戶(hù)以及偽裝入侵用戶(hù),先對(duì)數(shù)據(jù)集中用戶(hù)1與用戶(hù)2的特征記錄進(jìn)行概率分析。以“往返時(shí)延均值”特征為例,圖1給出了屬于用戶(hù)1與用戶(hù)2的累積分布函數(shù)(Cumulative Distribution Function,CDF);其中,對(duì)于用戶(hù)1,圖1還分別給出其在2天中的CDF。根據(jù)圖1所示結(jié)果,用戶(hù)1與用戶(hù)2的CDF相差甚遠(yuǎn),而用戶(hù)1與自身在不同日期的CDF卻十分接近,這表明“往返時(shí)延均值”特征可以較好地區(qū)分目標(biāo)用戶(hù)以及偽裝入侵用戶(hù)。
圖1 往返時(shí)延均值的累積分布函數(shù)
本文采用檢測(cè)率(DetectionRate)、誤報(bào)率(FalsePositive)和準(zhǔn)確率(Accuracy)作為檢測(cè)性能的主要考核指標(biāo),其定義如式(1)、式(2)和式(3)所示:
假設(shè)TP,TN,FP和FN分別表示真陽(yáng)性、真陰性、假陽(yáng)性及假陰性(陽(yáng)性代表入侵者、陰性代表合法用戶(hù))。根據(jù)以上定義可得:TP+FN即異常樣本總數(shù),TN+FP即正常樣本總數(shù),TP+FN+TN+FP即所有樣本總數(shù)。本文將分別討論不同測(cè)試集下對(duì)檢測(cè)結(jié)果的影響、SVM算法與AdaBoost-SVM算法的性能比較,最后將最終檢測(cè)結(jié)果與文獻(xiàn)所述的檢測(cè)結(jié)果進(jìn)行比較。
(1)使用SVM和AdaBoost-SVM 2種算法分別訓(xùn)練3個(gè)測(cè)試集TS1,TS2和TS3,并用訓(xùn)練所得的預(yù)測(cè)模型對(duì)同一測(cè)試集PS1進(jìn)行預(yù)測(cè);所得結(jié)果如表3所示。根據(jù)表3的實(shí)驗(yàn)結(jié)果,增加測(cè)試集的大小可以顯著機(jī)器學(xué)習(xí)算法的性能;當(dāng)然,數(shù)據(jù)集的增大也會(huì)導(dǎo)致學(xué)習(xí)時(shí)間的變長(zhǎng),以訓(xùn)練集TS1和TS3為例,訓(xùn)練前者只需20 s左右,而訓(xùn)練后者需要100 s。鑒于分鐘級(jí)的訓(xùn)練時(shí)間在可接受的范圍之內(nèi),因此在本文涉及的實(shí)驗(yàn)中,仍以TS3作為測(cè)試集。
表3 測(cè)試集在不同算法下的檢測(cè)性能對(duì)比 %
(2)將比較SVM與AdaBoost-SVM算法的性能。檢測(cè)系統(tǒng)的性能通??捎肦OC(Receiver Operating Characteristic)曲線(xiàn)表示,反映在不同誤報(bào)率下算法所能達(dá)到的檢測(cè)率。SVM算法與AdaBoost-SVM算法的ROC曲線(xiàn)如圖2所示,請(qǐng)注意兩者的ROC曲線(xiàn)都是基于訓(xùn)練集TS3和測(cè)試集PS1。從表3及圖2可以看出:AdaBoost-SVM算法無(wú)論從檢測(cè)率、誤報(bào)率還是準(zhǔn)確率都優(yōu)于SVM算法,并且也未給檢測(cè)時(shí)間造成明顯增長(zhǎng)。在整個(gè)機(jī)器學(xué)習(xí)過(guò)程中,AdaBoost-SVM算法的平均訓(xùn)練時(shí)長(zhǎng)為分鐘級(jí)(假設(shè)使用記錄數(shù)為4000的訓(xùn)練集),但對(duì)每條網(wǎng)絡(luò)流記錄的平均檢測(cè)時(shí)間都在毫秒級(jí)。這也是由SVM本身的特點(diǎn)決定的。此外,本文提出的檢測(cè)方法的性能(檢測(cè)率97.5%、誤報(bào)率1.1%、準(zhǔn)確率94.0%)優(yōu)于文獻(xiàn)[6](檢測(cè)率60%、誤報(bào)率5%)、文獻(xiàn)[5](檢測(cè)率90%、誤報(bào)率5%)以及文獻(xiàn)[11](檢測(cè)率92%、誤報(bào)率7%)。
圖2 算法ROC曲線(xiàn)
針對(duì)目前偽裝入侵檢測(cè)方法所采用的用戶(hù)特征存在觸犯隱私的問(wèn)題,本文提出使用網(wǎng)絡(luò)流統(tǒng)計(jì)數(shù)據(jù)作為用戶(hù)特征,并結(jié)合AdaBoost與支持向量機(jī)對(duì)用戶(hù)特征進(jìn)行訓(xùn)練與預(yù)測(cè)。本文方法在一個(gè)真實(shí)的網(wǎng)絡(luò)抓包數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),得到了97.5%的系統(tǒng)檢測(cè)率與1.1%的誤報(bào)率,結(jié)果表明該方法較之前的方法具有更好的檢測(cè)性能。同時(shí),該檢測(cè)方法無(wú)需獲取用戶(hù)的敏感信息,在最大程度上保護(hù)了用戶(hù)的隱私,且檢測(cè)速度快,適用于企業(yè)級(jí)網(wǎng)絡(luò)環(huán)境中的實(shí)時(shí)偽裝入侵檢測(cè)。在今后工作中,將結(jié)合用戶(hù)本地行為(如鼠標(biāo)移動(dòng)、運(yùn)行進(jìn)程等)與網(wǎng)絡(luò)行為,對(duì)用戶(hù)行為進(jìn)行混合建模,以期得到一個(gè)更全面、準(zhǔn)確、穩(wěn)定的偽裝入侵檢測(cè)系統(tǒng)。
[1]田新廣,段洣毅.基于shell命令和多重行為模式挖掘的用戶(hù)偽裝攻擊檢測(cè)[J].計(jì)算機(jī)學(xué)報(bào),2010,33(4):697-705.
[2]Kim H S,Cha S D.Empirical Evaluation of SVM-based Masquerade Detection Using UNIX Commands[J].Computer and Security,2005,24(2):160-168.
[3]Schonlau M,Mouchel W.Computer Intrusion:Detecting Masquerades[J].Statistical Science,2001,16(1):58-74.
[4]Li Ling,Sui Song,Manikopoulos C N.Windows NT User Profiling for Masquerader Detection[C]//Proc.of International Conference on Networking Sense and Control.[S.l.]:IEEE Computer Society,2006:386-391.
[5]Garg A,Rahalkar R,Upadhyaya S,et al.Profiling Users in GUI Based Systems for Masquerade Detection[C]//Proc.of Information Assurance Workshop.New York,USA:IEEE Computer Society,2006:48-54.
[6]Strasburg C,Krishnan S,Dorman K,et al.Masquerade Detection in Network Environments[C]//Proc.of the 10th IEEE/IPSJ International Symposium on Applications and the Internet.Seoul,Korea:IEEE Computer Society,2010:38-44.
[7]Maxion R A,Townsend T N.Masquerade Detection Augmented with Error Analysis[J].IEEE Transactions on Reliability,2004,53(1):124-147.
[8]Lane T,Carla E B.An Empirical Study of Two Approaches to Sequence Learning for Anomaly Detection[J].Machine Learning,2003,51(1):73-107.
[9]梁春林,彭凌西.基于免疫遺傳的偽裝入侵檢測(cè)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(23):4968-4970,4975.
[10]肖 喜,田新廣,翟起濱.基于shell命令和Markov鏈模型的用戶(hù)偽裝攻擊檢測(cè)[J].通信學(xué)報(bào),2011,32(3):98-105.
[11]曾劍平,郭東輝.基于區(qū)間值2型模糊集的偽裝入侵檢測(cè)算法[J].電子學(xué)報(bào),2008,36(4):777-780.
[12]Munafo M,Finamore A.TSTAT[EB/OL].(2012-04-02).http://tstat.tlc.polito.it/index.shtml.
[13]Lin Chih-Jen.LIBSVM[EB/OL].(2002-06-23).http://www.csie.ntu.edu.tw/~cjlin/.
[14]張曉龍,任 芳.支持向量機(jī)與AdaBoost的結(jié)合算法研究[J].計(jì)算機(jī)應(yīng)用研究,2009,26(1):77-78,100.
[15]Sadre R,Aiko P.SimpleWeb/University of Twenty Traffic Traces Data Repository[EB/OL].(2010-04-29).http://traces.simpleweb.org/.