計算機病毒知多少
引言
計算機病毒很容易引起我們的注意。一方面,病毒讓我們知道自己是多么的脆弱,一個編寫巧妙的病毒可以給全球的互聯網帶來巨大的影響;另一方面,它也讓我們知道人類是多么地智慧,人與人之間的相互聯系又是多么的緊密。
例如,專家估計Mydoom蠕蟲在2004年1月的一天之內就感染了大約25萬臺計算機(時代在線)。回到1999年3月,梅麗莎病毒的強大威力甚至迫使微軟(Microsoft)和其他一些大型公司在該病毒得到遏制之前完全關閉它們的電子郵件系統。2000年的“我愛你”病毒也帶來了類似的災難性后果。而當您發現梅麗莎和“我愛你”病毒都是如此簡單之時,它們所帶來的嚴重后果會給您留下更深刻的印象。
在本文中,我們將探討有關病毒(“傳統”病毒和新型電子郵件病毒)的問題,以便讓您了解病毒的工作原理以及如何防范病毒、保護自己。一般說來,現在病毒沒有以前那么大的影響力了,但偶爾還是會有人找到制造病毒的新方法,而這正是他們制造新聞的手段。
如果您收聽新聞,您可能知道電子感染有多種不同形式。下面是一些常見的:
- 病毒——病毒是寄生在正常程序中的一小段代碼。例如,病毒可能將自己附屬到電子表格之類的程序中。每次電子表格程序運行時,病毒也會跟著運行,這樣它就有機會復制自己(通過附屬到其他程序)或進行破壞。
- 電子郵件病毒——電子郵件病毒通過電子郵件進行傳播,它一般通過向病毒受害者的電子郵件地址簿中的聯系人發送電子郵件來復制自身。
- 蠕蟲——蠕蟲是利用計算機網絡和安全漏洞來復制自身的一小段代碼。蠕蟲代碼的副本可以掃描網絡,以查找具有特定安全漏洞的另一臺計算機。它可以利用該漏洞將自身復制到新的計算機中,然后又從新的位置開始進行復制。
- 特洛伊木馬——特洛伊木馬只是一個計算機程序。它聲稱可以執行某項任務(它可能聲稱自己是一種游戲),但當您運行它時,它卻會進行一些破壞活動(它可能會擦除您硬盤上的數據)。特洛伊木馬不會自動進行自我復制。
計算機病毒之所以被稱為“病毒”,是因為它們同生物病毒有一些相似之處。計算機病毒從一臺計算機傳播到另一臺計算機,就像生物病毒從一個人傳播到另一個人身上。
此外,它們還有一些深層次的共同點。生物病毒并不是一種活的生命體。它們只是一小段DNA代碼,外面包著一層保護性的外套。與細胞不同,這種病毒不能做任何事情或是進行自我復制,因為它不是活體。生物病毒必須先將其DNA注入細胞。然后,這種有毒的DNA利用細胞的現有機制進行自我復制。在一些情況下,細胞會一直吸收有毒的微粒,直到它爆裂并釋放出病毒,而在另一些情況下,細胞中會生成新的病毒微粒,一次一個,而細胞仍然存活。
計算機病毒也有某些類似的特點。計算機病毒必須寄生到其他一些程序或文檔中才能被執行。而一旦它處于運行狀態,它就可以感染其他程序或文檔。顯而易見,計算機病毒和生物病毒的行為并不是完全相同,但它們也有著足夠多的相似之處,所以才都被稱為“病毒”。
什么是“蠕蟲”?
蠕蟲是一種計算機程序,它能夠從一臺計算機自行復制到另一臺計算機。蠕蟲一般通過計算機網絡傳播和感染其他計算機。利用網絡,蠕蟲可以迅速進行自我復制。例如,在2001年7月19日,紅色代碼蠕蟲就在大約9個小時內復制了250,000多次。
蠕蟲通常利用軟件或操作系統中存在的某種安全漏洞。例如,Slammer蠕蟲(曾于2003年1月造成混亂局面)利用了Microsoft SQL服務器的漏洞。這篇文章可以幫助您了解這個小型的Slammer程序(376個字節)。
蠕蟲在自我復制時會耗盡計算機時間和網絡帶寬,而且通常是一些有害的蓄意行為。2001年,紅色代碼蠕蟲就曾造成巨大影響。專家曾預測,這種蠕蟲阻塞互聯網的嚴重程度能夠使網絡逐漸陷于癱瘓狀態。
紅色代碼蠕蟲在開始復制時的確會阻塞互聯網的流量,但并不像預測的那么嚴重。這種蠕蟲的每個副本都會掃描互聯網,查找沒有安裝Microsoft安全修補程序的WindowsNT或Windows2000服務器。當它找到不安全的服務器時,就會把自身復制到那里。然后,新的副本接著掃描網絡,以查找其他可以感染的服務器。取決于不安全服務器的數量,蠕蟲可以制造出數以萬計的副本。
紅色代碼蠕蟲的目的是做三件事:
- 在每個月的頭20天進行自我復制。
- 把被感染服務器上的網頁內容篡改成帶有“Hacked by Chinese”字樣的頁面。
- 對白宮的Web服務器發動一次集中攻擊,試圖控制該服務器。
最常見的紅色代碼是原始Ida Code Red(2001年7月19日爆發)的一個變體,通常被稱為變種。根據美國國家基礎設施保護中心(NIPC)的資料:
首先由eEye Digital Security報告發現的Ida Code Red蠕蟲利用了Microsoft IIS Internet服務器應用程序編程接口(ISAPI)服務的眾所周知的脆弱性。未安裝修補程序的系統很容易受到Idq.dll的“緩沖區溢出”的影響,從而讓攻擊者能夠在受感染系統中運行嵌入代碼。這種駐留在內存中的蠕蟲一旦在系統中被激活,會首先嘗試創建一系列隨機IP地址來感染未受保護的Web服務器,從而傳播自己。然后,每個蠕蟲線程都會檢查受感染計算機的時鐘。NIPC確定Ida Code Red蠕蟲的DOS執行的觸發器時間是格林尼治標準時間的2001年7月20日0時,也就是美國東部時間的晚上8:00。
在成功感染計算機后,這種蠕蟲會在指定的時間連接到域www.whitehouse.gov。這種攻擊全部由受感染系統發起,它們同時向 www.whitehouse.gov(198.137.240.91)的80端口發送100次連接。
美國政府更改了www.whitehouse.gov的IP地址,從而繞過了Ida Code Red蠕蟲的攻擊,并向公眾發出了Ida Code Red蠕蟲警報,建議WindowsNT或Windows2000的Web服務器的用戶務必安裝安全補丁程序。
計算機病毒的起源和歷史
人創造了病毒。為了制造病毒,制造者需要編寫代碼,對代碼進行測試,確保它能夠順利傳播,最后再散布病毒。病毒制造者還要設計病毒的攻擊階段,不管病毒帶來的是一封無聊的郵件還是要毀壞硬盤。那他們為什么要這樣做呢?
至少有三種原因。第一種原因與破壞公物者和縱火犯的心理相同。為什么會有人想要打碎別人的車窗,或在建筑物上亂涂亂畫,或燒掉美麗的森林呢?對于一些人來說,這些事情讓他們感到興奮。如果這種人恰巧懂得計算機編程知識,那么他們就可能會把精力用在編寫破壞性病毒上面來。
第二種原因是有些人抱著幸災樂禍的心理,喜歡看見事情發展到一發不可收拾的地步。很多人都樂于看到爆炸或車禍這樣的事件發生。在您成長的過程中,可能發現鄰居某個小孩學會了制造火藥,然后他越做越大,甚至做成了炸彈,最后他不是因為厭倦而罷手,就是徹底地毀了自己。那些能制造出一種迅速傳播的病毒的人也有差不多同樣的心理——病毒在計算機內制造了一個炸彈,隨著越來越多的計算機受到感染,最后的爆炸也就越來越“有趣”。
第三種原因可能與虛榮心或這樣做所帶來的刺激感有關。這種人喜歡爭當第一(如最早攀登珠穆朗瑪峰)。山就在那里,因此總有人想去爬它。如果您是編程人員,而您又發現了可以利用的安全漏洞,您很可能想搶在別人之前利用這個漏洞,以標榜自己。“當然,我可以把這個漏洞告訴別人。但自己直接把漏洞展示給大家看不是更好嗎?”正是這種邏輯導致了很多病毒的產生。
當然,大多數病毒制造者好像都忽略了一個事實:他們所謂的創造實際上給計算機用戶帶來了極大的損失。破壞用戶計算機上的全部文件是其中之一。在病毒造成實際損害之后,大公司的計算機人員必須花費大量的時間來清除病毒。即使只是一封無聊的郵件也會帶來實際的損害,因為收件人還要浪費時間來刪除它。正因為如此,法律對病毒制造者的制裁也極為嚴厲。
傳統計算機病毒的大規模傳播始于上世紀80年代后期,這些病毒之所以能夠大行其道,主要有以下幾個方面的原因。第一個是個人計算機(PC)的普及。在上世紀80年代之前,家用計算機基本上不存在,或者只把它們當作玩具來玩。真正的計算機是很少見的,只有一些“專家”才有權使用它們。到了上世紀80年代,隨著IBM的PC機(1982年推出)和Apple公司的Macintosh(1984年推出)的流行,真正的計算機才開始進入企業和家庭。到上世紀80年代后期,個人計算機已經廣泛進入了企業、家庭和大學校園。
第二個原因是計算機bbs的使用。用戶可以通過調制解調器撥號進入公告板,下載各種各樣的程序。當時,游戲、簡單的文字處理軟件和電子表格等非常流行。bbs的使用導致了后來我們稱之為特洛伊木馬病毒的前身的產生。當您看到有關特洛伊木馬的介紹時,您會覺得它是一個非常棒的程序。因此才會下載它。不過,當您運行該程序時,它所做出的事情可就沒那么好了,比如擦除您磁盤上的數據。您以為只是下載了一個好玩的游戲,而實際它卻擦除了您系統中的所有數據。不過,特洛伊木馬只能給一小部分用戶帶來麻煩,因為它們很快就會被發現。這樣,公告板的所有者會從系統中清除木馬文件,而用戶也可以給其他人發送有關病毒的警告郵件。
第三個導致病毒產生的原因是軟盤。在上世紀80年代,程序的規模都很小,您甚至可以將操作系統、文字處理軟件(以及其他一些程序)連同一些文檔統統放入一兩張軟盤中。當時很多計算機都沒有硬盤,在您打開計算機時,就需要從軟盤上加載操作系統和其他所有內容。病毒正是利用這三個因素制造了第一個可以自我復制的程序。
早期的病毒都是依附到某個常見程序(例如一款流行的游戲或文字處理軟件)中的一小段代碼。用戶可能從公告板中下載了受感染的游戲,并運行了該游戲。像這樣的病毒就是嵌入到一個合法的大型程序中的一小段代碼。當用戶執行合法程序時,病毒會先運行,而這也正是制造病毒的本意。病毒首先會將自身加載到內存中,然后查找磁盤上是否還有其他程序。如果找到了,它就會修改并將自己的代碼添加到這個不受懷疑的程序中。接著,病毒會啟動這個“真正的程序”,而用戶根本無法知道病毒曾運行過。遺憾的是,這時病毒已經復制了自己,因此有兩個程序已被感染了。下次只要執行這兩個程序中的任何一個,病毒就會再感染其他程序,并一直循環下去。
如果其中一個受感染的程序通過軟盤傳播給另外一個用戶,或是上傳到公告板中,那么其他程序就會受到感染。這就是病毒傳播的原理。
傳播的過程是病毒的感染階段。如果病毒只是不斷復制自身的話,它們還不會讓人如此深惡痛絕。但遺憾的是,絕大多數病毒都有某種破壞性的攻擊階段,它們會在這個階段造成一些損害。一些類型的觸發器會激活病毒的攻擊階段,然后它們就會“采取行動”——在屏幕上輸出一封無聊的郵件或擦除您的所有數據等等,無所不能。觸發器可能是某個特定日期,可能是病毒被復制的次數,或是其他諸如此類的事情。
典型的感染和保護
隨著病毒制造者的水平越來越高,他們掌握了一些新的技巧。其中一項重要技巧就是將病毒加載到內存中,這樣只要計算機運行著,這些病毒就可以在后臺活動。這使得病毒能夠更有效地進行自我復制。另一項技巧是感染軟盤和硬盤上的啟動扇區。啟動扇區是一個小型程序,是計算機啟動操作系統時首先加載的部分。它包括一個微型程序,告訴計算機如何加載操作系統的其余部分。通過將自身代碼放入啟動扇區中,病毒就可以確保自身處于運行狀態。它可以立即把自己加載到內存中,而且不管計算機什么時候啟動它都可以運行。啟動扇區病毒可以感染插入計算機中的任何軟盤的啟動扇區。在大學校園那種多人共用計算機的地方,它們會像野火一樣蔓延。
一般說來,現在可執行病毒和啟動扇區病毒都不會再有多大的威脅。第一個原因是現在的程序體積都很龐大。如今您購買的每個程序幾乎都是使用光盤形式分發的。光盤不能被修改,因此病毒無法感染它們。而在程序體積非常龐大之時,要想方便地攜帶它們,唯一簡單可行的方法就是購買光盤。現在的用戶當然不會像上世紀80年代那樣把程序裝進軟盤中帶走。當時購買裝滿程序的軟盤就像買棒球卡一樣流行。此外,現在的操作系統都有啟動扇區保護機制,從而也削弱了啟動扇區病毒的威力。
盡管您的計算機仍然可能會感染啟動扇區病毒和可執行病毒,但現在它們要造成危害已經困難得多了,而且基本上不可能像以前那樣迅速蔓延了。如果用生物學名詞作比喻的話,可以稱之為“生境萎縮”。上世紀80年代,由軟盤、小型程序和脆弱的操作系統所營造的環境讓這些病毒肆虐一時,但隨著大型可執行程序、不可修改的光盤以及更好的操作系統防護措施的出現,適于病毒滋生蔓延的溫床在很大程度上已不復存在了。
計算機病毒世界最后的頑敵就是電子郵件病毒以及1999年3月爆發的梅麗莎病毒。梅麗莎病毒藏身在Microsoft Word文檔中,通過電子郵件進行傳播,其原理如下:
有人采用Word文檔的形式創造了這種病毒,并上傳到互聯網新聞組。任何人如果下載并打開該文檔都會觸發這種病毒。然后,病毒會將文檔(連同自身)通過電子郵件發送給被感染者個人地址簿中的前50位聯系人。由于郵件含有被感染者的姓名等友好信息,因此收件人會誤以為文檔是無害的,并打開它。這樣病毒就可以從收件人的計算機中再產生50封新的電子郵件。因此,梅麗莎病毒已成為目前為止傳播速度最快的病毒!正如前面所提到的,它甚至迫使許多大型公司關閉它們的電子郵件系統。
2000年5月4日爆發的“我愛你”病毒甚至更加簡單。它包含一段作為附件的代碼。用戶如果雙擊附件,這段代碼就會運行。它會將自身的副本發送給被感染計算機地址簿中的所有聯系人,然后開始破壞計算機中的文件。這是再簡單不過的病毒行為。它更像是一種通過電子郵件傳播的特洛伊木馬而非病毒。
梅麗莎病毒利用了被稱為VBA(Visual Basic for Applications)的Microsoft Word中內置的編程語言。它是一種完整的編程語言,利用它,編程人員可以編寫程序來執行一些任務,例如修改文件和發送電子郵件。這種語言還具有一種方便但很危險的自動執行功能。如果將程序插入文檔中,那么只要一打開文檔,程序就會立即運行。這就是梅麗莎病毒的編程原理。任何人打開受梅麗莎病毒感染的文檔,就會立即激活這種病毒。它會發送50封電子郵件,然后感染一個名為NORMAL.DOT的中心文件,這樣其后保存的任何文件都會包含該病毒!它曾造成過極其混亂的局面。
Microsoft應用程序內置了一種稱為宏病毒保護的功能,可以防御這類病毒。打開“宏病毒保護”功能時(默認選項是“打開”),自動執行功能會被禁用。因此,當文檔嘗試自動執行病毒代碼時,系統就會彈出一個對話框來警告用戶。遺憾的是,很多用戶并不知道宏或宏病毒為何物,當他們看見該對話框往往把它忽略掉,于是病毒就有機可趁了。還有很多用戶甚至關閉了保護機制。因此,盡管有防護措施,梅麗莎病毒還是能夠蔓延開來。
對于“我愛你”病毒來說,全部過程都是人為的。如果用戶雙擊了附件中夾帶的程序,那么病毒就會運行并執行一些操作。該病毒之所以能夠如此猖獗,就是因為用戶雙擊了那些可執行程序。
您可以通過以下幾個簡單步驟保護自己的計算機免受病毒的侵害:
- 如果您真的擔心感染傳統病毒(相對于電子郵件病毒),那么您就應該使用一個更加安全的操作系統,如UNIX。我們從未聽說過這些操作系統感染病毒,原因就在于它們的安全功能能夠讓病毒(和一些不受歡迎的訪問者)遠離您的硬盤。
- 如果您使用的是不安全的操作系統,那么購買病毒防護軟件不失為一種好的辦法。
- 如果您只是避免運行來自未知源的程序(例如互聯網),而且堅持使用通過光盤分發的商業軟件,那么您的計算機基本上不會感染傳統病毒。除此以外,您還應該禁用軟盤引導——現在很多計算機都有這項功能,它可以避免因意外留在驅動器中的軟盤而感染啟動扇區病毒的危險。
- 您還應該確保在所有Microsoft應用程序中啟用宏病毒保護,并且在知道這些宏會做什么之前,永遠不要在文檔中運行宏。通常不建議在文檔中添加宏,因此避免使用所有的宏是一種很好的策略。
從Microsoft Word的“工具”菜單中,打開“選項”對話框,確保啟用了“宏病毒保護”選項,如上圖所示。 - 永遠不要雙擊通過電子郵件發送過來的、帶有可執行程序的電子郵件附件。格式為Word文件(.DOC)、電子表格(.XLS)、圖像(.GIF和.JPG)等的文件附件都是數據文件,它們不會帶來任何破壞(不會帶來上文提及的Word和Excel文檔的宏病毒問題)。帶有類似EXE、COM或VBS等擴展名的文件都是可執行文件,而可執行文件可以帶來任何類型的破壞。一旦您運行了,您就授予了它在您的計算機上執行任何任務的權限。唯一的防護辦法就是:永遠不要運行通過電子郵件發送過來的可執行文件。
遵循上面的幾個簡單步驟,即可讓您的計算機遠離病毒的感染。
評論
查看更多