AntiEXE.A – 迷失目標?

Derek Karpinski

顧問 : Anderson

B85506043 賴勝華

B85506050 江至軒

當我開完嚴密的VB會議從Jersey島返回時,我所面對的是三張被許多啟動磁區病毒所感染的磁片包括了QuoxNYBNewZealand.I。還有一個一開始以為是很多個病毒的病毒:其實AntiEXENewbugD3CMOS4…都是指同一個病毒,還有其他的化名嗎?

當一個病毒有這麼多的化名時就容易造成混淆的問題:不知道防毒軟販賣商和研究病毒的學者可不可以開一個統一命名大會? 無疑地,一個病毒馬上在世界上出現它的蹤跡多少有些困難,但眾多化名只會使它在真實世界中變得更令人混淆! 現在就讓我來談談在這些磁片中的一個病毒我是用它AntiEXE.A這化名。

這個病毒它有基本的隱形能力,並且感染硬碟的主要啟動磁區(MBS)。在英國及中國大陸都有它的相關報導。容易發現和移除外,這個生物有一項有趣的特徵,那就是它的程式碼只找尋符合特殊條件的EXE檔當作感染的目標。最有趣的是我也不知道哪些EXE檔合它的口味容後再述。現在,讓我來剖析這個小怪物並且看它是如何活動的。

 

Action on Booting(啟動時的行為)

BIOS把受到感染的啟動磁區給載入到記憶體位置0000:7C00h。此病毒撿查中斷向量表並修改一個不常用到的HANDLER INT D3h(是從ROM BASIC直譯器所分離出來的),然後指向原來的13h號呼叫 – DEVICE SERVICE ROUTINE (DSR)

病毒造出一個堆疊供自己使用,沿襲以前病毒的傳統手法,把開機後DOS可用的記憶體減去1K ,它安置一個替代的INT 13h DSR去完成這個工作並把自己拷貝到一塊會被DOS所隱藏的記憶體中,首先病毒感染了主要啟動磁區,以相同的手法從記憶體裡面減掉2K做為己用,__也許藉由一個較完整的數字去減少被懷疑是病毒的可能性。

一旦病毒常駐以後原來的啟動磁區被讀入記憶體位置0000:7C00h。對一個硬碟來說它將會被存在第0磁軌第13磁區,第0面。假使從一個已經受感染的硬碟開機的話,控制權會被轉移到原來的啟動磁區,然後繼續像平常一樣的開機。否則,病毒把從硬碟得來的主要啟動磁區(MBS)讀到隱藏記憶体的緩緩區中並且檢查病毒程式碼是否存在,假如感染已經發生了,控制權就交給軟碟的啟動磁區,此時電腦就像正常開機一樣。

如同所述,病毒會拷貝一份未受感染病毒的MBS並且用自己的程式碼來替換,從原來的MBS拷貝出硬碟分割表資訊。控制權會繼續交給原來軟碟的啟動磁區,此時從軟硬碟開機會發生比較慢的結果,然而一般使用者不會特別去注意開機程序所多花的一點時間 ---- FORM病毒的成功證明了這就是徵結所在。

ACTION WHEN RECIDENT(常駐時的行為)

 

此病毒攔截INT 13h磁碟DSR,奇怪的是新的DSR首先去檢查F9h FUNCTION CODE;假如存在的話則做忽略動作。這表示了病毒試著去防止或破壞一些防毒軟體的偵測。假如如此,無論是防毒軟體或是其被應用的理論都將出現缺失。

除非有些奇怪的事發生,否則此病毒通常會先掛上INT 13h DSR。假如一個程式沒有用INTERRUPT TUNNELLING(用來把一個HANDLER插入一串INTERRUPT HANDLER CHAIN)後續地掛上INT 13h,此程式的INT 13h會被先呼叫通常不是這樣。如果不是呼叫FUNCTION 2(讀取磁片磁區),病毒不會有進一步的動作。其他全部的FUNCTION CALL會造成呼叫原來由先前設定INT D3h VECTOR所指向 INT 13h ROUTINE

每次讀取時有3 / 256的機會病毒會發作 這是根據在0000:046Ch系統計時器所維持BIOS RAM資料區之LEAST SIGNIFICANT WORD的現狀。全部讀取第0磁軌,第1磁區,第0面之動作都會偷偷呼叫INFECT ROUTINE來達成,這是設計者所刻意安排的。

當病毒活動的時候,AntiEXE感染在A槽或B槽的磁片。病毒根據儲存在磁片上之啟動磁區的BIOS PARAMETER BLOCK做一系列的計算,去判斷原來啟動磁區記錄儲存在磁片何處。病毒忽略掉是否這塊區域已被佔用,所以資料的遺失或者毀壞是可能發生的。

目的磁片的BIOS PARAMETER BLOCK被拷貝到VIRAL IMAGE然後感染的動作藉由把病毒寫入磁片的開機磁區來完成。下一次當某人用此片磁片開機時,病毒就有機會傳播。

DSR檢查看看被讀取的磁區是否含有病毒碼。假如這樣,原來的啟動磁區將會被歸還,這種方法成功地騙過數種防毒軟體或磁碟編輯程式但這種隱藏技術並不會防止寫入感染區域的動作。

因此,檢查和移除這種病毒最好在乾淨的開機環境下完成,雖然這不是絕對必要的。大多數的防毒軟體商能夠想出某些方法去完成這件事。我並不提倡這種不具有絕對正確辨識力的方式;我曾經太多次弄砸了因為大家都說只要解毒就好了。以我的觀點而言,唯一安全的方法是從一個已知的乾淨環境用乾淨的備份或系統磁片來做還原的工作。然而我深深認為防毒軟體有存在的價值,因為它們保護大眾免於失去SOURCE CODE和重要的磁片的可能性。假如你們使用防毒軟體,所要做的事只是檢查再檢查。

The Payload

如同上述,破壞的動作在所有經由INT 13h所做的讀取動作以3 / 256的機率出現。呼叫中所做讀取每個磁區的動作會先檢查是否包含以下的特徵 : EXE FILE HEADER FOR A FILE 200768 BYTES LONG WITH 3895 RELOCATION ITEMS.假如這樣,讀取EXEHEADERIMAGE結果是不正確的,指嘗試去載入這個EXE檔的動作失敗,此時嘗試去拷貝這個檔案會造成問題。

試著去判斷那些EXE檔會被此病毒當作目標,我採用蠻力忽略的方法,從大量的檔案中去尋找相配的HEADERS。結果失敗了。假如任何的人有許多的EXE檔並想要從這些檔案中找到匹配的HEADERS,我很樂意提供一個程式去完成這件事這可能是個好方法猜測出作者到底想什麼。

結果暗示出此種病毒的對象似乎是針對俄國的一家防毒軟體;然而我沒有辦法證實這點。假如如此,此病毒奇怪處理FUNCTION CALLINT F9h~13h的方式可以獲得解釋。此外,假如這證明是真的,AntiEXE會以無等差的方式傳播並尋找它的目標,可想像地 : 它會以這種方式繼續下去。

DETECTION ANDREMOVAL

此病毒在開機時吃掉1KB的記體,這使得它變得引人注意。事實上除此外之,它攔截INT 13h,把它鏡射到INT D3h

移除步驟須要用乾淨的系統磁片並以冷開機進行。雖然SYS命令可以把病毒從軟碟片上移除,原來的啟動磁區仍會留在磁片上;因此最好是把它重新格式化。

始用DOS 5.0或之後版本的使用者可以用FIDSK /MBR(有可用的話)把病毒從硬碟上移除。否則我們要拷貝原來的MBS,用磁區編輯器把第0磁軌第13磁區第0面的資料存到第0磁軌第1磁區第0面。

CONCLUSION

AntiEXE.A是世界上相當常見的啟動磁區病毒。它不像某些兇惡的病毒那麼壞,但它並不容易偵測且移除。任何防毒軟體絕對沒有藉口偵測不到它。

此病毒唯一令我們感到憂心的是它經過簡單的改寫可以感染一般的執行檔。無疑地,研究人員只需要作者去等這新品種的出現。AntiWINDOWS,或別人呢?

 

AntiEXE

別名:

D3,NEWBUG,CMOS4.

種類:

記憶體常駐啟動磁區病毒,具有隱形能力。

感染力:

硬碟的MBS,軟碟的啟動磁區。

在記憶體中自我辨識:

沒有。

在磁碟自我辨識:

Check the hex pattern E901h E44Dh at offset of boot sector.

HEX PATTERN:

33FF 8EDF C416 4C00 8916 4703

8C06 4E03 FA8E D7BE 007C 8BE6

攔截:

INT 13h所有的讀取呼叫(FUNCTION 2)3 / 256的機會觸發破壞的行動。全部的讀取呼叫第0磁軌第1磁區第0面被重新導向到INFECTION ROUTINE,造成AB中的磁片被感染。

TRIGGER:

當讀取某些EXE檔時破壞其IMAGE

REMOVAL:

在乾淨的系統環境下,用FDISK /MBR指令。更進一步的說明請參考本文。