摘 要 病毒的多樣性,病毒入侵手段的多樣性使得病毒防御已經(jīng)不是單一技術(shù)手段可以實(shí)現(xiàn)的目標(biāo),本文討論了基于主機(jī)和網(wǎng)絡(luò)的多種病毒防御機(jī)制。
關(guān)鍵詞 病毒 病毒防御
1 基于主機(jī)的病毒防御機(jī)制
(1)基于特征的掃描技術(shù)
基于特征掃描技術(shù)是目前最常用的病毒檢測技術(shù),首先需要建立病毒特征庫,通過分析已經(jīng)發(fā)現(xiàn)的病毒,提取出每一種病毒有別于正常代碼或文本的病毒特征,然后根據(jù)病毒特征庫在掃描的文件中進(jìn)行匹配操作,整個(gè)檢測過程如圖1所示。目前病毒主要分為嵌入在可執(zhí)行文件中的病毒和嵌入在文本或字處理文件中的腳本病毒,因此,首先需要對(duì)文件進(jìn)行分類,當(dāng)然,如果是壓縮文件,解壓后再進(jìn)行分類。解壓后的文件主要分為兩大類:二進(jìn)制代碼形式的可執(zhí)行文件,包括類似DLL的庫函數(shù),和用腳本語言編寫的文本文件,由于Office文件中可以嵌入腳本語言編寫的宏代碼,因此,將這樣的Office文件歸入文本文件類型。對(duì)可執(zhí)行文件,由二進(jìn)制檢測引擎根據(jù)二進(jìn)制特征庫進(jìn)行匹配操作,如果這些二進(jìn)制代碼文件經(jīng)過類似ASPACK、UPX工具軟件進(jìn)行加殼處理,在匹配操作前,必須進(jìn)行脫殼處理。對(duì)文本文件,由腳本檢測引擎根據(jù)腳本特征庫進(jìn)行匹配操作,由于存在多種腳本語言,如VBScript、JavaScript、PHP和Perl。在匹配操作前,必須先對(duì)文本文件進(jìn)行語法分析,然后根據(jù)分析結(jié)果再進(jìn)行匹配操作。同樣,必須從類似字處理文件這樣的Office文件中提取出宏代碼,然后對(duì)宏代碼進(jìn)行語法分析,再根據(jù)分析結(jié)果進(jìn)行匹配操作?;谔卣鞯膾呙杓夹g(shù)主要存在以下問題:
由于通過特征匹配來檢測病毒,因此無法檢測出變形、加密和未知病毒;
必須及時(shí)更新病毒特征庫,由于病毒總是在造成危害后才被發(fā)現(xiàn),因此,它是一種事后補(bǔ)救措施。
(2)基于線索的掃描技術(shù)
基于特征的掃描技術(shù)由于需要精確匹配病毒特征,因此,很難檢測出變形病毒。但病毒總有一些規(guī)律性特征,如有些變形病毒通過隨機(jī)產(chǎn)生密鑰和加密作為病毒的代碼來改變自己,這樣,如果檢測到某個(gè)可執(zhí)行文件的入口處存在實(shí)現(xiàn)解密過程的代碼,且解密密鑰包含在可執(zhí)行文件中,這樣的可執(zhí)行文件可能就是感染了變形病毒的文件。基于線索掃描技術(shù)通常不是精確匹配特定二進(jìn)制位流模式或文本模式,而是通過分析可執(zhí)行文件入口處代碼的功能來確定該文件是否感染病毒。
(3)基于完整性檢測的掃描技術(shù)
完整性檢測是一種用于確定任意長度信息在傳輸和存儲(chǔ)過程中是否改變的技術(shù),它的基本思想是在傳輸或存儲(chǔ)任意長度信息P時(shí),添加附加信息C,C是對(duì)P進(jìn)行報(bào)文摘要運(yùn)算后的結(jié)果,具有如下特性:
給定任意長度信息P,能夠很容易地計(jì)算出固定長度的C(C=MD(P),MD是報(bào)文摘要算法),且C的位數(shù)遠(yuǎn)小于P的位數(shù);
知道C,不能反推出P;
從計(jì)算可行性講,對(duì)于任何P,無法找出另一任意長度信息P',P≠P',但MD(P)=MD(P');
即使只改變P中一位二進(jìn)制位,也使得重新計(jì)算后的C變化很大。
這樣,可以對(duì)系統(tǒng)中的所有文件計(jì)算出對(duì)應(yīng)的C,將C存儲(chǔ)在某個(gè)列表文件中,掃描軟件定期地重新計(jì)算系統(tǒng)中文件對(duì)應(yīng)的C,并將計(jì)算結(jié)果和列表中存儲(chǔ)的結(jié)果進(jìn)行比較,如果相等,表明文件沒有改變,如果不相等,表明文件自計(jì)算出列表中存儲(chǔ)的C以后已經(jīng)發(fā)生改變。為了防止一些精致的病毒能夠在感染文件的同時(shí),修改文件的原始報(bào)文摘要,可以采用圖2所示的檢測過程,在計(jì)算出某個(gè)文件對(duì)應(yīng)的原始報(bào)文摘要后,用掃描軟件自帶的密鑰K對(duì)報(bào)文摘要進(jìn)行加密運(yùn)算,然后將密文存儲(chǔ)在原始檢測碼列表中,在定期檢測文件時(shí),對(duì)每一個(gè)文件同樣計(jì)算出加密后的報(bào)文摘要,并和存儲(chǔ)在原始檢測碼列表中的密文進(jìn)行比較。
基于完整性檢測的掃描技術(shù)只能檢測出文件是否發(fā)生改變,并不能確定文件是否被病毒感染,另外,必須在正常修改文件后,重新計(jì)算該文件對(duì)應(yīng)的原始檢測碼,并將其存儲(chǔ)在原始檢測碼列表中,否則,在定期檢測過程中掃描軟件會(huì)對(duì)該文件示警。由于系統(tǒng)中文件經(jīng)常發(fā)生改變(復(fù)制和刪除),而且有的文件經(jīng)常修改,需要用戶經(jīng)常干預(yù),以此保持原始檢測碼列表中內(nèi)容的完整性和一致性,這可能使用戶感到不便。如果文件在計(jì)算初始檢測碼前已經(jīng)感染病毒,這種檢測技術(shù)是無法檢測出的,但如果該病毒在系統(tǒng)內(nèi)感染其他文件,則可以檢測出被感染的其他文件。
(4)基于行為的檢測技術(shù)
病毒為了激活、感染其他文件、對(duì)系統(tǒng)實(shí)施破壞操作,需要對(duì)系統(tǒng)中的文件、注冊表、引導(dǎo)扇區(qū)及內(nèi)存等系統(tǒng)資源進(jìn)行操作,這些操作通常由操作系統(tǒng)內(nèi)核中的服務(wù)模塊完成,因此,當(dāng)某個(gè)用戶進(jìn)程發(fā)出修改注冊表中自動(dòng)啟動(dòng)項(xiàng)列表、格式化文件系統(tǒng)、刪除某個(gè)系統(tǒng)文件的操作請(qǐng)求時(shí),可以認(rèn)為該用戶進(jìn)程在實(shí)施病毒代碼要求完成的操作。為了檢測某個(gè)用戶進(jìn)程是否正在執(zhí)行病毒代碼,可以為不同安全等級(jí)的用戶配置資源訪問權(quán)限,用權(quán)限規(guī)定每一個(gè)用戶允許發(fā)出的請(qǐng)求類型、訪問的資源種類及訪問方式,病毒檢測程序常駐內(nèi)存,截獲所有對(duì)操作系統(tǒng)內(nèi)核發(fā)出的資源訪問請(qǐng)求,確定發(fā)出請(qǐng)求的用戶及安全等級(jí),要求訪問的資源及訪問模式,然后根據(jù)為該安全等級(jí)用戶配置的資源訪問權(quán)限檢測請(qǐng)求中要求的操作的合法性,如果請(qǐng)求中要求的資源訪問操作違背為發(fā)出請(qǐng)求的用戶規(guī)定的訪問權(quán)限,表明該用戶進(jìn)程可能包含病毒代碼,病毒檢測程序可以對(duì)該用戶進(jìn)程進(jìn)行干預(yù)并以某種方式示警?;谛袨榈臋z測技術(shù)可以檢測出變形病毒和未知病毒,但一是在執(zhí)行過程中檢測病毒,有可能因?yàn)橐呀?jīng)執(zhí)行部分病毒代碼,已經(jīng)對(duì)系統(tǒng)造成危害。二是由于很難區(qū)分正常和非正常的資源訪問操作,無法為用戶精確配置資源訪問權(quán)限,常常發(fā)生漏報(bào)和誤報(bào)病毒的情況。
(5)基于模擬運(yùn)行環(huán)境的檢測技術(shù)
模擬運(yùn)行環(huán)境是一個(gè)軟件仿真系統(tǒng),用軟件仿真處理器、文件系統(tǒng)、網(wǎng)絡(luò)連接系統(tǒng)等,該環(huán)境與其他軟件系統(tǒng)隔離,其仿真運(yùn)行結(jié)果不會(huì)對(duì)實(shí)際物理環(huán)境和其他軟件運(yùn)行環(huán)境造成影響。當(dāng)基于線索的檢測技術(shù)懷疑某個(gè)可執(zhí)行文件或文本文件感染病毒時(shí),為了確定該可執(zhí)行文件或文本文件是否包含病毒,需要事先建立已知病毒的操作特征庫和資源訪問原則,病毒的操作特征是指病毒實(shí)施感染、和破壞時(shí)需要完成的操作序列,如修改注冊表中自動(dòng)啟動(dòng)項(xiàng)列表所需要的操作序列,變形病毒感染可執(zhí)行文件需要的操作序列(讀可執(zhí)行文件、修改可執(zhí)行文件、加密可執(zhí)行文件、寫可執(zhí)行文件)等,然后,在模擬運(yùn)行環(huán)境中運(yùn)行該可執(zhí)行文件或文本文件,并對(duì)每一條指令的執(zhí)行結(jié)果進(jìn)行分析,如果發(fā)生某種病毒的操作特征時(shí),如修改注冊表某個(gè)特定鍵的值,或者發(fā)生違背資源訪問原則的資源訪問操作時(shí),確定該可執(zhí)行文件或文本文件感染病毒,如果直到整個(gè)代碼仿真執(zhí)行完成都沒有發(fā)生和操作特征庫匹配的操作,或違背資源訪問原則的資源訪問操作,斷定該文件沒有感染病毒,由于整個(gè)代碼的執(zhí)行過程都在模擬運(yùn)行環(huán)境下進(jìn)行,執(zhí)行過程不會(huì)對(duì)系統(tǒng)的實(shí)際物理環(huán)境和其他軟件的運(yùn)行環(huán)境產(chǎn)生影響。
2 基于網(wǎng)絡(luò)的病毒防御機(jī)制
基于網(wǎng)絡(luò)的病毒防御機(jī)制主要用于隔斷病毒的網(wǎng)絡(luò)傳播途徑,終止蠕蟲病毒的自我復(fù)制過程,防止感染病毒的主機(jī)發(fā)起DoS(拒絕服務(wù))攻擊。
(1)防火墻
防火墻的功能就是實(shí)施網(wǎng)絡(luò)資源的訪問控制策略,監(jiān)控內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)之間的分組交換過程,可以通過配置有效的訪問控制策略隔斷病毒的網(wǎng)絡(luò)傳播途徑和木馬客戶端與服務(wù)器端的通信過程。
圖3給出了利用防火墻阻止木馬客戶端與服務(wù)器端通信的機(jī)制,假定防火墻配置的訪問控制策略只允許內(nèi)網(wǎng)終端發(fā)起訪問外網(wǎng)Web服務(wù)器,防火墻只允許圖3(b)所示的分組類型和分組交換過程進(jìn)行,即首先由內(nèi)網(wǎng)終端發(fā)起建立與外網(wǎng)終端目的端口號(hào)為80的TCP連接,然后,由內(nèi)網(wǎng)終端經(jīng)過TCP連接發(fā)送HTTP請(qǐng)求報(bào)文,由外網(wǎng)終端經(jīng)過TCP連接發(fā)送對(duì)應(yīng)的HTTP響應(yīng)報(bào)文。這種情況下,木馬服務(wù)器端只能發(fā)起與木馬客戶端目的端口號(hào)為80的TCP連接,而且木馬服務(wù)器端發(fā)送給木馬客戶端的數(shù)據(jù)必須封裝成HTTP請(qǐng)求報(bào)文格式,且符合HTTP請(qǐng)求報(bào)文要求的語法和語義規(guī)范,同樣,木馬客戶端發(fā)送給木馬服務(wù)器端的數(shù)據(jù)必須封裝成HTTP響應(yīng)報(bào)文格式,且符合HTTP響應(yīng)報(bào)文要求的語法和語義規(guī)范,這將給木馬的編寫造成很大困難。因此,只要精心配置防火墻的訪問控制策略,幾乎很少有木馬可以通過防火墻實(shí)現(xiàn)客戶端與服務(wù)器端的通信過程。
另外,防火墻可以對(duì)外網(wǎng)Web服務(wù)器傳輸給內(nèi)網(wǎng)終端的文本文件進(jìn)行檢測,一旦發(fā)現(xiàn)嵌入腳本病毒的文本文件,通過丟棄該文本文件隔斷病毒的傳播途徑。由于不允許由外網(wǎng)終端發(fā)起建立與內(nèi)網(wǎng)終端的TCP連接,因此,外網(wǎng)終端很難通過利用內(nèi)網(wǎng)Web服務(wù)器的漏洞向內(nèi)網(wǎng)中的Web服務(wù)器傳播蠕蟲病毒。
(2)入侵防御系統(tǒng)
入侵防御系統(tǒng)通過檢測流經(jīng)關(guān)鍵網(wǎng)段的信息流,發(fā)現(xiàn)可能存在的病毒傳播過程,并予以制止。如圖4所示,兩個(gè)探測器可以檢測到所有跨交換機(jī)傳輸?shù)男畔⒘?,通過對(duì)流經(jīng)探測器的信息流進(jìn)行實(shí)時(shí)監(jiān)控,鑒別出和病毒傳播有關(guān)的分組,并予以丟棄。鑒別和病毒傳播有關(guān)的分組的機(jī)制主要有兩種:一是通過分析已有的病毒傳播機(jī)制,提取出病毒傳播的操作特征,即傳播病毒過程需要且有別于正常信息交換過程的操作序列,如傳播某個(gè)蠕蟲病毒,需要主機(jī)掃描(產(chǎn)生大量原IP地址相同、目的端口號(hào)為80的建立TCP連接請(qǐng)求報(bào)文)、發(fā)送特殊HTTP請(qǐng)求報(bào)文(超長,且包含特定引導(dǎo)程序代碼),建立反向連接(源和目的IP地址互換的建立TCP連接請(qǐng)求報(bào)文)等操作。二是建立正常情況下特定流量的閾值,如電子郵件平均流量。如果流經(jīng)探測器的信息流模式和某種病毒的操作特征匹配,如通過檢測信息流,發(fā)現(xiàn)某個(gè)終端進(jìn)行了符合主機(jī)掃描、發(fā)送特殊HTTP請(qǐng)求報(bào)文、建立反向連接等操作模式的一系列分組交換過程,確定該終端正在實(shí)施蠕蟲病毒傳播過程,可以通過在一段時(shí)間內(nèi)丟棄由該終端發(fā)送的全部IP分組,來隔斷蠕蟲病毒的傳播途徑。如果探測器在某段時(shí)間內(nèi)檢測到的電子郵件流量超過正常情況下建立的流量閾值很多(如達(dá)到兩倍流量閾值),表明網(wǎng)絡(luò)中正在擴(kuò)散電子郵件病毒,通過在一段時(shí)間內(nèi)丟棄所有電子郵件來阻止電子郵件病毒的傳播。
3 數(shù)字免疫系統(tǒng)
(1)系統(tǒng)組成
數(shù)字免疫系統(tǒng)組成如圖5所示,由客戶機(jī)、管理機(jī)和病毒分析機(jī)組成。
客戶機(jī)是安裝病毒檢測軟件的終端,該病毒檢測軟件需要具有基于特征掃描和基于線索掃描的能力;
管理機(jī)負(fù)責(zé)某個(gè)子網(wǎng)的管理工作,并負(fù)責(zé)和病毒分析機(jī)之間的通信;
病毒分析機(jī)是數(shù)字免疫系統(tǒng)的核心,在模擬運(yùn)行環(huán)境中逐條解釋可能感染病毒的可執(zhí)行文件或文本文件,監(jiān)控每一條指令的操作結(jié)果,確定該可執(zhí)行文件或文本文件是否存在病毒,分析病毒的感染和破壞機(jī)理,形成檢測該病毒的行為特征和代碼特征。
(2)工作原理
客戶機(jī)通過自身的病毒檢測軟件發(fā)現(xiàn)可疑文件,將可疑文件發(fā)送給管理機(jī),管理機(jī)和客戶機(jī)位于同一子網(wǎng)內(nèi),傳輸?shù)陌踩杂兴WC,但管理機(jī)和病毒分析機(jī)可能通過公共傳輸網(wǎng)絡(luò)互連,因此,將可疑文件傳輸給病毒分析機(jī)時(shí)需要進(jìn)行加密處理,以確保傳輸?shù)陌踩浴?/p>
病毒分析機(jī)在模擬運(yùn)行環(huán)境中逐條仿真可疑文件代碼,并監(jiān)控每一條指令的執(zhí)行結(jié)果,分析病毒的感染和破壞機(jī)理,形成檢測該病毒的行為特征和代碼特征,以及基于多種特定掃描技術(shù)的檢測規(guī)則,將這些信息加密處理后發(fā)送給各個(gè)子網(wǎng)的管理機(jī),管理機(jī)解密后,傳輸給子網(wǎng)內(nèi)的所有客戶機(jī),客戶機(jī)病毒檢測軟件根據(jù)這些信息及時(shí)更新病毒特征庫,如行為特征庫、代碼特征庫,添加對(duì)應(yīng)的檢測規(guī)則。完成更新后的客戶機(jī)病毒檢測軟件將有能力發(fā)現(xiàn)并處理被該病毒感染的文件,阻止該病毒進(jìn)行的感染和破壞操作。