天天看點

病毒特征碼

MD5以及CRC32這樣的算法

 1、計算校驗和

       這種方法的特點是簡單快速,也是我們之前的專殺工具所采用的方式。但是采用這種方法,一種特征碼隻能比對一個病毒,即便病毒的變動很小,也需要重新提取特征碼,這造成的後果是會使得特征碼庫過于龐大,一般用于臨時提取特征碼。是以這種計算校驗和的方式不是我們讨論的重點。

 2、提取特征字元串

       病毒檔案中總會存在一些可供識别的字元串,很多時候,這些字元串是某個病毒所特有的,是以這種方式适用于所有病毒的特征碼的提取。采用這種方式甚至還能識别某一大類病毒,但是缺點是需要耗費比較多的掃描時間。以我們之前讨論過的“熊貓燒香”病毒為例,經過我們之前的逆向分析可以知道,病毒最開始會使用“xboy”以及“whboy”這兩個字元串來進行解密的操作。比如我們嘗試一下,在病毒程式的二進制代碼中搜尋“whboy”:

       相信一般的程式中不會出現“whboy”以及“xboy”這兩段字元,是以就可以考慮将這兩個字元串或者其中的一個字元串作為“熊貓燒香”病毒的特征碼。這樣隻要對目标程式中的可列印字元串進行檢索,如果發現了“whboy”就可以認為目标程式是“熊貓燒香”病毒程式。這樣即便是病毒出現了變種,隻要它依舊包含有“whboy”,我們就依然能夠實作清除的工作。或者我們也可以考慮使用更長的字元串,比如上圖中開始的那32個位元組,即“***武*漢*男*生*感*染*下*載*者***”,将其十六進制代碼提取出來作為特征碼,也是可以的。那麼我就将這段字元串作為“熊貓燒香”的特征碼。

       3、提取特征反彙編代碼

       病毒的反彙編代碼往往都會有一些比較有特色的地方,那麼我們就可以将這些反彙編代碼的十六進制數值提取出來作為特征碼,以唯一的辨別該病毒。當然在實際的工作中,對于同一個病毒而言,為了保險起見,特征碼可能會選擇多處,既有字元串,又有反彙編代碼,進而保證檢測的準确性。

       4、兩段檢驗和形式

       這種方式包含兩段病毒檔案特殊位置的資料,該資料能夠代表該病毒的特性。我們将這兩段資料的校驗和計算出來。那麼在檢測掃描目标程式時,先計算目标檔案在該位置處的校驗和的值,通過判斷是否符合相應的特征碼來判定目标程式是否為病毒程式。這種方法的準确率高,耗時也比較少。很多時候能夠利用一個特征碼檢測出同一類的病毒。

       病毒特征碼隻是一種檢測的方式,隻能夠防患于未然。如果說計算機已經中了病毒,那麼就算我們擁有該病毒的特征碼,至多隻能将病毒從計算機中删除,而無法修複該病毒對計算機造成的危害。另外,現在有些軟體能夠實作對病毒特征碼的定位,也就是能夠将病毒程式分為幾個部分,然後使用防毒軟體對這些部分進行清除,哪部分報毒,就說明特征碼在哪部分中,然後再不斷地進行細分,再用殺軟進行檢測,最終确定特征碼的具體位置。而找到特征碼後,就可以修改特征碼,進而實作針對于某一款或某幾款防毒軟體的免殺。