暴動的組合語言
James Beckett
B85506013 鄭欣明
當人們在對抗病毒的戰鬥中總是抱怨會覺得無聊,因為病毒作家並不總是寫出更新的病毒,但是現在,另一個希望已經在一個更進步的病毒之緊急情況中實現了,這個病毒就是Cyber Riot,他是第一個有能力感染windows核心的病毒。
在windows的內部知識已經很明顯地變得流傳開來,像Cyber Riot利用幾個在windows中並沒有被文件證明於Developer's Kits的程式。病毒的作者一在地發現他們需要的知識在Pietrek's Windows Internals和Shulman's Undocumenter Wincows或是透過反執行windows程式碼。這些資料不能從Microsoft's文件中獲得的事實會使整個分解過程加倍地痛苦。
前一個windows的病毒運作是非常簡單的,就像WinVir 14是一個不管Twitch為了這目標搜尋多少都不居住一次的病毒。在DOS中,這種傳染的方法的機會很小,所以DOS病毒攔截檔案和磁片的通路來感染檔案。Cyber Riot是第一個可以維持居住且攔截像KRNL368.EXE的可執行檔的獨特Windows病毒,這就像感染DOS的影藏檔。
Windows的系統檔案
Windows的系統大部份是建立在system目錄中的特別EXE檔,像KRNL386.EXE、USER.EXE和GDI.EXE檔。在運作時,被windows應用程式呼叫的程式是動態連結到前述的檔案,舉例而言,GDI.EXE有繪圖的單位介面程式,使用者有較高層次的對話盒、游標、按鈕等程式。而KERNEL模提供了基礎,像轉換、定址法和事件處理。結合所有這些程式使window組成。
在KERNEL模KRNL386.EXE中有一個特別的程式WinExec是用來啟動應用程式的。當雙按按鈕或是檔案名、或是執行檔案名單中的命令時,這是典型的檔案管理者呼叫,在DOS裡,病毒通常會攔截int 21中的副程式4B00h,在windows中相對的程式就是WinExec,但是他不能被活動的應用程式所攔截,因此,病毒的作者已經想出另一個方法來推翻他。
感染的程序
當一個被Cyber Riot感染的應用程式執行時,病毒利用專門windows設計的含式尋找從KERNEL來的檔案,他打開檔案,察看和LORY有關的數值以檢查這是不是可執行且還沒被感染的檔案,在執行這之前,他會努力地將EXE檔備份成EXF檔。
感染windows可執行檔是一項複雜的工作,因為有一些在程式編輯中被串接的指令。這比只是附著在一個可以執行DOS COM檔困難多了,所有的動態鏈接使windows API需要大量的在檔案前端的程式資料,當感染一個檔案時,即使病毒已經附著在程式碼中,此檔案必須被分析、拷貝才能使工作繼續進行。
可以被其他檔案呼叫的檔案必須要宣告,這樣windows可執行檔可以和之連結起來,這些都在檔案頭被做好,病毒修改這資訊而使程式指向自己的程式碼,因為原來的指標位址都在,故病毒可以呼叫他,當這件事情進行完畢時,病毒就立即跳回到應用程式的頭好像什麼事情都沒發生般。這和以前的windows病毒比較起來有所不同,因為以前的病毒都不會跳回去,所以一定要再次執行程式。這個性質顯現出病毒作者的重大前進。
直到第二次執行這檔案才會發生事情,在磁片中變更已經產生,但是還為存入記憶體,只要一取得,則新的KERNEL模就會執行病毒程式碼來修改WinExec函式。
訊息盒
當一個程式開始時,代用品WinExec會先呼叫原來的windows檔案代碼,則程式可以立即開始,病毒會考慮檔案使之中毒,就像他在KERNEL做的一樣,然而,在感染之後,誘因路徑已經開始活動了。病毒已經製作了一個動態串接到USER的程式,他可以顯示出一個訊息盒和計算日期。在特別的日子,他會利用window MessageBox程式顯示出一個訊息,有這樣的標題:
Chicago7:Cyber riot
從3月29日到4月1號,一個不一樣的訊息根據日期的不同顯示出來:
Happy anniversary, Los Angeles
Anarchist of the world,unite!
在有黑色星期五之前的星期五中:
When the levee break,I have no place to say……..
(Crying won't help you.praying won't do you no good)
而在1994年3月的星期天:
Save the whale, harpoon a fat cat
夠像Harmless了,但是按下OK鍵並不是好像一個好主意,如此一來病毒會開始透過磁片、在第一個節區的所有磁軌寫入一部份的病毒碼來破壞,他忽略了主要根磁區和DOS根磁區,但是很多檔案至少會被一部份的感染,即使是一部份的感染對磁區來講都是大災難,大家當這些路徑被合併時都會感到驚訝作者為什麼要備份所有的病毒程式。
Chicago 7
病毒包含了一些從病毒碼中揮霍出的文字訊息,這些文字並沒有被譯成密碼或是被隱藏,有些向上述的文字訊息顯現,但是大部份都沒有。