靜態啟發:與傳統將文件的 MD5 與病毒庫中的數據比對不同,啟發式試圖通過一系列手段還原出可執行檔案的實際行為,並將其與記錄病毒行為的啟發特徵庫相比對。而靜態啟發就是在可疑文件讀入到記憶體執行前,先行一步反編譯,根據得到的代碼分析出程式可執行的命令種類和順序,再與啟發特徵庫中的行為比較,近似者報毒。因為只是讀取程式指令來“預測”是否有惡意行為,所以過程中程式不需要執行。實際上這是模擬了工程師分析病毒的過程,典型的就是 ESET 的啟發引擎
理想情況下,一個啟發特徵就可以殺一整類病毒,大大節省病毒庫的體機和防毒性能
動態啟發:防毒建立一個隔離的虛擬環境預先執行要掃描的程式幾十毫秒。通過監控程式最初的幾條或幾十條指令來判斷程式是否可疑(正常程式一般會先調用圖形 API 繪製界面等,但病毒通常直接開始讀寫硬碟,注入其他程序);這項技術有嚴重缺陷,不僅資源佔用高、誤報嚴重、檢測率還低(只要在病毒中加一個延時等100~200ms之後再執行惡意指令就可以完美避過),一般作為預判斷手段(先通過動態啟發確認可疑程度來調整進行靜態啟發時引擎的敏感度)。雖然各大防毒引擎都俱備這個功能,但平時沒有存在感。這種技術可以看作主動防禦的前身
HIPS:主機入侵防禦的英文縮寫,分為 AD 應用程式防護、RD 註冊表防護、FD 文件防護三塊。在程式執行時攔截所有行為並詢問用戶是否放行,一般通過預先設定好的規則來減少彈窗,規則的嚴密程度也決定了防護能力。是一種把系統控制權交給用戶的安全工具,會用的高手可以裸奔毒網,小白用這個只是徒增煩惱。
.卡巴斯基有一套”Security Corridor”定義軟體的行為模型,例如 Word 主要是處理文檔,瀏覽器的功能是下載文件、瀏覽網頁內容。而惡意程式通常利用漏洞讓程式執行未登記的行為,像修改系統文件、向程序注入代碼、安裝驅動等等。透過”Sexurity Corridor”可以限制軟體的範圍功能,即使它被卡巴斯基標住為可信任、有合法的數字簽名也一樣
趨勢科技的核心概念有三朵雲:「Email Reputation Service 電子郵件信譽評等服務 (ERS)」、「Web Reputation Service 網頁信譽評等服務 (WRS)」及「File Reputation Service 檔案信譽評等服務 (FRS)」,這三個組成了主動式雲端攔截技術(Smart Protection Network)
單看 AVC 的真實世界防護測試,趨勢往往是成績名列前茅的冠軍,然而真像是──所有送測的防毒軟體,都會把防護模式開到最高,例如卡巴和 ESET 的高啟發,而趨勢就是「高安全性模式」。上面已經解釋了趨勢的安全鑑別並不是基於病毒碼、啟發、行為判斷,而是檔案信譽。這就產了一個問題,只要沒經過趨勢檢測過的檔案都無法執行,像是一些小眾軟體,這種非黑即白的判斷方式也伴隨著高誤判率。另外它的主防會擅自更改系統設置,像是 UAC 和 Windows Update,就算在組策略禁用後也會被開啟,這點我相當不喜歡
這類 AI 也算是啟發式技術,我們知道所謂的啟發就是反編譯、模擬人工分析病毒的過程,通常本地掃毒引擎的啟發都是通過 PE 識別法、入口點監測、API 調用等等,只能算是淺層的啟發應用;而人工智慧顧名思義,會從樣本不斷的累積學習、自我進化,技術含量與傳統啟發不在一個檔次。除了QVM,卡巴的 KSN、紅傘的 APC、邁克菲的月神都是雲啟發。然而不代表 AI 就一定好過傳統啟發,現階段 AI 局限於算法的精度和樣本數量,都會帶有一定的誤報;相對的本地啟發技術成熟、誤報少也不依賴雲,不少防毒都是本地+雲啟發相互配合達到最大的查殺效果
ESET(75分):過去 ESET 給人輕巧但查殺強大的印象,雖然隨著改版功能的增加不再小巧,卻同時提供了豐富的自訂性。ESET 的優勢在於高啟發和基因庫,進階的使用者可以用 HIPS 和防火牆自訂規則,達到不下於 CIS、BD 的防護水準
關於啟發已經講解多次了,不再贅述。我們只要知道 ESET 是最早使用啟發的防毒廠商之一,雖然時到今日每家防毒都帶有啟發技術,可是水平各不相同,多數還是必須配合傳統病毒碼才能有水準以上的檢測率;而 ESET 號稱「啟發之王」,在啟發上投入的心血、累積的經驗都比其他廠商多,甚至有自己獨創的啟發式—進階啟發式,針對高階語言(Java、C、C++、C#)編寫的程式優化過的反編譯器,能更準確的讀出程序指令
ESET 另一個強項是基因檢測,所謂的基因就是防毒分析多種同類病毒後,提取出相似特徵,只用一條定義就可以殺多個樣本。通常來說俱備基因功能的防毒都有獨立的基因庫,ESET 厲害在於它直接用病毒庫代替基因庫,利用演算法識別出相似病毒。若開啟了「進階啟發式/DNA/智慧型簽章」選項會同時用進階啟發、基因來監控系統提升檢測率。ESET 很少有拉黑報法,真的要說只有雲殺 Suspicion Object 才是 ESET 的拉黑,所以 ESET 本地病毒庫體積很小,只要啟發和基因能辨別出來的樣本都是不入庫的
「潛在的不安全應用程式」「潛在的不需要應用程式」這兩個項目建議一般人關閉,如果開了就會出現 PUP/PUA 報法(potentially unwanted Program/Application)。像是 CCleaner、格式工廠都會被攔阻,因為 CC 安裝程式裡面有 Google 瀏覽器的推廣,雖然不是強制安裝,但是捆綁推廣就屬於可能不需要的程式 。這裡給出 ESET 對 PUA 的定義:
ESET 的雲系統 LiveGrid 包含了拉黑和信譽,當掃描時檔案的 Hash 會傳送到黑白名單比對,白名單上的項目將被標住日後不再掃描,以提高效率;黑名單會依據威脅性質採取相應措施;若都不匹配則會上傳至雲伺服器後台系統處理,凡認定為惡意樣本,自動生成病毒特徵碼在下次更新時發送給用戶。不過 ESET 主要還是以本地掃描為主,雲拉黑報法相對罕見
另外就是信譽功能,會收集該檔案的共有率,主要體現在 HIPS 以及防火牆的彈窗
整體而言,ESET 有幾個比較大的缺點
對於活動威脅對抗能力偏弱
ESET 的引擎模塊為非驅動級的 DAT 格式(至少在九版以前是如此),而且跟 AVG 一樣組件是模塊化設計,這樣的好處是各個組件互相獨立,每次改版添加新功能相對容易(例如 ESET 3版到現在都還可以更新,只是少了 Exploit Blocker、AMS、Botnet Protection、IDS....等一堆功能)。但也因為架構的關係,常發生發現病毒,但清除不了的狀況,包含它的”進階記憶體掃描”也是如此,只能報毒卻無法終止病毒程序。AVG 雖然也是模塊化,然而 Anti-Rootkit 是驅動級文件,還有可回滾的 IDP,相對來說 ESET 在這方面實在做得不好,只能”查”卻不能”殺”
精簡的病毒庫
這其實不算缺點,我們已經知道 ESET 的病毒庫相當小巧,多虧了啟發和基因,不用像其他廠商逐條入庫。再者,ESET 每次更新都會把沉余病毒代碼刪除,譬如一些不流行的化石包,或者現代作業系統無法執行的軟體。但如果是 Windows XP、Server 2003 的用戶,ESET 比較沒辦法防護針對這些老舊作業系統的病毒
中文版不殺易語言
只要是中文版(不管簡體/繁體)都排除了易語言病毒碼,而英文版易語言一律通殺,報法是 a variant of win32/flystudio unwanted application(PUA 報法)。主要影響的是一些對岸的軟體,關於易語言詳見:易語言 WIKI
預設情況 ESET 主要靠基因和啟發防禦病毒,只要過了前兩關,有害程式一但於記憶體中執行 ESET 基本上是手無縛雞之力,甚至我認為預設設定的防護能力比360還差(360至少是智能 HIPS);但得益於 HIPS 以及防火牆豐富的自訂選項,高手使用 ESET 可以達到不下於 Bitdefender、Comodo 的強度。不過小白用戶也不必過於擔心,能過 ESET 啟發和基因殺的病毒其實相當罕見,只要習慣良好也不至於中毒
Avira Pro(75分):如果說 ESET 是啟發和基因技術的先驅,那紅傘就是進一步將兩者發揚光大,而且加入雲啟發的概念。在本地加上雲的雙重檢測下,使得紅傘的查殺率在國際評測中獨佔鰲頭,是高檢測率的防毒代表之一
所謂廣譜簡單的講就是分段,像是將某文件進行分塊,計算每一塊的哈希值,再將一系列哈希值利用比較函數進行相似度比較。以加殼文件為例,紅傘可能從檔案標頭(加殼後的共通部位)取一段,程式本體再取一段做為 CryptGen。口語概念大概可以表達成:這個程式加了殼(可疑),而又包含某段特定程式碼(確定為威脅)。這種方法對於變種病毒有奇效,但也使得誤報率大大增加,所以很快又發展了基因技術,從多點特徵值取樣轉變為共通特徵值取樣,從廣大的樣本數量建立病毒家族的 DNA 體系,現在廣譜和基因的定義已經逐漸模糊。至於為什麼要殺帶殼文件,因為紅傘脫殼很弱,才會採取帶殼入庫的措施,這的確也導致了誤報(但正常軟體沒事不會加殼)
但是沙盒有其限制,受限於 Windows API 許多程式無法在其中跑完整的行為,造成軟體沒辦法使用或部分功能失常,間接影響到行為判斷的能力(沙盒中沒有展現出病毒特徵,結果防毒自己加白或使用者放出來造成漏毒),所以又加入了基於 Virtual Machine 的 NG 技術;NG 是一個完整的虛擬機,病毒可以在裡面做任何事,包括加載內核攻擊、攻擊內核漏洞、重寫 MBR,甚至是硬碟格式化
對於勒索病毒而言,最好的檢測方法是對行為作分析,所以一直以來強烈推薦安裝具有主防的防毒。邁克菲在過去並沒有類似的技術,終於在2017年推出了 Real Protect,而其中又分為靜態分析和動態分析
我們知道傳統的特徵碼檢測惡意軟體制作者只要更改代碼中微小的部分就能規避,但就算病毒作者改變周邊代碼的所有內容,歸根究柢它還是惡意軟體:其所使用的編譯器、語言程式、引用和共享的動態庫都有許多共同的特徵。McAfee 藉由雲端威脅感知系統 GTI 收集全球的病毒樣本,再利用機器學習統計分析這些二進制代碼的特徵,歸納出一套數學模型,可以在不依賴特徵碼的情況下瞬間比對出存在電腦中的威脅,這是 Real Protect 靜態分析技術,是一種執行前防禦(病毒尚未執行前攔截)
如果病毒能通過靜態分析,但執行中的代碼卻相當可疑,就會觸動 Real Protect 的動態分析,防毒會持續追蹤該程式的行為並上傳給雲端分析,如果行為符合雲模型中惡意範疇(例如刪除子程序、覆蓋文件以及更改關鍵註冊表等等)就會立即阻止威脅。值得一提的是,由於 McAfee 並不是上傳整個文件,而是上傳檔案的行為跟蹤記錄(包括文件名、路徑、程序 ID、系統版本以及隨機生成的 GUID),所以比起紅傘 APC 或 Avast CC 之類的反應速度快上不少
假設讀者到目前為止有仔細閱讀這篇文章,應該會發現 Real Protect 靜態分析其實就是雲啟發,跟原本的 Artemis 有何不同咖啡並沒有說清楚。關鍵的行為防禦其實是動態分析部分,可惜的是實測結果 Real Protect 表現並不理想,跟一般所謂的主動防禦型防毒完全不可比。咖啡的技術文檔有提到 Real Protect 具有回滾破壞的功能,然而到目前為止尚未見到 Real Protect 有任何回滾或修復的能力。也就是說這是一個還不成熟的技術,無法稱為合格的主防
咖啡企業版的存取保護相當強大,雲啟發誤判率低,修復能力也很強;可惜個人版表現不盡人意。而且不管是企業版或個人版對於勒索防禦都不太在行,新的 Real Protect 技術尚未成熟。所以如果要防勒索,筆者實在不是很推薦,故給了較低的分數
Windows Defender(60分):每個人電腦中都有的防毒軟體,然而對其看法卻是眾說紛紜。有人說現在的 WD 已經足夠安全、不需要再裝第三方防毒;也有人說 WD 只是基準線而已,微軟不可能做太好。目前台灣論壇我還沒見過從技術面剖析 WD 的文章,大多只是個人主觀感受。離你最近的軟體,如此熟悉卻又十分陌生,下面我們就來揭開 WD 的神秘面紗
我們先從雲安全開始說起,WD 的雲殺叫 Dynamic Signature Service 動態簽名服務(簡稱DSS),而動態簽名服務又分為動態和靜態兩種類型