電腦病毒是一種惡意軟件,當執行時,會通過修改其他電腦程式並將自己的代碼插入這些程式中來複製自身。如果這種複製成功,受影響的區域就被稱為「感染」了電腦病毒,這是從生物病毒中衍生出來的隱喻。

電腦病毒的一種症狀:隨機重新命名檔名和副檔名

電腦病毒通常需要一個宿主程式。病毒會將自己的代碼寫入宿主程式。當程式運行時,先執行寫入的病毒程式,導致感染和損害。相比之下,電腦蠕蟲不需要宿主程式,因為它是一個獨立的程式或代碼片段。因此,它不受宿主程式的限制,可以獨立運行並主動發動攻擊。

病毒作者使用社交工程欺騙和詳細了解安全漏洞,最初感染系統並傳播病毒。病毒使用複雜的反檢測/隱蔽策略來逃避防病毒軟件。創建病毒的動機可以包括尋求利潤(例如,使用勒索軟件),傳達政治資訊的渴望,個人娛樂,展示軟件中存在漏洞,進行破壞和阻斷服務,或僅僅是因為他們希望探討網絡安全問題、人工生命和進化演算法等問題。

電腦病毒每年造成數十億美元的經濟損失。作為回應,一個防病毒軟件產業已經出現,為各種操作系統的使用者提供銷售或免費分發的病毒防護。

病毒作者

有不少製作病毒的黑客被逮捕及起訴,判決的輕重各國皆不同,如羅馬尼亞西歐班尼花費15分鐘寫的MSBlast.F變種大約只感染了1,000台電腦,按羅馬尼亞的法律他就有可能最高會被判15年有期徒刑

1998年台灣病毒作者陳盈豪寫的CIH病毒據猜測造成全球600萬台電腦癱瘓,但他因為在被逮捕後無人起訴而免於法律制裁,在2001年有人以CIH受害者的身份起訴陳盈豪, 才使他再次被逮捕,按照台灣當時的法律,他被判損毀罪,面臨最高3年以下的有期徒刑。

中國大陸的木馬程式「證券大盜」作者張勇因使用其木馬程式截獲股民帳戶密碼,盜賣股票價值1, 141.6萬元人民幣,非法獲利38.6萬元人民幣,最終的判決結果是無期徒刑

一公司的分析報告指出:目前全世界現有200萬有能力寫較成熟電腦病毒的程式設計師[1]

歷史

學術工作

Thumb
電腦病毒

第一份關於計算機病毒理論的學術工作(雖然"病毒"一詞在當時並未使用)於 1949年由約翰·馮·諾伊曼完成。當時是以"Theory and Organization of Complicated Automata"為題的一場在伊利諾伊大學的演講,稍後改以"Theory of self-reproducing automata"為題出版。馮·諾伊曼在他的論文中描述一個計算機程式如何複製其自身。

1972年,Veith Risak根據馮·諾伊曼在自我複製上的工作為基礎發表"Self-reproducing automata with minimal information exchange"一文。該文描述一個以西門子4004/35計算機系統為目標,用匯編語言編寫,具有完整功能的計算機病毒。

1980年,Jürgen Kraus於多特蒙德大學撰寫他的學位論文"Self-reproduction of programs"。在他的論文中,他假設計算機程式可以表現出如同病毒般的行為。

「病毒」一詞最早用來表達此意是在弗雷德·科恩(Fred Cohen)1984年的論文《電腦病毒實驗》。

科幻小說

而病毒一詞廣為人知是得力於科幻小說。一部是1970年代中期大衛·傑洛德(David Gerrold)的《When H.A.R.L.I.E. was One》,描述了一個叫「病毒」的程式和與之對戰的叫「抗體」的程式;另一部是約翰·布魯勒爾(John Brunner)1975年的小說《震盪波騎士(ShakewaveRider)》,描述了一個叫做「磁帶蠕蟲」、在網絡上刪除數據的程式。[2]

病毒程式

1960年代初,美國麻省理工學院的一些青年研究人員,在做完工作後,利用業餘時間玩一種他們自己創造的電腦遊戲。做法是某個人編制一段小程式,然後輸入到電腦中執行,並銷毀對方的遊戲程式。而這也可能就是電腦病毒的雛形。[來源請求]

感染策略

為了能夠複製其自身,病毒必須能夠執行代碼並能夠對主記憶體執行寫操作。基於這個原因,許多病毒都是將自己附着在合法的執行檔上。如果使用者企圖執行該執行檔,那麼病毒就有機會運行。病毒可以根據執行時所表現出來的行為分成兩類。非常駐型病毒會立即尋找其它宿主並伺機加以感染,之後再將控制權交給被感染的應用程式。常駐型病毒被執行時並不會尋找其它宿主。相反的,一個常駐型病毒會將自己載入主記憶體並將控制權交給宿主。該病毒於背景中執行並伺機感染其它目標。

非常駐型病毒

非常駐型病毒可以被想成具有搜尋模組和複製模組的程式。搜尋模組負責尋找可被感染的檔案,一旦搜尋到該檔案,搜尋模組就會啟動複製模組進行感染。

常駐型病毒

常駐型病毒包含複製模組,其角色類似於非常駐型病毒中的複製模組。複製模組在常駐型病毒中不會被搜尋模組調用。病毒在被執行時會將複製模組載入主記憶體,並確保當作業系統執行特定動作時,該複製模組會被調用。例如,複製模組會在作業系統執行其它檔案時被調用。在這個例子中,所有可以被執行的檔案均會被感染。常駐型病毒有時會被區分成快速感染者和慢速感染者。快速感染者會試圖感染盡可能多的檔案。例如,一個快速感染者可以感染所有被存取到的檔案。這會對防毒軟件造成特別的問題。當執行全系統防護時,防毒軟件需要掃描所有可能會被感染的檔案。如果防毒軟件沒有察覺到主記憶體中有快速感染者,快速感染者可以藉此搭便車,利用防毒軟件掃描檔案的同時進行感染。快速感染者依賴其快速感染的能力。但這同時會使得快速感染者容易被偵測到,這是因為其行為會使得系統效能降低,進而增加被防毒軟件偵測到的風險。相反的,慢速感染者被設計成偶而才對目標進行感染,如此一來就可避免被偵測到的機會。例如,有些慢速感染者只有在其它檔案被拷貝時才會進行感染。但是慢速感染者此種試圖避免被偵測到的作法似乎並不成功。

傳播途徑和宿主

由於作業系統桌面環境90%的市場都是使用微軟Windows系列產品[3], 所以病毒作者紛紛把病毒攻擊對象選為Windows。製作病毒者首先應該確定要攻擊的作業系統版本有何漏洞,這才是他所寫的病毒能夠利用的關鍵。Windows當時並沒有有效的安全與防禦功能,且使用者常以管理員權限執行未經安全檢查的軟件,這也為Windows下病毒的泛濫提供了溫床。LinuxMac OS作業系統,因使用的人群比較少,病毒一般不容易擴散。大多病毒發佈作者的目的有多種,包括惡作劇、想搞破壞、報復及想出名與對研究病毒有特殊嗜好。 病毒主要通過網路瀏覽以及下載電子郵件以及抽取式磁碟等途徑迅速傳播。[4]

抽取式驅動器

市面上大多的抽取式驅動器都是屬於可讀寫模式,因此很容易寫入Autorun.inf檔案以及許多惡意程式。受到感染的USB手指病毒插入電腦裏後,病毒會躲藏在作業系統中的處理程序,偵測電腦上的一舉一動。當使用者將其他乾淨的USB手指插入受感染的電腦裏,病毒會複製到乾淨的USB手指裏,然後一傳十、十傳百。公用電腦的使用亦導致USB病毒快速散播。[5]

解決方法
抽取式驅動器插入電腦前,先將防寫功能打開;使用者自行刪除autorun.inf檔案;使用防毒軟件來修復受感染的電腦;開啟虛擬機檢測USB的安全性。
中毒後主要症狀
防毒軟件關閉;經常跑出看不懂的視窗;癱瘓電腦運作。

躲避偵測的方法

隱蔽

病毒會藉由攔截防毒軟件對作業系統的呼叫來欺騙防毒軟件。當防毒軟件要求作業系統讀取檔案時,病毒可以攔截並處理此項要求,而非交給作業系統執行該要求。病毒可以返回一個未感染的檔案給防毒軟件,使得防毒軟件認為該檔案是乾淨未被感染的。如此一來,病毒可以將自己隱藏起來。現在的防毒軟件使用各種技術來反擊這種手段。要反擊病毒匿蹤,唯一完全可靠的方法是從一個已知是乾淨的媒介開始啟動。

自修改

大部份防毒軟件透過所謂的病毒特徵碼來偵知一個檔案是否有被感染。特定病毒,或是同屬於一個家族的病毒會具有特定可辨識的特徵。如果防毒軟件偵測到檔案具有病毒特徵碼,它便會通知使用者該檔案已被感染。使用者可以刪除或是修復被感染的檔案。某些病毒會利用一些技巧使得透過病毒特徵碼進行偵測較為困難。這些病毒會在每一次感染時修改其自身的代碼。換言之,每個被感染的檔案包含的是病毒的變種。只能重灌或下載防毒軟件.

隨機加密

胡搞更甚者是對病毒本身進行簡單的加密。這種情況下,病毒本身會包含數個解密模組和一份被加密的病毒拷貝。如果每一次的感染,病毒都用不同的金鑰加密,那病毒中唯一相同的部份就只有解密模組,常會附於檔案尾端。防毒軟件無法直接透過病毒特徵碼偵測病毒,但它仍可以偵知存在解密模組,這就可以間接偵測病毒。因為這部份是存放在宿主上面的對稱式金鑰,防毒軟件可以利用金鑰將病毒解密,但這並不必要。因為自修改代碼很少見,防毒軟件可以先將這類檔案標記成可疑。

一個古老但簡潔的加密技術將病毒中每一個位元組和一個常數做邏輯異或,欲將病毒解密只需簡單的邏輯異或。一個程式若可修改自身程式碼就十分可疑,因此許多病毒定義中,將加解密部份視為病毒特徵碼的一部份。

多態

多態是第一個對防毒軟件造成嚴重威脅的技術。就像一般被加密的病毒,一個多態病毒以一個加密的自身拷貝感染檔案,並由其解密模組加以解碼。但是其加密模組在每一次的感染中也會有所修改。因此,一個仔細設計的多態病毒在每一次感染中沒有一個部份是相同的。這使得使用病毒特徵碼進行偵測變得困難。防毒軟件必須在一模擬器上對該病毒加以解密進而偵知該病毒,或是利用加密病毒其統計模板上的分析。要使得多態代碼成為可能,病毒必須在其加密處有一個多態引擎(又稱突變引擎)。關於多態引擎的技術細節請參閱Polymorphic code

有些多態病毒會限制其突變的速率。例如,一個病毒可能隨着時間只有一小部份突變。或是病毒偵知宿主已被同一個病毒感染,它可以停止自己的突變。如此慢速的突變其優點在於,防毒專家很難得到該病毒具有代表性的樣本。因為在一輪感染中,誘餌檔案只會包含相同或是近似的病毒樣本。這會使得防毒軟件偵測結果變得不可靠,而有些病毒會躲過其偵測。

變形

為了避免被防毒軟件模擬而被偵知,有些病毒在每一次的感染都完全將其自身改寫。利用此種技術的病毒被稱為可變形的。要達到可變形,一個變形引擎是必需的。一個變形病毒通常非常龐大且複雜。舉例來說,Simile英語Simile (computer virus)病毒包含14000行匯編語言,其中90%都是變形引擎。

命名

以下表格所示是國際上對病毒命名慣用的字首釋義,DOS下的病毒一般無字首:

More information 字首, 含義 ...
字首 含義
WM Word6.0、Word95巨集病毒
WM97 Word97巨集病毒
XM Excel5.0、Excel95巨集病毒
X97M Excel5.0和Excel97版本下發作
XF Excel程式病毒
AM Access95巨集病毒
AM97M Access97巨集病毒
W95 Windows95、98病毒
Win Windows3.x病毒
W32 32位元病毒,感染所有32位元Windows系統
WINT 32位元Windows病毒,只感染Windows NT
Trojan/Troj 特洛伊木馬
VBS VBScript程式語言編寫的病毒
VSM 感染Visio VBA(Visual Basic for Applications)巨集或script的巨集或script病毒
JS JScript程式語言編寫的病毒
PE 32位元定址的Windows病毒
OSX OS X的病毒
OSXL OS X Lion或者更新版本的病毒
Virus 其他病毒(如感染型、開機型、終結型等)
Close

中間部份指的是病毒的英文名,而字尾一般是變種代號。

特徵

電腦科學裏,電腦病毒是類似生物病毒一樣的程式,它會複製自己並傳播到其他宿主,並對宿主造成損害。宿主也是程式,通常是作業系統,從而進一步傳染到其他程式、其他的電腦。電腦病毒在傳播期間一般會隱蔽自己,由特定的條件觸發,並開始產生破壞。

電腦病毒具有的不良特徵有傳播性、隱蔽性、感染性、潛伏性、可激發性[6]、表現性或破壞性,通常表現兩種以上所述的特徵就可以認定該程式是病毒。

電腦病毒的生命周期為開發期→傳染期→潛伏期→發作期→發現期→消化期→消亡期。[4][7]

主要特徵詳解

傳播性

病毒一般會自動利用電子郵件傳播,利用對象為某個漏洞。將病毒自動複製並群發給儲存的通訊錄名單成員。郵件標題較為吸引人點擊,大多利用社會工程學如「我愛妳」這樣家人朋友之間親密的話語,以降低人的警戒性。如果病毒製作者再套用指令碼漏洞,將病毒直接嵌入郵件中,那麼使用者一點郵件標題打開郵件就會中病毒。

隱蔽性

一般的病毒僅在數KB左右,這樣除了傳播快速之外,隱蔽性也極強。部份病毒使用「無處理程序」技術或插入到某個系統必要的關鍵處理程序當中,所以在工作管理員中找不到它的單獨執行處理程序。而病毒自身一旦執行後,就會自己修改自己的檔名並隱藏在某個使用者不常去的系統資料夾中,這樣的資料夾通常有上千個系統檔案,如果憑手工尋找很難找到病毒。而病毒在執行前的偽裝技術也不得不值得我們關注,將病毒和一個吸引人的檔案綁紮合併成一個檔案,那麼執行正常吸引他的檔案時,病毒也在我們的作業系統中悄悄的執行了。

感染性

某些病毒具有感染性,比如感染中毒使用者電腦上的可執行檔案,如exe、bat、scr、com格式,通過這種方法達到自我複製,對自己生存保護的目的。通常也可以利用網絡共用的漏洞,複製並傳播給鄰近的電腦使用者群,使鄰里通過路由器上網的電腦或網吧的電腦的多台電腦的程式全部受到感染。

電腦病毒潛伏性

部份病毒有一定的「潛伏期」,在特定的日子,如某個節日或者星期幾按時爆發。如1999年破壞№BIOSCIH病毒就在每年的4月26日爆發。如同生物病毒一樣,這使電腦病毒可以在爆發之前,以最大幅度散播開去。

可激發性

根據病毒作者的「需求」,設置觸發病毒攻擊的「玄機」。如CIH病毒的製作者陳盈豪曾打算設計的病毒,就是「精心」為簡體中文Windows系統所設計的。病毒執行後會主動檢測中毒者作業系統的語言,如果發現作業系統語言為簡體中文,病毒就會自動對電腦發起攻擊,而語言不是簡體中文版本的Windows,那麼你即使執行了病毒,病毒也不會對你的電腦發起攻擊或者破壞。[8]

表現性

病毒執行後,如果按照作者的設計,會有一定的表現特徵:如CPU佔用率100%,在使用者無任何操作下讀寫硬碟或其他磁碟數據,藍畫面死機滑鼠右鍵無法使用等。但這樣明顯的表現特徵,反倒說明被感染病毒者發現自己已經感染病毒,並對清除病毒很有說明,隱蔽性就不存在了。

分類

病毒類型根據中國國家電腦病毒應急處理中心發表的報告統計,占近45%的病毒是木馬程式,蠕蟲占病毒總數的25%以上,佔15%以上的是指令碼病毒,其餘的病毒類型分別是:檔案型病毒、破壞性程式和巨集病毒。

木馬/殭屍網絡

  • 有些也叫作遠端控制軟件,如果木馬能連通的話,那麼可以說控制者已經得到了遠端電腦的全部操作控制權限,操作遠端電腦與操作自己電腦基本沒什麼大的區別,這類程式可以監視、攝錄被控使用者的網絡攝影機與截取密碼等,以及進行使用者可進行的幾乎所有操作(硬件拔插、系統未啟動或未聯網時無法控制)。而Windows NT以後的版本內建的「遠端桌面連接」,或其他一些正規遠控軟件,如若未進行良好的安全設置或被不良使用者篡改利用,也可能起到類似作用。但他們通常不會被稱作病毒或木馬軟件,判斷依據主要取決於軟件的設計目的和是否明確告知了電腦所有者。
  • 使用者一旦感染了特洛伊木馬,就會成為「殭屍」(或常被稱為「肉雞」),成為任黑客手中擺佈的「機械人」。通常黑客或腳本小子(script kids)可以利用數以萬計的「殭屍」傳送大量偽造包或者是垃圾封包對預定目標進行阻斷服務攻擊,造成被攻擊目標癱瘓。

有害軟件

  • 蠕蟲病毒漏洞利用類,也是我們最熟知的病毒,通常在全世界範圍內大規模爆發的就是它了。如針對舊版本未打修補程式的Windows XP衝擊波病毒震盪波病毒。有時與殭屍網絡配合,主要使用緩衝區溢位技術。
  • 間諜軟件流氓軟件,是部份不良網絡公司出品的一種收集使用者瀏覽網頁習慣而制訂自己廣告投放策略的軟件。這種軟件本身對電腦的危害性不是很大,只是中毒者私隱遭到洩露被收集走和一旦安裝上它就無法正常刪除解除安裝了。比如對Internet Explorer的廣告軟件會自動修改並釘選使用者預設首頁以及載入廣告公司的工具條。
  • 惡作劇的破壞性軟件,如破壞性很大的「格盤炸彈」,執行程式後自動格式化硬碟,原本只為「愚人」目的,但這種惡意程式執行後就會對使用者重要數據造成很大的損失。與此相同的還有檔案感染器(File infector)以及在DOS下的根磁區病毒。
  • 檔案型病毒通常寄居於可執行檔(副檔名為.EXE或.COM的檔案),當被感染的檔案被執行,病毒便開始破壞電腦,這種病毒都是偽裝成遊戲,成人影片軟件等釣魚的形態出現引發使用者點擊,病毒便明顯地或是偷偷的安裝上去。

指令碼病毒

  • 巨集病毒的感染對象為Microsoft開發的辦公系列軟件,也有專門針對其他軟件的變種。Microsoft WordExcel這些辦公軟件本身支援執行可進行某些檔案操作的命令,所以也被Office文件中含有惡意的巨集病毒所利用。openoffice.org對Microsoft的VBS巨集僅進行編輯支援而不執行,所以含有巨集病毒的MS Office文件在openoffice.org下打開後病毒無法執行。

免殺技術以及新特徵

免殺是指:對病毒的處理,使之躲過防毒軟件查殺的一種技術。通常病毒剛從病毒作者手中傳播出去前,本身就是免殺的,甚至可以說「病毒比防毒軟件還新,所以防毒軟件根本無法識別它是病毒」,但由於傳播後部份用戶中毒向防毒軟件公司舉報的原因,就會引起安全公司的注意並將之特徵碼收錄到自己的病毒庫當中,病毒就會被防毒軟件所識別。

病毒作者可以通過對病毒進行再次保護如使用彙編花指令或者給檔案加殼就可以輕易躲過防毒軟件的病毒特徵碼庫而免於被防毒軟件查殺。

美國的Norton AntivirusMcAfeePC-cillin,羅馬尼亞的Bitdefender,俄羅斯的Kaspersky Anti-Virus,斯洛伐克的NOD32等產品在國際上口碑較好,但殺毒、查殼能力都有限,目前病毒庫總數量也都僅在數十萬個左右。

自我更新性是近年來病毒的又一新特徵。病毒可以藉助於網絡進行變種更新,得到最新的免殺版本的病毒並繼續在用戶感染的計算機上運行,比如熊貓燒香病毒的作者就建立了「病毒升級伺服器」,在最勤時一天要對病毒升級8次,比有些殺毒軟件病毒庫的更新速度還快,因為開發者對代碼編輯十分勤奮,所以就造成了殺毒軟件無法識別病毒。

除了自身免殺自我更新之外,很多病毒還具有了對抗它的「天敵」殺毒軟件和防火牆產品反病毒軟件的全新特徵,只要病毒運行後,病毒會自動破壞中毒者計算機上安裝的殺毒軟件和防火牆產品,如病毒自身驅動級Rootkit保護強制檢測並結束殺毒軟件進程,可以過主流殺毒軟件「主動防禦」和穿透軟、硬件還原的機器狗[9],自動修改系統時間導致一些殺毒軟件廠商的正版認證作廢以致殺毒軟件作廢,從而病毒生存能力更加強大。

免殺技術的氾濫使得同一種原型病毒透過外掛程式,理論上可以衍生出近乎無窮無盡的變種,給依賴於特徵碼技術檢測的殺毒軟件帶來很大困擾。近年來,國際反病毒行業普遍開展了各種前瞻性技術研究,試圖扭轉過分依賴特徵碼所產生的不利局面。目前比較有代表性產品的是基於虛擬機技術的啟發式掃瞄軟件,代表廠商NOD32,Dr.Web,和基於行為分析技術的主動防禦軟件,代表廠商中國的微點主動防禦軟件等。

防範與治療

修補作業系統以及其捆綁的軟件的漏洞
安裝系統以及其捆綁的軟件如Internet ExplorerWindows Media Player的漏洞安全修補程式,以作業系統Windows為例Windows NT以及以下版本可以在Microsoft Update頁面存檔備份,存於互聯網檔案館)更新系統,Windows 2000SP2以上,Windows XP以及Windows 2003等版本可以用系統的「自動更新」程式下載修補程式進行安裝。設置一個比較強的系統密碼,關閉系統預設網絡共用,防止區域網絡入侵或弱口令蠕蟲傳播。定期檢查系統設定公用程式啟動索引標籤情況,並對不明的Windows服務予以停止。
安裝並及時更新防毒軟件與防火牆產品
保持最新病毒媒體櫃以便能夠查出最新的病毒,如一些反病毒軟件的升級伺服器每小時就有新病毒媒體櫃包可供使用者更新。而在防火牆的使用中應注意到禁止來路不明的軟件訪問網絡。由於免殺以及處理程序注入等原因,有個別病毒很容易穿過防毒以及防火牆的雙重防守,遇到這樣的情況就要注意到使用特殊防火牆來防止處理程序注入,以及經常檢查啟動項、服務。一些特殊防火牆可以「主動防禦」以及登錄檔即時監控,每次不良程式針對電腦的惡意操作都可以實施攔截阻斷。
不要點來路不明連接以及執行不明程式[10]
來路不明的連接,很可能是蠕蟲病毒自動通過電子郵件或即時通訊軟件發過來的,如QQ病毒之一的QQ尾巴,大多這樣資訊中所帶連接指向都是些利用IE瀏覽器漏洞的網站,使用者訪問這些網站後不用下載直接就可能會中更多的病毒。另外不要執行來路不明的程式,如一些「誘惑」的檔名騙人吸引人去點擊,點擊後病毒就在系統中執行了。

參見

參考資料

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.