萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

病毒分類與防毒引擎技術演進:從特徵碼到虛擬機行為判定

病毒分類(依中華人民共和國計算機信息系統安全保護條例)

廣義病毒涵蓋所有威脅電腦安全的程式,大致分七類:

  1. 傳統病毒:感染可執行檔(檔案型)或開機扇區(開機型)。
  2. 巨集病毒:利用 Word/Excel 巨集腳本傳播。
  3. 惡意腳本:HTML、批次、VB、JS 等破壞性腳本。
  4. 木馬:使用者不知情下安裝、隱藏後台、伺服器端無介面無法配置。
  5. 駭客工具:攻擊他人電腦的網路工具,有介面,不損害使用者本機。
  6. 蠕蟲:利用系統漏洞、郵件、P2P 自動傳播。
  7. 破壞性程式:刪除檔案、格式化硬碟,常見 .bat 或可執行檔,常與惡意網頁結合。

防毒引擎技術演進

1. 簡單特徵碼(80 年代末)

早期病毒技術簡單,廣泛採用特徵碼比對。特徵碼為一串十六進位字串(如第 1034 位元組為 0xEC 0x99 0x80 0x99 即大麻病毒),長度可達數十位元組,多特徵碼交叉驗證確保準確度。

2. 廣譜特徵碼

病毒進化為多型(每次感染變形),同類病毒變體達天文數字,甚至連續三位元組都不同。對策:特徵碼分段、引入「遮罩位元組」(不參與比較),但誤報率大增,現已難有效應對新病毒。

3. 啟發式掃描

分析指令順序、特定組合等病毒行為特徵(如非常規讀寫檔案、終結自身、非常規進入 Ring 0),判斷未知病毒。優於靜態特徵碼,具備一定未知病毒處理能力,但仍有誤判,且無法確定為病毒而無法直接殺毒。

4. 行為判定(虛擬機技術)

極少數防毒軟體採用虛擬機技術,模擬可控程式運行環境(如《駭客任務》母體)。病毒在虛擬機中脫去偽裝進行傳染時被發現,可偵測大部分多型與大量未知病毒,查殺效果佳。

引擎技術對比

技術比喻優點缺點
特徵碼照相識別臉孔速度快、準確率高無法對付多型/加密病毒
廣譜特徵拿照片追查已知罪犯,注意假髮墨鏡可偵測部分多型病毒誤報率高
啟發式警察看你帶槍起疑誤報率低、能查多型與變種未知病毒偵測能力較低
行為判定(虛擬機)偵探依行為識別犯罪能判別未知病毒、標準病毒準確率高實現難度大、速度慢

解壓縮與脫殼能力的關鍵性

  • 加殼:UPX、ASPACK 等工具改變程式編碼以縮小體積或加密。病毒用不同殼/版本逃避查殺,防毒軟體需針對各類殼編寫脫殼程式,脫殼能力直接決定查殺能力。
  • 壓縮:WinZip、WinRAR 等。病毒藏匿壓縮包內,防毒軟體無解壓能力即無法查殺;查殺後無法還原壓縮包會導致檔案損壞。解壓/脫殼能力至關重要。

特徵碼靜態掃描引擎實作細節

特徵碼選取流程

  1. 取得病毒程式長度,分 3~5 段(避免單一特徵碼誤報、過度集中)。
  2. 每段選取 16 或 32 位元組特徵串。原則:捨棄通用資訊(多檔案相同位置相同值)、捨棄全零位元組,調整偏移量重選。
  3. 將特徵碼段與偏移量存入病毒庫,標註病毒名稱。通常編寫自動提取程式入庫。

關鍵資料結構

typedef struct tagVSIGNATURE {
    BAV_SIGN_TYPE eType;      // 特徵碼類型枚舉
    DWORD dwOffset;           // 偏移量
    DWORD dwSize;             // 長度
    BYTE Signature[MAX_SIGNATURE_LEN]; // 特徵碼串,目前 32 位元組
} VSIGNATURE;

typedef struct tagVRECORD {
    int nSize;                // 結構版本控制
    DWORD dwVirusID;          // 病毒 ID
    DWORD dwSignCount;        // 特徵碼段數
    PVSIGNATURE pVSing[8];    // 各段特徵碼內容
    DWORD dwTreatCount;       // 處理方法數
    PVTREATMENT pVTreat[8];   // 處理方法內容
} VRECORD;

VSIGNATURE 存放單一特徵碼,VRECORD 組成完整病毒記錄。演示版病毒庫直接編碼在 CVirusDB::Load() 中,例如 EICAR 測試病毒第一段特徵碼為 32 位元組十六進位串。

copyright © 萬盛學電腦網 all rights reserved