系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > 殺毒軟件是如何工作的

殺毒軟件是如何工作的?電腦殺毒的幾種方式介紹

時間:2017-05-03 13:30:21 作者:quers 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20170503/96940.html 手機(jī)查看 評論

  殺毒軟件是如何工作的?在面對病毒程序的活動進(jìn)行一個判定的時候,殺毒軟件需要檢測當(dāng)前活動的程序行為是否合法,做了什么,或者想做什么,對計(jì)算機(jī)出現(xiàn)的狀況進(jìn)行一個預(yù)估,以確定該病毒的存在,想知道更多,可以閱讀下文中的深度解析。

殺毒軟件是如何工作的?電腦殺毒的幾種方式介紹

  殺毒軟件是如何工作的?

  一、殺毒軟件引擎與病毒庫的關(guān)系

  首先必須指出殺毒軟件的引擎與其病毒庫并沒有什么直接的關(guān)系。殺毒引擎的任務(wù)和功能非常簡單,就是對于給定的文件或者程序進(jìn)程判斷其是否是合法程序(對應(yīng)于殺毒軟件廠商自己定義的正常和非異常程序規(guī)范而言。正常的程序規(guī)范是指在程序所在系統(tǒng)平臺上操所系統(tǒng)本身洗凈有定義的或者業(yè)界已經(jīng)公認(rèn)的程序行為過程,比如操作系統(tǒng)正常運(yùn)行就必須要求應(yīng)用程序與系統(tǒng)核心進(jìn)行進(jìn)程響應(yīng)并與交換相關(guān)數(shù)據(jù)。非異常程序活動是指可能存在非法程序操作結(jié)果但能夠以較高的置信度確定其非非法程序活動規(guī)范的。一般情況下,相關(guān)文件的復(fù)制,移動,刪除等都奔包括在該界定范圍內(nèi))。

  我們知道病毒的最終目的有些是與合法活動很類似的,在這種情況下,要求軟件廠商必須自己有一個行為規(guī)范界定規(guī)則,在一個給定的范圍和置信度下,判斷相關(guān)操作是否為合法。在這方面,各個廠商的界定是有區(qū)別的,一般而言非美國廠商界定是非常嚴(yán)格的,只有有很高的置信水平的程序行為,他們才判別為非病毒操作。記得前一陣論壇上有人給了四段簡單的代碼,很多殺毒軟件將其判為病毒或有病毒性質(zhì)的文件行為,實(shí)際上看那幾段代碼可以知道,其結(jié)果并不足以視之為病毒。美國廠商一般判斷比較復(fù)雜,這主要由于美國市場上的殺毒軟件引擎來源比較復(fù)雜,比如Norton,有足夠的技術(shù)資料確信它的殺毒軟件引擎是自成體系的,而Mcafee則存在一定的外界技術(shù)引進(jìn)(收購所羅門)。

  用簡單的話說,殺毒引擎就是一套判斷特定程序行為是否為病毒程序(包括可疑的)的技術(shù)機(jī)制。一個完整的技術(shù)引擎應(yīng)遵守如下的行為過程

  ⑴、非自身程序行為的程序行為捕獲。包括來自于內(nèi)存的程序運(yùn)行,來自于給定文件的行為虛擬判斷,來自于網(wǎng)絡(luò)的動態(tài)的信息等等。一般情況下,我們稱之為引擎前端。捕捉的方法非常多,除Norton以外的殺毒軟件采用的都是行為規(guī)范代碼化的方法。Norton由于與微軟有遠(yuǎn)遠(yuǎn)高于其它廠商合作關(guān)系,其實(shí)現(xiàn)過程比較獨(dú)特,另有敘述。

  ⑵、基于引擎機(jī)制的規(guī)則判斷。這個環(huán)節(jié)代表了殺毒引擎的質(zhì)量水平,一個好的殺毒引擎應(yīng)該能在這個環(huán)節(jié)發(fā)現(xiàn)很多或者稱之為相當(dāng)規(guī)模的病毒行為,存而避免進(jìn)入下一個判斷環(huán)節(jié)。傳統(tǒng)的反病毒軟件引擎使用的是基于特征碼的靜態(tài)掃描技術(shù),即在文件中尋找特定的十六進(jìn)制字符串,如果找到,就可判定文件感染了某種病毒。但這種方法在當(dāng)今病毒技術(shù)迅猛發(fā)展的形勢下已經(jīng)起不到很好的作用了。為了更好的發(fā)現(xiàn)病毒,相繼開發(fā)了所謂的虛擬機(jī),實(shí)時監(jiān)控等相關(guān)技術(shù)。這個環(huán)節(jié)被叫做殺毒軟件引擎工作的核心層。

  ⑶、引擎與病毒庫的交互作用。這個過程往往被認(rèn)為是收尾階段,相對于前兩個環(huán)節(jié),這個階段速度是非常慢的,殺毒引擎與要將非自身程序行為過程轉(zhuǎn)化為殺毒軟件自身可識別的行為標(biāo)識符(包括靜態(tài)代碼等),然后與病毒庫中所存貯的行為信息進(jìn)行對應(yīng),并作出相應(yīng)處理。當(dāng)然必須承認(rèn),當(dāng)前的殺毒軟件對大量病毒的識別都是在這個階段完成的。因此一個足夠龐大的病毒庫往往能夠彌補(bǔ)殺毒軟件引擎的不足之處。但是必須意識到,如果在核心層階段就可以結(jié)束并清除病毒程序,那么殺毒軟件的工作速度將會大幅提升。“很可惜的是,當(dāng)前我們沒有足夠聰明的殺毒引擎來完成這個過程”,這就是為什么有病毒庫的原因。

  Norton是微軟最高級的安全方面核心合作廠商,因此它的殺毒軟件在某些方面工作比較特殊。比如在殺毒軟件的安裝,使用和功能實(shí)現(xiàn)方面,大部分廠商采用的是中間件技術(shù),在系統(tǒng)底層與非自身應(yīng)用程序之間作為中間件存在并實(shí)現(xiàn)其功能;另有一些廠商使用的是應(yīng)用程序或者嵌入技術(shù),相對而言這種方法安全性較低;Norton和Mcafee實(shí)現(xiàn)方式比較相似,Norton采用了基于系統(tǒng)最底層的系統(tǒng)核心驅(qū)動,這種實(shí)現(xiàn)方式是最安全的或者說最高級的實(shí)現(xiàn)方式,當(dāng)然這需要微軟的系統(tǒng)源代碼級的支持(要花許多money),業(yè)界公認(rèn),這是最穩(wěn)定的實(shí)現(xiàn)方法,但從目前而言,只Norton一家。Mcafee實(shí)現(xiàn)方式與Norton很接近,一般稱之為軟件驅(qū)動。相當(dāng)于在系統(tǒng)中存在一個虛擬“硬件”,來實(shí)現(xiàn)殺毒軟件功能。這些實(shí)現(xiàn)方式關(guān)系著殺毒引擎對程序行為進(jìn)行捕捉的方式。

  我們使用的Intel系列處理器有兩個 Ring層,對應(yīng)兩個層,微軟的操作系統(tǒng)將系統(tǒng)中的所有行為分為如下幾個層

  ⑴、最底層:系統(tǒng)核心層,這個層的所有行為都由操作系統(tǒng)已經(jīng)內(nèi)置的指令來實(shí)現(xiàn),所有外界因素(即使你是系統(tǒng)管理員)均不能影響該層的行為。Norton的核心層既工作在這個層上。

 、、硬件虛擬層(HAL)。為了實(shí)現(xiàn)硬件無關(guān)性,微軟設(shè)計(jì)了該層。所有的外部工作硬件(相對于系統(tǒng)核心而言)都進(jìn)入HAL,并被HAL處理為核心層可以相應(yīng)的指令。我們所使用的硬件的驅(qū)動程序既工作在該層上。當(dāng)外界硬件存在指令請求時,驅(qū)動程序作出相關(guān)處理后傳給核心層。如果無與之對應(yīng)的驅(qū)動相應(yīng),那么將按照默認(rèn)硬件進(jìn)行處理。好像安全模式下硬件的工作就被置于默認(rèn)硬件模式。Mcafee的殺毒軟件,就被認(rèn)為工作在HAL層上。

  ⑶、用戶層。我們所知的大部分殺毒軟件既工作與該層上。一個完整的程序行為請求是如下流程:位于3戶層上的應(yīng)用程序產(chǎn)生指令行為請求,被傳遞至2HAL進(jìn)行處理,最后進(jìn)入1最底層后進(jìn)入CPU的指令處理循環(huán),然后反向?qū)④浖勺R別的處理結(jié)果經(jīng)1-2-3再響應(yīng)給應(yīng)用程序。對于Norton而言,其整個工作過程如下:3-2-1,完成;Mcafee:3-2-1-1-2,完成:其余:3-2-1-1-2-3,完成;這個環(huán)節(jié)代表了殺毒軟件引擎的前端行為規(guī)范的獲得。只從這個過程而言,Norton和Mcafee是比較先進(jìn)的。具體到系統(tǒng)與CPU的Ring()的對應(yīng),Win NT時代,微軟的NT系統(tǒng)被設(shè)計(jì)成與四個Ring()層相對應(yīng),RISC系列的處理器有四個Ring。因此現(xiàn)在的大部分殺毒軟件是不能工作在NT上的。具體來說,CISC有四個Ring(),RISC有兩個Ring()。

  盡管比較先進(jìn)的工作方式給Norton和Mcafee帶來了較高的系統(tǒng)穩(wěn)定性(HAL層很少出現(xiàn)問題,最底層出問題的幾率接近于零),較快的響應(yīng)速度(減少了環(huán)節(jié)),但同時也帶來了一些問題:1.資源占用比較厲害。在Mcafee上體現(xiàn)的不是很明顯,在Norton上表現(xiàn)非常明顯。因?yàn)閷τ谠降讓拥男袨椋布Y源分配越多。最好資源的是什么?當(dāng)然是操作系統(tǒng)。應(yīng)為它最最底層。2.卸載問題。卸載底層的組件出問題的概率是相對比較高的,因此Norton的卸載比較慢,偶爾還容易出問題。

  因此,有人質(zhì)疑微軟Windows操作系統(tǒng)的不穩(wěn)定性,是否會拖累Norton?實(shí)際上,Windows的內(nèi)核層設(shè)計(jì)是非常優(yōu)秀的,很多時候,操作系統(tǒng)的不穩(wěn)定性來源于以下幾個方面

  ⑴、應(yīng)用程序設(shè)計(jì)不合理,許多程序設(shè)計(jì)者根本就未讀過微軟的32位程序設(shè)計(jì)指南,所設(shè)計(jì)的程序并不嚴(yán)格符合微軟規(guī)范。我們看到,大量多年前設(shè)計(jì)的軟件還能運(yùn)行于最新的Win XP平臺,原因很簡單:這個軟件在設(shè)計(jì)時完全遵循了微軟的程序設(shè)計(jì)規(guī)范。

 、、驅(qū)動程序的編寫有問題,與HAL層有沖突。

  因此,片面地認(rèn)為微軟的操作系統(tǒng)將會影響Norton的穩(wěn)定性是不合理的。

  業(yè)界有人認(rèn)為,先進(jìn)殺毒軟件的引擎設(shè)計(jì)已經(jīng)日趨復(fù)雜,類如Norton這一類的廠商其產(chǎn)品的引擎應(yīng)該已經(jīng)覆蓋了操作系統(tǒng)的各個層級,以提高防護(hù)能力。在一篇文檔中有程序員提出有足夠的信息認(rèn)為Norton,Mcafee,趨勢的產(chǎn)品自己修改了標(biāo)準(zhǔn)的系統(tǒng)相關(guān)協(xié)議,比如TCP/IP等,以達(dá)到所謂的完整防護(hù)的目的。NOD32的一篇官方文檔,就指出,反病毒廠商有必要全面更新系統(tǒng)的諸多協(xié)議,以達(dá)到最快的速度和殺毒效果。

  二、病毒技術(shù)淺析

  要討論怎樣反病毒,就必須從病毒技術(shù)本身的討論開始。正是所謂“知己知彼,百戰(zhàn)不殆”。很難想象一個毫無病毒寫作經(jīng)驗(yàn)的人會成為殺毒高手。目前國內(nèi)一些著名反病毒軟件公司的研發(fā)隊(duì)伍中不乏病毒寫作高手。只不過他們將同樣的技術(shù)用到了正道上,以毒攻毒。當(dāng)今的病毒與DOS和Win 3.x時代下的從技術(shù)角度上看有很多不同。最大的轉(zhuǎn)變是:引導(dǎo)區(qū)病毒減少了,而腳本型病毒開始泛濫。原因是在當(dāng)今的操作系統(tǒng)下直接改寫磁盤的引導(dǎo)區(qū)會有一定的難度(DOS則沒有保護(hù),允許調(diào)用INT13直接寫盤),而且引導(dǎo)區(qū)的改動很容易被發(fā)現(xiàn),并且微軟在設(shè)計(jì)操作系統(tǒng)時加強(qiáng)了對引導(dǎo)區(qū)的程序行為管理,寫一個完美的引導(dǎo)區(qū)病毒難度很大,所以很少有人再寫了;而腳本病毒以其傳播效率高且容易編寫而深得病毒作者的青睞。但是最最落后的殺毒引擎也就是只基于靜態(tài)代碼的殺毒引擎都能干掉該種病毒(病毒庫搞好就行)。

  要討論的技術(shù)主要來自于二進(jìn)制外殼型病毒(感染文件的病毒),并且這些技術(shù)大都和操作系統(tǒng)底層機(jī)制或386以上CPU的保護(hù)模式相關(guān),值得研究。DOS下的外殼型病毒主要感染 16位的COM或EXE文件,由于DOS沒有(文件和引導(dǎo)區(qū))保護(hù),它們能夠輕松地進(jìn)行駐留,減少可用內(nèi)存(通過修改MCB鏈),修改系統(tǒng)代碼,攔截系統(tǒng)服務(wù)或中斷。而到了WIN9X和WINNT/2000時代,搞個運(yùn)行其上的32位Windows病毒變得難了點(diǎn)。由于存在頁面保護(hù),你不可能修改系統(tǒng)的代碼頁(如果你強(qiáng)到連操作系統(tǒng)代碼都能改,偶無話可說)。由于I/O許可位圖中的規(guī)定,你也不能進(jìn)行直接端口訪問。在Windows中,你不可能像在 DOS里那樣通過截獲INT21H來攔截所有文件操作?傊,當(dāng)你以一個用戶態(tài)權(quán)限運(yùn)行,你的行為就會受到操作系統(tǒng)嚴(yán)格的控制(在Win XP中,這種權(quán)限管理極為嚴(yán)格,分成了好幾個等級)。Windows下采用的可執(zhí)行文件格式和DOS下的EXE文件截然不同(普通程序采用PE,驅(qū)動程序采用LE格式),所以病毒的感染文件的難度增大了(PE和LE比較復(fù)雜,中間分了若干個節(jié),如果感染錯了,將導(dǎo)致文件不能繼續(xù)執(zhí)行)。當(dāng)今病毒的新技術(shù)太多,隨便介紹幾個。

  1、系統(tǒng)核心病毒

  386及以上的X86 CPU實(shí)現(xiàn)了4個特權(quán)級模式(Windows只用到了其中兩個),其中特權(quán)級0(Ring0)是留給操作系統(tǒng)代碼,設(shè)備驅(qū)動程序代碼使用的,它們工作于系統(tǒng)核心態(tài);而特權(quán)極3(Ring3)則給普通的用戶程序使用,它們工作在用戶態(tài)。運(yùn)行于處理器核心態(tài)的代碼,不受任何的限制,可以自由地訪問任何有效地址,進(jìn)行直接端口訪問。而運(yùn)行于用戶態(tài)的代碼則要受到處理器的諸多限制,它們只能訪問映射其地址空間的頁表項(xiàng)中規(guī)定的在用戶態(tài)下可訪問頁面的虛擬地址,且只能對任務(wù)狀態(tài)段(TSS)中I/O許可位圖(I/O Permission Bitmap)中規(guī)定的可訪問端口進(jìn)行直接訪問(此時處理器狀態(tài)和控制標(biāo)志寄存器EFLAGS中的IOPL通常為0,指明當(dāng)前可以進(jìn)行直接I/O的最低特權(quán)級別是Ring0)。以上的討論只限于保護(hù)模式操作系統(tǒng),像在DOS這種實(shí)模式操作系統(tǒng)里,則沒有這些概念,其中的所有代碼都可被看作運(yùn)行在核心態(tài)。既然運(yùn)行在核心態(tài)有如此之多的優(yōu)勢,那么病毒當(dāng)然沒有理由不想得到Ring0。處理器模式從Ring3向Ring0的切換發(fā)生在控制權(quán)轉(zhuǎn)移時,有以下兩種情況:訪問調(diào)用門的長轉(zhuǎn)移指令CALL,訪問中斷門或陷阱門的INT指令,F(xiàn)代操作系統(tǒng)通常使用中斷門來提供系統(tǒng)服務(wù),通過執(zhí)行一條陷入指令完成模式切換。在X86處理器上,這條指令是INT;在Win 9X下是INT30(保護(hù)模式回調(diào));在Linux下則是INT80;在Win NT/2000下是INT2E。用戶模式的服務(wù)程序(如系統(tǒng)DLL)通過執(zhí)行一個INTXX來請求系統(tǒng)服務(wù),然后處理器模式將切換到核心態(tài),工作于核心態(tài)的相應(yīng)的系統(tǒng)代碼將服務(wù)于此次請求,并將結(jié)果傳給用戶程序。

  在最新發(fā)布的Win XP SP2中,采用了“數(shù)據(jù)執(zhí)行保護(hù)”(DEP)技術(shù)。這是一種基于處理器支持的內(nèi)存頁面保護(hù)技術(shù),它將更為嚴(yán)格地控制用戶訪問的權(quán)限,它禁止在標(biāo)記為數(shù)據(jù)存儲的內(nèi)存區(qū)域中執(zhí)行代碼。當(dāng)某些程序或病毒嘗試運(yùn)行標(biāo)記的數(shù)據(jù)頁中的代碼時,就會立即發(fā)生異常并禁止執(zhí)行代碼。這可以防止攻擊者使用代碼致使數(shù)據(jù)緩沖區(qū)溢出,然后執(zhí)行該代碼。

  2、駐留病毒

  駐留病毒是指那些在內(nèi)存中尋找合適的頁面并將病毒自身拷貝到其中且在系統(tǒng)運(yùn)行期間能夠始終保持病毒代碼的存在。駐留病毒比那些直接感染(Direct-Action)型病毒更具隱蔽性,它通常要截獲某些系統(tǒng)操作來達(dá)到感染傳播的目的。進(jìn)入核心態(tài)的病毒,可以利用系統(tǒng)服務(wù)來達(dá)到此目的。如CIH病毒,就通過調(diào)用一個由VMM導(dǎo)出的服務(wù)VMMCALL _PageAllocate在大于0XC0000000的地址上分配一塊頁面空間。而處于用戶態(tài)的程序要想在程序退出后仍駐留代碼的部分于內(nèi)存中似乎是不可能的,因?yàn)闊o論用戶程序分配何種內(nèi)存都將作為進(jìn)程占用資源的一部分,一旦進(jìn)程結(jié)束,所占資源將立即被釋放。所以我們要做的是分配一塊進(jìn)程退出后仍可保持的內(nèi)存。

  另外,還可以通過修改系統(tǒng)動態(tài)連接模塊(DLL)來進(jìn)行駐留。Win 9X下系統(tǒng)DLL(如Kernel32.dll 映射至BFF70000)處于系統(tǒng)共享區(qū)域(2G-3G),如果在其代碼段空隙中寫入一小段病毒代碼則可以影響其它所有進(jìn)程。但Kernel32.dll 的代碼段在用戶態(tài)是只讀的。所以,必須通過特殊手段修改其頁保護(hù)屬性。在Win NT/2000/XP系統(tǒng)里,DLL所在的頁面被映射到進(jìn)程的私有空間(如Kernel32.dll映射至77ED0000)中時,具有寫時拷貝屬性,即沒有進(jìn)程試圖寫入該頁面時,所有進(jìn)程將共享這個頁面;而當(dāng)一個進(jìn)程試圖寫入該頁面時,系統(tǒng)的頁面錯誤處理代碼將檢查到該異常進(jìn)程,并給它分配一個新頁面,并拷貝原頁面內(nèi)容于其上,且更新進(jìn)程的頁表以指向新分配的頁。這種共享內(nèi)存的優(yōu)化給病毒的寫作帶來了一定的麻煩,病毒不能象在Win 9X下那樣僅僅修改Kernel32.dll一處代碼便一勞永逸。它需要利用WriteProcessMemory,向每個進(jìn)程映射Kernel32.dll的地址寫入病毒代碼,這樣每個進(jìn)程都會得到病毒體的一個副本,這被稱為多進(jìn)程駐留或每進(jìn)程駐留(Muti-Process Residence or Per-Process Residence)。

  在如今的病毒設(shè)計(jì)中,那些傳統(tǒng)的掛鉤――捆綁方法并不很受歡迎,原因在于新的操作系統(tǒng)里,許多函數(shù)規(guī)則是不可預(yù)知的。所謂的”黑箱“設(shè)計(jì),使得設(shè)計(jì)人員更偏愛系統(tǒng)級別的線程捆綁,或更直接的接管權(quán)限控制的方法。采用最復(fù)雜的線程捆綁技術(shù),甚至可以使殺毒軟件和防火墻得不到足夠的信息來區(qū)分一個程序是否合法。更高級別的搶奪權(quán)方法,甚至可以結(jié)束所有殺毒軟件的進(jìn)程,包括卡巴斯基所采用的受保護(hù)的內(nèi)存線程技術(shù)。

  普通病毒是通過將自身附加到宿主尾部(如此一來,宿主的大小就會增加),并修改程序入口點(diǎn)來使病毒得到擊活。但現(xiàn)在不少病毒通過使用特殊的感染技巧,能夠使宿主大小及宿主文件頭上的入口點(diǎn)保持不變。附加了病毒代碼,卻使被感染文件大小不變聽起來讓人不可思議。其實(shí),它利用了PE文件格式的特點(diǎn):PE文件的每個節(jié)之間留有按簇大小對齊后的空洞,病毒體如果足夠小,則可以將自身分成幾份并分別插入到每個節(jié)最后的空隙中,這樣就不必額外增加一個節(jié),因而文件大小可以保持不變。著名的CIH病毒,正是運(yùn)用這一技術(shù)的典型范例(它的大小只有1K左右)。

  病毒在不修改文件頭入口點(diǎn)的前提下,要想獲得控制權(quán)并非易事:入口點(diǎn)不變,意味著程序是從原程序的入口代碼處開始執(zhí)行的,病毒必須要將原程序代碼中的一處修改為導(dǎo)向病毒入口的跳轉(zhuǎn)指令。一些查毒工具通過掃描可執(zhí)行文件頭部的入口點(diǎn)域,如果發(fā)現(xiàn)它指向的地方不正常,即不在代碼節(jié)而在資源節(jié)或重定位節(jié)中,則有懷疑文件感染了某種病毒。而病毒界中的EPO(入口點(diǎn)模糊)技術(shù),則可以很好的對付這樣的掃描,同時它還是反虛擬執(zhí)行的重要手段。

  另外,值得一提的是現(xiàn)在不少病毒已經(jīng)支持對壓縮文件的感染。如Win32.crypto病毒就可以感染ZIP,ARJ,RAR,ACE,CAB等類型的壓縮文件。這些病毒的代碼中,含有對特定壓縮文件類型解壓并壓縮的代碼段,可以先把壓縮文件中的內(nèi)容解壓出來,然后對合適的文件進(jìn)行感染,最后再將感染后文件壓縮回去并同時修改壓縮文件頭部的校驗(yàn)和。目前不少反病毒軟件都支持掃描多種格式的壓縮文件,但是對有些染毒的壓縮文件無法殺除。

  目前,殺毒軟件在對待加殼病毒的時候,表現(xiàn)比較差的是瑞星?赡苁侨鹦堑臍⒍疽鎸託さ某绦虿混`敏,瑞星自己甚至加殼了很多病毒放到病毒庫里。

  三、殺毒引擎的實(shí)現(xiàn)

  殺毒引擎目前主流有以下一些實(shí)現(xiàn)方式:虛擬機(jī)技術(shù),實(shí)時監(jiān)控技術(shù),智能碼標(biāo)識技術(shù),行為攔截技術(shù)。其中,后面兩個為近年來出現(xiàn)的技術(shù)。采用智能碼標(biāo)識技術(shù)的目的是提高殺毒速度并且預(yù)防未知病毒,但就現(xiàn)實(shí)而言,除了東方衛(wèi)士不成功的試驗(yàn)外,其余廠商并未開發(fā)完全基于該技術(shù)的引擎,Norton的開發(fā)人員認(rèn)為:“沒有足夠的技術(shù)手段來實(shí)現(xiàn)這種殺毒理念。而行為攔截技術(shù)(或者別的什么智能殺毒技術(shù))也是一種預(yù)防未知病毒的方法,與虛擬機(jī)技術(shù)相似,通過對程序行為的分析來判斷其是否為病毒。

  對于未知病毒的判斷,實(shí)際上代表著殺毒軟件廠商在引擎研究方面的最高能力。業(yè)界公認(rèn),防止未知病毒是“代表研究水平的”。業(yè)界上,對于殺毒軟件防止未知病毒能力是按照如下方法衡量的:以評測當(dāng)日的殺毒軟件最新版本為該廠商的供測試版本,未知病毒通常由以下途徑得來

 、、病毒作者提供。有些病毒作者在將自己的病毒發(fā)布前,也許為了炫耀技術(shù),總愛送給一些業(yè)界的安全雜志供其評測(最佩服這種人)。

 、啤I(yè)研究實(shí)驗(yàn)室。大部分業(yè)界安全雜志都有自己的研究實(shí)驗(yàn)室,他們的研究人員會根據(jù)最新的趨勢和技術(shù)手段及工具,編寫一些病毒。一般情況下,這些病毒不會泄漏到網(wǎng)上。

 、、假病毒。一些類似于病毒行為的文件,程序等。測試的時候病毒庫被置空(就是殺毒軟件試圖調(diào)用病毒庫時采用程序方法向其返回一個空結(jié)果),在這種情況下進(jìn)行測試。如果有人有興趣,可以到病毒論壇上搞點(diǎn)新手寫的小病毒(一般也就100-200行),弄上幾十個拿自己的殺毒軟件試一試,就會發(fā)現(xiàn)在平均狀態(tài)下,從Norton病毒庫被置空時起,對未知病毒判斷能力還是挺強(qiáng)的。對于其他許多殺毒軟件,就沒有那么好遠(yuǎn)了,尤其在對付比較復(fù)雜的蠕蟲病毒時,某些廠商的產(chǎn)品近乎全軍覆沒。

  殺毒引擎最主要的兩種技術(shù)――虛擬機(jī)和實(shí)時監(jiān)控進(jìn)行介紹

  1、虛擬機(jī)

  虛擬機(jī),在反病毒界也被稱為通用解密器,已經(jīng)成為反病毒軟件中最重要的組成部分之一。殺毒引擎中的虛擬機(jī),和那些諸如VMWare的“虛擬機(jī)”是有區(qū)別的。

  其實(shí),對于虛擬機(jī),其設(shè)計(jì)思想是有淵源可尋的。VMWare作為原操作系統(tǒng)下的一個應(yīng)用程序,可以為運(yùn)行于其上的目標(biāo)操作系統(tǒng)創(chuàng)建出一部虛擬的機(jī)器,目標(biāo)操作系統(tǒng)就象運(yùn)行在單獨(dú)一臺真正機(jī)器上,絲毫察覺不到自己處于VMWare的控制之下。當(dāng)在VMWare中按下電源鍵(Power On)時,窗口里出現(xiàn)了機(jī)器自檢畫面,接著是操作系統(tǒng)的載入,一切都和一臺真正的計(jì)算機(jī)一樣。至于Win XP,則是采用區(qū)域內(nèi)存訪問,來實(shí)現(xiàn)對16位程序的支持。 VM是一個完全由軟件虛構(gòu)出來的東西,以和真實(shí)電腦完全相同的方式來對應(yīng)用程序所提出的需求進(jìn)行響應(yīng)。從某種角度來看,你可以將一部標(biāo)準(zhǔn)的PC的結(jié)構(gòu)視為一套 API。這套API的元素包括硬件I/O系統(tǒng),和以中斷為基礎(chǔ)的BIOS和MS-DOS。Win 9X常常以它自己的軟件,來代理這些傳統(tǒng)的API元素,以便能夠?qū)φ滟F的硬件多重發(fā)訊。在VM上運(yùn)行的應(yīng)用程序認(rèn)為自己獨(dú)占整個機(jī)器,它們相信自己是從真正的鍵盤和鼠標(biāo)獲得輸入,并從真正的屏幕上輸出。稍被加一點(diǎn)限制,它們甚至可以認(rèn)為自己完全擁有CPU和全部內(nèi)存。

  查毒引擎中的虛擬機(jī),并不是像VMWare的工作原理那樣,為待查的可執(zhí)行程序創(chuàng)建一個虛擬的執(zhí)行環(huán)境,提供它可能用到的一切元素,包括硬盤,端口等,讓它在其上自由發(fā)揮,最后根據(jù)其行為來判定是否為病毒。(當(dāng)然這是個不錯的構(gòu)想,但考慮到其設(shè)計(jì)難度過大,需模擬元素過多且行為分析要借助人工智能理論,因而只能作為以后發(fā)展的方向。)就目前而言,卡巴斯基在這方面做得還可以。而Mcafee的新產(chǎn)品中,則加入了一種緩沖區(qū)溢出保護(hù)技術(shù),本質(zhì)上其實(shí)也是一種虛擬技術(shù)。查毒引擎的虛擬機(jī)是一個軟件模擬的CPU,它可以象真正CPU一樣取值,譯碼,執(zhí)行,可以模擬一段代碼在真正CPU上運(yùn)行得到的結(jié)果。給定一組機(jī)器碼序列,虛擬機(jī)就會自動從中取出第一條指令操作碼部分,判斷操作碼類型和尋址方式以確定該指令長度,然后在相應(yīng)的函數(shù)中執(zhí)行該指令,并根據(jù)執(zhí)行后的結(jié)果確定下條指令的位置,如此循環(huán)反復(fù)直到某個特定情況發(fā)生以結(jié)束工作,這就是虛擬機(jī)的基本工作原理和簡單流程。

  設(shè)計(jì)虛擬機(jī)查毒的目的,就是為了對付加密變形病毒,虛擬機(jī)首先從文件中確定并讀取病毒入口處代碼,然后以上述工作步驟解釋執(zhí)行病毒頭部的解密段(Decryptor),最后在執(zhí)行完的結(jié)果(解密后的病毒體明文)中查找病毒的特征碼。這里所謂的“虛擬”,并非是指創(chuàng)建了什么虛擬環(huán)境,而是指染毒文件并沒有實(shí)際執(zhí)行,只不過是虛擬機(jī)模擬了其真實(shí)執(zhí)行時的效果。這就是虛擬機(jī)查毒基本原理。

  早期病毒沒有使用任何復(fù)雜的反檢測技術(shù),如果拿反匯編工具打開病毒體代碼,看到的將是真正的機(jī)器碼。因而可以由病毒體內(nèi)某處一段機(jī)器代碼和此處距離病毒入口(注意不是文件頭)偏移值,來唯一確定一種病毒。查毒時,只需簡單的確定病毒入口并在指定偏移處掃描特定代碼串。這種靜態(tài)掃描技術(shù)對付普通病毒是萬無一失的。

  隨著病毒技術(shù)的發(fā)展,出現(xiàn)了一類加密病毒。這類病毒的特點(diǎn)是:其入口處具有解密子(Decryptor),而病毒主體代碼被加了密。運(yùn)行時首先得到控制權(quán)的解密代碼將對病毒主體進(jìn)行循環(huán)解密,完成后將控制交給病毒主體運(yùn)行,病毒主體感染文件時會將解密子,用隨機(jī)密鑰加密過的病毒主體,和保存在病毒體內(nèi)或嵌入解密子中的密鑰一同寫入被感染文件。由于同一種病毒的不同傳染實(shí)例的病毒主體是用不同的密鑰進(jìn)行加密,因而不可能在其中找到唯一的一段代碼串和偏移來代表此病毒的特征,似乎靜態(tài)掃描技術(shù)對此即將失效。但是,因?yàn)椴煌瑐魅緦?shí)例的解密子仍保持不變機(jī)器碼明文,所以如果應(yīng)用特征碼查毒技術(shù),雖然有一定的誤報風(fēng)險(解密子中代碼缺少病毒特性,同樣的特征碼也會出現(xiàn)在正常程序中),但仍不失為一種有效的方法。

  由于加密病毒還沒有能夠完全逃脫靜態(tài)特征碼掃描,所以病毒寫作者在加密病毒的基礎(chǔ)之上進(jìn)行改進(jìn),使解密子的代碼對不同傳染實(shí)例呈現(xiàn)出多樣性,這就出現(xiàn)了加密變形病毒。它和加密病毒非常類似,唯一的改進(jìn)在于病毒主體在感染不同文件會構(gòu)造出一個功能相同但代碼不同的解密子,也就是不同傳染實(shí)例的解密子具有相同的解密功能但代碼卻截然不同。比如,原本一條指令完全可以拆成幾條來完成,中間可能會被插入無用的LJ代碼。這樣,由于無法找到不變的特征碼,靜態(tài)掃描技術(shù)就徹底失效了。在這種情況下,虛擬機(jī)技術(shù)將會派上用場。

  2、實(shí)時監(jiān)控

  實(shí)時監(jiān)控,其實(shí)并非什么新技術(shù),早在DOS時代就出現(xiàn)了。在Windows下要實(shí)現(xiàn)實(shí)時監(jiān)控決非易事,因?yàn)槠胀ㄓ脩魬B(tài)程序是不可能監(jiān)控系統(tǒng)的活動的,這也是出于系統(tǒng)安全的考慮。病毒實(shí)時監(jiān)控普遍使用了驅(qū)動編程技術(shù),讓工作于系統(tǒng)核心態(tài)的驅(qū)動程序去攔截所有的文件訪問。當(dāng)然由于工作系統(tǒng)的不同,驅(qū)動程序無論從結(jié)構(gòu)還是工作原理都不盡相同的,當(dāng)然程序?qū)懛ê途幾g環(huán)境更是千差萬別了。上面提到的病毒實(shí)時監(jiān)控,實(shí)質(zhì)就是對文件的監(jiān)控。除了文件監(jiān)控外,還有各種各樣的實(shí)時監(jiān)控工具,都具有各自不同的特點(diǎn)和功用,F(xiàn)在流行的網(wǎng)絡(luò)監(jiān)控,郵件監(jiān)控基本上是對文件監(jiān)控的改進(jìn),革命性的改動沒有。

  病毒實(shí)時監(jiān)控,其實(shí)就是一個文件監(jiān)視器。它會在文件打開,關(guān)閉,清除,寫入等操作時檢查文件是否是病毒攜帶者,如果是則根據(jù)用戶的決定選擇不同的處理方案,如清除病毒,禁止訪問該文件,刪除該文件或簡單地忽略。這樣就可以有效地避免病毒在本地機(jī)器上的感染傳播,因?yàn)榭蓤?zhí)行文件裝入器在裝入一個文件執(zhí)行時首先會要求打開該文件,而這個請求又一定會被實(shí)時監(jiān)控在第一時間截獲到,它確保了每次執(zhí)行的都是干凈的不帶毒的文件從而不給病毒以任何執(zhí)行和發(fā)作的機(jī)會。以上僅僅是病毒實(shí)時監(jiān)控的主要工作過程,設(shè)計(jì)上還存在以下幾個難點(diǎn)

  驅(qū)動程序的編寫不同于普通用戶態(tài)程序的寫作,難度很大。編寫用戶態(tài)程序時,你需要的僅僅就是調(diào)用一些熟知的API函數(shù)來完成特定目的,比如打開文件你只需調(diào)用CreateFile就可以了;但在驅(qū)動程序中,你將無法使用熟悉的CreateFile。在Win NT/2000下,你可以使用ZwCreateFile 或NtCreateFile(Native API),但這些函數(shù)通常會要求運(yùn)行在某個IRQL(中斷請求級)上,如果你對中斷請求級或延遲/異步過程調(diào)用中非分頁/分頁內(nèi)存的概念不清楚,那么你的驅(qū)動將很容易導(dǎo)致藍(lán)屏死機(jī)。Ring0下的異常,將往往導(dǎo)致系統(tǒng)崩潰,因?yàn)樗鼘τ谙到y(tǒng)總是被信任的,所以沒有相應(yīng)處理代碼去捕獲這個異常。在Win NT下對KeBugCheckEx的調(diào)用將導(dǎo)致藍(lán)屏的出現(xiàn),接著系統(tǒng)將進(jìn)行轉(zhuǎn)儲并隨后重啟。另外驅(qū)動程序的調(diào)試不如用戶態(tài)程序那樣方便,用象VC ++那樣的調(diào)試器是不行的,你必須使用系統(tǒng)級調(diào)試器,如SoftIce,KD,TRW等。

  現(xiàn)今國內(nèi)主要?dú)⒍炯夹g(shù):

  特征碼技術(shù):運(yùn)用程序中某一段或幾段64字節(jié)以下的代碼作為判別程序病毒的主要依據(jù),幾乎所有國內(nèi)殺毒軟件都在用。

  復(fù)合特征碼技術(shù):下面給圖, 因?yàn)楸救怂囆g(shù)細(xì)胞原因 所以點(diǎn)到為止,abcd 所有都在的情況下, 木馬可以被殺到,不管有幾個a 或者幾個b。

  虛擬機(jī)技術(shù):卡巴運(yùn)用的技術(shù),它表現(xiàn)在穿殼能力的強(qiáng)大

  行為查殺技術(shù):根據(jù)某些病毒會在計(jì)算機(jī)里面的行為作為依據(jù)(如在注冊表內(nèi)增加什么鍵值),滿足三個以上就視為木馬或病毒。

  啟發(fā)式殺毒技術(shù):運(yùn)用病毒特有的結(jié)構(gòu),來檢測病毒(如nod32)。

  國內(nèi)外部分殺毒軟件的特點(diǎn):

  金山:超級垃圾的殺毒軟件,花哨東西多得要死,實(shí)際殺毒功能卻屬于世界數(shù)一數(shù)二地弱,如果不想中木馬,你最好別裝。它甚至連木馬也殺不清。

  江民或KV:跟金山差不多,稍微比它好點(diǎn),但是也比較垃圾,它的技術(shù)都是買來經(jīng)過二次改造,沒什么特色。

  瑞星:個人認(rèn)為是國內(nèi)是國內(nèi)出的最強(qiáng)地殺毒,經(jīng)過分析,它有三套毒庫。

  瑞星的內(nèi)存殺毒我們也搞不清楚內(nèi)核機(jī)制,所以分析的只是現(xiàn)象:

  1、普通的木馬病毒(不常見的),瑞星不進(jìn)行內(nèi)存特征碼定義,文件免殺了內(nèi)存就免殺了

  2、瑞星的右鍵快捷查殺和運(yùn)行主程序查殺,效果不一樣,右鍵不殺不代表運(yùn)行主程序不殺,有些內(nèi)存殺的木馬病毒,修改了運(yùn)行主程序查殺的特征碼,內(nèi)存就免殺了。網(wǎng)絡(luò)泛濫的木馬病毒(如鴿子,密碼神通,廣外幽靈等),瑞星進(jìn)行內(nèi)存特征碼定義,通常是多區(qū)段特征碼定義,其中有些用免殺殼加密加花后,OD載入不殺,但運(yùn)行后被殺。這樣看來感覺瑞星象是3套特征碼定義,1是右鍵查殺,2是主程序運(yùn)行查殺,3是內(nèi)存查殺,我是這樣分類的

  針對上述現(xiàn)象,瑞星內(nèi)存免殺我們通常這樣做,OD分段定位,先NOP入口點(diǎn)區(qū)段,仍被殺則NOP其他區(qū)段,直到不殺,找出內(nèi)存特征碼進(jìn)行修改。(A B C代表的是病毒特征碼,括號()表示可能不存在。)

  關(guān)于OD加載入內(nèi)存不殺,運(yùn)行后被內(nèi)存查殺的問題:

  OD加載的和真正的運(yùn)行有區(qū)別,一些加殼的東西加了木馬OD載入不殺內(nèi)存,真正運(yùn)行了就被殺,說明真正運(yùn)行了內(nèi)存中會還原某些代碼,所以遇到加殼OD不殺,運(yùn)行被殺的情況,平時我們遇到的木馬,未加密加殼前在OD中是可以被殺和定位內(nèi)存特征碼的至于一種情況,如果木馬未做任何處理的時候,就是一個原始木馬,拿來OD載入不殺內(nèi)存,運(yùn)行了就殺,這種情況我沒遇到過,如果你遇到了無殼的出現(xiàn)這種情況,基本上就是被一個內(nèi)存免殺技術(shù)不過關(guān)的人修改過的,碰巧被你用了

  如果你在免殺過程中遇到了OD載入不殺,運(yùn)行內(nèi)存被殺的情況,請嘗試修改特征碼,而不是給它加花或加密,正確修改了內(nèi)存特征碼是可以完全內(nèi)存免殺的,瑞星不是用來實(shí)時監(jiān)控,是用來手動查殺內(nèi)存用的。

  諾頓:它查殺的是PE文件頭,就是那一串代碼,有一個加殼程序可以把它打亂,高技術(shù)的甚至可以把它整個移走以免殺。

  卡巴斯基:國內(nèi)外數(shù)一數(shù)二的殺毒軟件,曾獲世界第一的稱號。它的優(yōu)點(diǎn)就是穿殼能力墻(虛擬機(jī)技術(shù)),弱點(diǎn)是一見花指令就怕。免殺它一般是加花指令。

  NOD32:啟發(fā)式殺毒技術(shù),不再是單純的特征碼技術(shù),就是運(yùn)用一些木馬程序特有的結(jié)構(gòu)來判別是否木馬,但是缺點(diǎn)是解密能力差,免殺它通常加一個殼再加一個花。

  Ewido:一款非常不錯的殺木馬軟件,它的內(nèi)存查殺和瑞星一樣變態(tài),而且穿花能力強(qiáng),比起國內(nèi)木馬克星來說它不知道好多少倍。而且他加入了注冊表查殺,免殺它要先過內(nèi)存再加強(qiáng)殼

  運(yùn)用軟件進(jìn)行端口及進(jìn)程防御

  冰刃:用于查看隱藏端口,進(jìn)程,服務(wù)等,是一個非常好的安全工具。

  端口關(guān)聯(lián)查看器:看端口工具。

  木馬輔助查找器:灰鴿子工作室出品,用于監(jiān)視文件。

  Regmon注冊表監(jiān)視器:用來監(jiān)視注冊表。

  Filemon文件監(jiān)視器:用來查看文件調(diào)用的所有DLL。

  其實(shí)殺毒軟件是如何工作的并不重要,重要的是我們需要TA的存在,無規(guī)則不成方圓,但又規(guī)則并不一定就是好的,至少對于操作系統(tǒng)來說,殺毒軟件就是最大的病毒程序,但這只是相對而言。

標(biāo)簽 殺毒軟件

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨(dú)特見解

立即評論

以上留言僅代表用戶個人觀點(diǎn),不代表系統(tǒng)之家立場

其他版本軟件

人氣教程排行

相關(guān)系統(tǒng)推薦

官方交流群 軟件收錄