Rainbow:羨慕與憎恨之間
Jakub Kaminski
B85506013 鄭欣明
雖然在眾多的病毒中只有少部份值得我們研究,但大部份研究者也沒有時間對這些值得研究的病毒一一分析,往往當我們偵測到一個病毒,它便面臨到被丟棄在一個未知的世界,因此,當我們要對這些病毒作仔細的研究變得新奇,未知病毒的研究也在世界上快速的傳播開來。
不久以前,有人問我一個問題:他的電腦不能跑window且啟動軟碟也有問題,我猜因為那些敗壞的檔案部份導致軟碟不能啟動的原因,或是隨著隨著分割桌面資料而像猴子一樣的擺動。
我的研究發現顯示有一個2351-byte的多分裂病毒正經由分割區到磁碟區蔓延,而停住再啟動部門和很多可執行的檔案,最有趣的特徵是他難以查出的技術和如果不修改COMS則會使軟碟機無法清除啟動的方法,若企圖從磁碟開機會導致在還沒出現指令時系統的停止,就是C碟和A碟都無法進入。
感染症狀
這個Rainbow病毒,會傳染硬碟的MBS以及軟碟DOS啟動部份、com檔案、exe檔,他無法譯成密碼,而且以本身的平文:roy g biv命名。
這個病毒附著在檔案的結尾,所有被傳染的程式,他們的時間都被修改了,秒數的計數只能到31。在傳染DOS啟動部份,Rainbow只改變了25 byte offset 3Eh,和在開始的部份增加了跳躍指令。原本執行部份的複製被保存在軟碟的最後一個磁區,而且剩下的病毒碼會寫在sector中。
當MBS被感染的時候,只有25byte被病毒改變,其他的病毒將寫入五個從第二開啟的磁區在0磁軌上,Rainbow不會完整的保存MBS的複製:被取代的25bytes會被保存在磁區6,節內位置142h,他也會讓MBS轉變為自己保護或是附載自己。
有效分割區域的資料被複製到磁區6,節內位置132h而且原本桌面分割區的內容轉變成十六進位的:0000 0100 0500 b808 0100 0000 bc01 0000
這被啟動系統解釋為無效的,延伸至DOS分割區域,從磁頭0、磁柱0、磁區1開始,終止於磁頭0、磁柱523、磁區56,從磁片的開啟而展開了一個磁區,並且包含444個磁區,最重要的特徵是不會進入另一個磁區但是進入MBS(磁頭0、磁柱0、磁區1),這樣的案例往往指出為循環區,且讓使用最新DOS版本的人感到很頭痛。
對v.5或v.6x的使用者來說,要使用輕易地遞迴系統不再可能,他會讓系統永無止盡地啟動程序(OS的負載者從中仔細觀察後一再發現相同的磁區)。
Rainbow會和很多控制系統和隱密程序結合,當可在記憶體中執行時,他欺騙int 01h、12h、13h、21h、24h、2Fh。
當一個被感染的檔案執行時,病毒會檢查是否系統、記憶體中已經感染,這會在呼叫int 13h做到,在暫存器Axh中,若回傳DEEDh則表示病毒已經在控制中。在這個情況下,原始的程式已經重新儲存在記憶體內,而且以日常方式執行,如果系統已經乾淨,則病毒便儲存在記憶體中,這樣會花現在處在區域的3K記憶體。既然這病毒是依賴在現在PSP的資料中,它會儲存最多640K。如果受感染的檔案是高負載。
接著,病毒欺騙int 01h,而且嘗試儲存它自己的,Rainbow並不會改變中斷向量表,但會改變int 21h的途徑。當int 21h執行時,病毒便開始儲存。
病毒會取代一些有FAR JUMP的指令,並且把原來的指標儲存在病毒碼中,接著,他欺騙int 2Fh,並且儲存他的int 13h。
現在,這個病毒已經感染了第一個物理硬碟的MBS,int 13h的路徑已經被改成詭異的程序,int 12h接著被轉譯,且一個新的程序可以使感染的記憶體消失、被儲存,最後,這受感染的檔案重新儲存到記憶體,控制權也傳回到原來的程式。
從感染的磁片執行,當在受感染的磁區執行時,病毒會住在記憶體的頭,減少3K,並且複製所有的病毒碼到他現在住的區域。現在,Rainbow儲存到他的13h操作者,這樣當然也包括了除了在int 21h操作者之外的負載執行系統,病毒依賴檢查int 24h路徑的地址,如果他的節區小於1000h,則病毒認為Dos已經負載了。
在記憶體中
當一個感染的檔案執行時, Rainbow儲存到記憶體中,阻止所有病發的中斷,不像大部份的多分葉病毒,他不會從受感染的boot磁區來得到。所有的函數值,Rainbow可以流傳並且感染檔案和軟碟boot磁區,甚至在沒有硬體的工作站上亦可。
在讀或寫的過程中,病毒感染軟碟,在記憶體中可以執行時,當每次讀取DOS boot磁區時,他傳回乾淨、最初的磁區,檔案會在開啟或執行中被感染。
Com檔只有在少於63057 bytes才會被感染,當exe檔的長度像指定說明一樣時便會被感染。Rainbow詭異的程序包括了影藏感染檔案的長度。
當檔案中的自我肯定是以時間標記為基礎時,嘗試花62秒清理檔案,會導致系統的崩潰,這個詭異的程序嘗試不去感染一個乾淨的檔案,但卻腐蝕它,這只是我在病毒碼中找到唯一的小蟲。
Booting 清理
從感染的系統中,安全的移除所有的病毒,總是以軟碟清理boot為基礎,但在這狀況下,並不是那麼容易。這些仍用MS-DOS v4或更低的版本,可以常常使用軟碟系統,但是使用版本較高的人會發現如果Rainbow感染他們的機器會有很大的麻煩。
得到解決感染和腐蝕MBS的途徑,根絕受感染磁片的遞迴,接著,去除在記憶體中的病毒,且避免他詭異的途徑。
如果選擇前者,一個舊版本Dos的軟碟系統是需要的,但是,有多少膝上式電腦有3.5吋Dos式軟碟呢 ?後者的解決方法,要有一個可偵測並去除病毒的反病毒產品在他的記憶體中,且可以適當的工作,當系統內有毒,在Rainbow的情況下,這並不容易。
結論
在病毒中,有一個平文訊息是*4U2NV*可以視為:讓你嫉妒,有些病毒作者確實嫉妒Rainbow作者的想法和技巧,但是如果這個病毒變的世界知名,則絕大部份的電腦資訊業會恨他。