防毒軟體測試指南

Malware and antivirus software

防毒軟體測試指南

序言
測試防毒軟體不只是拿數個檔案掃描一下看看有沒有病毒。要達到測試的目的,測試必須在嚴謹及有正確方法之下進行。這文件的目的是提供一些方法測試防毒軟體的方法及指出測試防毒軟體時一些重要的標准。

以下是本文的重點:

  • 測試防毒軟體的目的。
  • 防毒軟體要測試什麼:
    1. 手動掃描
    2. 存取掃描(常駐記憶體)
    3. 智能偵測 – 什麼是智能偵測掃描及如何測試
  • 樣本撰取 – 為何樣本撰取是防毒軟體偵測的成功關建
  • 測試錯誤偵測安全檔案為病毒

為避免混亂,本文件所指的病毒是真正的病毒( Virus )及蠕蟲( Worm )。其他惡意軟體例如木馬、廣告軟體將不會定義為病毒。

 

測試防毒軟體的目的
測試防毒軟體的目的非常簡單;就是測試防毒軟體掃 描病毒之能力,而這些病毒在現實生活中有機會感染用戶。

以下的說話一聽就知道是對的:

  • 不能偵測病毒的防毒軟體是沒有用的。
  • 越普遍的病毒越能夠被防毒軟體偵測出來。

不過,事情不是這麼簡單。防毒軟體必須常常更新以偵測最新的病毒,所以一隻防毒軟體上一個月可以偵測所有病毒,不代表這個月也可以。防毒軟體測試就是要確保該防毒軟體在偵測病毒時達到標準:能夠準確偵測到所用戶有可能接觸到的病毒。

不幸地,有很多防毒軟體測試都犯了一些常見的錯誤。以下是一些常犯的重大錯誤。

  • 不正確的測試方法
    1. 測試者用一些已修改的或為測試而創造的病毒進行測試
    2. 測試一些已更名的病毒檔案
    3. 測試一些已破壞或不能運作的病毒
    4. 測試一些非病毒檔案(因為其他產品錯誤地偵測該檔案為病毒)
    5. 以不正確的設定進行測試
    6. 在測試時加入主觀因素

其實只要把樣本在測試前先複製一份,以上錯誤大都可以解決。在“樣本撰取”的部份將會詳述這關鍵問題。而主觀因素就是測試者往往相信防毒軟體產品應該偵測到廣告軟體(adware)或包含防火牆的功能,這些主觀因素其實對測試一隻防毒軟體的掃毒能力完全沒有關係。

以下是測試防毒軟體的一些指引:

  • 檔案附加檔名 - 檔案應該保留原有的附加檔名,而不是以更改的附加檔名。 ESET NOD32 擁有一個高效能的掃描引擎,為現實 環境作出優化而非“學術” 測試 。這代表當它會對現實生活可能接觸到的病毒進行最好的 掃描。掃描一些非正常附加檔名的檔案,例如 myscreensaver.exe 更名至 myscreensaver.ex$ ,這往往做成不可預知的甚至不正確的結果。因為 .ex$ 這種附加檔名是不可能在正常系統中執行,所以 ESET NOD32 可以合理地忽略這個檔案。
  • 檔案存放位置 - 檔案應該存放在本機硬碟中。除非特定要測試網路磁碟,病毒檔案應放本機碟中。否則掃描 速度及對系統的影響的測試結果將會不準確。 ESET NOD32 測試速度極高而且掃描時對系統的影響減至最少,如果目標檔案是在 網路磁碟的 掃描 話 速度會受網路存取速度所影響而非軟體本身。

    • 掃描設定-測試前應先檢查掃描設定。一些測試會使用“預設”的設定而一些會使用“最好”的設定。請聯絡 Eset 的成員以決定如何設定 ESET NOD32 來進行非預設設定之測試。
    • 病毒檔案應該是真實而和沒有被更改的樣本,這可以通過比較已複製的病毒檔案來確定。詳細請參考本文“樣本撰取”的部份。
    • 已損壞,自創或非病毒檔案不應該被測試,這包括一些模擬病毒檔案-它們不是病毒所以不應用作測試。Eset 以能正確地偵測真實的病毒為榮,而非為透過某些測試而去偵測一些假病毒。
    • 不 應改變病毒的正常在野(In the Wild)狀態。病毒應為已知病毒。Eset將不會為任何目的(包括測試)而製造新病毒或新病毒變種。改變一隻病毒(假設它是可複製的)將會製造一隻新的 病毒,所以我們認為這是不道德及不專業的,我們將不會參與任何有特別製造或改變的病毒的測試。
    • 用於錯誤警報測試的正常檔案應存在於一個普通使用者系統,而非一些特別製造以欺騙防毒軟體掃描器的檔案。
    • 統 計上的完整性。樣本選擇應以健全的統計為基礎,樣本數目在測試中是重要的。以兩、三個樣本,甚或十至十五個樣本作測試並不能構成在統計上有效的一套樣本。 病毒在野清單(Wildlist)含有250至270個不同的目前的在野(ItW)病毒。樣本數目越小,測試中的統計錯誤將越大。
    • 應分開測試 “zoo” 病毒及在野(ItW)病毒。Zoo病毒是指未曾出現於在野病毒清單(Wildlist)的病毒。所以,這些病毒出現在一個正常使用者系統的機會很低。這說明測試這些病毒的重要性很小,而在統計學上,偵測這些病毒遠比偵測在野(ItW)病毒次要。
    • 當有產品遺漏病毒,或不能正確偵測,又或將一個正常檔案誤認為病毒,應回報給產品製造商驗證或修正。

當測試一個防毒軟體時,最重要是測試其偵測真實世界病毒的能力。防毒掃描器有幾種類型,於測試時須要知道它們的分別。

 

手動掃描器
一個手動掃描器,於用戶要求時執行。可掃描所有檔案,或是指定的檔案或資料夾。

測試時的一些考慮:

  • 掃描速度及掃描時對系統效能的影響
    在測試手動掃描器時,掃描速度及對系統效能的影響是重要的(雖然不比病毒偵測重要)。通常掃描會對系統效能帶來影響,一個明顯減慢系統的掃描器是不理想的。盡可能縮短受影響時間也是很重要的,所以須要運作快速、佔用少系統資源的掃描器。
  • 掃描參數
    手動掃描器通常有很多的選項可以設定,測試者應指定要使用的選項。使用 “最佳”設定與“預設”設定會帶來不同的結果,並且通常會影響效能(如掃描速度)。在測試所有掃描器時,測試方法將與平常用戶使用掃描器的方法相同。所以 病毒檔案不應被更名或改變,並應放在本機磁碟中(除非掃描網絡磁碟是測試的一部份)。
  • 偵測時的動作
    通常掃描器會提供很多的選項以處理病毒檔案。已執行的動作可能會對系統有影響,在大多數的測試中,將病毒報告儲存到一個日誌檔案已經足夠。

存取掃描器
存取掃描器載入到系統記體中,並干涉所有操作系統對檔案系統的呼叫。這樣可確保一個檔案在傳送到系統前已被掃描,所以能夠避免系統受病毒感染。

測試時的一些考慮:

  • 對系統效能的影響
    因為存取掃描器於系統啟動時載入,並掃描所有存取的檔案,這可以給系統帶來明顯的負面影響。這影響最少時是最理想的。通常最明顯的效能影響是在開啟一個程 式時──當掃描器在啟動狀態,載入程式的所須時間是一個好的效能指示器(比較當掃描器在關閉時的所須時間)。
  • 偵測時的動作
    預設的動作也很重要,例如當發現病毒時禁止存取該檔案,或是只報告病毒而容許其繼續執行。在測試時,通常最好是只報告病毒,因為系統上會有不尋常數量的病毒,其他的動作會影響測試結果。
  • 系統穩定性
    防毒掃描器可能會負面地影響一個系統的穩定性,因而導致隨機的程式衝突,甚至系統衝突。ESET NOD32 已被證明能於Windows作業系統使用,及能於一個正常的系統中穩定地運作。

測試智慧型偵測掃描器
智慧型偵測防毒掃描器嘗試辨認新的或已更改的病毒,讓用戶的系統在早期病毒未爆發前得到附加的保護。智慧型偵測掃描器比較困難地正確測試;要留意的有以下數點:

  • 掃描時的侵略性
    ESET NOD32 有兩種智慧型偵測掃描等級:正常模式及進階模式。進階模式(進階智慧型偵測模式)是一更具侵略性的掃描模式,它會特別留意某些檔案種類。這模式為掃描器的智慧型偵測能力提供一個更真確的表達,它用於所有重要的ESET NOD32模組中。
  • 錯誤警報等級
    更具侵略性掃描的設定會增加錯誤警報的機會。這是因為於掃描時對檔案有更大的猜疑。正常的檔案被視為病毒檔案是不理想的,但使用侵略性的智慧型偵測模式將無可避免地導致這個後果。
  • 更新等級
    要測試智慧型偵測,樣本必須由測試時產品未知的病毒組成,否則測試的並非智慧型偵測能力。
  • 產品年齡
    留意,智慧型偵測能力通常會被經常更新,所以,以舊版本(數星期或數月)作測試並不能真實反映智慧型偵測能力。
    一個產品最新的版本及不須作病毒定義更新是最理想的。
  • 長時間測試
    以一套大的病毒樣本測試智慧型偵測能力是可能發生的,這會“凍結”產品(不更新)一段時間,然後測試在“凍結”與測試期間出現的病毒。

留意,於智慧型偵測能力測試失敗一次的意義與用病毒資料更新而失敗的意義是不同的。其中一個原因是病毒樣本數目甚少,相對於所有在野病毒(因為只有很少,有 時甚至只有一隻病毒出現)。另外,可以預期的是較舊的病毒當被知道時可透過更新及智能偵測模式偵測得到,因為智能偵測能力將於更新時改良,所以會對結果有 影響。

 

樣本選擇
病毒的定義是它能夠自我複製。意思是當檔案或腳本被執行時,它會將自己複製成一個或多個(很可能已修改的)檔案或成為其他檔案的一部份。沒有這特性的檔案 並不算是病毒,但這並不表示它不是有害的程式,這只表示它不是病毒而已,及不應包括在病毒樣本內。可能有另一套專為這些有害程式而設的樣本,例如:木馬 (後門程式、間碟軟體等),但不應將這些檔案與病毒混淆,而這些檔案不應被用作測試病毒偵測能力。要知道具權威性的在野病毒清單(即已流傳到公共網路或電 腦的病毒,所以很可能出現於現實系統中),可參閱Wildlist (http://www.wildlist.org)

用於測試防毒掃描器的樣本必須由已驗證及已複製的樣本組成。測試中心對樣本選擇及驗證有最終及完全的責任。有些常見問題應在樣本選擇時避免:

  • 使用防毒掃描器判斷一個檔案是否病毒。
    檔案能否自我複製是決定該檔案是否病毒的唯一因素。使用掃描器不是一個正確的方法,因為該產品的錯誤率及命中率並不是在統計學上對偵測能力有重大影響。
  • 以正常檔案測試(包括病毒遺下的非病毒檔案)。
    某些病毒使用輔助檔案,如日誌,或其他非病毒檔案以達到其他目的,它們並不是病毒,因此病毒掃描器不當它是病毒是正確的。
  • 以無用的檔案測試。
    很多"zoo"病毒集含有很多無用的檔案,這包括 Virus Dropper、已損壞的病毒、intended viruses,病毒使用的批次檔案及各種不是病毒的物件。如果一個檔案不能自我複製,它就不是一個病毒,及不應用於病毒偵測能力測試。
  • 以模擬病毒或denatured病毒測試。
    同上,如一隻病毒不能自我複製,它就不是一隻病毒,及不應被病毒掃描器偵測得到。事實上,如果它們被偵測出來,這就會是一個錯誤警報。
  • 以被更改、重新命名或不自然地放置檔案測試。
    所有病毒應能自我複製及出現於系統中,並有正規的附加檔名及在通常的模式中。

測試錯誤警報
一個防毒掃描器應只偵測病毒,但這亦表示它不將正常檔案偵測為病毒。
錯誤地將一個正常的檔案標記為有病毒,這稱為"錯誤警報"。這會為系統帶來嚴重問題,包括重要檔案被刪除,這會導致系統不穩。這是為什麼只用真實病毒測試 是很重要的。要預期一個防毒產品偵測非病毒最終會降低產品的價值,並帶來更多錯誤警報的風險。一個錯誤警報測試應用於測試大量出現在一個正常系統的正常檔 案。以用戶有機會在他們的系統看見的檔案作測試是重要的,創造與病毒相似的檔案是無益的,它不能反映在真實世界內掃描器的能力。

以下是一些有明確定義測試方法的獨立測試中心:
ICSA Labs
CheckMark (West Coast Labs)
Virus Bulletin