正文 第三章 剖析病毒(二)(1 / 3)

3.6計算機病毒的偵測方法及防治技術(程序員水平)

準確和有效地檢測計算機病毒是正確防治和消除計算機病毒的重要前提。一般來說,計算機病毒的發現和檢測是比較複雜的,需要用戶對計算機係統DOS有較深人的了解,我們這一節就從程序員的角度來探討一下計算機病毒的偵測及防治技術,我們將用到機器語言及其它軟硬件知識。如果您需要關於這些的係統知識,可以參考本叢書的其它分冊,如果您隻是一個初級電腦操作員,我們建議您跳過這一節,而直接閱讀後麵的一章關於實用殺毒軟件的使用。當您有時間的時候,再回過頭來看看本節,或許可以幫助你深人地了解計算機病毒。

3.6.1病毒的偵測方法

1.根據病毒的表現症狀判斷

雖然許多計算機病毒隱蔽得很巧妙,而且具有一定的潛伏期,但是被計算機病毒傳染後的係統,在裝入運行發作時會表現出某些標誌或特征,從這些表現特征我們就可以發現病毒的存在,甚至可以知道是何類病毒。

計算機係統傳染了引導區型的病毒後,係統引導的速度會明顯地減慢,啟動時間增長。經常操作係統的人能很敏銳地發現這一點。

計算機係統傳染了文件型的病毒後,在執行文件時,可能導致文件長度增加,可用檢查;同時,計算機係統的讀寫時間加長,這是由於病毒傳染程序占用這段時間的緣故。

某些病毒在滿足條件時會突然發作來表現自己。

2.從中斷向量表檢測病毒

病毒程序的核心在於修改中斷向量表。病毒能夠傳染、表現或破壞,其關鍵常常在於傳染病毒的係統在自舉啟動初始化過程中,或執行染毒的文件時,修改了中斷向量表中的某些指針,使其指向病毒的傳染或表現程序,實現對中斷向量的截用。

所以通過比較被檢測係統與沒有傳染病毒係統的中斷向量表的方法,總是可以發現係統中病毒,且準確率很高。如果想要查明病毒的種類,還需要對病毒進行檢測。

3.從內存容量值的變化檢測病毒

無論是引導區型病毒,還是文件型病毒,隻要病毒完成其傳染和發作的目的,一般都要遇到如何繞過正常途徑進入內存的問題,同時還要不被DOS發現而完全地潛盡在內存中,以伺機進行傳染和破壞。

傳染引導區的病毒通常是通過減少BIOS單元的0040:0013的內容來侵入和潛伏在內存高端的。而隨後的INT12H中斷相DOS又是完全依據此單元來得出機器內存的大小的。這樣係統就無法知道病毒已占據了內存,從而使病毒被“保護”起來。根據傳染引導區病毒這一特點,我們可以像係統自檢時一樣,通過直接讀取端口,計算出機器內存的真正大小,將此值與0640:0013單元中的值比較,如果不一致,則可以肯定有傳染引導區的病毒進入了計算機係統。

DOS的命令處理文件COMMAND裝入內存後,有一部分駐留在可用內存的最高端,傳染引導區的病毒也是占用內存的最高端,但是由於傳染引導區的病毒比DOS先進入內存,這樣,如果病毒沒有使用欺騙性手段,就可以用DOS功能檢查出病毒感染後係統的可用內存值比係統加電自檢時的內存值的減少。

4.根據磁盤引導區的內容來發現病毒

傳染引導區的病毒都是利用病毒的引導程序來代替DOS的引導程序,從而使病毒程序自身能在係統啟動後自動裝人內存的。因此我們通過比較磁盤引導區的內容發現傳染引導區病毒的存在。

傳染磁盤引導區的病毒還可有傳染硬盤主引導區病毒,傳染DOS的BOOT區的病毒,以及傳染硬盤主引導區和軟盤BOOT病毒等等。因此,可通過檢測硬盤的主引導區,硬盤的DOS區的BOOT區或軟盤的已DOS區,發現不同的傳染引導區的病毒。

引導區被感染的軟盤,一般使用如PCTOOLS命令裝入與0命令顯示或7001.5中的命令就可以看到引導扇區的內容。

傳染硬盤主引導扇區的病毒,如大麻病毒,由於硬盤的主引導扇區是隱含扇區,不能用INT25H和INT26H來讀出,所以不能用如PCTOOLS來讀出,而需要編寫一段彙編語言程調用INT13H實用程序來查看隱含扇區的內容。

有的病毒具有反檢測功能,如巴基斯坦智囊病毒的引導扇區隱藏得非常巧妙。在病毒係統之下無論用,顯示出來的引導區的內容與正常引導區的內容完全一樣。這是由於該病毒的反檢測功能,該病毒在已進入內存條件下,如果發現係統正在讀出磁盤的引導扇區,則病毒程序修改轉向被存儲的正常的DOS引導扇區,從而迷惑用戶,隱蔽自己。因此檢測病毒時,必須在正常的係統下,再用PCTOOLS命令裝人,命令顯示磁盤引導區或中2此命令,才能顯示已被病毒傳染的引導區。

5.根據磁盤上的“壞簇”標記檢測病毒

目前,在我國發現的傳染引導區的病毒,其長度一般在0.5K到0.7K之間。這樣,僅引導扇區就放不下整個病毒程序。因此,一般傳染引導區的病毒程序都分為兩部分。第一部分放在磁盤的引導扇區中,而第二部分加上原引導程序放在磁盤中一個簇或連續的幾個簇中。

磁盤中被使用的簇必須在文件分配表(FAT)中進行登記。否則其它文件需要磁盤空間時就會覆蓋掉原來的信息。當病毒將自身程序的一部分和原正常引導程序放到磁盤中某些簇空間的同時,在FAT表中對應項上就做上壞簇的記號“FF7”,使得係統不再分配使用這些簇空間,從而使得這些病毒得以駐留在磁盤上。

巴基斯坦智囊病毒和磁盤殺手病毒在磁盤上把連續幾個簇設置為壞簇,小球病毒在FAT表中設置一個壞簇標記。

如果我們在FAT表上發現不應該有的壞簇標誌,可以先計算出它的邏輯扇區號5,檢測該扇區及相應扇區的內容,就可以檢查出病毒的蹤跡或確認病毒的類型。

6.根據可執行文件長度的變化檢測病毒

傳染文件型的病毒,在微機病毒中占絕大多數。因此檢測和防治這類病毒已成為防治計算機病毒工作的重點。

傳染文件型病毒是以磁盤中的可執行文件如擴展名為.COM或.EXE等文件為寄生宿主的。這種類型的病毒將病毒程序自身附加到可執行程序上以隱蔽自己,同時在可執行程序被執行時,將病毒引導入係統內存。因此,被病毒傳染的可執行文件的長度均要增加相應的字節。我們可以從係統中可執行文件長度的變化檢測到傳染文件型病毒的存在。

例如,黑色星期五病毒傳染係統中的擴展名為.COM和的可執行文件。對於.COM文件,黑色星期五病毒隻傳染一次。這樣,被該病毒傳染的.COM文件增加約1.8K字節。對於.EXE文件,黑色星期五病毒會重複感染,每執行一次,該文件就增長1.8K字節,文件會越變越大,以至係統無法執行。