卡巴斯基(AVP)內(nèi)存駐留型病毒檢測方法
更新時間:2007年01月16日 00:00:00 作者:
author:killer <killer②uid0.net>
卡巴斯基反病毒軟件(Kaspersky Antivirus),以前叫AntiViral Toolkit Pro(AVP),出于習(xí)慣和簡單,這里一律稱為AVP或KAV。
學(xué)習(xí)AVP的檢測辦法的意義一方面在于AVP的檢測方法是經(jīng)過理論驗證和實踐考驗的科學(xué)合理的方法,另外DOS年代過來的朋友對于反病毒有過這樣的經(jīng)驗:“機子感染病毒了?好,請用干凈無毒的系統(tǒng)盤啟動,然后全盤查殺?!保矣浀肅IH橫行那會,一個朋友讓我?guī)退宄《?,說病毒是國內(nèi)某知名AV報的,啟動該AV殺了一遍還有,而且該AV自己的監(jiān)控報自己也感染了CIH,我聽了后告訴他用干凈的啟動盤啟動系統(tǒng)全盤查殺。雖然這是一個辦法,但事實上反病毒軟件為什么不直接做到可以內(nèi)存檢測并清除病毒呢。而這是完全可以做到的,對于內(nèi)存檢測/清除駐留型病毒的方法,就我所知最早AVP開始使用。
一、檢測方法:
在AVP病毒庫中,有幾種特征記錄,其中一種是內(nèi)存特征,這是AVP用來檢測查殺內(nèi)存駐留型病毒的特征集,AVP對內(nèi)存駐留的感染式病毒采用了一些單獨的檢測方法。
AVP通過在病毒庫中記錄的掃描方法和地址偏移來掃描內(nèi)存中駐留的感染式病毒,從地址偏移開始進(jìn)行逐字節(jié)匹配,當(dāng)匹配到匹配字節(jié)的時候,即:Segm:Offset + byte offset = record:Byte,然后AVP開始計算由庫記錄指定長度的特征碼,如果恰好匹配庫中的記錄的話,將顯示對應(yīng)的病毒消息,同時根據(jù)庫的修復(fù)記錄所指定的修復(fù)長度、和修復(fù)字節(jié)中的內(nèi)容,進(jìn)行內(nèi)存修復(fù),確保修復(fù)后,使得原病毒失去活性。
此記錄結(jié)構(gòu)包含的字段主要有:
病毒名
搜索方法:絕對地址掃描、專用模塊...
地址偏移: 段+偏移
匹配字節(jié)
特征長度
特征
專用處理過程:Obj_Link
處理偏移地址
處理字節(jié)長度:一般小于10
修復(fù)字節(jié)
二、搜索方法:
有上面可以看出,AVP能否保證快速處理,一個關(guān)鍵因素是AVP的搜索方法,事實上,AVP內(nèi)置了眾多的搜索辦法,這些辦法適用于MSDOS、WIN9X、WINNT/2000/XP等系統(tǒng)。AVP對一個病毒的處理可以采用多種內(nèi)存搜索辦法,所不同的是哪種方法高效一些而已。
1、絕對地址:
AVP采用絕對地址的掃描辦法來掃描一些病毒,掃描器從庫記錄中讀出相應(yīng)的地址記錄,到內(nèi)存中進(jìn)行匹配,匹配上后,進(jìn)行修復(fù)處理過程。
2、段掃描:
AVP從一個內(nèi)存段,單字節(jié)循環(huán)遞增,從開始掃描到段結(jié)束。
3、全部掃描:
AVP從內(nèi)存地址0x00000000h開始,循環(huán)遞增,進(jìn)行全內(nèi)存匹配的掃描方法。
4、專用模塊:
這是針對一些特定的“狡猾”病毒的方法。當(dāng)AVP自己定義的正常掃描和檢測辦法無法正確識別的時候,采用一個專用的處理模塊來檢測清除該病毒,該模塊編寫完成后,編譯為obj格式的文件,存儲在AVP的庫記錄中。
5、中斷跟蹤:
這主要是AVP For DOS的掃描方法,通過對系統(tǒng)的中斷INT21、INT13的來定位駐留內(nèi)存的病毒代碼,通過對這些指令附近的代碼修改,使得病毒失去活性。
三、實例:
簡單舉例,比如這個病毒(網(wǎng)上找的一個感染COM文件的代碼片段):
cmp ah,3dh
jz short @@Infect_File ;截獲3d號Dos功能
@@JmpOldInt21:
cli
JmpFar db 0eah
@@Infect_File:
....
編譯后應(yīng)該是這個樣子:
13B6:0100 80FC 3D CMP AH,3Dh
13B6:0104 74 xx JE Infect_File
13B6:0107 FA CLI
13B6:0108 xx xx XXX
對于這個病毒的檢測和清除,我們生成一記錄,這個病毒記錄在AVP庫record中,可以是這種形式,它完全可以檢測和解除該病毒的活性:
搜索方法:中斷跟蹤
地址偏移:1000:0000
匹配字節(jié):80FC
特征長度:6
特征:xxxxxxxx
專用處理過程:NULL
處理偏移地址:3
處理字節(jié)長度:2
修復(fù)字節(jié):90 90
通過這樣一個檢測、修復(fù)庫記錄,AVP就可以檢測和修復(fù)內(nèi)存中駐留的活性病毒,然后在通過單獨的文件病毒檢測/修復(fù)等處理過程來全面清除磁盤文件中的病毒。
本文是我的(Avp Reverse Engineering)AVP逆向?qū)W習(xí)系列一節(jié),所分析的方法在不同版本中略有不同,而基于AVP的良好架構(gòu),這些改變主要體現(xiàn)的處理方法的增刪,和結(jié)構(gòu)長度變化。
歡迎交流、指點。
卡巴斯基反病毒軟件(Kaspersky Antivirus),以前叫AntiViral Toolkit Pro(AVP),出于習(xí)慣和簡單,這里一律稱為AVP或KAV。
學(xué)習(xí)AVP的檢測辦法的意義一方面在于AVP的檢測方法是經(jīng)過理論驗證和實踐考驗的科學(xué)合理的方法,另外DOS年代過來的朋友對于反病毒有過這樣的經(jīng)驗:“機子感染病毒了?好,請用干凈無毒的系統(tǒng)盤啟動,然后全盤查殺?!保矣浀肅IH橫行那會,一個朋友讓我?guī)退宄《?,說病毒是國內(nèi)某知名AV報的,啟動該AV殺了一遍還有,而且該AV自己的監(jiān)控報自己也感染了CIH,我聽了后告訴他用干凈的啟動盤啟動系統(tǒng)全盤查殺。雖然這是一個辦法,但事實上反病毒軟件為什么不直接做到可以內(nèi)存檢測并清除病毒呢。而這是完全可以做到的,對于內(nèi)存檢測/清除駐留型病毒的方法,就我所知最早AVP開始使用。
一、檢測方法:
在AVP病毒庫中,有幾種特征記錄,其中一種是內(nèi)存特征,這是AVP用來檢測查殺內(nèi)存駐留型病毒的特征集,AVP對內(nèi)存駐留的感染式病毒采用了一些單獨的檢測方法。
AVP通過在病毒庫中記錄的掃描方法和地址偏移來掃描內(nèi)存中駐留的感染式病毒,從地址偏移開始進(jìn)行逐字節(jié)匹配,當(dāng)匹配到匹配字節(jié)的時候,即:Segm:Offset + byte offset = record:Byte,然后AVP開始計算由庫記錄指定長度的特征碼,如果恰好匹配庫中的記錄的話,將顯示對應(yīng)的病毒消息,同時根據(jù)庫的修復(fù)記錄所指定的修復(fù)長度、和修復(fù)字節(jié)中的內(nèi)容,進(jìn)行內(nèi)存修復(fù),確保修復(fù)后,使得原病毒失去活性。
此記錄結(jié)構(gòu)包含的字段主要有:
病毒名
搜索方法:絕對地址掃描、專用模塊...
地址偏移: 段+偏移
匹配字節(jié)
特征長度
特征
專用處理過程:Obj_Link
處理偏移地址
處理字節(jié)長度:一般小于10
修復(fù)字節(jié)
二、搜索方法:
有上面可以看出,AVP能否保證快速處理,一個關(guān)鍵因素是AVP的搜索方法,事實上,AVP內(nèi)置了眾多的搜索辦法,這些辦法適用于MSDOS、WIN9X、WINNT/2000/XP等系統(tǒng)。AVP對一個病毒的處理可以采用多種內(nèi)存搜索辦法,所不同的是哪種方法高效一些而已。
1、絕對地址:
AVP采用絕對地址的掃描辦法來掃描一些病毒,掃描器從庫記錄中讀出相應(yīng)的地址記錄,到內(nèi)存中進(jìn)行匹配,匹配上后,進(jìn)行修復(fù)處理過程。
2、段掃描:
AVP從一個內(nèi)存段,單字節(jié)循環(huán)遞增,從開始掃描到段結(jié)束。
3、全部掃描:
AVP從內(nèi)存地址0x00000000h開始,循環(huán)遞增,進(jìn)行全內(nèi)存匹配的掃描方法。
4、專用模塊:
這是針對一些特定的“狡猾”病毒的方法。當(dāng)AVP自己定義的正常掃描和檢測辦法無法正確識別的時候,采用一個專用的處理模塊來檢測清除該病毒,該模塊編寫完成后,編譯為obj格式的文件,存儲在AVP的庫記錄中。
5、中斷跟蹤:
這主要是AVP For DOS的掃描方法,通過對系統(tǒng)的中斷INT21、INT13的來定位駐留內(nèi)存的病毒代碼,通過對這些指令附近的代碼修改,使得病毒失去活性。
三、實例:
簡單舉例,比如這個病毒(網(wǎng)上找的一個感染COM文件的代碼片段):
cmp ah,3dh
jz short @@Infect_File ;截獲3d號Dos功能
@@JmpOldInt21:
cli
JmpFar db 0eah
@@Infect_File:
....
編譯后應(yīng)該是這個樣子:
13B6:0100 80FC 3D CMP AH,3Dh
13B6:0104 74 xx JE Infect_File
13B6:0107 FA CLI
13B6:0108 xx xx XXX
對于這個病毒的檢測和清除,我們生成一記錄,這個病毒記錄在AVP庫record中,可以是這種形式,它完全可以檢測和解除該病毒的活性:
搜索方法:中斷跟蹤
地址偏移:1000:0000
匹配字節(jié):80FC
特征長度:6
特征:xxxxxxxx
專用處理過程:NULL
處理偏移地址:3
處理字節(jié)長度:2
修復(fù)字節(jié):90 90
通過這樣一個檢測、修復(fù)庫記錄,AVP就可以檢測和修復(fù)內(nèi)存中駐留的活性病毒,然后在通過單獨的文件病毒檢測/修復(fù)等處理過程來全面清除磁盤文件中的病毒。
本文是我的(Avp Reverse Engineering)AVP逆向?qū)W習(xí)系列一節(jié),所分析的方法在不同版本中略有不同,而基于AVP的良好架構(gòu),這些改變主要體現(xiàn)的處理方法的增刪,和結(jié)構(gòu)長度變化。
歡迎交流、指點。
相關(guān)文章
揭露88red生成htm靜態(tài)頁面企業(yè)建站系統(tǒng)漏洞
88red生成htm靜態(tài)頁面企業(yè)建站系統(tǒng)后門利用代碼,用88red做企業(yè)占的朋友可要注意了2008-05-05