胡敬文,王柏清,楊文茵,黃 營(yíng)
(1.佛山開(kāi)放大學(xué)社區(qū)教育處,廣東佛山528000;2.佛山開(kāi)放大學(xué)信息技術(shù)處,廣東佛山528000;3.佛山科學(xué)技術(shù)學(xué)院電子信息工程學(xué)院,廣東佛山528000)
目前反病毒軟件大多數(shù)采用特征碼掃描技術(shù)與人工分析方法相結(jié)合的方式,在查找病毒時(shí)一般都采用特征碼掃描技術(shù),而在殺病毒時(shí)多采用人工分析并編制解毒代碼的方式,形成目前市面上的反病毒軟件。病毒特征碼掃描技術(shù)是一種對(duì)已知病毒進(jìn)行分析、找出病毒特征碼的反病毒技術(shù)[1]。這種特征碼反病毒技術(shù)的主要優(yōu)點(diǎn)是誤報(bào)率低,檢測(cè)較準(zhǔn)確,但缺點(diǎn)是漏報(bào)率相對(duì)較高。如果有些病毒通過(guò)變形、加殼、加花、多態(tài)等技術(shù)可繞過(guò)特征碼的掃描,而無(wú)法檢測(cè)出這種變種病毒,這種反病毒技術(shù)對(duì)未知病毒或變種病毒無(wú)能為力,屬于被動(dòng)式病毒檢測(cè)技術(shù)[2]。
因此,本文設(shè)計(jì)了一種以行為為核心的等級(jí)評(píng)分策略,將用戶行為等級(jí)的權(quán)限作為主要判斷依據(jù),對(duì)進(jìn)程、線程、窗口、文件和注冊(cè)表等定義出敏感行為,并對(duì)這些行為按敏感程度分級(jí)進(jìn)行權(quán)限控制,每個(gè)敏感行為能動(dòng)態(tài)修改可信任的權(quán)限等級(jí),是一套以行為為核心的自動(dòng)監(jiān)控、自動(dòng)分析、自動(dòng)診斷的主動(dòng)防御型系統(tǒng)。
特征碼掃描主要是提取病毒文件的特征,其技術(shù)核心思想就是從新發(fā)現(xiàn)病毒樣本中,根據(jù)病毒特征,人工提取出該病毒的一次或多處二進(jìn)制碼,該二進(jìn)制碼就是該類病毒“身份”標(biāo)識(shí),即特征碼。然后更新到云庫(kù)中,便于用戶升級(jí)。查殺的對(duì)象就是對(duì)比特征碼,判斷是否為病毒。特征碼掃描技術(shù)主要優(yōu)點(diǎn)是誤報(bào)率低,檢測(cè)準(zhǔn)確[3]。市面上信息安全公司工作原理如圖1所示。
由圖1可以看出特征碼掃描技術(shù)存在以下缺陷。
(1)防御系統(tǒng)庫(kù)更新滯后,用戶不停地在病毒威脅的環(huán)境之中。
(2)對(duì)于通過(guò)變形、加殼、加花等多態(tài)技術(shù)變種的病毒,可繞過(guò)特征碼掃描。
(3)對(duì)于不斷變種的新病毒,特征碼庫(kù)越來(lái)越龐大,而對(duì)特征碼描述,不同的反病毒公司提取的病毒特征也不盡相同,使得特征碼的統(tǒng)一標(biāo)準(zhǔn)存在較大的困難。
圖1 特征碼掃描技術(shù)工作原理
基于行為分析方法主要是制定一套規(guī)則集來(lái)定義非法程序,與此同時(shí)制定另一套規(guī)則集定義合法程序[4]?;谛袨榉治龇椒ǖ闹饕枷胧牵喝绻?dāng)前運(yùn)行的程序不符合合法程序所制定規(guī)則輪廓或者符合非法程序的規(guī)則輪廓,便可判定此運(yùn)行的程序?yàn)榉欠ǔ绦颉?/p>
與傳統(tǒng)的基于特征碼的靜態(tài)掃描技術(shù)相比,行為分析方法不同點(diǎn)在于監(jiān)控并限制應(yīng)用程序運(yùn)行過(guò)程中的動(dòng)態(tài)行為[5]。
行為分析方法在反木馬中的應(yīng)用原理主要是:在應(yīng)用程序運(yùn)行過(guò)程中,檢測(cè)其是否具有木馬的行為特征,如果有木馬的行為特征,則可初步判定此應(yīng)用程序可能是木馬。
針對(duì)病毒的特征分析,得到木馬會(huì)觸發(fā)的系統(tǒng)敏感行為有如下5種方法[6]。
(1)在注冊(cè)表設(shè)置自啟動(dòng)項(xiàng)。
(2)拷貝或創(chuàng)建文件到系統(tǒng)目錄。
(3)遠(yuǎn)程線程注射。
(4)在注冊(cè)表里修改哪些關(guān)聯(lián)。
(5)殺死其他進(jìn)程。
本系統(tǒng)將行為歸類為進(jìn)程敏感行為、注冊(cè)表敏感行為及文件敏感行為3類。
(1)進(jìn)程敏感行為。進(jìn)程敏感行為包括遠(yuǎn)程線程注與殺死其他進(jìn)程。
(2)注冊(cè)表敏感行為。注冊(cè)表敏感行為通過(guò)兩種方式實(shí)現(xiàn),即:1)在注冊(cè)表設(shè)置自啟動(dòng)項(xiàng);2)在注冊(cè)表里修改部分關(guān)聯(lián)。
(3)文件敏感行為??截惢騽?chuàng)建文件到系統(tǒng)目錄。
反木馬技術(shù)若采用行為分析方法,需掌握木馬的行為特征。關(guān)于當(dāng)前著名或流行的已知木馬的研究較多,許多反木馬的工作者均提出了較多已知木馬的行為特征。
目前已對(duì)250個(gè)正常程序與250個(gè)流行木馬病毒觸發(fā)的敏感行為進(jìn)行統(tǒng)計(jì)分析[7]。正常程序與惡意程序敏感行為總次數(shù)對(duì)比如圖2所示。
從圖表數(shù)據(jù)可以看出,木馬病毒與正常程序?qū)τ诿舾行袨橛|發(fā)的次數(shù)具有明顯的區(qū)別,用行為特征來(lái)標(biāo)識(shí)病毒,具有可行性。
圖2 正常程序與惡意程序敏感行為總次數(shù)對(duì)比
對(duì)于病毒木馬,僅僅從單一的敏感行為作為判斷標(biāo)準(zhǔn),難以達(dá)到監(jiān)控目的,而且誤報(bào)率高。正常程序有與病毒相似的單一行為,特別對(duì)于潛伏性病毒,它的每個(gè)敏感行為的觸發(fā)具有一定的時(shí)間差,因此判斷更難[8]。
如何從正常程序中區(qū)別出病毒,進(jìn)行病毒多行為的分析,病毒區(qū)別于正常程序,通常在用戶不知情的情況下隱藏運(yùn)行進(jìn)程,從而達(dá)到特定目的。其特定目的包括:取得系統(tǒng)權(quán)限、反彈連接、開(kāi)啟后門服務(wù)、竊聽(tīng)數(shù)據(jù)、破壞系統(tǒng)、破壞文件等。所以通常一個(gè)木馬在完成一系列目的時(shí),會(huì)觸發(fā)多種敏感行為,這個(gè)有別于正常進(jìn)程。
大部分病毒會(huì)設(shè)置自啟動(dòng)項(xiàng),從而達(dá)到開(kāi)機(jī)就運(yùn)行的目的,例如斯巴達(dá)木馬。值得注意的是正常進(jìn)程注冊(cè)表編緝器也會(huì)設(shè)置自啟動(dòng)項(xiàng)。除此外,斯巴達(dá)木馬還要完成端口綁定,才能把用戶的帳號(hào)和密碼等私人信息傳送出去。
針對(duì)木馬的綜合行為,總結(jié)其行為規(guī)律,制訂木馬綜合行為判斷策略標(biāo)準(zhǔn)具有非常好的可行性。
基于行為策略的主動(dòng)防御系統(tǒng)主要包括5大模塊,包括驅(qū)動(dòng)層模塊、行為判斷模塊、進(jìn)程保護(hù)模塊、注冊(cè)表保護(hù)模塊、文件保護(hù)模塊。本系統(tǒng)的結(jié)構(gòu)模塊如圖3所示。
圖3 行為策略主動(dòng)防御系統(tǒng)結(jié)構(gòu)
SSDT是系統(tǒng)服務(wù)描述符表(System Service Descriptor Table),是將系統(tǒng)應(yīng)用層的指令傳輸給系統(tǒng)內(nèi)核的通道,如圖4所示。若要對(duì)常用的Windows函數(shù)及API函數(shù)進(jìn)行截獲(即采用HOOK技術(shù)),可通過(guò)修改SSDT表的函數(shù)地址完成,對(duì)敏感的系統(tǒng)動(dòng)進(jìn)行提取,作進(jìn)一步的過(guò)濾、監(jiān)控和禁止運(yùn)行,避免了惡意代碼的運(yùn)行,通過(guò)這種方式實(shí)現(xiàn)主動(dòng)防御功能。
圖4 SSDT HOOK前后Windows NT操作系統(tǒng)內(nèi)部結(jié)構(gòu)原理
行為判斷模塊包括評(píng)分機(jī)制和綜合行為判斷機(jī)制。本模塊根據(jù)預(yù)先制定的行為策略判斷當(dāng)前進(jìn)程是否為非法進(jìn)程,判斷的行為策略主要依據(jù)評(píng)分機(jī)制和綜合行為判斷機(jī)制。
(1)評(píng)分機(jī)制。根據(jù)每種敏感行為影響大小,設(shè)定一個(gè)惡意分?jǐn)?shù),然后監(jiān)控中心,累積進(jìn)程敏感分?jǐn)?shù),當(dāng)進(jìn)程的惡意分?jǐn)?shù)大于或等于100時(shí),啟動(dòng)報(bào)警。病毒木馬類型的描述,根據(jù)惡意分?jǐn)?shù)最高的行為作為基準(zhǔn)。
(2)綜合行為判斷機(jī)制。為每個(gè)具有敏感行為的進(jìn)程記錄由3大監(jiān)控模塊傳送來(lái)的信息,然后與訂制的綜合行為策略庫(kù)匹配,每次的行為觸發(fā)都會(huì)進(jìn)行一次遍歷匹配,當(dāng)匹配成功時(shí),就會(huì)報(bào)警。行為描述根據(jù)綜合行為信息判斷。
當(dāng)評(píng)分機(jī)制和綜合行為判斷機(jī)制同時(shí)報(bào)警時(shí),此時(shí)綜合行為判斷機(jī)制優(yōu)先觸發(fā)。兩種機(jī)制工作原理如圖5所示。
圖5 綜合行為判斷機(jī)制原理
在進(jìn)程保護(hù)模塊中監(jiān)控的敏感行為有3個(gè):遠(yuǎn)程線程注射、殺死其他進(jìn)程及綁定端口。監(jiān)控模塊根據(jù)進(jìn)程調(diào)用API判定其行為。
3.3.1 遠(yuǎn)程線程注射
遠(yuǎn)程線程注射指通過(guò)進(jìn)程創(chuàng)建一個(gè)運(yùn)行于其他進(jìn)程虛擬地址空間的新線程,這個(gè)新線程擁有訪問(wèn)被注射進(jìn)程所有對(duì)象的權(quán)限,這樣木馬可以達(dá)到進(jìn)程隱藏的目的。
判定API函數(shù)有:NtWriteVirtualMemory與NtCreatetRemoteThread。
3.3.2 殺死其他進(jìn)程
系統(tǒng)若中了木馬,其主要行為是“殺死其他進(jìn)程”,這種行為主要采用以下兩種方法。
(1)向指定進(jìn)程的窗口發(fā)送“關(guān)閉窗口”的消息。Wnidows操作系統(tǒng)是以消息驅(qū)動(dòng)的操作系統(tǒng),是一個(gè)利用Wnidows消息來(lái)傳達(dá)信息的操作系統(tǒng),其通訊方式是在應(yīng)用程序與應(yīng)用程序之間或應(yīng)用程序與操作系統(tǒng)之間進(jìn)行,在Windows消息中,有一種窗口消息是終止或退出當(dāng)前窗口的消息,即WM_CLOSE消息。
判定 API函數(shù)有:NtUserPostMessage、NtUserPostMessageCall以及 NtUserPostThreadMessage。
(2)調(diào)用 APITerminateProeess、NtTerminateJobObject、NtSuspendThread 函數(shù)。APITerminateProeess、NtTerminateJobObject、NtSuspendThread這3個(gè)函數(shù)是WindowsSDK提供的API函數(shù),它是通過(guò)進(jìn)程句柄作為輸入?yún)?shù),來(lái)終止指定進(jìn)程和該進(jìn)程的所有線程。
判斷 API函數(shù)有:APITerminateProeess、NtTerminateJobObject以及 NtSuspendThread。
3.3.3 綁定端口
進(jìn)程要與遠(yuǎn)程網(wǎng)絡(luò)通信時(shí)需要在計(jì)算機(jī)里打開(kāi)一個(gè)“窗口”來(lái)進(jìn)行與外界通信。這個(gè)窗口就是計(jì)算機(jī)的網(wǎng)絡(luò)端口,打開(kāi)窗口即綁定端口。通過(guò)檢測(cè)進(jìn)程是否有與外界通信的行為,就可以檢測(cè)其有無(wú)綁定端口。
判定過(guò)程:在驅(qū)動(dòng)層定時(shí)枚舉網(wǎng)絡(luò)連接端口信息,然后將信息向監(jiān)控應(yīng)用層傳送出去。
在注冊(cè)表保護(hù)模塊中監(jiān)控的敏感行為有2個(gè):設(shè)置自啟動(dòng)項(xiàng)與修改文件關(guān)聯(lián)。
進(jìn)程關(guān)于注冊(cè)表的操作調(diào)用API函數(shù)有:NtRestoreKey、NtCreateKey、NtDeleteKey、NtDeleteValueKey、NtSetValueKey、NtLoadKey、NtLoadKey2 以及 NtReplaceKey等,判定步驟分為:1)先匹配進(jìn)程調(diào)用的API函數(shù);2)再與匹配注冊(cè)表受監(jiān)控的鍵值匹配。
3.4.1 設(shè)置自啟動(dòng)項(xiàng)
Run是木馬較常用的自啟動(dòng)注冊(cè)表項(xiàng),位置在以下兩處。
(1)HKEY_CURRENT_USERSotfwareMicrosotfWindowsCurrentVersionRun。
(2)HKEY_LOCAL_MACHINESOFTWAREMieorsotfWindowsCurrentVersionRun。
如果木馬修改了這兩個(gè)注冊(cè)表項(xiàng),那么它們對(duì)應(yīng)的值項(xiàng)為木馬程序的路徑和文件名,在此處添加值項(xiàng)可使木馬程序隨著計(jì)算機(jī)的每次啟動(dòng)而自動(dòng)運(yùn)行[5]。
除了run系列,還有設(shè)置Winlogon系列、Services系列以及Session Manager系列也可以達(dá)到自啟動(dòng)目的。
3.4.2 修改文件關(guān)聯(lián)
通常病毒修改注冊(cè)表某些文件關(guān)聯(lián),來(lái)達(dá)到自己掩蔽運(yùn)行的目的,如修改關(guān)于屏幕保護(hù)HKCUControl Paneldesktop,可以設(shè)置指向木馬的路徑,下次系統(tǒng)觸發(fā)屏幕保護(hù)時(shí)被動(dòng)啟動(dòng)。
修改文件關(guān)聯(lián)鍵值還有:Command Processor,LSA系列、Internet Explorer系列、Explorer系列、RPC系列以及WOW系列。
在文件保護(hù)模塊中監(jiān)控的敏感的行為有:拷貝或創(chuàng)建文件到系統(tǒng)目錄。進(jìn)程關(guān)于文件操作調(diào)用的API有:NtWriteFile、NtSetInformationFile 以及 NtCreateFile、NtDuplicateObject。監(jiān)控目錄是本地系統(tǒng)目錄,如c:windows。同時(shí),添加本系統(tǒng)目錄到監(jiān)控中,達(dá)到系統(tǒng)保護(hù)作用。由于host文件是一個(gè)比較敏感文件,所以也添加到監(jiān)控中。
病毒、木馬等惡意程序破壞信息系統(tǒng)的安全性、保密性和可用性,為預(yù)防這種惡意程序的破壞,須針對(duì)操作系統(tǒng)脆弱性的特點(diǎn),設(shè)計(jì)較完善的防御惡意程序?qū)Σ僮飨到y(tǒng)進(jìn)行保護(hù)。
本文從操作系統(tǒng)的底層出發(fā),提出一個(gè)主動(dòng)防御惡意程序的解決方案,在終端系統(tǒng)中構(gòu)建一個(gè)基于行為策略的主動(dòng)防御體系,根據(jù)對(duì)進(jìn)程評(píng)分和綜合行為機(jī)制判斷當(dāng)前進(jìn)程是否為惡意代碼的特征來(lái)進(jìn)行報(bào)警,以進(jìn)程行為作為控制的核心,即對(duì)進(jìn)程、文件和注冊(cè)表等操作行為進(jìn)行監(jiān)控,對(duì)進(jìn)程的行為和系統(tǒng)的關(guān)鍵資源進(jìn)行監(jiān)控、自動(dòng)分析、自動(dòng)診斷,有效地抵制了未知病毒和未知攻擊的侵入,保障終端系統(tǒng)的安全性。