Loading AI tools
電腦程式 来自维基百科,自由的百科全书
電腦病毒是一種惡意軟體,當執行時,會通過修改其他電腦程式並將自己的代碼插入這些程式中來複製自身。如果這種複製成功,受影響的區域就被稱為「感染」了電腦病毒,這是從生物病毒中衍生出來的隱喻。
![]() |
電腦病毒通常需要一個宿主程式。病毒會將自己的代碼寫入宿主程式。當程式運行時,先執行寫入的病毒程式,導致感染和損害。相比之下,電腦蠕蟲不需要宿主程式,因為它是一個獨立的程式或代碼片段。因此,它不受宿主程式的限制,可以獨立運行並主動發動攻擊。
病毒作者使用社交工程欺騙和詳細了解安全漏洞,最初感染系統並傳播病毒。病毒使用複雜的反檢測/隱蔽策略來逃避防病毒軟體。建立病毒的動機可以包括尋求利潤(例如,使用勒索軟體),傳達政治資訊的渴望,個人娛樂,展示軟體中存在漏洞,進行破壞和阻斷服務,或僅僅是因為他們希望探討網路安全問題、人工生命和進化演算法等問題。
電腦病毒每年造成數十億美元的經濟損失。作為回應,一個防病毒軟體產業已經出現,為各種操作系統的使用者提供銷售或免費分發的病毒防護。
有不少製作病毒的駭客被逮捕及起訴,判決的輕重各國皆不同,如羅馬尼亞西歐班尼花費15分鐘寫的MSBlast.F變種大約只感染了1,000台電腦,按羅馬尼亞的法律他就有可能最高會被判15年有期徒刑。1998年台灣病毒作者陳盈豪寫的CIH病毒據猜測造成全球600萬台電腦癱瘓,但他因為在被逮捕後無人起訴而免於法律制裁,在2001年有人以CIH受害者的身分起訴陳盈豪, 才使他再次被逮捕,按照台灣當時的法律,他被判損毀罪,面臨最高3年以下的有期徒刑。
中國大陸的木馬程式「證券大盜」作者張勇因使用其木馬程式截獲股東友帳戶密碼,盜賣股票價值1, 141.6萬元人民幣,非法獲利38.6萬元人民幣,最終的判決結果是無期徒刑。
第一份關於計算機病毒理論的學術工作(雖然"病毒"一詞在當時並未使用)於 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下病毒的泛濫提供了溫床。Linux、Mac OS等作業系統,因使用的人群比較少,病毒一般不容易擴散。大多病毒發布作者的目的有多種,包括惡作劇、想搞破壞、報復及想出名與對研究病毒有特殊嗜好。 病毒主要通過網路瀏覽以及下載,電子郵件以及抽取式磁碟等途徑迅速傳播。[4]
市面上大多的抽取式驅動器都是屬於可讀寫模式,因此很容易寫入Autorun.inf檔案以及許多惡意程式。受到感染的USB隨身碟病毒插入電腦裡後,病毒會躲藏在作業系統中的處理程序,偵測電腦上的一舉一動。當使用者將其他乾淨的USB隨身碟插入受感染的電腦裡,病毒會複製到乾淨的USB隨身碟裡,然後一傳十、十傳百。公用電腦的使用亦導致USB病毒快速散播。[5]
病毒會藉由攔截防毒軟體對作業系統的呼叫來欺騙防毒軟體。當防毒軟體要求作業系統讀取檔案時,病毒可以攔截並處理此項要求,而非交給作業系統執行該要求。病毒可以返回一個未感染的檔案給防毒軟體,使得防毒軟體認為該檔案是乾淨未被感染的。如此一來,病毒可以將自己隱藏起來。現在的防毒軟體使用各種技術來反擊這種手段。要反擊病毒匿蹤,唯一完全可靠的方法是從一個已知是乾淨的媒介開始啟動。
大部份防毒軟體透過所謂的病毒特徵碼來偵知一個檔案是否有被感染。特定病毒,或是同屬於一個家族的病毒會具有特定可辨識的特徵。如果防毒軟體偵測到檔案具有病毒特徵碼,它便會通知使用者該檔案已被感染。使用者可以刪除或是修復被感染的檔案。某些病毒會利用一些技巧使得透過病毒特徵碼進行偵測較為困難。這些病毒會在每一次感染時修改其自身的代碼。換言之,每個被感染的檔案包含的是病毒的變種。只能重灌或下載防毒軟體.
胡搞更甚者是對病毒本身進行簡單的加密。這種情況下,病毒本身會包含數個解密模組和一份被加密的病毒拷貝。如果每一次的感染,病毒都用不同的金鑰加密,那病毒中唯一相同的部份就只有解密模組,常會附於檔案尾端。防毒軟體無法直接透過病毒特徵碼偵測病毒,但它仍可以偵知存在解密模組,這就可以間接偵測病毒。因為這部份是存放在宿主上面的對稱式金鑰,防毒軟體可以利用金鑰將病毒解密,但這並不必要。因為自修改代碼很少見,防毒軟體可以先將這類檔案標記成可疑。
一個古老但簡潔的加密技術將病毒中每一個位元組和一個常數做邏輯互斥或,欲將病毒解密只需簡單的邏輯互斥或。一個程式若可修改自身程式碼就十分可疑,因此許多病毒定義中,將加解密部份視為病毒特徵碼的一部份。
多態是第一個對防毒軟體造成嚴重威脅的技術。就像一般被加密的病毒,一個多態病毒以一個加密的自身拷貝感染檔案,並由其解密模組加以解碼。但是其加密模組在每一次的感染中也會有所修改。因此,一個仔細設計的多態病毒在每一次感染中沒有一個部份是相同的。這使得使用病毒特徵碼進行偵測變得困難。防毒軟體必須在一模擬器上對該病毒加以解密進而偵知該病毒,或是利用加密病毒其統計模板上的分析。要使得多態代碼成為可能,病毒必須在其加密處有一個多態引擎(又稱突變引擎)。關於多態引擎的技術細節請參閱Polymorphic code。
有些多態病毒會限制其突變的速率。例如,一個病毒可能隨著時間只有一小部份突變。或是病毒偵知宿主已被同一個病毒感染,它可以停止自己的突變。如此慢速的突變其優點在於,防毒專家很難得到該病毒具有代表性的樣本。因為在一輪感染中,誘餌檔案只會包含相同或是近似的病毒樣本。這會使得防毒軟體偵測結果變得不可靠,而有些病毒會躲過其偵測。
為了避免被防毒軟體類比而被偵知,有些病毒在每一次的感染都完全將其自身改寫。利用此種技術的病毒被稱為可變形的。要達到可變形,一個變形引擎是必需的。一個變形病毒通常非常龐大且複雜。舉例來說,Simile病毒包含14000行組合語言,其中90%都是變形引擎。
以下表格所示是國際上對病毒命名慣用的字首釋義,DOS下的病毒一般無字首:
字首 | 含義 |
---|---|
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 | 其他病毒(如感染型、開機型、終結型等) |
中間部份指的是病毒的英文名,而字尾一般是變種代號。
在電腦科學裡,電腦病毒是類似生物病毒一樣的程式,它會複製自己並傳播到其他宿主,並對宿主造成損害。宿主也是程式,通常是作業系統,從而進一步傳染到其他程式、其他的電腦。電腦病毒在傳播期間一般會隱蔽自己,由特定的條件觸發,並開始產生破壞。
電腦病毒具有的不良特徵有傳播性、隱蔽性、感染性、潛伏性、可激發性[6]、表現性或破壞性,通常表現兩種以上所述的特徵就可以認定該程式是病毒。
病毒一般會自動利用電子郵件傳播,利用對象為某個漏洞。將病毒自動複製並群發給儲存的通訊錄名單成員。郵件標題較為吸引人點擊,大多利用社會工程學如「我愛妳」這樣家人朋友之間親密的話語,以降低人的警戒性。如果病毒製作者再套用指令碼漏洞,將病毒直接嵌入郵件中,那麼使用者一點郵件標題打開郵件就會中病毒。
一般的病毒僅在數KB左右,這樣除了傳播快速之外,隱蔽性也極強。部份病毒使用「無處理程序」技術或插入到某個系統必要的關鍵處理程序當中,所以在工作管理員中找不到它的單獨執行處理程序。而病毒自身一旦執行後,就會自己修改自己的檔名並隱藏在某個使用者不常去的系統資料夾中,這樣的資料夾通常有上千個系統檔案,如果憑手工尋找很難找到病毒。而病毒在執行前的偽裝技術也不得不值得我們關注,將病毒和一個吸引人的檔案綁紮合併成一個檔案,那麼執行正常吸引他的檔案時,病毒也在我們的作業系統中悄悄的執行了。
某些病毒具有感染性,比如感染中毒使用者電腦上的可執行檔,如exe、bat、scr、com格式,通過這種方法達到自我複製,對自己生存保護的目的。通常也可以利用網路共享的漏洞,複製並傳播給鄰近的電腦使用者群,使鄰里通過路由器上網的電腦或網咖的電腦的多台電腦的程式全部受到感染。
部份病毒有一定的「潛伏期」,在特定的日子,如某個節日或者星期幾按時爆發。如1999年破壞№BIOS的CIH病毒就在每年的4月26日爆發。如同生物病毒一樣,這使電腦病毒可以在爆發之前,以最大幅度散播開去。
根據病毒作者的「需求」,設定觸發病毒攻擊的「玄機」。如CIH病毒的製作者陳盈豪曾打算設計的病毒,就是「精心」為簡體中文Windows系統所設計的。病毒執行後會主動檢測中毒者作業系統的語言,如果發現作業系統語言為簡體中文,病毒就會自動對電腦發起攻擊,而語言不是簡體中文版本的Windows,那麼你即使執行了病毒,病毒也不會對你的電腦發起攻擊或者破壞。[8]
病毒執行後,如果按照作者的設計,會有一定的表現特徵:如CPU佔用率100%,在使用者無任何操作下讀寫硬碟或其他磁碟資料,藍白當機,滑鼠右鍵無法使用等。但這樣明顯的表現特徵,反倒說明被感染病毒者發現自己已經感染病毒,並對清除病毒很有說明,隱蔽性就不存在了。
病毒類型根據中國國家電腦病毒應急處理中心發表的報告統計,占近45%的病毒是木馬程式,蠕蟲占病毒總數的25%以上,占15%以上的是指令碼病毒,其餘的病毒類型分別是:檔案型病毒、破壞性程式和巨集病毒。
免殺是指:對病毒的處理,使之躲過防毒軟體查殺的一種技術。通常病毒剛從病毒作者手中傳播出去前,本身就是免殺的,甚至可以說「病毒比防毒軟體還新,所以防毒軟體根本無法識別它是病毒」,但由於傳播後部份使用者中毒向防毒軟體公司舉報的原因,就會引起安全公司的注意並將之特徵碼收錄到自己的病毒庫當中,病毒就會被防毒軟體所識別。
病毒作者可以通過對病毒進行再次保護如使用彙編加花指令或者給檔案加殼就可以輕易躲過防毒軟體的病毒特徵碼庫而免於被防毒軟體查殺。
美國的Norton Antivirus、McAfee、PC-cillin,羅馬尼亞的Bitdefender,俄羅斯的Kaspersky Anti-Virus,斯洛伐克的NOD32等產品在國際上口碑較好,但殺毒、查殼能力都有限,目前病毒庫總數量也都僅在數十萬個左右。
自我更新性是近年來病毒的又一新特徵。病毒可以藉助於網路進行變種更新,得到最新的免殺版本的病毒並繼續在使用者感染的計算機上運行,比如熊貓燒香病毒的作者就建立了「病毒升級伺服器」,在最勤時一天要對病毒升級8次,比有些殺毒軟體病毒庫的更新速度還快,因為開發者對代碼編輯十分勤奮,所以就造成了殺毒軟體無法識別病毒。
除了自身免殺自我更新之外,很多病毒還具有了對抗它的「天敵」殺毒軟體和防火牆產品反病毒軟體的全新特徵,只要病毒運行後,病毒會自動破壞中毒者計算機上安裝的殺毒軟體和防火牆產品,如病毒自身驅動級Rootkit保護強制檢測並結束殺毒軟體進程,可以過主流殺毒軟體「主動防禦」和穿透軟、硬體還原的機器狗[9],自動修改系統時間導致一些殺毒軟體廠商的正版認證作廢以致殺毒軟體作廢,從而病毒生存能力更加強大。
免殺技術的氾濫使得同一種原型病毒透過外掛程式,理論上可以衍生出近乎無窮無盡的變種,給依賴於特徵碼技術檢測的殺毒軟體帶來很大困擾。近年來,國際反病毒行業普遍開展了各種前瞻性技術研究,試圖扭轉過分依賴特徵碼所產生的不利局面。目前比較有代表性產品的是基於虛擬機技術的啟發式掃瞄軟體,代表廠商NOD32,Dr.Web,和基於行為分析技術的主動防禦軟體,代表廠商中國的微點主動防禦軟體等。