EXEBug
Tim Twaits
B85506043 賴勝華
B85506050 江至軒
很少有病毒會引入一個全新的觀念—大都是根據現存的病毒做些小小的改變或是增添。然而CMOS1的作者,似乎找到一個新的手法。據我所知 : 它是第一隻用非破壞性方法來修改在CMOS RAM中非揮發系統設定的病毒 : 因此它被稱為CMOS1[這是寫這篇文章時它所得到的名稱。WebEd.]
In The Wild Origins.
。要從一個平凡的
PC使用者上而非從病毒研究或收藏者手上得到此病毒是不容易的。就本身而論,它對一個新的病毒如何被偵測和去對付提供了一個深入的見解。第一次懷疑到有些是不對勁是由於Windows 3.1 32-bit磁碟驅動程式偵測到一個錯誤情況。因為Windows還是可以正常運作,所以我們很容易對以上的訊息加以疏忽。感到幸運的是有人決定對它加以研究。第一步要做的是對電腦嘗試去掃描已知的病毒。然而請在掃描病毒之前用乾淨的磁片來啟動系統而使得不會動到硬碟。由於對這項症狀具有的知識,研究人員找出另一台受感染的電腦。立即把這兩部電腦隔離並採取磁碟保護的措施。
再這時我收到一份此病毒的樣本。一把病毒的辨識碼抽離出來時,立即用來掃描所有的電腦和磁片。這使得病毒被控制住而沒有進一步的感染發生。接著把感染源找出,發現來源是一個從台灣來的高爾夫球遊戲。此遊戲也傳到了南美洲的一家辦公室,這使得病毒傳得更遠了。
Operation
CMOS1主要是一隻主要啟動磁區病毒。當電腦從感染的磁片開機時,病毒便獲得了控制權。它藉由把包含有用的記憶體大小之ROM BIOS資料區減去某資料值來在記憶體中造出一個”空洞”。這直接地造成把DOS記憶體吃掉1 K的效果。此病毒接著在允許繼續正常開機前把屬於自己用來截斷所有BIOS磁碟服務的Int 13h Handler安置好。
CMOS Modifications
CMOS電池用來提供在IBM相容PC中儲存非揮發性系統設定資訊記憶體所需的電力。CMOS1病毒會修改其中的設定使得電腦以為沒有軟碟機連接其上。這是乎要使電腦無論在何時都用C槽開機,確保病毒每次都常駐在記憶體中。 病毒自身便使得我們要注意;但令我們更感到擔憂的是 : 病毒作者似乎想要電腦由”正確”的磁碟啟動。
如果病毒的招數成功地話 : 我們便不可能有一個乾淨的開機環境並且偵測工作會變得相當困難。幸運的是作者做了一些錯誤的假設,使得病毒再真正IBM相容電腦上不會像所述般運作。然而要小心的是 : 它在作者的電腦上可能是可行的(至少某種程度)。
此病毒嘗試去阻止乾淨的開機程序並未成功,但我們一定會問是否這種手法真的可行 ? 答案對現存防毒軟體偵測的程序可說是一項大的衝擊。
因為隨著PC BIOSes的不同,意味著在不同型電腦上有不同的開機順序。在我所用來測試病毒的電腦上,開機自我測試Routine不顧在CMOS中的設定都會偵測到軟碟機。此項功能似乎是合理的標準,因此這技術一點都不像為一個成功病毒的基礎。
Infection
此病毒在用受感染的磁片開機後會立即感染裝置
80h(通常是C槽)。當讀到更多磁碟資料時將會使它們也受到感染。因此即使是插入軟碟片並打DIR A: 也會造成磁片的感染。當感染磁碟時,病毒需要保留原來開機磁區的副本以使得在病毒碼執行之後啟動程序能夠順利地完成。原來硬碟上的
MBS被存到第17磁區,第0詞柱,第0磁面。在一般資料區尾端,磁片上額外的磁軌將被格式化(number 40 or 80,根據磁片大小而定)。建立此額外磁軌有不影響磁片儲存容量的好處。但並非所有的電腦都可以成功地讀取到此一額外的磁軌,因此當用感染的磁片開機時會造成某些電腦當機。Stealth
此病毒攔截所有對主要啟動磁區的讀取要求並把原來磁區內的內容傳回給呼叫者。這使得它能有效地避免防毒軟體的偵測,除非是在乾淨的開機環境下。它也提供了病毒在安置過程中觸發原來啟動磁區程式碼的機制。一旦攔截
handler被安置後,病毒會發出Int 19h呼叫來重新啟動電腦。系統現在會正常地開機因為bootstrap程式碼現在將載入原來的啟動磁區。所有寫入主要開機磁區的要求也將被攔截,允許寫入的動作但立即又再度感染該磁碟。結果是我們用像
FDISK之類可修改啟動磁區的工具程式也不能夠將病毒給取代。病毒包含了另一項特色,或許可稱為隱藏的技倆。如同去覆寫主要啟動磁區的程式碼般,病毒會用無意義的資料來覆蓋硬碟分割表。因此若是用乾淨的磁片開機將會無法直接地看到硬碟。然而我們不能夠偵測病毒的存在因為我們的
C槽背叛了我們(看不見了)。Increased Contagion And Trigger
為了使它自己更有感染力,病毒會去感染某些寫入
A槽的EXE檔案。此Infection Routine是原始的,原來的檔案會被病毒所覆蓋。在執行時此程式會立即感染裝置80h處。這種感染方式每當在以4Dh(EXE檔檔頭)開頭的資料被寫入磁片上任何磁柱的第3磁區時會發生。這步驟不僅是會感染EXE檔同時也會使任何包含以4Dh做磁區開頭的檔案毀壞。建立了這些感染的檔案無疑地會幫助病毒傳播,但它也大大地減少病毒能肆虐感染的機會。因為感染的程式將會被病毒程式碼所覆寫而使得它失去原來的功能,使我們立即感覺到某種不對勁。我不認為這會超過
(受限於病毒)作者的能力寫出更複雜的策略,因為程式碼大小被限制在512 Bytes內而沒有空間放下使此病毒更多變化的Routine。雖然修改程式會造成嚴重的災害,寫入固定裝置的部分
EXE檔還是會被修改。,它將會把第一個固定裝置的第一磁軌覆寫,有效的使所有資料看不見。在任何磁片上的資料都會被覆寫。這些檔案唯有在把EXE檔頭寫入任何磁柱(在範圍512到767)的第三磁區才會產生。這情況只有在磁片還有許多資料時才會發生。Removal
乾淨的開機後,任何人可以用簡單的搜尋字串發現到病毒在啟動磁區和任何檔案兩者中存在。檢查資料檔案也和執行檔一樣重要,因為它們可能已經存在。假如電腦是屬於任何一種可防止由
A槽開機的機型,有可能藉由把電池移除來把CMOS的資料清掉。我們可以藉拷貝病毒它自己所儲存的原來內容(Sector 17,Cylinder 0,Head 0)到啟動磁區(Sector 1,Cylinder 0 ,Head 0)來把它從硬碟的MBS給移除,用像Norton-Utilities之類的磁碟編輯工具來達成。或者有別的變通的方法,用FDISK /MBR的指令或是執行低階格式化重新寫入MBS。要注意的是病毒破壞了在MBS中的分割區資料,用FDISK /MBR指令並不能將儲存在該磁碟的資料還原;它只會把病毒碼覆寫。
EXEBug.A
化名:不知道
類型:
Recident semi multi-partite感染:主要啟動磁區和
EXE檔辨識:乾淨開機後無法看到硬碟。
Hex pattern:B0FF E621 BA80 00B9 0100 B811
039C 9A?? ??EE C680 E607
攔截:
Interrupt 13h for stealth(boot sector only)and infectionTrigger:Creates Trojanised EXE files when writting to certain areas of adisk.The programs destory disks.
移除:見本文。