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