對曾中過電腦病毒的朋友,都知道電腦病毒是什麼樣子。例如是檔案的長度和日期忽然改變,系統執行速度下降或出現一些奇怪的訊息或者無故當機,嚴重的是硬碟被重新格式化。電腦病毒如前文所說的那麼神通廣大,那麼我們常用的防毒軟件是如何去發現它們的呢?他們就是利用所謂的病毒碼(Virus
Pattern)。
所謂的病毒碼其實可以想像成是犯人的指紋,
當防毒軟體公司收集到一隻新的病毒時,
他們就會從這個病毒程式中截取一小段獨一無二而且足以表示這隻病毒的二進位程式碼
(Binary Code) , 來當做掃毒程式辨認此病毒的依據,
而這段獨一無二的二進位程式碼就是所謂的病毒碼。
在電腦中所有可以執行的程式(如 *.EXE,*.COM)
幾乎都是由二進位程式碼所組成, 也就是電腦的最基本語言--
機械碼。就連當紅的文件巨集病毒, 雖然它只是包含在Word文件檔案中的巨集,
可是它的巨集程式也是以二進位碼的方式存在於Word文件檔中。
防毒軟體常使用的病毒測試技術:
病毒碼掃描法
將新發現的病毒加以分析後,
根據其特徵, 編成病毒碼, 加入資料庫中。以後每當執行掃毒程式時,
便能立刻掃描程式檔案, 並作病毒碼比對,
即能偵測到是否有病毒。病毒碼掃描法又快又有效率(
例如趨勢科技的PC-cillin及Server Protect, 利用深層掃描技術,
在即時掃瞄各個或大或小的檔案時,平均只需1/20秒的時間),
大多數防毒軟體均採用這種方式,
但其缺點是無法偵測到未知的新病毒及以變種病毒。
加總比對法 (Check-sum)
根據每個程式的檔案名稱、大小、時間、日期及內容,
加總為一個檢查碼, 再將檢查碼附於程式的後面,
或是將所有檢查碼放在同一個資料庫中, 再利用此Check-sum系統,
追蹤並記錄每個程式的檢查碼是否遭更改,
以判斷是否中毒。一個很簡單的例子就是, 當您把車停下來之後,
將里程表的數字寫下來。那麼下次您再開車時,
只要比對一下里程表的數字,
那麼您就可以斷定是否有人偷開了您的車子。這種技術可偵測到各式的病毒,
但最大的缺點就是誤判斷高,
且無法確認是哪種病毒感染的。對於隱形飛機式病毒,
亦無法偵測到。
人工智慧陷阱(Rule-based)
人工智慧陷阱是一種監測電腦行為的常駐式掃描技術。它將所有病毒所產生的行為歸納起來,
一旦發現記憶體的程式有任何不當的行為, 系統就會有所警覺,
並告知使用。這種技術的優點是執行速度快、手續簡便,
且可以偵測到各式病毒;其缺點就是程式設計難,
且不容易考慮週全。不過在這千變萬化的病毒世界中,
人工智慧陷阱掃描技術是一個至少具有保全功能的新觀點。目前趨勢科技的PC-Cillin,
就對病毒的可疑行為設下了將近12道的陷阱,
以達到預防重於治療的目標。
軟體模擬掃描法
軟體模擬技術專門用來對付千面人病毒(Polymorphic
/Mutation Virus)。千面人病毒在每次傳染時,
都以不同的隨機亂數加密於每個中毒的檔案中,
傳統病毒碼比對的方式根本就無法找到這種病毒。軟體模擬技術則是成功地模擬CPU執行,
在其設計的DOS虛擬機器(Virtual Machine)下假執行病毒的變體引擎解碼程式,
安全並確實地將多型體病毒解開,使其顯露原本的面目, 再加以掃描。
VICE ( Virus Instruction Code Emulation) - 先知掃描法
VICE先知掃描技術是繼軟體模擬後的一大技術上突破。既然軟體模擬可以建立一個保護模式下的DOS虛擬機器,
模擬CPU動作並假執行程式以解開變體引擎病毒,
那麼應用類似的技術也可以用來分析一般程式檢查可疑的病毒碼。因此VICE將工程師用來判斷程式是否有病毒碼存在的方法,
分析歸納成專家系統知識庫, 再利用軟體工程的模擬技術(Software
Emulation)假執行新的病毒, 則可分析出新病毒碼對付以後的病毒。
即時的I/O掃描(Realtime I/O Scan)
Realtime I/O Scan的目的在於即時地對資料的輸入/輸出動作做病毒碼比對的動作,
希望能夠在病毒尚未被執行之前, 就能夠防堵下來。理論上,
這樣的即時掃描程式雖然會影響到整體的資料傳輸速率, 但是使用Realtime
I/O scan, 檔案傳送進來之後, 就等於掃過了一次毒, 整體來說,
是沒有什麼差別的。
文件巨集病毒陷阱(MacroTrapTM)
MacroTrapTM
是結合了病毒碼比對與人工智慧陷阱的技術,依病毒行為模式(Rule base)
來偵測已知及未知的巨集病毒。其中,配合OLE2技術,可將巨集與文件分開,使得掃描速度變得飛快,而且更可有效地將巨集病毒徹底清除!
|