特征碼選取的基本方法
MD5以及CRC32這樣的算法
1、計算校驗和
這種方法的特點是簡單快速,也是我們之前的專殺工具所采用的方式。但是采用這種方法,一種特征碼只能匹配一個病毒,即便病毒的變動很小,也需要重新提取特征碼,這造成的后果是會使得特征碼庫過於龐大,一般用於臨時提取特征碼。所以這種計算校驗和的方式不是我們討論的重點。
2、提取特征字符串
病毒文件中總會存在一些可供識別的字符串,很多時候,這些字符串是某個病毒所特有的,因此這種方式適用於所有病毒的特征碼的提取。采用這種方式甚至還能識別某一大類病毒,但是缺點是需要耗費比較多的掃描時間。以我們之前討論過的“熊貓燒香”病毒為例,經過我們之前的逆向分析可以知道,病毒最開始會使用“xboy”以及“whboy”這兩個字符串來進行解密的操作。比如我們嘗試一下,在病毒程序的二進制代碼中搜索“whboy”:
相信一般的程序中不會出現“whboy”以及“xboy”這兩段字符,因此就可以考慮將這兩個字符串或者其中的一個字符串作為“熊貓燒香”病毒的特征碼。這樣只要對目標程序中的可打印字符串進行檢索,如果發現了“whboy”就可以認為目標程序是“熊貓燒香”病毒程序。這樣即便是病毒出現了變種,只要它依舊包含有“whboy”,我們就依然能夠實現查殺的工作。或者我們也可以考慮使用更長的字符串,比如上圖中開始的那32個字節,即“***武*漢*男*生*感*染*下*載*者***”,將其十六進制代碼提取出來作為特征碼,也是可以的。那么我就將這段字符串作為“熊貓燒香”的特征碼。
3、提取特征反匯編代碼
病毒的反匯編代碼往往都會有一些比較有特色的地方,那么我們就可以將這些反匯編代碼的十六進制數值提取出來作為特征碼,以唯一的標識該病毒。當然在實際的工作中,對於同一個病毒而言,為了保險起見,特征碼可能會選擇多處,既有字符串,又有反匯編代碼,從而保證檢測的准確性。
4、兩段檢驗和形式
這種方式包含兩段病毒文件特殊位置的數據,該數據能夠代表該病毒的特性。我們將這兩段數據的校驗和計算出來。那么在檢測掃描目標程序時,先計算目標文件在該位置處的校驗和的值,通過判斷是否符合相應的特征碼來判定目標程序是否為病毒程序。這種方法的准確率高,耗時也比較少。很多時候能夠利用一個特征碼檢測出同一類的病毒。
特征碼檢測的不足
病毒特征碼只是一種檢測的方式,只能夠防患於未然。如果說計算機已經中了病毒,那么就算我們擁有該病毒的特征碼,至多只能將病毒從計算機中刪除,而無法修復該病毒對計算機造成的危害。另外,現在有些軟件能夠實現對病毒特征碼的定位,也就是能夠將病毒程序分為幾個部分,然后使用殺毒軟件對這些部分進行查殺,哪部分報毒,就說明特征碼在哪部分中,然后再不斷地進行細分,再用殺軟進行檢測,最終確定特征碼的具體位置。而找到特征碼后,就可以修改特征碼,從而實現針對於某一款或某幾款殺毒軟件的免殺。