发信人: caesar009()
整理人: emil(2002-03-22 23:04:34), 站内信件
|
病毒是如何工作的?
--------------------------------------------------------------------------------
病毒是如何工作的?
<!—理解病毒的工作方式,是防禦病毒的第一步驟。-->
最近新買的電腦隨機通常會附帶一套防病毒軟體。這個事實,比什麼都有說服力:病毒已經變得非常廣泛,電腦界已經承認了他們系統易攻擊性很大。非常簡單,病毒已經成為計算時代的現實。
已經有了成千上萬、不同種類的病毒,但是它們都符合一個基本的定義:“病毒是一段電腦程式,故意設計成能夠用某種方法把自身附著在其他電腦程式上。當原來的程式運行時,病毒程式也運行,通過附著在其他程式上,病毒實現自身的複製。”病毒把自身附著在原來程式上的方法是:把自己附加在原來程式上,甚至直接替代原程式;而且許多時候,病毒感染時都會改頭換面。被感染的程式可能是一個巨集,可以是磁片的引導磁區,或者正好是從引導盤上裝載的第一個程式。
請注意定義裏的這一段:“故意設計成”。病毒不是事故這麼簡單。具有相當技術水平的程式師設計開發病毒,然後設法讓病毒進入不設防的電腦。防病毒程式越強大,病毒作者繞過防毒程式越費力。對許多病毒作者來說,這就是一種挑戰;而對另外一些人來說,因為計算生活不穩定或者很慘,他們就可以過得很快活。這真是可惡,他們完全可以不靠病毒,而靠解決千年蟲危機大把賺錢。
病毒已經贏得了有害的惡名,但實際上,許多病毒沒有那麼大的危害。的確,某些病毒會破壞檔或者進行其他形式的破壞活動,但是還有許多病毒只做些無傷大雅的騷擾,多數用戶甚至根本看不到它們。要成為病毒,程式只需能夠複製自身即可,至於其他的行為都是額外的。
但是,這些相對來說無關痛癢的病毒,當然也不是完全無害的。它們消耗磁碟空間、記憶體、CPU資源,所以會影響機器運行的速度和效率。而且,清查它們的防病毒程式也要消耗記憶體和CPU資源;實際上,許多用戶認為,防病毒程式比病毒讓電腦速度降得更厲害、更煩人。換句話說,即使病毒什麼壞事也不做,它也影響電腦的正常使用。
病毒和與病毒類似的程式
比起我們要使用的病毒這個術語來說,上面對病毒的解釋,實際是相當具體而有限的
。還有其他類型的一些程式,它們只符合前面的定義的一部分。它們和病毒的共同之處在於,都是在用戶不知道的情況下活動,並且在電腦內部進行故意設計的一些動作。這些程式類型包括蠕蟲、特洛伊木馬以及滴管。所有這些程式,包括病毒,都是稱為惡件(malware)或惡意軟體(malicious-logic software)的這類程式的組成部分。
蠕蟲是一個程式,它不斷地複製自身,但並不感染其他程式。它把自己拷貝到軟碟或從軟碟拷貝出來,或者通過網路拷貝;有時它利用網路運行。有一種類型的蠕蟲—主機蠕蟲—只利用網路把自身拷貝到其他主機上;而另一種類型的蠕蟲—網路蠕蟲—則把自身的各個部分在網路上散佈,然後通過網路運行各個不同部分。蠕蟲還能存在于沒有連網的電腦上,這時它能在硬碟上四處複製自己。
特洛伊木馬的名稱來自著名的希臘神話—奧德賽。在故事裏,希臘軍隊在特洛伊城前留下一具木馬,木馬的肚子裏埋伏了小支軍隊。當特洛伊人把木馬拉進城時,馬腹中的軍隊也一起進了城。希臘人從馬腹中跳出來,佔領了特洛伊城,結束了對特洛伊城曠日持久的圍攻。在電腦領域借用特洛伊木馬這個典故,意義是一樣的。特洛伊木馬是一個程式,它隱藏在看起來無害的程式裏。當它隱身其中的程式運行時,特洛伊木馬就啟動,執行一些用戶不希望進行的動作。特洛伊木馬不複製自身。
滴管也是程式,是專門為了對抗防病毒檢測而設計的,通常使用了加密手段,以阻止防病毒程式發現它們。滴管的典型作用是傳送、安裝病毒。它們守護在系統上,等待特定事件發生。當特定事件出現時,滴管程式就啟動,然後用自身包含的病毒感染系統。
與這些程式有關的另一個概念是炸彈。炸彈通常植入惡件,以惡件作為啟動炸彈的手段。炸彈程式被設計成在特定事件發生時才啟動。某些炸彈在特定時間啟動,通常使用系統時間。炸彈可以設計成在除夕夜刪除硬碟上的全部DOC文檔檔,或者在某位名人生日的時候彈出一條消息。炸彈還可以設計成被其他事件或條件觸發:比如,炸彈可以等待程式啟動20次,然後刪除程式的範本檔。要是從這個角度來看,炸彈只是惡意的腳本或者調度程式。
病毒可以看作是包括一個或多個惡件程式的特殊例子。它們能夠通過滴管傳播(雖然本身不必是滴管),它們使用蠕蟲的技術來複製自身。雖然從技術上說,病毒不是特洛伊木馬,但是它在兩種方式上很象特洛伊木馬:首先,它們做的是用戶不想做的;其次,通過把自身附著在現有的程式上,它們有效地把原來的程式變成特洛伊木馬(它們隱藏在原來的程式裏,在原程式啟動時,病毒也啟動,並進行用戶不希望進行的活動。)
病毒是如何工作的
病毒以不同的方式工作,不過有一些基本的步驟:
首先,病毒要感染系統
。它通常成為被感染程式檔(COM,EXE或引導磁區)的一部分。以前,程式幾乎毫無例外地都是通過受感染軟碟的流傳而傳播的。而現在,病毒則經常是由網路下載而來,比如作為試用程式安裝檔的一部分、某個程式使用的巨集、或者電子郵件附件。
需要注意的是:電子郵件內容本身不可能是病毒。病毒是程式,它必須被執行才能啟動。病毒當作電子郵件的附件進行傳播,但是,如果不運行它,它就什麼也做不了。只有啟動附件(通常是雙擊附件)時,才會使這種病毒得到執行。有一種簡單的方法,有助於保護你免受這種病毒危害:從不打開可執行檔附件(EXE或COM檔)或者程式檔使用的資料檔案(如OFFICE檔,裏面可能包含有巨集)附件。至於圖片、聲音和其他類型的檔,則是安全的。
帶毒程式到達系統之後,病毒也就駐留在PC上,就象特洛伊木馬程式一樣。它隱藏在其他程式或檔裏,和宿主程序一起啟動。在被感染的可執行檔裏,病毒對原來的程式做了實質的修改,使得原來的代碼指向病毒代碼,在啟動程式碼的同時也啟動病毒代碼。典型的情況是:程式跳轉到病毒代碼,執行病毒代碼,然後再跳轉回原來的代碼。這樣,病毒被啟動,系統也就被感染了。
一旦被啟動,病毒或者立即進行破壞-如果它是直接行動型的病毒;或者駐留在後臺,使用作業系統允許的TSR(終止駐留)過程,作為常駐記憶體程式。多數病毒是第二種類型,叫做常駐型病毒。因為TSR程式可以進行的活動範圍很廣,從啟動程式、備份檔案一直到監視鍵盤或滑鼠活動(甚至更多)。所以一個常駐型病毒,可以設計成去做許多作業系統能做的事。使用炸彈,它可以等待觸發它的事件,然後在系統上活動。有一件它能做的事是掃描磁片或者網路磁片,查找其他正在運行的(或者可執行的)程式,然後把自身拷貝到這些程式上,把它們也全都感染。
病毒類型
病毒的設計者不斷地嘗試新的方法來感染系統
。但是病毒的實際類型還是很少的幾種。它們是:引導型病毒,檔型病毒,巨集病毒。這些類型有不同的名字,還有一些子類型,但是意思是一樣的。
引導型病毒,或稱引導磁區病毒,駐留在PC機硬碟上的特定區域,這個區域只在啟動時被電腦讀取、執行。真正的引導磁區病毒只感染DOS引導磁區,而一種叫做MBR病毒的子類型則感染主引導記錄。硬碟的這兩個區域都是在引導時被讀取,所以病毒也就在這時裝入記憶體。病毒能夠感染軟碟的引導磁區,但是沒有病毒的、防寫的引導軟碟一直是啟動系統的安全方法。當然,問題在於要保證軟碟本身沒被感染,這就是防病毒程式該幹的事了。
檔型病毒,又叫做寄生型病毒,這類病毒把自身附著在可執行檔上,是一類最常見,也是討論得最多的病毒。這樣的病毒通常駐留在記憶體裏,等待用戶運行其他程式,把這當作觸發它的事件,觸發後感染新打開的程式。所以,它們的複製很簡單,只需要通過電腦的正常使用就可進行。有不同類型的檔型病毒,但它們的概念都類似。
巨集病毒,是一種相對較新的類型,它的產生是因為許多程式裏面都內置了編程語言。程式內置的編程語言的設計目的,是用來建立叫做巨集的小程式,幫助用戶使工作自動化。比如,微軟的Oiffice,就帶有這樣的內置語言,實際上Office自己也提供了許多內置的宏。所謂巨集病毒,也是這些程式可以使用的一個巨集,實際上這種類型的病毒最初為人所知,就是因為它感染微軟的Word檔。在目的程式裏打開包含文檔或範本時,如果裏面包含病毒巨集,病毒就會運行並且進行破壞。另外,巨集被設計成能夠把自身拷貝到其他文檔裏,這樣繼續使用軟體,就會造成病毒的不斷傳播。
第四種類型的部分,叫做多體病毒。這種病毒組合了引導磁區病毒和檔型病毒的特點。
如果想得到大量病毒的列表以及它們危害的說明,請參閱Symantec防病毒研究中心 的病毒大百科一節。
越來越聰明
巨集病毒的概念產生,是因為內置的編程語言能夠訪問記憶體和硬碟
。而且,實際上其他一些最新的技術,包括ActiveX 控制項和Java applets,也都有這種能力。它們在設計時,確實是想設計成對硬碟提供保護,防止病毒侵害(Java 要比ActiveX強),但是實際的情況是,僅僅是因為訪問某個Web站點,這些程式就能把自己安裝在用戶的電腦上。很明顯,隨著網路化的程度的提高,通過互聯網進行作業系統升級很方便 (Windows 98 和 NT 5 都可以通過互聯網升級),所以我們在享受這樣的方便性的同時,也把自己置身在受病毒和其他惡件攻擊的更大風險之中。
|
|