卡巴斯基(AVP)記憶體駐停留型病毒檢測方法
卡巴斯基反病毒軟體(Kaspersky Antivirus),以前叫AntiViral Toolkit Pro(AVP),出於習慣和簡單,這裡一律稱為AVP或KAV。
教學AVP的檢測辦法的意義一方面在於AVP的檢測方法是經過理論驗證和實踐考驗的科學合理的方法,另外DOS年代過來的朋友對於反病毒有過這樣的經驗:「電腦感染病毒了?好,請用乾淨無毒的系統碟啟動,然後全盤查殺。」,我記得CIH橫行那會,一個朋友讓我幫他清除病毒,說病毒是國內某知名AV報的,啟動該AV殺了一遍還有,而且該AV自己的監控報自己也感染了CIH,我聽了後告訴他用乾淨的啟動碟啟動系統全盤查殺。雖然這是一個辦法,但事實上反病毒軟體為什麼不直接做到可以記憶體檢測並清除病毒呢。而這是完全可以做到的,對於記憶體檢測/清除駐停留型病毒的方法,就我所知最早AVP開始使用。
一、檢測方法:
在AVP病毒庫中,有幾種特徵記錄,其中一種是記憶體特徵,這是AVP用來檢測查殺記憶體駐停留型病毒的特徵集,AVP對記憶體駐停留的感染式病毒採用了一些單獨的檢測方法。
AVP通過在病毒庫中記錄的掃瞄方法和位址偏移來掃瞄記憶體中駐停留的感染式病毒,從位址偏移開始進行逐字元匹配,當匹配到匹配字元的時候,即:Segm:Offset + byte offset = record:Byte,然後AVP開始計算由庫記錄指定長度的特徵碼,如果恰好匹配庫中的記錄的話,將顯示對應的病毒消息,同時根據庫的修復記錄所指定的修復長度、和修復字元中的內容,進行記憶體修復,確保修復後,使得原病毒失去活性。
此記錄結構包含的字段主要有:
病毒名
搜尋方法:絕對位址掃瞄、專用模組...
位址偏移: 段+偏移
匹配字元
特徵長度
特徵
專用處理程序:Obj_Link
處理偏移位址
處理字元長度:一般小於10
修復字元
二、搜尋方法:
有上面可以看出,AVP能否保證快速處理,一個關鍵因素是AVP的搜尋方法,事實上,AVP內裝了眾多的搜尋辦法,這些辦法適用於MSDOS、WIN9X、WINNT/2000/XP等系統。AVP對一個病毒的處理可以採用多種記憶體搜尋辦法,所不同的是哪種方法高效一些而已。
1、絕對位址:
AVP採用絕對位址的掃瞄辦法來掃瞄一些病毒,掃瞄器從庫記錄中讀出相應的位址記錄,到記憶體中進行匹配,匹配上後,進行修復處理程序。
2、段掃瞄:
AVP從一個記憶體段,單字元循環遞增,從開始掃瞄到段結束。
3、全部掃瞄:
AVP從記憶體位址0x00000000h開始,循環遞增,進行全記憶體匹配的掃瞄方法。
4、專用模組:
這是針對一些特定的「狡猾」病毒的方法。當AVP自己定義的正常掃瞄和檢測辦法無法正確識別的時候,採用一個專用的處理模組來檢測清除該病毒,該模組編寫完成後,編譯為obj格式的文件,儲存於在AVP的庫記錄中。
5、中斷跟蹤:
這主要是AVP For DOS的掃瞄方法,通過對系統的中斷INT21、INT13的來定位駐停留記憶體的病毒程式碼,通過對這些指令附近的程式碼修改,使得病毒失去活性。
三、實例:
簡單舉例,比如這個病毒(網上找的一個感染COM文件的程式碼片段):
cmp ah,3dh
jz short @@Infect_File ;截獲3d號Dos功能
@@JmpOldInt21:
cli
JmpFar db 0eah
@@Infect_File:
....
編譯後應該是這個樣子:
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
匹配字元:80FC
特徵長度:6
特徵:xxxxxxxx
專用處理程序:NULL
處理偏移位址:3
處理字元長度:2
修復字元:90 90
通過這樣一個檢測、修復庫記錄,AVP就可以檢測和修復記憶體中駐停留的活性病毒,然後在通過單獨的文件病毒檢測/修復等處理程序來全面清除磁牒文件中的病毒。
|