AntiCMOS – 大腦的傷害
Daren Karpinski
顧問
: Andersen
B85506043 賴勝華
B85506050 江至軒
研究機構察覺到 “AntiCMOS” 的存在並當作像實驗室的標本般已經有一段時間了: 然而現在, 病毒的”野”性(in the wild—註 1)使然, 對此病毒的關注已從義大利到了英國。由於安全測試的關係, 在它感染任何東西之前就被偵測出來了, 並且引起我的注意。
Plus ca Change
(關於它的不同處)ANtiCMOS是一個特殊的原生啟動磁區病毒, 並且感染硬碟或軟碟。此種病毒不像其他眾多的病毒其程式碼會去尋找另一塊區域以用來儲存原受感染磁片的啟動磁區。
整體看來這種手法給我們的印象, 其實在寫病毒來說是一種很差嘗試。原作者似乎並沒有半途而廢—此點並不令人驚訝, 因為作者自信地認為它是寫不出來那種很簡單的程式碼的。磁片若遭受此病毒感染便不能開機, 雖然如此, 但還是具有感染硬碟的能力。
此病毒實際上沒有作錯誤檢驗的工作, 它不會去檢查是否一張磁片已經遭受感染與否。 病毒活動明顯地是容易偵測的到且易移除的。然而, 它會自我複製且具有”野”性, 其程式碼還會帶給我們特別惱人的負擔。
On Booting (
啟動時)此病毒造出一個供自己使用的堆疊並且把
Int 13h disk handler中斷向量儲存在記憶體內的病毒映像(viral image)之中。在基層記憶體的頂端有2 Kbytes被此病毒保留為了不讓它的程式碼被覆寫:因此可用記憶體的減少是可以測的出來的。然後病毒把自己拷貝到記憶體內的保護區域(protected area),重新將自己安置在那並繼續執行。再來,重設disk controller, 病毒再檢驗自己的資料區以判斷是否電腦有從軟碟或硬碟重新開機的動作。假使電腦是從硬碟啟動,
病毒會去尋找現在的活動分割區(active partition)並且把它的啟動磁區拷貝到記憶體之中。記憶體中用來判斷啟動裝置的資料被設為是軟碟的值, 並且把用來替換的Int 13h handler給安置好。系統控制權繼續交給活動分割區的啟動磁區並且繼續正常地開機動作。假使電腦是從受到感染的軟碟磁片開機的話,
病毒會試著去感染第一臺硬碟的主要開機磁區(Master Boot Sector)。一段單一的副程式用來感染軟碟片及硬碟兩者。再感染了硬碟之後,病毒開始根據根目錄的
entry總數,檔案配置表(File Allocation Table)的磁區數目及每一磁軌的磁區數進行一連串的計算。此步驟可推測出來是為了確認原來原來啟動磁區被儲存的位置。某些時候經過此種處理,病毒會造成系統當機。此時代替的
Int 13h handler已經安置好了, 病毒將控制權交給啟動磁區在記憶體中被載入的位址:這個區域仍然含有病毒程式碼。因此,即使在現今有防當措施,從軟碟開機會造成系統當機。
Infection Routine (
感染程序)對硬碟或軟碟而言,感染的過程都是相同的。
Track 0, Sector 1, Head 0(軟碟片的啟動磁區,或是硬碟的主要啟動磁區(MBS))被讀入緩衝區內。然後病毒用它自己的值代換原來在緩衝區的跳躍指令並把其他的病毒碼拷貝到緩衝區內。然而,它不會覆寫緩衝區中啟動磁區的資料或是分割表(假使存在的話)。再來, 它把它的程式碼寫入軟碟片或硬碟的Track 0, Sector 1, Head 0, 但並不會有保留原軟碟片上啟動磁區的打算。被置換的
Int 13h disk handler的程式碼有亂搞的傾向。它會檢查目前要求是存取硬碟或軟碟裝置:假如是前者的話, 並不會採取進一步的行動。假如是存取軟碟的要求的話,此handler會嘗試去判斷是一個讀取或寫入的要求。無論所做的要求是屬於哪一種,此病毒會用由BIOS所管理之計時器的 least significant的high nibble(半位元組)值,減去從主要啟動磁區(MBS)之第三個位元組的值(切記—此病毒只會在從硬碟開機的情況下活動)。如果算出來的結果小於2,就呼叫觸發程式(見下文)。因此,雖然在我的實驗中此病毒的發作呈現了單調的規則性,但它真正的觸發因素是無法預測的。假使方才所得到的值是
2或是更多,則此磁片已經被感染了。如果此磁片已經感染則不會有檢驗的動作,裝置若是啟用的則不會藉防止感染的方法來隱藏活動,同時也不會有驗錯的動作。唯一的副作用就是存取軟碟時會變得十分緩慢。
Trigger Effects (
觸發事件)其程式碼狠毒地破壞了儲存在
CMOS內的資料--而這些通常是系統設定的資料(包括主記憶體及延伸記憶體的大小),各式安裝在電腦上的磁碟機,主要顯示週邊和數學輔助運算器。因此當下次電腦開機時,我們會進入唯讀記憶體
(ROM) BIOS的BASIC之中(因為正牌IBM個人電腦有ROM BASIC這單位);從本質上說來,電腦已經忘了它有硬碟這配備。病毒的程式碼是惱人且有很明顯的後果;但是實質上它並不會破壞資料,只是會使人覺得自己的資料不見了。假如受感染的電腦是屬於
IBM-PC的微電腦架構,復原工作是容易的只要從該機型的備用磁片開機並選擇自動設定該選項。如果是其他的機種,就必須參考隨機所附的相關文件了。當然,這種事說得都比做要來得簡單。
Removal (病毒的移除)
因為此病毒不儲存原來的開機磁區,從機型配備用
DOS 3.31版之前來格式化的硬碟上移除可能會有問題。如果機型是以DOS 3.31之後的版本來格式化的話,從有貼防寫貼紙的軟碟片開機並執行FDISK/MBR指令來恢復原來的主要啟動磁區(MBS)的資料。如果是用DOS 3.31之前版本的機器,用適當的工具程式拷貝出主要啟動磁區(MBS),然後用DOS 3.31後之版本開機並嘗試FDISK/MBR::並不保證能修的好,如果無效的話,我們仍有一份備份的主要啟動紀錄。另一種方法是從相同的機型拷貝出乾淨的主要啟動紀錄,然後用工具程式更正分割表上的資訊。要從軟碟片上移除病毒的話只要在乾淨的環境下使用
SYS指令即可。
In Conclution (
結論)在我做反組譯時我一再小心地檢查,真的叫人很難相信即使是
’tyro’病毒的作者竟然寫出如此糟的東西。說它是一萬隻猴子把玩著鍵盤所得的產物或許更能令人相信。想到它跳脫出野性的一面就叫人不安—它是如此地明顯,如此容易被偵測得到,任何人只要有點感覺或稍微仔細去看就可以發現它的行蹤。AntiCMOS與其說是一個顯而易見的病毒還不如把其諭為一個勇敢的人—雖然它只能做複製,搜尋和破壞的動作。
AntiCMOS
化名
: 目前尚無種類
: 記憶體常駐啟動磁區病毒感染力
: 硬碟的主要啟動磁區,軟碟的啟動磁區在記憶體中會自我辨識已常駐
: 不會Hex Pattern :
8826 0300 3D02 0073 03E8 CC00
E8E8 0058 1F2E FF2E 0700 33C0
攔截
: Int 13h中斷發作動作
: 覆寫CMOS RAM中的資料移除發法
註
1 : In the wild : A virus is referred to as “In the wild” if is has been verified by groups that track virus infection to have caused an infection outside a laboratory situation.
我們證明 : 如果我們嘗試去追蹤病毒的感染卻造成了病毒感染到實驗室外的地方,有此能力的病毒我們稱為具有”In the wild” 特徵的病毒。