簡介
啟髮型病毒就是殺病毒庫中還沒有記錄的病毒,有誤判的可能性。
啟髮型掃描
啟發式究竟指什麼
―啟發式‖(Heuristic)是指探索和發現的行為或過程。牛津英文詞典將啟發式定義為―讓某人能夠自主的探索和學習‖或者(在計算領域)―僅依靠寬泛的定義,或者依靠不斷嘗試和汲取失敗經驗教訓的方法來解決問題[6]。‖韋氏詞典將其定義為―依靠實驗尤其是反覆試驗,通過嘗試和汲取失敗經驗教訓的方法,來幫助學習、探索或者解決問題‖或者(在計算領域)―一種利用自主學習的手段(通過反饋的評估)來提高表現,以探索解決問題的技術[7]。‖ 啟發式程式通常被認為是一種具有人工智慧的應用程式,而且也是一種解決問題的工具。啟發式程式的編寫,例如用於專門系統的程式,建立於一些從經驗中提取的規則,它通過不斷積累經驗產生更好的解決方法,並且增加自己的知識庫。
當啟發式分析被用於處理惡意軟體時(當然還包括垃圾郵件和流氓軟體),儘管涉及反覆試驗和從經驗中學習的原理,卻又有更多限定的含義。啟發式分析使用基於規則的方法來診斷一個有潛在威脅的檔案(或信息,如果是分析垃圾郵件的話)。分析引擎的工作是基於自身規則庫的,它依據規則檢查惡意軟體存在的可能性,當找到一個匹配的規則時就為其分配一個分值。如果這些分值達到或超過了一個閾值[8],這個檔案就會被標記為可疑檔案(或者潛在的惡意軟體、垃圾郵件)並進行處理。 某種意義上來說,針對反惡意軟體的啟發式技術,嘗試的是模擬人類的智慧型分析方法。與惡意軟體分析人員設法判定某個軟體的行為和動作相同,啟發式分析執行相同的智慧型決策過程,有效地擔當虛擬分析師的角色。惡意軟體分析人員從出現的新生威脅中不斷學習,並將他的知識通過編程套用於啟發式分析器,以提高今後的檢測率。
啟發式編程在反病毒軟體性能中有著雙重的任務:速度和檢測。事實上,―啟發式‖這個術語在其他科學領域也有類似的含義[9];即專注於通過達到―足夠好‖的結果(尤其指數據吞吐速度)而非―完美的‖結果來提高性能。當已知病毒的數量與日俱增,就需要提高檢測速度。否則,增長的惡意軟體數量所帶來額外掃描時間,會降低系統的使用效率。
否定式啟發
一種檢測規則或標準,如果檢測對象符合標準,則不是病毒或惡意軟體的可能性減小。
肯定式啟發
一種檢測規則或標準,如果檢測對象符合標準,則是病毒或惡意軟體的可能性加大。
誤殺漏殺原因
爭論的焦點在於,判斷一個程式是不是木馬程式(或惡意軟體),是否應更多根據其目的來界定,而非功能來界定。例如,一個鍵盤記錄程式如果是經過用戶授權或用戶自願安裝的,即使它的功能與木馬程式是相同的,那么它也不算是木馬程式。這會給檢測帶來問題,因為電腦在判斷目的方面的能力弱於人類。
間諜軟體和廣告軟體(可能由於媒體的過多關注,以及大量針對性產品的存在)已經被劃分為了不同惡意軟體的子類。儘管人們經常爭論,廣告軟體不一定就是惡意軟體,但這種區別是大多情況下沒有意義的。而同樣的爭論也適用於該類別的幾乎所有其他項目,因為一個程式的行為並不能作為判定惡意軟體的標準,而是在於程式設計師的不良意圖與用戶期望值之間存在著的差別。
病毒三大類
檔案病毒
期待反病毒軟體檢測病毒,當然是合情合理的。因為多年來反病毒軟體在檢測病毒方面如此成功,也正是由於這部分原因,以至於它檢測其它類型惡意軟體的能力被低估了。
雖然病毒有很多種定義,但一種被惡意軟體研究者普遍接受的定義是―病毒是一種電腦程式,它能通過將複製自身(或者自身的變體)修改計算機中的其他程式,以達到感染目的‖ [1, 2]。 這個定義涵蓋了很多種類型的病毒,包括:
 引導型病毒,硬碟分區病毒
 檔案型病毒(寄生病毒)
 混合型病毒
 宏病毒和腳本病毒
儘管有些病毒類型現在已經很少見了(比如引導型病毒和硬碟分區病毒),但是反病毒程式一般都能檢測在該平台上(有時包括其它平台)發現的這類已知病毒。通常,反病毒軟體也善於通過啟發式的方式檢測新的或未知的病毒種類。
蠕蟲
業界從未在蠕蟲的定義上真正地達成一致,如科恩所說―蠕蟲是一種病毒的特例‖ [1],但不論蠕蟲是怎樣的特例,反病毒軟體通常都能檢測它們。 對於蠕蟲的不同定義甚至比針對病毒的還要多,但是大部分反病毒研究者將蠕蟲定義為一種以非寄生方式複製的程式,也就是說,它不把它自身附加到一個寄主檔案上。郵件群發者可以描述為一種特殊類型的蠕蟲. 多數反病毒廠商將這種通過電子郵件傳播的惡意軟體視為蠕蟲,但是一些郵件群發者具有純病毒的特點(比如,Melissa事實上是一種純病毒,一種能夠像蠕蟲一樣傳播的宏病毒,而W32/Magistr則是一種檔案型病毒)。 對於新型蠕蟲變種的檢測,廠商同樣有很好的手段。比如說,新型郵件群發器幾乎在出現的同時,就被通信安全服務供應商及其系統列入了黑名單.
非複製型惡意軟體
這個定義是根據上文的定義得出來的,即如果一個惡意軟體不具有複製能力,那它就不是病毒或者蠕蟲。但是這並不意味著反病毒軟體不能檢測到它,除非其不具有威脅。
要說明的是,即使當反病毒廠商過去常以非複製型的對象不是病毒為由拒絕對它們的檢測時,一些非自我複製的對象(它們當中的一些甚至不是可執行程式,更不要說是有惡意的了)仍然能被檢測到並且報毒。例如:
 未遂病毒(複製自身失敗的病毒)和損壞的病毒
 垃圾檔案
 與病毒相關的非病毒程式,如病毒原體,釋放器,病毒生成器
 合法的測試程式如EICAR測試檔案[4]
許多已傳播多年的非複製型病毒,由於管理不善,仍然被一些評測機構作為樣本,用於針對防毒軟體的測試中。絕大部分廠商早已不再拒絕將這些病毒的特徵碼添加到其產品的病毒庫中,避免因沒有檢測出這些病毒樣本,而取得不理想的測試成績。遺憾的是,日趨複雜的啟發式掃描引擎,也只是剛好跟上了防毒軟體測試者不斷更新的測試手段,有時新的測試手段也並非恰當。本文的後面部分會簡略地分析測試產品啟發式掃描能力時,技術上可接受的方式。 人們了解最多的非複製型惡意軟體是木馬程式(或簡稱為木馬)。木馬程式聲稱能執行一些有用的操作或提供一些必要的功能,可能也確實如此。但同時它也會執行一些用戶並不希望或不需要的操作。這包括一系列特定的惡意軟體:
 病毒釋放器;
 鍵盤記錄器;
 破壞性木馬程式;
 下載者;
 間諜程式;
 廣告程式;
 核心後門與stealthkits
 玩笑程式;
 殭屍程式 (機器人程式, 遠程控制木馬, DDoS 客戶端等)
可自我複製的惡意軟體(如病毒)有時也被認為是木馬程式(或稱為木馬型病毒,這表示這種木馬通過將一個以前合法的程式損壞,修改或替換而引起破壞),大部分人可能會發現這樣的分類所帶來的困惑多於幫助。檢測出所有非複製型惡意軟體要比檢測出所有形式的病毒更加困難,因為不僅要測試程式的複製能力,還要測試程式的一系列作用。