前面介紹過一些病毒類型,像是木馬病毒及電腦蠕蟲等等,接下來我們就來探討真正的 Virus 吧。
感染型病毒(Virus)與生物學中的病毒很類似,概念基本上是一樣的。生物界中的病毒會找到欲攻擊的宿主(host)細胞類型全數遭受感染,讓被感染的人生病或身體器官遭到破壞等等。在電腦病毒界呢!!就不再只是 malware 囉,感染型病毒(Virus 或稱 Infector)被執行了以後,會自動搜尋電腦中欲感染的文件類型,目前較常見的是感染 PE 文件,如可執行檔(.exe)、動態連結函式庫(.dll)等,也常見到以巨集(Macros)來對 Microsoft office 文件進行感染,而這些文件檔案我們一樣也稱他們為宿主(host),在遭到感染以後,病毒會將自身部分的病毒碼嵌入到宿主文件的前端、中間跟尾端,往往會造成宿主文件或檔案的損毀,或者是當宿主文件再次被執行時自動執行病毒碼以做壞事並繼續進行文件感染。
而感染的手法有哪些?
感染型病毒的三種行為機制
有些病毒在進行感染時,會在該文件上簽名。這簽名的目的是為了之後該病毒要感染其他文件時,可以透過這簽名得知目前這份文件已經被感染過,不用再對此文件進行感染。而簽名的標記是以數字或是符號,以 ASCII 形式存在文件裡。
當文件受到感染後,接著會根據一些條件讓病毒觸發。例:日期、時間、發現特定的程式等。
當病毒達到觸發機制後,便開始大肆破壞啦!!!破壞的動作有破壞文件、資料;也有可能破壞電腦的的執行效率或是占用記憶體空間等,例:病毒會在電腦系統中進行多次繁衍,導致電腦系統儲存空間變少,使得正常的文件或數據無法正常儲存。
感染文件位址
常見的病毒感染文件的位址有三種:
Prepending:
病毒拷貝自己的程式碼到目標文件頭的地方。
Prepending 的感染方式首先會在文件頭部多加一部份空間,並寫入一段 PE header 及病毒碼,因此被感染的宿主文件大小會變大,當被感染的文件再次被執行後將會依照新的 PE header 中的 entry point 優先執行病毒碼的部分,等病毒碼執行完畢後再接著執行原文件的內容。
此形態比較有名的病毒為 1990 年產生的 Polimer,病毒碼長 456 bytes,而感染對象為 .com 檔。若執行已被感染的文件時,會出現一行訊息"A le'jobb kazetta a POLIMER kazetta! Vegye ezt"。
用 Hiew 來看被感染的文件,可看到病毒把要顯示的文字內容寫到感染的文件頭部。
Appending:
Appending 感染方式是病毒拷貝自己的程式碼到目標文件尾部的地方。這類型常見於在 DOS 中對 .com 檔的文件進行感染。感染時,病毒會在文件的開頭修改幾個 bytes 成為 JMP 指令,並透過 JMP 指令跳到病毒程式碼。等到病毒執行完後,在跳回正常程式碼位置繼續執行正常的程式。
Appending 最典型的病毒 1991 年在保加利亞出現的 worrier,該病毒主要針對 C 槽底下 .exe 檔案進行感染,嵌入 1024 bytes大小的病毒碼。被感染的文件當再次被執行時,會出現如:"Dream over...And the alone warrior. The powerfil WARRIOR!”、“??????EXE"的文字。
Cavity:
一般感染型病毒是感染文件的頭部或是尾部,但這裡要提到的 Cavity,是病毒感染文件的位置是在中間,也就是文件未使用的區域,並更改 entry point,當被感染文件被再次執行後,程式首先會執行被嵌入病毒碼的部分,帶病毒碼執行完畢後再回到原程式碼。
Brainy 是 1991 年在保加利亞,該病毒主要針對 C 槽底下 .exe 及 .com 檔案進行感染,而感染的方式是將自己的病毒碼穿插在宿主的成是各節(section)中未使用的部分,若空間不足在寫於文件後端,總感染病毒碼的大小為 768-1,531 Bytes。在執行被感染的文件後,除了執行病毒碼的部分外,還會出現"eAWRREI!R"的文字。
感染型病毒碼分類
感染型病毒碼隨著病毒開發者的技術以及用心程度上的差異,而分成兩種不同類別:
Non-Polymorphic
所謂的 Non-Polymorphic 類型即是指宿主文件在被感染後,不同的文件所擷取出來的病毒碼絕大部分都相同,表示此種感染型病毒在感染每個文件時,病毒碼都不會太大的差異,對於病毒開發者相對較容易,但一體兩面,對於病毒分析者也一樣較簡單的去分析病毒行為。
Polymorphic
Polymorphic 較 Non-Polymorphic 的技術高端,可說是感染型病毒碼的一種保護方式,在不同檔案中比較擷取過後的病毒碼,可以發現病毒碼完全不一樣!!因為此種感染型病毒除了嵌入病毒碼外,亦會將嵌入的病毒碼進行加密,透過解密方式的不同、解密鑰匙的不同或是解密邏輯的不同而有截然不同的加密後病毒碼。以此種方式可以避免病毒分析者過於容易分析病毒。
以上主要針對感染型病毒進行說明與介紹,下一篇會討論常見的病毒種類有哪些。
希望有興趣的讀者也能夠點個追蹤,有任何問題或有想多了解的地方也可以回覆在文章底下唷,謝謝你們XDDDD!
參考來源:
武漢大學,《信息安全技術與教材系列叢書》
computer virus http://computervirus.uw.hu/ch04lev1sec2.html
Polimer http://wiw.org/~meta/vsum/view.php?vir=1074
worrier http://wiw.org/~meta/vsum/view.php?vir=1534
Brainy http://wiw.org/~meta/vsum/view.php?vir=235
維基百科 Polymorphic https://en.wikipedia.org/wiki/Polymorphic_code