顏會(huì)娟 秦杰
河南工業(yè)大學(xué)信息科學(xué)與工程學(xué)院 河南 450001
本文提出基于行為分析的木馬檢測(cè)技術(shù),該系統(tǒng)的模型如圖1所示。該模型設(shè)計(jì)符合標(biāo)準(zhǔn)化的入侵檢測(cè)體系結(jié)構(gòu)規(guī)范(CIDF)結(jié)構(gòu)。該系統(tǒng)包含行為對(duì)象監(jiān)控模塊,行為特征數(shù)據(jù)庫(kù)模塊,行為啟發(fā)式分析模塊,系統(tǒng)響應(yīng)模塊。其中行為對(duì)象監(jiān)控模塊是對(duì)系統(tǒng)中程序有可能操作的對(duì)象進(jìn)行實(shí)時(shí)監(jiān)控、記錄并將結(jié)果交給行為啟發(fā)式分析模塊進(jìn)行處理;行為特征數(shù)據(jù)庫(kù)是用來(lái)記錄木馬行為特征的,并且對(duì)木馬的每種行為根據(jù)一定的規(guī)則設(shè)定一個(gè)權(quán)值,以便在行為分析階段判斷正在運(yùn)行的程序是否是木馬程序;行為啟發(fā)式分析模塊主要是結(jié)合行為特征數(shù)據(jù)庫(kù)對(duì)行為監(jiān)控模塊傳來(lái)的信息進(jìn)行分析,進(jìn)一步做出判斷;系統(tǒng)響應(yīng)模塊是對(duì)行為分析模塊所做的判斷給予相應(yīng)的處理。

圖1 系統(tǒng)模型
對(duì)木馬的行為進(jìn)行分析之前首先把行為有可能操作的對(duì)象進(jìn)行分類(lèi)總結(jié),即木馬程序可能對(duì)哪些對(duì)象做操作。本文中列出了幾種比較常見(jiàn)的行為對(duì)象,如注冊(cè)表、文件、端口、進(jìn)程、系統(tǒng)服務(wù)等。對(duì)木馬這些行為對(duì)象有可能做的操作進(jìn)行抽象描述(如表1所示)。

表1 木馬行為特征描述
在本策略中對(duì)這些行為對(duì)象的監(jiān)控使用Windows API HOOK技術(shù)。下面對(duì)Windows API HOOK在本策略中的應(yīng)用做簡(jiǎn)單的介紹。
API HOOK是指應(yīng)用程序在調(diào)用真正的系統(tǒng)API前先被截獲,進(jìn)行一些處理再調(diào)用真正的API函數(shù)。從本質(zhì)上講,API HOOK技術(shù)改變了一個(gè)正常程序的執(zhí)行路徑,它可以攔截或者監(jiān)聽(tīng)可執(zhí)行代碼在執(zhí)行過(guò)程中的一些信息,可以更改操作系統(tǒng)的行為,可以幫助設(shè)計(jì)者了解系統(tǒng)內(nèi)部結(jié)構(gòu)和運(yùn)作機(jī)制等,被廣泛應(yīng)用于時(shí)間追蹤和修改系統(tǒng)行為等操作中。
由于木馬是由一段段的程序代碼組成的,要在計(jì)算機(jī)里運(yùn)行,都要調(diào)用系統(tǒng)中不同的API函數(shù)。所以可以利用Windows API HOOK技術(shù)監(jiān)控、攔截這些木馬程序的API。下面以監(jiān)控注冊(cè)表和文件操作為例來(lái)分析、攔截木馬程序。
監(jiān)控注冊(cè)表:要實(shí)現(xiàn)注冊(cè)表監(jiān)控,首先要在系統(tǒng)服務(wù)調(diào)度表中找到要替換的函數(shù)指針,將這個(gè)指針指向我們自己定義的函數(shù),當(dāng)調(diào)用相應(yīng)的函數(shù)指針時(shí),首先就會(huì)執(zhí)行我們自定義的函數(shù),這樣就實(shí)現(xiàn)了系統(tǒng)服務(wù)的掛接。以監(jiān)控木馬寫(xiě)注冊(cè)表入自啟動(dòng)項(xiàng)為例。要對(duì)注冊(cè)表進(jìn)行修改,使用的是RegCreateKey函數(shù)。它的函數(shù)原型是:
Private Declare Function RegCreateKey Lib”advapi32.dll”Alias”RegCreateKey”(Byralhkey As long,ByvalpSubkey As String,phkResult As long)As long
該函數(shù)有三個(gè)參數(shù):第一個(gè)參數(shù)是該鍵的根鍵的預(yù)定義值;第二個(gè)參數(shù)是主鍵名,包括其路徑;第三個(gè)參數(shù)是長(zhǎng)整型的指針,如果函數(shù)返回0(成功),它將保存該鍵的句柄。當(dāng)RegCreateKey調(diào)用Ntdll.dll這個(gè)動(dòng)態(tài)鏈接庫(kù)中NtCreateKey函數(shù),而此時(shí)NtCreateKey在設(shè)置好參數(shù)以后,就會(huì)通過(guò)軟中斷進(jìn)入到內(nèi)核態(tài),請(qǐng)求相應(yīng)的服務(wù)。這時(shí)因?yàn)樵贜tdll.dll中到處以Zw開(kāi)頭的系統(tǒng)服務(wù)占位函數(shù)在內(nèi)核中都有一個(gè)相應(yīng)的以Zw開(kāi)頭函數(shù)與之對(duì)應(yīng),所以系統(tǒng)就會(huì)根據(jù)中斷服務(wù)號(hào)在系統(tǒng)服務(wù)調(diào)度表中查找到ZwCreateKey函數(shù),然后執(zhí)行調(diào)用這個(gè)函數(shù)。那么,我們?cè)诶勉^子函數(shù)時(shí),將系統(tǒng)服務(wù)調(diào)度表中的函數(shù)指針指向我們自定義的函數(shù)MyZwCreateKey,此時(shí),執(zhí)行系統(tǒng)服務(wù)調(diào)用時(shí)就會(huì)先執(zhí)行函數(shù)MyZwCreateKey,在這個(gè)函數(shù)中進(jìn)行我們所需要的預(yù)處理,然后再根據(jù)具體情況,執(zhí)行原來(lái)的ZwCreateKey函數(shù),或者跳過(guò)這個(gè)函數(shù),直接執(zhí)行后面的代碼。
監(jiān)控文件操作:這里以監(jiān)視系統(tǒng)中對(duì)文件的拷貝操作。使用的是CopyFile函數(shù),它的函數(shù)原型是:
Declare Function CopyFile Lib“kernel32”Alias“CopyFileA”(ByVal lpExistingFileName As String,ByVal lpNewFileName As String,ByVal bFailIfExists As Long)As Long
其中該函數(shù)有三個(gè)參數(shù):第一參數(shù)lpExistingFileName代表源文件名;第二個(gè)參數(shù)lpNewFileName,代表目標(biāo)文件名;第三個(gè)參數(shù)bFailIfExists是長(zhǎng)整型的指針,如果設(shè)為T(mén)RUE(非零),那么一旦目標(biāo)文件已經(jīng)存在,則函數(shù)調(diào)用會(huì)失敗,否則目標(biāo)文件被改寫(xiě)。同樣,要監(jiān)控這種類(lèi)型的文件操作,系統(tǒng)首先定義一個(gè)關(guān)于文件復(fù)制的掛鉤函數(shù)myCopyFile,我們?cè)诶勉^子函數(shù)時(shí),將系統(tǒng)服務(wù)調(diào)度表中的函數(shù)指針指向我們自定義的函數(shù)myCopyFile,此時(shí),執(zhí)行系統(tǒng)服務(wù)調(diào)用時(shí)就會(huì)先執(zhí)行函數(shù)myCopyFile,在這個(gè)函數(shù)中進(jìn)行我們所需要的預(yù)處理,然后再根據(jù)具體情況,執(zhí)行原來(lái)的CopyFile函數(shù),或者跳過(guò)這個(gè)函數(shù),直接執(zhí)行后面的代碼。
同樣,對(duì)其他的操作類(lèi)似上述的情況,我們可以分別進(jìn)行設(shè)計(jì)。
行為特征數(shù)據(jù)庫(kù)主要集合了木馬各種行為的特征抽象,要完整的描述各種木馬行為,并且方便程序設(shè)計(jì)者調(diào)用分析,在本策略中所建立的行為特征庫(kù)由一組特征向量,其中An代表一個(gè)表示一個(gè)行為的特征向量。對(duì)于每個(gè)行為的特征向量可以描述為如下幾個(gè)部分:
(1)行為特征抽象描述Pi,以修改注冊(cè)表自啟動(dòng)項(xiàng)為例,我們可以描述為“Pi=修改注冊(cè)表自啟動(dòng)項(xiàng)”。
(2)調(diào)用函數(shù)Ci:由于木馬上述行為在木馬程序上一般表現(xiàn)為不同的API函數(shù)的調(diào)用,所以在對(duì)木馬行為進(jìn)行抽象描述時(shí)可描述為:Ci=行為對(duì)應(yīng)的API名稱(chēng)(即函數(shù)名稱(chēng))。同樣以修改注冊(cè)表自啟動(dòng)項(xiàng)為例,因?yàn)槟抉R在程序在進(jìn)行修改注冊(cè)表時(shí)要調(diào)用RegCreateKey函數(shù),所以,可以把該行為調(diào)用API描述為相應(yīng)的函數(shù)“RegCreateKey”。
(3)在本策略中用到了啟發(fā)式分析器分析程序行為,主要是對(duì)木馬的各種行為進(jìn)行分析、提煉,在這里對(duì)每種木馬行為進(jìn)行反復(fù)比較分析,根據(jù)一定的規(guī)則給它們分別設(shè)定一個(gè)權(quán)值B,它們的權(quán)值體現(xiàn)了相應(yīng)木馬行為在木馬行為特征中的重要程度。
在這里,以修改注冊(cè)表自啟動(dòng)項(xiàng)為例,它在行為特征庫(kù)中的描述(Pi,Ci,B)可以描述為:(修改注冊(cè)表自啟動(dòng)項(xiàng),RegCreateKey,B),對(duì)其它的行為也可做類(lèi)似的總結(jié)。
該模塊對(duì)行為對(duì)象監(jiān)控模塊傳來(lái)的數(shù)據(jù)進(jìn)行分析,具體實(shí)現(xiàn)如下:首先對(duì)從行為對(duì)象監(jiān)控模塊傳來(lái)的數(shù)據(jù)結(jié)合行為特征數(shù)據(jù)庫(kù)中的對(duì)應(yīng)行為的權(quán)值,計(jì)算各可疑行為的加權(quán)值之和,然后用這個(gè)加權(quán)值之和跟事先預(yù)定的閥值進(jìn)行比較,如果權(quán)值之和大于閥值,就可確定此行為是木馬行為。
本策略根據(jù)各個(gè)可疑指標(biāo)的可疑程度為每一個(gè)行為制定權(quán)值,并且把某個(gè)程序在此次運(yùn)行中表現(xiàn)的不同行為的權(quán)值進(jìn)行相加,將得到的值與事先規(guī)定的閥值進(jìn)行比較,如果權(quán)值之和比臨界值大,就確定此程序?yàn)槟抉R程序。具體的計(jì)算公式如下:

其中ai為自重權(quán)數(shù),表示每個(gè)行為特征的權(quán)值,并且滿(mǎn)足規(guī)定的取值體現(xiàn)了相應(yīng)行為特征在木馬各行為特征中的重要程度。n代表某個(gè)程序在此次運(yùn)行中表現(xiàn)的可疑行為的個(gè)數(shù);M為此次運(yùn)行的程序?yàn)槟抉R程序的可疑程度值。
加權(quán)系數(shù)的確定原則是使預(yù)測(cè)誤差的均方值最小,在這里利用過(guò)去k個(gè)取樣值來(lái)進(jìn)行預(yù)測(cè),也可以稱(chēng)為k階線(xiàn)性預(yù)測(cè)。
式子中,N為正整數(shù);?ai表示加權(quán)系數(shù),稱(chēng)為預(yù)測(cè)系數(shù)。
對(duì)啟發(fā)式分析器分析的行為,系統(tǒng)就可以做出以下響應(yīng):如果確定此行為是木馬行為時(shí)就直接調(diào)用查殺模塊進(jìn)行刪除;如果不能確定是木馬行為時(shí),就彈出警告窗口,詢(xún)問(wèn)用戶(hù)是否允許、禁止或刪除此程序;如果判斷是正常行為,系統(tǒng)就允許此程序繼續(xù)運(yùn)行。
為了驗(yàn)證本系統(tǒng)的性能,本實(shí)驗(yàn)通過(guò)在Windows XP下的C++語(yǔ)言實(shí)現(xiàn)編程。實(shí)驗(yàn)數(shù)據(jù)來(lái)源于美國(guó)國(guó)防高級(jí)計(jì)劃研究署的入侵檢測(cè)測(cè)試數(shù)據(jù)集DARPA。為了方便實(shí)驗(yàn),本系統(tǒng)從中隨機(jī)選取了4組數(shù)據(jù)進(jìn)行實(shí)驗(yàn),其中第1組包括10000條數(shù)據(jù),其中包含100條異常數(shù)據(jù);第2組包括20000條數(shù)據(jù),其中包含200條異常數(shù)據(jù);第3組包括30000條數(shù)據(jù),其中包含300條異常數(shù)據(jù),第4組包括40000條數(shù)據(jù),其中包含400條異常數(shù)據(jù)。經(jīng)過(guò)實(shí)驗(yàn)結(jié)果顯示,第一組報(bào)警數(shù)為78,第二組報(bào)警數(shù)為169,第三組報(bào)警數(shù)為271,第四組報(bào)警數(shù)為374。通過(guò)實(shí)驗(yàn)分析可以得出本系統(tǒng)檢測(cè)木馬的檢測(cè)率、誤報(bào)率和準(zhǔn)確率,如圖2所示。

圖2 實(shí)驗(yàn)結(jié)果
從圖2中可以看出,本系統(tǒng)在檢測(cè)木馬病毒時(shí)具有很高的檢測(cè)率,同時(shí)誤報(bào)率也較低。
本文從行為分析的角度提出了基于行為分析的木馬檢測(cè)技術(shù),對(duì)木馬的行為特征進(jìn)行了透徹分析,并結(jié)合啟發(fā)式分析對(duì)被測(cè)試程序進(jìn)行分析判斷,使其能夠有效識(shí)別已知木馬和未知木馬的入侵。
[1]金山:2008年中國(guó)互聯(lián)網(wǎng)安全報(bào)告.
[2]LYMAN J In search of the world’s costliest computer virus 2008.
[3]HUGHES L.DELONE G Viruses,worms,and Trbjan horses:Serious crimes,nuisance.or both 2007.
[4]尹清波,張汝波,李雪耀等.基于線(xiàn)性預(yù)測(cè)與馬爾可夫模型的入侵檢測(cè)技術(shù)研究[J].計(jì)算機(jī)學(xué)報(bào).2005.
[5]HUGHES L.DELONE G Viruses,worms,and Trbjan horses:Serious crimes,nuisance.or both 2007.
[6]陳友,沈華偉等.一種高效的面向輕量級(jí)入侵檢測(cè)系統(tǒng)的特征選擇算法[J].計(jì)算機(jī)學(xué)報(bào).2007.
[7]顧雨捷.用于行為分析的反木馬的模糊分類(lèi)算法研究[D].學(xué)位論文.2008.