系統架構設計筆記(87)—— 計算機病毒與防治

deniro_li發表於2020-10-02

計算機技術和網路技術的飛速發展,為人們的工作 、 學習 、 生活帶來了極大的方便。計算機已經成為人們不可缺少的現代化工具。但是計算機病毒的出現帶給人們不安和憂慮,同時向人們提出了挑戰。

1 計算機病毒概述

計算機病毒( Computer Virus )的概念最早是由美國計算機病毒研究專家 F.Cohen 博士提出的。對於計算機病毒的定義,不同的國家 、 不同的專家從不同的角度給出的定義也不盡相同。根據 《 中華人民共和國計算機資訊系統安全保護條例 》 第 28 條規定: “ 計算機病毒,是指編制或者在計算機程式中插入的破壞計算機功能或者毀壞資料,影響計算機使用,並能自我複製的一組計算機指令或者程式程式碼 。” 此定義在我國具有法律效力和權威性。

和生物病毒一樣,計算機病毒的複製能力使得計算機病毒可以很快地蔓延,又常常難以根除。它們能把自身附在宿主系統或檔案中,當系統被執行或檔案從一個使用者傳送到另一個使用者時,它們就隨同系統執行或檔案傳輸一起蔓延開來。

在病毒的生命週期中,病毒一般會經歷潛伏階段 、 傳染階段 、 觸發階段和發作階段4個階段。多數病毒是基於某種特定的方式進行工作的,因此也依賴於某個特定的作業系統或某個特定的硬體平臺。因此,攻擊者經常利用某個特定系統的細節和弱點來設計病毒程式。

1.1 計算機病毒的特徵

計算機病毒多種多樣,但是它們都具有共同的特徵,即傳染性 、 非授權性 、 潛伏性和破壞性。計算機病毒的傳染性是指病毒具有把自身複製到其他系統或檔案等宿主中去的能力,這是病毒的基本特徵。

非授權性是指病毒程式的執行不需要得到使用者的同意,對使用者來說是未知的。潛伏性是病毒生存的必要條件,即病毒潛伏在系統中而不被人們所發覺。破壞性是指病毒在一定條件下可以自動觸發,並對計算機實施破壞,是病毒的表現特徵。病毒的非授權性 、 潛伏性使得病毒的行為是不可預見的,也增加了病毒檢測的困難。病毒破壞性的觸發條件越多,則傳染性越強,但同時其潛伏性降低。一個病毒必須具備傳染性,但不一定需要擁有其他屬性。

1.2 計算機病毒的分類

計算機病毒按不同的分類標準,有許多不同分類:

按照作業系統分,可分為攻擊 DOS 系統的病毒 、 攻擊 Windows 系統的病毒 、 攻擊 Unix/Linux 系統的病毒 、 攻擊 OS/2 系統的病毒 、 攻擊 Macintosh 系統的病毒 、 攻擊手機的病毒 、 其他作業系統上的病毒。

按照連結方式分,計算機病毒可分為原始碼型病毒 、 嵌入型病毒 、 Shell病毒 、 巨集病毒 、 指令碼型病毒 、 作業系統型病毒。

按照破壞情況分,計算機病毒可分為良性病毒和惡性病毒。

按傳播媒介來分,計算機病毒可分為單機病毒和網路病毒。

1.3 計算機病毒的組成

病毒程式一般由傳染模組 、 觸發模組 、 破壞模組和主控模組組成,相應地完成病毒的傳染 、 觸發和破壞等任務。也有少數病毒不具備所有的模組。

(1)傳染模組

傳染模組是病毒進行擴散傳播的部分,負責把計算機病毒從一個系統或檔案傳播到更多的系統或檔案中去。每個病毒都有一個自我識別的標記,叫作傳染標記或病毒簽名。病毒程式傳染系統或檔案時,要把傳染標記寫入系統或檔案中某個特定區域,例如,宿主程式 、 登錄檔 、 物理磁軌等,作為該系統或檔案已被傳染的標記,以防止重複傳染,增強病毒的潛伏效果。傳染模組的主要功能有:尋找一個可傳染的系統或檔案;檢查該系統或檔案中是否有傳染標記,判斷該系統或檔案是否已經被傳染;如果沒有傳染標記,則進行傳染操作,將病毒程式碼植入宿主系統或檔案中,完成一次傳染。

(2)觸發模組

病毒觸發模組主要檢查預定觸發條件是否滿足,如果滿足,則呼叫相應傳染或破壞模組,進行傳染和破壞動作。病毒的觸發條件有多種形式,如日期 、 時間 、 鍵盤 、 發現特定程式 、 發現網路連線 、 發現系統漏洞 、 傳染的次數 、 特定中斷呼叫的次數等。依據觸發條件的情況,可以控制病毒傳染和破壞動作的頻率,使病毒在隱蔽的狀態下,進行傳染和破壞動作。

(3)破壞模組

破壞模組負責實施病毒的破壞動作。這些破壞動作可能是破壞程式及資料 、 降低系統的效能 、 干擾系統的執行,還有些病毒甚至可以破壞計算機硬體。也有少數病毒的破壞模組並沒有明顯的惡意破壞行為,僅在被傳染的系統裝置上表現出特定的現象,該模組有時又稱為表現模組。

(4)主控模組

主控模組在總體上控制病毒程式的執行。染毒程式執行時,首先執行的是病毒的主控模組。

2 網路環境下的病毒發展新趨勢

在網際網路給人們的工作 、 生活帶來方便的同時,也給大量新病毒的產生和發展帶來了 “ 方便 ” 。 在網際網路高度發達的今天,計算機病毒的數量急劇增多,傳播途徑也更加多樣,傳染速度也更加快捷。

除了以往通過相互複製檔案 、 系統之間交叉傳染等方式外,目前的計算機病毒更多地通過網頁 、 電子郵件 、 區域網共享 、 系統漏洞等方式在網路上進行自動傳播。有些流行病毒,常常藉助於網路在兩 、 三天內迅速傳遍全國,傳遍全世界。

例如, E-mail 病毒就是目前最為流行 Internet 病毒種類之一,它通過在電子郵件附件中新增危險的病毒執行程式,在郵件正文中新增誘惑性的文字,誘使收件人執行附件病毒程式,以達到其啟用的目的。目前此類病毒多數針對微軟的 Outlook 和 Outlook Express程式,並以使用 Windows 的地址簿聯絡人傳送病毒郵件形式傳播。不但危害個人,而且可能導致 Internet 郵件伺服器由於收發大量的病毒附加的郵件被大量佔用網路資源,直至郵件伺服器崩潰。此外,由於 Internet 即時通訊被廣泛運用,藉助於MSN 、 QQ 、 OICQ等傳播病毒也成為近年來病毒流行的一個趨勢,病毒很可能通過這些軟體自動傳送有害資訊實現自動傳播。

目前,通過區域網共享傳播的病毒也有很多。在廣泛使用的 Windows 系統中,管理共享 、 特殊埠等預設是開啟的,有些版本的系統中,甚至具有可寫許可權。這樣,病毒在搜尋到區域網共享資源後,便可以直接傳染目標計算機相應資料夾中的檔案或者將病毒寫入相應系統中,以便得到在目標計算機中執行的機會。也正是因為這個原因,很多病毒在傳染一臺計算機後會造成某個區域網普遍傳染的情況,並且在不斷開網路連線的情況下很難將病毒清除乾淨。

在當前的網路環境下,最常見的惡意程式是木馬程式,也稱後門程式。它們大多利用系統漏洞或者空閒的埠,通過在系統中安裝相應的木馬程式,並通過網際網路使用專門的軟體監視宿主計算機,以這樣的方式獲得宿主系統檔案訪問授權,以及收集宿主系統的資訊,如使用者個人資料 、 銀行賬號與密碼 、 網遊賬號等。由於網路傳輸速度很快,所以網路環境下的病毒傳染速度也非常快,一度轟動的 “ 衝擊波 ” 、 “ 震盪波 ” 等病毒都是在相應的系統漏洞被發現後幾天時間裡,就迅速在全世界大範圍蔓延開來。可以說,今天的計算機病毒的品種和傳播速度,超過了以往任何時候。

3 計算機病毒的檢測與清除

3.1 特徵碼檢測

所謂特徵碼查毒法,就是在獲取病毒樣本後,提取出其特徵碼,(例如,楊基病毒的特徵碼是 16 進位制的 “ F47A2C00 ” ,快樂時光病毒中的 “ Fun Time ” 字串等),然後通過該特徵碼對目標檔案或記憶體等進行掃描。如果發現這種特徵碼,就說明感染了這種病毒,然後針對性地清除病毒。

特徵碼技術是最早被採用,而且被許多反病毒軟體一直沿用至今的病毒檢測方法。特徵碼檢測方法檢測病毒,方法簡單 、 準確 、 快速,可識別病毒的名稱,誤報警率低。但是,特徵碼技術只能診斷已知的計算機病毒,其響應速度永遠滯後於病毒,而且不能檢查未知病毒和變形病毒,不能對付隱蔽性病毒。

隨著計算機病毒的發展,不斷出現的新的病毒,甚至有些病毒具有自動變形功能,例如, “ 卡死脖 ” 病毒,採用傳統病毒特徵碼搜尋技術的防毒軟體常常難以應付這些變形病毒。為此,人們提出了廣譜特徵碼過濾技術,該技術在一定程度上可以彌補以上缺陷。

3.2 校驗和檢測

先計算正常檔案的內容和正常的系統扇區資料的校驗和,將該校驗和寫入資料庫中儲存。檢測時,檢查檔案現在內容的校驗和與原來儲存的校驗和是否一致,從而可以發現檔案或扇區是否被感染,這種方法稱校驗和檢測。

校驗和檢測技術的優點是:方法簡單 、 能發現未知病毒 、 被查檔案的細微變化也能發現。但是,它不能識別病毒種類。而且,由於病毒感染並非是檔案內容改變的唯一原因,檔案內容的改變有可能是正常程式引起的,所以校驗和檢測技術受到種種限制,同時這種方法也會影響檔案的執行速度。另外,校驗和不能檢測新的檔案,如從網路傳輸來的檔案 、 磁碟和光碟拷入的檔案 、 備份檔案和壓縮文件中的檔案等。

3.3 行為監測

隨著近年來病毒與反病毒鬥爭的不斷升級 、 新病毒產生的速度不斷加快,傳統反病毒技術滯後於病毒的特點越來越不能適應防病毒的需要,更需要採用通用反病毒技術來保護計算機的安全。現階段中被廣泛研究和採用的通用病毒檢測技術有病毒行為監測技術 、 啟發式掃描技術和虛擬機器技術。

通過研究發現,病毒不論偽裝得如何巧妙,它們總是存在著一些和正常程式不同的行為,而這些行為在正常應用程式中卻十分罕見,這就是病毒的行為特性。

常見的病毒行為特性有:對可執行檔案進行寫操作 、 寫磁碟引導區 、 病毒程式與宿主程式的切換 、 程式自己重定位 、 通過搜尋函式索引表來獲取 API 函式地址等。

利用這些特徵,就可以對病毒實施監視,在病毒程式體進行活動時發出報警。採用這種行為特性檢測方法不僅可以檢測出已知病毒,而且可以檢測出新出現的未知病毒,無論該病毒是什麼種類,或是否變形。但是,行為監測技術也可能誤報警,而且不能識別病毒名稱。

3.4 啟發式掃描

在特徵碼掃描技術的基礎上,利用對病毒程式碼的分析,獲得一些統計的 、 靜態的啟發性知識,可以用於靜態的啟發性掃描技術( Heuristic Scanning )。啟發式掃描主要分析檔案中的指令序列,根據統計知識,判斷該檔案可能被感染或者沒有被感染,從而有可能找到未知的病毒。因此,啟發式掃描技術是一種概率方法,遵循概率理論的規律。

早期的啟發式掃描軟體採用程式碼反編譯技術作為它的實現基礎。這類病毒檢測軟體在內部儲存數萬種病毒行為程式碼的跳轉表,每個表項對應一類病毒行為的必用程式碼序列,如病毒格式化磁碟必須用到的程式碼等。啟發式病毒掃描軟體利用程式碼反編譯技術,反編譯出被檢測檔案的程式碼,然後在這些表格的支援下,使用 “ 靜態程式碼分析法 ” 和 “ 程式碼相似比較法 ” 等有效手段,就能有效地查出已知病毒的變種,以及判定檔案是否含有未知病毒。

由於病毒程式碼千變萬化,具體實現啟發式病毒掃描技術是相當複雜的。通常這類病毒檢測軟體要能夠識別並探測許多可疑的程式程式碼指令序列,如格式化磁碟類操作 、 搜尋和定位各種可執行程式的操作 、 實現駐留記憶體的操作 、 子程式呼叫中只執行入棧操作 、 遠距離(如超過檔案長度的三分之二)跳往檔案頭的指令等。一般來說,僅僅一項可疑的功能操作不足以觸發病毒報警。但如果同時具有多項可疑操作,目標程式就很可能是病毒程式。

3.5 虛擬機器

自動變形病毒,也稱為多型性病毒或多型(形)性病毒。自動變形病毒每次感染宿主時都自動改變自身的程式程式碼和特徵碼,這類病毒的代表有 “ 幽靈 ” 病毒等。

一般而言,自動變形病毒採用以下幾種操作來不斷變換自己:採用等價程式碼對原有程式碼進行替換;改變與執行次序無關的指令的次序;增加許多垃圾指令;對原有病毒程式碼進行壓縮或加密等。因為自動變形病毒對其程式碼不斷進行變換,而且每次傳染使用不同的金鑰。將染毒檔案的病毒程式碼相互比較,也難以找出相同的可作為病毒特徵的穩定特徵碼,因此用傳統檢測方法根本無法檢測出這類病毒。但是,自動變形病毒也有一個共同的規律:即無論病毒如何變化,每一個自動變形病毒在其自身執行時都要對自身進行還原。

為了檢測自動變形病毒,出現了一種新的病毒檢測方法 ——“ 虛擬機器技術 ”。 該技術用軟體方法讓病毒在一個虛擬的環境中,模擬一部分系統指令和功能呼叫,對病毒程式碼作解釋執行,而且模擬執行不對系統產生實際的影響,即可獲得程式執行的後果,並在此基礎上對程式執行分析,進而判斷是否存在病毒。

不管病毒使用什麼樣的加密 、 隱形等偽裝手段,只要在虛擬機器所營造的虛擬環境下,病毒都會隨著執行過程自動褪去偽裝(實際上是被虛擬機器動態還原)。正是基於上述設計原理,虛擬機器在處理加密 、 變換 、 變形病毒方面具有很強的優越性。虛擬機器檢測方法,實際上是用軟體實現了模擬人工反編譯 、 智慧動態跟蹤 、 分析程式碼執行的過程,其效率更高,也更準確。使得反病毒從單純的靜態分析進入了動態和靜態分析相結合的新時期,極大地提高了對已知病毒和未知病毒的檢測水平。在今後相當長的一段時間內,虛擬機器技術還會有很大的發展。

3.6 病毒的清除

將病毒程式碼從宿主中去除,使之恢復為可正常執行的系統或程式,稱為病毒清除。大多數情況下,採用反病毒軟體或採用手工處理方式可以恢復受感染的檔案或系統。不是所有染毒檔案都可以消毒,也不是所有染毒的宿主都能夠被有效恢復。

依據病毒的種類及其破壞行為的不同,感染病毒後,如果宿主資料沒有被刪除,常常可以恢復;如果宿主資料被病毒刪除或覆蓋 、 或者宿主資料的邏輯關係被病毒破壞,常常不能恢復。

4 計算機病毒的預防

“ 防重於治 ” ,對於計算機病毒也是如此。在日常使用計算機的過程中,同時做好預防工作,可以很大程度上避免被病毒感染,減少不必要的物力 、 資料損失。

要預防計算機病毒,最好的方法就是不與外界交換檔案,但這是不可能的。人們在工作中,要經常與外界進行各種資料交換。而大量與外界交換資訊,就給病毒的感染與傳播創造了條件。為了保護計算機不受病毒破壞,至少必須做到:

(1)一定要在計算機中安裝反病毒軟體。

(2)不要輕易使用來歷不明的或者沒有經過確認的軟體;對從網路上下載的程式和文件應十分小心,在執行檔案或開啟文件之前,要檢查是否有病毒;從外部取得的介質及其中的檔案,應檢查病毒後再使用;壓縮後的檔案應解壓縮後檢查病毒。

(3)電子郵件的附件應該先檢查病毒後再開啟,並在傳送郵件之前檢查病毒;不要運 行來歷不明的 E-mail 附件,尤其是在郵件正文中以誘惑性的文字建議執行的附件程式。

(4)定期使用反病毒軟體掃描系統。

(5)確保所使用的反病毒軟體的掃描引擎和病毒程式碼庫為最新的,因為舊的掃描引擎和病毒程式碼庫不會檢查到新出現的病毒。

(6)為防止引導型病毒對系統的破壞,應該在系統安裝完成後立即製作系統應急啟動盤,以便萬一硬碟分割槽表遭到破壞時,能從應急盤啟動,並用備份的引導區、分割槽表等直接 進行恢復。

(7)對於一些重要的檔案,要定期進行備份,以便萬一系統遭受病毒破壞時能夠從備份恢復。

(8)利用安全掃描工具定時掃描系統和主機。若發現漏洞,及時尋找解決方案,從而減少被病毒和蠕蟲感染的機會。

(9)使用反病毒軟體時,最好先查毒,找到了帶毒檔案後,再確定是否進行防毒操作。因為查毒不是危險操作,它可能產生誤報,但絕不會對系統造成任何損壞;而防毒是危險操作,有的操作可能把檔案破壞。

(10)建立本單位的計算機病毒防治管理制度;並對計算機使用者進行反病毒培訓。


相關文章