發展歷史
病毒的學術基礎
1949年,馮·諾伊曼在
伊利諾伊大學,以"Theory and Organization of Complicated Automata"為題進行了演講,首次描述了一個
電腦程式如何複製自身。
1972年,Veith Risak在馮·諾伊曼的程式能夠自我複製的工作基礎上,發表文章"Self-reproducingautomata with minimal information exchange",首次描述了一個以西門子4004/35
計算機系統為攻擊目標,以
彙編語言編寫,具有完整功能的計算機病毒。
1980年,Jürgen Kraus於
多特蒙德大學撰寫他的學位論文"Self-reproduction of programs"。在他的論文中,他假設
電腦程式可以表現出如同
病毒般的行為。
1984年,Fred Cohen發表論文“Computer Viruses – Theory and Experiments”,這是第一篇明確將可
自我複製的程式成為
病毒的論文。
1987年,Fred Cohen發表了證明:沒有一種算法可以完美地檢測所有可能的
病毒。科幻小說中的病毒
1970年代中期,大衛·傑洛德(David Gerrold)的《When H.A.R.L.I.E. was One》,描述了一個叫“病毒”的程式和與之對戰的叫“抗體”的程式
1975年,約翰·布魯勒爾(John Brunner)的小說《震盪波騎士(ShakewaveRider)》,描述了一個叫做“磁帶蠕蟲”、在
網路上刪除數據的程式。病毒程式的雛形
1960年代初,
美國麻省理工學院的一些青年研究人員,在做完工作後,利用業餘時間玩一種他們自己創造的計算機遊戲。做法是某個人編制一段小程式,然後輸入到計算機中運行,並銷毀對方的遊戲程式。這也可能就是計算機病毒的雛形。
主要特點
破壞性
計算機病毒對
系統具有破壞性,這也是其與普通程式最大的區別。它能夠破壞
計算機數據,甚至造成大範圍的計算機癱瘓,對計算機用戶造成較大的安全損失。
潛伏性
計算機病毒在侵入計算機時可能並未引起用戶注意,在攻擊條件具備時再實施破壞,而在這一階段計算機病毒可能已經進行大量的 傳染並做了實施攻擊的準備,比如如1999年破壞№BIOS的
CIH病毒就在每年的4月26日爆發。與生物病毒類似,在計算機病毒爆發前,就以最大幅度傳播。
傳染性
計算機病毒在執行中或在傳播中藉助一些機制複製自身到其他 系統或載體中,比如感染中毒用戶計算機上的執行檔,如
exe、
bat、
scr、
com格式,通過這種方法達到自我複製,對自己生存保護的目的。
依附性
計算機病毒往往依附於系統中的某個程式、數據檔案或磁碟
扇區,在它們被套用時才會被執行。
基本原理
計算機病毒的
生命周期主要包括編制代碼、傳播、感染、觸發、運行等環節[9]
計算機病毒的基本原理主要是指計算機病毒傳播、感染和觸發的機制。
傳播機制
傳播機制是指計算機病毒散布和侵入受害系統的方法,它包括計算機病毒自我複製和傳播的情況,也包括
惡意代碼被複製和被傳播的情況等。
檔案流動
檔案流動的主要途徑是移動介質和
網路下載,病毒可能在檔案流動中得到傳播。
網頁腳本和外掛程式
電子郵件
電子郵件支持附屬檔案傳輸功能,它經常被利用於傳播計算機病毒,當用戶誤認為郵件來源可靠時,通常會執行或保存這些附屬檔案,使系統受到感染。
數字內容播放
一些
視頻和
音頻播放器支持顯示網頁或彈出視窗顯示它們,
播放器缺乏瀏覽器那樣的安全檢查,更容易遭受通過網頁實施的計算機病毒的攻擊。
感染機制
惡意代碼依附於宿主或隱藏於系統中的方法,實施它的前提是計算機病毒已經進入受害系統。按照不同的感染對象,感染機制可以分為:感染引導系統、感染執行檔案、感染結構化文檔、感染
網路服務和
客戶端等。
以感染結構化文檔為例,
Word、
Excel、
Access、
Visio、
PowerPoint、WordPro等結構化文檔以及相關的模版檔案包含宏以實現一些自動的文檔處理。製作病毒的人員利用WordBasic
編程接口製作的具有病毒性質的宏集合。在打開一個帶
宏病毒的文檔或模板時,激活了病毒
宏,病毒
宏還將自身複製到相關文檔或模板中。由於WordBasic語言提供了許多系統底層調用,因此
宏病毒可能對系統直接構成威脅。
觸發機制
對已經侵入或感染到受害系統中的計算機病毒,使它們得到執行的方法、條件或途徑。一方面,計算機病毒的觸發機制往往取決於感染機制:比如當程式、組件和
宏命令等被執行時,其中感染的計算機病毒將獲得執行權。另一方面,為了加強計算機病毒的隱蔽性,一些計算機病毒需要參照時鐘、時間、計數次數等因素決定是否開始執行。
計算機病毒分類
在計算機病毒的研究中,分類的目的是為了更好地描述、分析和理解計算機病毒的特性、危害及其成因,以便制定有效的防護和治療措施。
1.病毒破壞能力
無危險型:病毒僅會減少記憶體,顯示圖像或聲音警報,例如鬼病毒。
危險型:這些病毒會導致計算機系統操作中產生嚴重錯誤,例如 Hebrew 病毒。
非常危險型:這類病毒會刪除程式、數據或清除系統內的關鍵信息,例如
CIH 病毒。
2.病毒破壞情況
良性病毒:這些病毒不會直接對計算機系統產生破壞,只是通過傳播顯示其存在。
惡性病毒:這些病毒包含
惡意代碼,能夠對計算機系統進行直接破壞,並有可能對硬碟內容進行
格式化。
3.病毒攻擊的作業系統
攻擊
DOS 系統的病毒:這類病毒主要出計算機病毒發展早期,主要針對
DOS 系統進行攻擊,但隨著
DOS 技術的發展,這類病毒的傳播速度有所減緩。
攻擊
UNIX 系統的病毒:最初,
UNIX 和
Linux 系統因其安全性較高而免受病毒攻擊,但近年來病毒開始針對這些系統開發,例如 Bliss 病毒和 Winux 病毒。
其他作業系統上的病毒:如
手機病毒、
PDA 病毒等。這些病毒開始對
移動設備產生影響,例如 VBS.Timofonica 病毒。
4.病毒攻擊的機型
攻擊
工作站的病毒:這類病毒針對高性能計算機的工作站,攻擊目標為
信息系統。
攻擊
小型計算機的病毒:這些病毒的傳播範圍較廣,既可以通過網路節點傳播,也可以通過
終端設備進行傳播。
計算機病毒的命名規則
計算機病毒的命名規則包含了一些通用原則和國際慣例。這些命名規則有助於建立病毒的分類學體系,是反病毒技術的重要組成部分。
1. 通用命名規則
1.1 根據病毒出現的時間命名
有些病毒根據其出現或破壞系統的時間進行命名,通常與特定事件或日期相關。例如,
13號星期五病毒(Friday the 13th)因在某個星期五的13號激活而得名。另一個例子是
米開朗基羅病毒(Michaelangelo),因在3月6日(米開朗基羅的生日)發作而得名。
1.2 根據病毒表現的症狀命名
有些病毒根據其感染系統後的表現症狀命名。例如,桌球病毒(Ping Pong,或稱為“跳動的小球”病毒)是因其感染電腦後螢幕上顯示類似彈跳小球的效果而得名。又如煙花病毒(Firework),是因為在感染的顯示器上展示出類似煙花的視覺效果。
1.3 根據傳播方式命名
病毒的命名有時也會依據其傳播方式。例如,
13號星期五病毒會感染多個**.
EXE**檔案,導致檔案進一步破壞和系統崩潰。
某些病毒在其代碼中嵌入了名字或通過顯示的訊息表明其名稱。例如,
大麻病毒(Marijuana)因為其代碼中包含“Marijuana”字樣而得名。其他例子包括
磁碟殺手病毒(DiskKiller),激活時會顯示相關信息,以及
食人魔病毒(Ogre),因其代碼中的
標識符得名。
1.5 根據地理來源命名
有些病毒以其最早發現的地理位置命名。例如,
13號星期五病毒最早在耶路撒冷被發現,因此也稱為
耶路撒冷病毒(
Jerusalem)。類似地,
維也納病毒(Vienna)則是因為最早在維也納發現而命名。
1.6 根據代碼長度命名
一些病毒是根據其代碼長度命名的。例如,
13號星期五病毒也被稱為
1813病毒,因為其代碼長度為1813
位元組。同樣地,
幽靈病毒(Ghost)也被稱為
3544病毒,因為其代碼長度為3544位元組。
2. 國際病毒命名慣例
在國際上,病毒的命名通常由
前綴和
後綴組成,如“家族名+病毒標識符”。前綴通常表示病毒家族或目標作業系統(如
DOS),後綴則提供了病毒變種的具體信息。
例如,WM.Cap.A.A病毒的命名結構如下:
病毒名稱中也可能包含
代碼,指示其功能。例如,
Trojan.LMir.PSW.60病毒通常是一種帶有竊取
密碼功能的
木馬病毒。
計算機病毒的傳播途徑
1. 通過存儲介質傳播
傳播機制:當用戶將感染病毒的
存儲介質插入
計算機後,病毒會自動執行或通過用戶的操作進入系統中,感染本地檔案或系統程式。一旦病毒進入計算機,它可能會複製自身並感染其他插入的
存儲設備。比如在1986年,第一例通過
軟碟傳播的病毒“Brain”出現於全球各地。它通過感染
引導扇區(boot sector),使得
軟碟成為病毒攜帶者,當插入新電腦時,病毒會迅速擴散。
2. 通過遊戲軟體傳播
遊戲軟體,尤其是
非法下載或
破解的遊戲程式,常常成為計算機病毒的載體之一。這類傳播方式非常隱蔽,因為許多用戶在安裝或運行遊戲時,很少注意到其中可能夾帶的
惡意代碼。
病毒通常隱藏在
破解程式或安裝檔案中,用戶在安裝遊戲時,病毒也隨之進入計算機。病毒可能通過篡改系統檔案、劫持遊戲數據或盜取用戶敏感信息來實現攻擊。比如在一些
破解遊戲常常包含
惡意軟體或
木馬程式中,這些病毒可以記錄用戶的遊戲賬號、密碼,甚至植入
後門程式,
遠程控制用戶的電腦。
3. 通過網路傳播
隨著網際網路的普及,網路已成為計算機病毒最主要的傳播途徑。網路傳播病毒的速度極快,影響範圍廣泛,常見的傳播方式包括電子郵件、即時通訊軟體、網站、檔案下載等。
其中在網路傳播中,病毒傳播模型又細分為
SIS 和
SIR模型。
SIS模型(易感-感染-易感):在這個模型中,個體被感染後有可能恢復為易感狀態,即再次受到感染。研究發現,在標度無關網路中,病毒能夠在少數樞紐節點的不斷感染與恢復之間維持穩定的傳播狀態。其中“標度無關網路”是一類特殊的複雜網路結構,它的特點是部分節點(稱為“樞紐”)擁有極高的連線度,而大多數節點的連線較少。這種網路中,節點與其他節點相連的機率遵循冪律分布,也就是說,少數節點擁有大量連線,而多數節點僅與少數其他節點相連。
SIR模型(易感-感染-恢復):相比之下,SIR模型中,個體感染後恢復為免疫狀態,不再易感。這種模型更符合現實中的許多計算機病毒情況,例如使用
防毒軟體後恢復的電腦不再受到同類病毒的感染。
4. 通過計算機硬體傳播
雖然這種傳播方式較為少見,但計算機病毒也可以通過某些硬體設備傳播,例如嵌入式
晶片、外設控制器等。這類病毒的傳播途徑依賴於硬體的操作和使用,常常出現於較為複雜的攻擊場景中。
傳播機制:病毒可能預裝在某些硬體設備中(如
隨身碟、
鍵盤、
滑鼠等),當用戶將這些硬體連線到電腦時,病毒通過自動執行的方式感染計算機系統。此外,某些高層次攻擊甚至能夠通過硬體驅動程式或固件中的漏洞進行傳播。例如Stuxnet病毒是通過感染工業控制系統的硬體設備傳播的著名例子。該病毒利用
USB設備的漏洞,悄無聲息地感染目標系統,並造成嚴重破壞。
計算機病毒的破壞機制
1. 蓄意破壞
計算機病毒的蓄意破壞取決於病毒編寫者的意圖和其技術水平。這類破壞主要表現為對計算機
存儲數據的直接損害。
引導型病毒會覆蓋
硬碟引導區,導致原有的
引導區數據永久丟失,系統無法恢復。其他病毒可能在感染後
格式化硬碟,刪除檔案或篡改重要數據。
2. 偶然性破壞
病毒編寫中的錯誤或疏忽可能導致偶然性破壞,甚至超出病毒編寫者的初衷。病毒錯誤可能導致
系統崩潰、重要數據丟失或不可預測的
系統故障。此外,病毒的
兼容性差異可能使其在不同系統環境中表現出不同的破壞性。
3. 附帶性破壞
病毒在感染過程中會利用計算機的資源,造成性能下降或其他間接影響。病毒占用
磁碟空間、
網路頻寬,甚至可能導致系統運行速度顯著降低。病毒還會增加硬體的負荷,損害計算機的正常運行。
4. 心理及社會性破壞
病毒的社會性破壞不僅限於技術層面,還包括心理層面的恐慌和社會影響。病毒可能導致商業機密泄露,財務數據被竊取,嚴重損害企業聲譽。發現病毒感染會引起恐慌,進而影響計算機的使用效率,甚至帶來不可估量的社會後果。
計算機病毒的隱藏方式
計算機病毒的
隱蔽性,是其能夠持續危害系統的關鍵。在病毒的發展歷程中,隱藏技術逐漸演變,形成了多種隱蔽形式,極大地增加了病毒的檢測難度。而計算機病毒的隱藏技術經歷了從簡單的視窗與進程隱藏、檔案隱藏,逐漸發展到執行緒注射、鉤子技術,以及後來的
Rootkit等高級手段。
1. 病毒的隱蔽性特徵
病毒在感染計算機後,為了避免被用戶和
反病毒軟體檢測到,通常採用各種技術來隱藏自身。隱蔽性是病毒賴以存活的核心特性,因為病毒的破壞行為往往是在其未被發現的前提下進行的。
2. 早期的隱藏技術
2.1 隱藏視窗與進程
在
Windows系統中,所有運行的程式都擁有至少一個“視窗”,用戶可以通過這個視窗與程式互動。早期病毒常常通過將程式視窗設定為“不可見”來隱藏其運行狀態,從而讓用戶無法察覺。
此外,病毒編寫者利用未公開的
API函式
RegisterServiceProcess,將病毒註冊為“服務進程”。由於
Windows 9x的
任務管理器不會顯示此類進程,這讓病毒在用戶的系統中能夠悄然存在。
2.2 隱藏檔案
早期的
木馬後門程式通常採用簡單的檔案隱藏方式,即將檔案屬性設定為“隱藏”。由於
Windows系統默認不顯示隱藏檔案,許多用戶對這些隱藏檔案毫無察覺,病毒因此得以長期潛伏在系統中。
3. 執行緒注射技術的興起
隨著計算機技術的發展,病毒編寫者開始採用更加高級的隱藏手段,其中執行緒注射技術成為了木馬病毒的重要隱藏手段。
3.1 執行緒與進程的區別
在了解執行緒注射之前,首先需要理解進程與執行緒的概念。
進程是指一個程式在運行時占用的記憶體空間。一個進程可以產生多個
執行緒,每個執行緒執行進程中的一部分代碼,多執行緒技術使得程式可以同時執行多個任務,從而提高運行效率。
3.2 遠程執行緒注射
遠程執行緒注射(Remote Thread Injection)技術允許一個進程將代碼注入到另一個進程的
記憶體空間中。注入的執行緒成為目標進程的一部分,從而實現病毒代碼的隱藏執行。此技術通過跨進程記憶體空間的訪問,實現了
木馬的隱蔽操作。
4. 鉤子技術(Hook)的套用
鉤子(Hook)是一種訊息截獲機制,允許程式監視特定視窗的訊息。當訊息到達目標視窗之前,
鉤子函式先行處理。病毒編寫者利用鉤子技術,可以在用戶毫無察覺的情況下截獲輸入輸出信息,如鍵盤輸入和螢幕內容等,從而實現竊取數據等惡意行為。
5. 隱藏技術的進化
隨著
Windows NT體系的普及,許多早期的隱藏技術失效,病毒編寫者不斷探索新的隱藏手段,如
核心級隱藏和
Rootkit技術等。現代病毒更加複雜,其隱藏方式不僅包括執行緒注射,還結合了系統層面的深度隱藏手段,使得傳統的防毒軟體更加難以檢測。
Rootkit是一類高級的隱藏工具,通過修改作業系統核心模組(如核心),使病毒能夠避開系統安全機制的監控。
Rootkit可以將病毒進程、檔案、
註冊表項等隱藏起來,使其在用戶和反病毒軟體面前“消失”。
計算機病毒的清除與預防
1.計算機病毒的清除
計算機病毒的清除儘量在保全被感染程式功能的情況下移除計算機病毒或使其失效。
手工清除:對引導型計算機病毒,清除存在於主引導記錄或分區引導記錄中的計算機病毒,並根據原引導代碼恢復引導程式,但為了抵禦計算機病毒對原引導代碼的覆蓋,一般需要預先備份它們。常駐記憶體的一些計算機病毒可能受到作業系統的保護,一般要求用乾淨的啟動盤啟動後再實施檢測和清除。
軟體工具清除:早期較為著名的防毒軟體有江民防毒、如今國內的計算機防毒軟體有
電腦管家、
360、
火絨等。國外防毒軟體比較著名的有
卡巴斯基、
小紅傘等。另外一方面,由於計算系統的不斷完善,系統的穩定性和抗干擾性不斷增強,一般的計算機病毒很難以穿過當前計算機系統所建立的
防火牆。
2. 計算機病毒的預防
從開發者的角度出發: 對於計算機病毒要實現定時檢測和線上檢測,其中,線上檢測指一旦有檔案被打開就實施檢測;線上監控程式行為;備份和恢復重要數據, 例如主引導代碼和中斷向量表等;保護重要檔案;隔離可疑檔案; 制定安全防範策略;線上更新
惡意代碼特徵。
對於網路用戶而言,培養良好的上網習慣,培養自覺的信息安全意識,例如:對不明郵件及附屬檔案慎重打開;儘可能使用較為複雜的密碼;不要執行從網路下載後未經防毒處理的軟體等;不要隨便瀏覽或登錄陌生的網站,加強個人保護;