Putting the Boot In

Kevin Powis

 

B85506043 賴勝華

B85506050 江至軒

Boot.437已經成功地流傳好一段日子了。就如同這名稱給我們的提示,它是一個啟動磁區病毒在開機時若有受感染的磁片在磁碟機中,病毒將會被載入記憶體位置Segment 0Offset 7C00h並且用標準方式將控制權從韌體傳到該位置除非在BIOS設定為不從軟碟開機。

Boot.437Segment 0Offset 4Ch讀取來保留原來的Int 13h Handler做為以後的用途。然後它藉著從Segment 0Offset 413hWord把記憶體減掉1 K同時自己安置到記憶體中。這有點像打破通常用來處理這事的一系列指令集一個多餘的操作步驟。當然這是對知道Boot.437病毒的特殊掃瞄程式沒有採取任何防禦措施,它只反抗一般的系統。

下一步是計算對映於從傳統記憶體所失去1 Kbytes的節區暫存器。事實上這是由上述減少的記憶體Word和向左平移6 Bits的程式片段所得到的。結果造成新的值在節區暫存器並允許病毒在記憶體中的新家。當我發現到這些片段程式碼在許多病毒中一致地出現,我懷疑是否原作者他想要在這些有用的基準中要求版權或版稅。

隨著常駐在記憶體中和從記憶體中得到的節區指標,Boot.437把它自己的Image拷貝到新的位置並把控制權交給下一個指令,但這是在複製的Image中。原來在Segment 0中的Image現在是多餘的。

在接受控制權時,Boot.437新的Image藉由標準BIOS呼叫發出一個磁碟重設命令,這通常是保留給嘗試重試之前所偵測到的磁碟錯誤。然而Boot.437的作者似乎要先占任何這種問題。

此病毒現在已被安置必須找出和執行在感染過程所儲存的原來啟動磁區。在這時候,Boot.437不知道在受感染硬碟上運作是否正常或者某人已從受感染的軟碟片上開機。這是藉由檢查在病毒主體Offset C3h Byte來決定這包含了當磁碟被感染時目的磁碟所儲存的實體數目。假如是大於等於80h,病毒被認為從硬碟上執行,否則是從軟碟。

假如此Byte暗示病毒從硬碟上執行,病毒的工作幾乎已完成。然而如果是軟碟的話,Boot.437呼叫感染Routine(見下一部分)。當控制權從此處傳回,它將原來的磁區(感染Routine儲存處)讀入,藉由置換指向自己指標的向量把Int 13h掛上,並把控制權傳給原來的磁區。

Infection Sub-Routine

Routine執行此病毒所有的感染行為。首先將目標磁碟的啟動磁區讀入記憶體:假如目標是硬碟,分割表會被檢驗以確定啟動分割區所在的位置。如果啟動分割區找到的話,病毒把該分割區的啟動磁區讀入記憶體。

感染Routine現在將在病毒主體Offset 100h6 Bytes和在被檢驗磁區同位置的Bytes做比較這是感染測試。假如相符,此磁碟已被感染並放棄感染。否則磁區將被隱藏做為以後的參考而記憶體中的Image將用病毒開始的3 Bytes修補:這代表了一個到安置在Offset 3Eh大塊病毒碼(437 Bytes,故稱之)的跳躍指令。被修改為磁區寫回磁碟來完成此程序。

Interrupt Handling

一旦在Installation Routine結尾安置的Int 13h Handling在適當的地方,對磁碟的所有要求將會傳給病毒碼。病毒只對存取要求有興趣其他的都能不受影響的通過。

如果是硬碟的要求,將會執行一個比較目標磁碟和原來病毒載入(using the value at C3h)的磁碟之測試。如果相符,目標磁碟已被感染然後離開;原來的磁碟要求將會偷偷地不嘗試給允許。這使得病毒快樂地感染任何在PC上的硬碟。

對軟碟得處理方法相當不同。Boot.437檢查另一個低記憶體Word以得知是否!軟碟機馬達有在轉動。病毒將不需要的Bits遮罩然後檢查是否軟碟機現在是啟動的。軟碟只有在運作時才會被感染;一個減少偽造磁碟行為蹤跡的陰謀(其他病毒也用此技倆,例如Jumper)

在所有的情況下,如果磁碟被認為適合感染,Boot.437觸發上述的Infection Routine。控制權接著被交給原來的Int 13h Handler

Storage Algorithm and Partition Table

病毒是根據不同被感染的磁碟類型放到乾淨的啟動磁區;用磁面 / 磁柱 / 磁區表示法,位置如下:360K 1.0.3720K 1.0.5(兩者都是放在根目錄末端)1.2M 1.0.13(把根目錄倒數第2個磁區覆寫)1.44M 1.0.17(放在資料區的第2磁叢磁碟片上第1個檔案的部分將會被覆寫)

Summary

如同WildList所呈現的,Boot.437是一個成功的病毒。我想像每一個現存的掃瞄程式可以偵測到的(12月的比較評論,除了MSAV可以),然而它仍然肆虐。它的程式碼雖然有力的,但卻又無能,這暗示了作者他的學習曲線。此病毒既沒有Trigger也沒有Payload:它只滿足於感染和複製。

 

boot.437

化名:無

類型:軟碟啟動磁區病毒;硬碟啟動分割區病毒

感染:潛在性的,對主系統中所有軟碟和硬碟

自我辨識:在Offset 100h磁區的6 Bytes和病毒碼比較

Hex patternThis pattern will locate the virus on hard and floppy disks and in memory

80FA 8072 083A 16C3 0074 1FEB 1A50 558B EC7C 4602

中斷:Interrupt 13h disk handler

Trigger:沒有

移除:硬碟 – SYS C:,打撈任何須要的檔案(未受病毒影響)然後格式化