病毒程序

**電腦病毒**（英語：computer virus），或稱**電子計算機病毒**，是一種在人為或非人為的情況下產生的、在使用者不知情或未批准下，能自我複製或運行的電腦程式。電腦病毒往往會影響受感染電腦的正常運作，或是被控制而不自知，電腦正常運作僅盜竊資料、或者被利用做其他用途等使用者非自發啟動的行為。

## 病毒作者

有不少製作病毒的駭客被逮捕及起訴，判決的輕重各國皆不同，如羅馬尼亞西歐班尼花費 15 分鐘寫的 MSBlast.F 變種大約只感染了 1,000 台電腦，按羅馬尼亞的法律他就有可能最高會被判 15 年有期徒刑。1998 年台灣病毒作者陳盈豪寫的 CIH 病毒據猜測造成全球 600 萬台電腦癱瘓，但他因為在被逮捕後無人起訴而免於法律制裁，在 2001 年有人以 CIH 受害者的身分起訴陳盈豪，才使他再次被逮捕，按照台灣當時的法律，他被判損毀罪，面臨最高 3 年以下的有期徒刑。

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

一公司的分析報告稱：目前全世界現有 200 萬有能力寫較成熟電腦病毒的程式設計師。

## 歷史

### 學術工作

第一份關於計算機病毒理論的學術工作（雖然 "病毒" 一詞在當時並未使用）於 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）》，描述了一個叫做「磁帶蠕蟲」、在網路上刪除資料的程式。

### 病毒程式

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

## 感染策略

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

### 非常駐型病毒

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

### 常駐型病毒

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

## 傳播途徑和宿主

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

### 抽取式驅動器

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

**解決方法**
: 抽取式驅動器插入電腦前，先將防寫功能打開；使用者自行刪除 autorun.inf 檔案；使用防毒軟體來修復受感染的電腦；開啟虛擬機檢測 USB 的安全性。

**中毒後主要症狀**
: 防毒軟體關閉；經常跑出看不懂的視窗；癱瘓電腦運作。

## 躲避偵測的方法

### 隱蔽

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

#### 自修改

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

#### 隨機加密

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

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

#### 多態

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

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

#### 變形

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

## 命名

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

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

## 特徵

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

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

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

## 主要特徵詳解

### 傳播性

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

### 隱蔽性

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

### 感染性

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

### 電腦病毒潛伏性

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

### 可激發性

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

### 表現性

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

## 分類

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

### 木馬 / 殭屍網路

* 有些也叫作**遠端控制軟體**，如果木馬能連通的話，那麼可以說控制者已經得到了遠端電腦的全部操作控制權限，操作遠端電腦與操作自己電腦基本沒什麼大的區別，這類程式可以監視、攝錄被控使用者的網路攝影機與截取密碼等，以及進行使用者可進行的幾乎所有操作（硬體拔插、系統未啟動或未聯網時無法控制）。而 Windows NT 以後的版本內建的「遠端桌面連接」，或其他一些正規遠控軟體，如若未進行良好的安全設定或被不良使用者篡改利用，也可能起到類似作用。但他們通常不會被稱作病毒或木馬軟體，判斷依據主要取決於軟體的設計目的和是否明確告知了電腦所有者。

* 使用者一旦感染了特洛伊木馬，就會成為「殭屍」（或常被稱為「肉雞」），成為任駭客手中擺布的「機器人」。通常駭客或腳本小子（script kids）可以利用數以萬計的「殭屍」傳送大量偽造包或者是垃圾封包對預定目標進行阻斷服務攻擊，造成被攻擊目標癱瘓。

### 有害軟體

* 蠕蟲病毒漏洞利用類，也是我們最熟知的病毒，通常在全世界範圍內大規模爆發的就是它了。如針對舊版本未打修補程式的 Windows XP 的衝擊波病毒和震盪波病毒。有時與殭屍網路配合，主要使用緩衝區溢位技術。

* 間諜軟體和流氓軟體，是部份不良網路公司出品的一種收集使用者瀏覽網頁習慣而制訂自己廣告投放策略的軟體。這種軟體本身對電腦的危害性不是很大，只是中毒者隱私遭到洩露被收集走和一旦安裝上它就無法正常刪除移除了。比如對 Internet Explorer 的廣告軟體會自動修改並釘選使用者預設首頁以及載入廣告公司的工具條。

* 惡作劇的破壞性軟體，如破壞性很大的「格盤炸彈」，執行程式後自動格式化硬碟，原本只為「愚人」目的，但這種惡意程式執行後就會對使用者重要資料造成很大的損失。與此相同的還有檔案感染器（File infector）以及在 DOS 下的根磁區病毒。
* 檔案型病毒通常寄居於可執行檔（副檔名為.EXE 或.COM 的檔案），當被感染的檔案被執行，病毒便開始破壞電腦，這種病毒都是偽裝成遊戲，成人影片軟體等釣魚的形態出現引發使用者點擊，病毒便明顯地或是偷偷的安裝上去。

### 指令碼病毒

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

## 免殺技術以及新特徵

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

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

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

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

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

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

## 防範與治療

**修補作業系統以及其捆綁的軟體的漏洞**

　
: 安裝系統以及其捆綁的軟體如 Internet Explorer、Windows Media Player 的漏洞安全修補程式，以作業系統 Windows 為例 Windows NT 以及以下版本可以在 Microsoft Update（頁面存檔備份，存於網際網路檔案館）更新系統，Windows 2000SP2 以上，Windows XP 以及 Windows 2003 等版本可以用系統的「自動更新」程式下載修補程式進行安裝。設定一個比較強的系統密碼，關閉系統預設網路共享，防止區域網路入侵或弱口令蠕蟲傳播。定期檢查系統設定公用程式啟動索引標籤情況，並對不明的 Windows 服務予以停止。

**安裝並及時更新防毒軟體與防火牆產品**
: 保持最新病毒媒體櫃以便能夠查出最新的病毒，如一些反病毒軟體的升級伺服器每小時就有新病毒媒體櫃包可供使用者更新。而在防火牆的使用中應注意到禁止來路不明的軟體存取網路。由於免殺以及處理程序注入等原因，有個別病毒很容易穿過防毒以及防火牆的雙重防守，遇到這樣的情況就要注意到使用特殊防火牆來防止處理程序注入，以及經常檢查啟動項、服務。一些特殊防火牆可以「主動防禦」以及登錄檔即時監視，每次不良程式針對電腦的惡意操作都可以實施攔截阻斷。

**不要點來路不明連接以及執行不明程式**
: 來路不明的連接，很可能是蠕蟲病毒自動通過電子郵件或即時通訊軟體發過來的，如 QQ 病毒之一的 QQ 尾巴，大多這樣資訊中所帶連接指向都是些利用 IE 瀏覽器漏洞的網站，使用者存取這些網站後不用下載直接就可能會中更多的病毒。另外不要執行來路不明的程式，如一些「性誘惑」的檔名騙人吸引人去點擊，點擊後病毒就在系統中執行了。

## 參見

* 病毒製作者
  * 程式設計師
  * 駭客
  * 被逮捕的駭客
* 相關電腦程式
  * 蠕蟲病毒
  * 殭屍網路 - 分散式阻斷服務攻擊（DDoS）
  * 特洛伊木馬
  * 後門
* 誘捕、防止以及查殺病毒
  * 蜜罐技術 - 可以誘捕駭客以及蠕蟲病毒
  * 防毒軟體
  * 防火牆
  * 入侵預防系統（HIPS）
  * 反間諜軟體

## 參考資料

## 外部連結

* 中國國家電腦病毒應急處理中心發表的報告
  * **（PDF）** 我國電腦病毒的特點和發展趨勢（頁面存檔備份，存於網際網路檔案館）（簡體中文）
  * **（DOC）** 2007 年電腦病毒疫情調查技術分析報告（簡體中文）
* （繁體中文） 何謂電腦病毒？（頁面存檔備份，存於網際網路檔案館）
* （繁體中文） IT 自救術－病毒（和電腦程式）的運作原理