[討論] 2017各款防毒軟體技術原理剖析 (前言)
在巴哈看一篇關於各家防毒軟體的技術分析文章就轉過來
如果有轉載需求請記得附上以下原始網址
※本文發佈於巴哈姆特電應板以及部落格 IT Works,轉貼請附上原文連結
https://forum.gamer.com.tw/C.php?bsn=60030&snA=463208&s_author=ts00937488
--
近年來勒索肆虐猖狂,網路上反而出現不少不學無術、對防毒原理一知半解、毫無專業知
識,卻在論壇上妖言惑眾、散佈錯誤觀念和謠言、肆意販賣恐懼、誤導他人的可惡之徒。
可悲的是,這等神棍的妖言還有不少人信以為真,於是一傳十、十傳百,指鹿為馬居然莫
名成為了真理
為了破除謠言、以正視聽。本篇以實事求是,回歸技術面科普的心態,從最基礎的防毒原
理開始說起。
什麼是0day攻擊?
0day一般指還沒有修補的安全漏洞,但以防毒的觀點來看,0day泛指任何無法被防毒資料
庫識別的惡意軟體、掛馬網頁。很多人對防毒的認識還停留在十年前單純靠病毒庫比對惡
意軟體的階段;時代在進步,防毒廠商也不是吃素的,現今的防毒透過各種技術,例如:
啟發法、行為攔截(Behavior Blocker)、主動防禦、雲分析、沙盒(SandBox),當然
還有傳統的 HIPS,來預防尚未入庫的未知威脅
以下針對這些預防0day的技術做介紹
啟發式:現代防毒幾乎都有用到啟發式技術,然而多數人並不知道這是什麼意思。在牛津
詞典中對於“啟發式”的解釋是“使一個人能自主發現並學習某個東西”,然而這段描述
實在過於籠統。所以下面我用一張圖來舉例
https://i.imgur.com/NMhYDjy.jpg
假設您被要求從上圖找出一種從來沒聽過的犬類(加泰霍拉豹犬 Catahoula),以下是可
能的推理過程:
因為要找的是哺乳動物,首先會把魚類排除掉。排除魚類下方的杜賓犬則類似,因為不少
人都熟悉杜賓犬這個品種。排除熊的照片則有意思得多:試想如果一個人從未見過熊,怎
樣才能不把熊認成犬類?對電腦來說更是這樣,因為電腦的程式語言需要精確的描述,這
種情況下啟發識別就相當困難。可能有些人會被貓迷惑,因為加泰霍拉豹犬 Catahoula
包含了 cat 這個英文單字
最後剩下右邊的兩隻狗,右上角是許多人熟悉的米格魯,加上目標的犬種名”豹犬”讓人
聯想到豹紋,通過排除法得出了右下角的照片
在偵測病毒的過程中,面對未知的威脅傳統特徵碼將完全失效;而啟發式通過一系列的規
則試圖推理出可能的目標。其中又分成 "靜態啟發”以及 "動態啟發”
靜態啟發:與傳統將文件的 MD5 與病毒庫中的數據比對不同,啟發式試圖通過一系列手
段還原出可執行檔案的實際行為,並將其與記錄病毒行為的啟發特徵庫相比對。而靜態啟
發就是在可疑文件讀入到記憶體執行前,先行一步反編譯,根據得到的代碼分析出程式可
執行的命令種類和順序,再與啟發特徵庫中的行為比較,近似者報毒。因為只是讀取程式
指令來“預測”是否有惡意行為,所以過程中程式不需要執行。實際上這是模擬了工程師
分析病毒的過程,典型的就是 ESET 的啟發引擎
理想情況下,一個啟發特徵就可以殺一整類病毒,大大節省病毒庫的體機和防毒性能
動態啟發:防毒建立一個隔離的虛擬環境預先執行要掃描的程式幾十毫秒。通過監控程式
最初的幾條或幾十條指令來判斷程式是否可疑(正常程式一般會先調用圖形 API 繪製界
面等,但病毒通常直接開始讀寫硬碟,注入其他程序);這項技術有嚴重缺陷,不僅資源
佔用高、誤報嚴重、檢測率還低(只要在病毒中加一個延時等100~200ms之後再執行惡意
指令就可以完美避過),一般作為預判斷手段(先通過動態啟發確認可疑程度來調整進行
靜態啟發時引擎的敏感度)。雖然各大防毒引擎都俱備這個功能,但平時沒有存在感。這
種技術可以看作主動防禦的前身
HIPS:主機入侵防禦的英文縮寫,分為 AD 應用程式防護、RD 註冊表防護、FD 文件防護
三塊。在程式執行時攔截所有行為並詢問用戶是否放行,一般通過預先設定好的規則來減
少彈窗,規則的嚴密程度也決定了防護能力。是一種把系統控制權交給用戶的安全工具,
會用的高手可以裸奔毒網,小白用這個只是徒增煩惱。
另外所謂的智能 HIPS 就是根據雲端白名單識別程式並建立相應的規則以減少彈窗,可說
是自動預設規則的 HIPS
主動防禦:可以當作是有啟發能力的 HIPS,與啟發式的不同在於,擁有主動防禦的防毒
可以在程式正常執行(不隔離)的情況下不間斷地監視程式的行為,發現與啟發特徵庫匹
配的動作便終止該程序(BD ATC 有些特殊,稍後再說明);有不少防毒的主防(Sonar、
IDP、SW)還會在程式執行時記錄下執行過的指令,發現惡意行為並終止後便按照記錄逐
一撤銷程式的操作,這就是回滾能力。主防既有像靜態啟發一樣檢測未知病毒的能力,又
很難被花指令所矇騙(畢竟靜態啟發只能進行簡單的反編譯不能讀出程式中所有指令);
但主防既要求防毒能在程式執行過程中攔截指令,又要在確認為惡意程式後有足夠權限將
其終止,實現難度相比啟發式困難,也來得不穩定。對於未知威脅,主動防禦是目前最有
效的手段。
要注意的是,主防和 HIPS 都屬於執行後保護,在其運作時,可疑程式已經在記憶體中執
行,可以說是防毒軟體的最後一道關卡
行為攔截:BB 在技術上並沒有被嚴格定義,只要有惡意行為,不管程式是正常不正常,
有簽名或無簽名,只要防毒判定為惡意就終止程序。譬如開著 IDM 下載病毒,數次後防
毒會提示 IDM 似乎是個未知威脅,對於這種正常程式下載惡意文件會提示操作,並記錄
程式行為是打開網絡連接和多次下載惡意文件。它可以是基於本地主防或者是雲端甚至是
智能 HIPS,例如紅傘雖然沒有主防但它的雲 APC 對於未知威脅可以有效阻斷攔截
人工智慧(AI):包含雲啟發或本地 AI,詳見 BD ATC 和 360 QVM。另外像 BD 或者是
AVG 雖然是本地 AI,但是其規則是分析雲端的大量資料,機器學習後再下放到本地(
BD 是主防帶 AI,AVG 是掃毒帶 AI,這也是 AVG 2016年檢測率飆升的原因。AI 的一大
好處是提高檢測的同時節省人工成本,防毒廠商的病毒分析師只需進行簡單的後期除錯,
其餘工作都能仰賴 AI 進行分析)
廣譜/基因:通過衡量某個未知的文件和已知惡意文件的相似度來進行判別。如果一個未
知文件在關鍵的地方和已知惡意威脅高度相似則判為有害
https://i.imgur.com/UT3BdcL.jpg
例如上圖中,假設你已經熟悉了左邊的黑褐色長毛獵犬,那麼即使沒見過右圖的犬種,也
能通過相似度推斷出是某個品種的長毛獵犬
有些人把基因當成啟發的一種手段(但啟發不等於基因)更詳細的介紹見紅傘、ESET 兩
欄的解說
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.185.3
※ 文章網址: https://www.ptt.cc/bbs/AntiVirus/M.1495823940.A.EA7.html
推
05/27 03:41, , 1F
05/27 03:41, 1F
→
05/27 09:16, , 2F
05/27 09:16, 2F
推
05/27 09:57, , 3F
05/27 09:57, 3F
→
05/27 09:57, , 4F
05/27 09:57, 4F
→
05/27 09:59, , 5F
05/27 09:59, 5F
→
05/27 11:39, , 6F
05/27 11:39, 6F
→
05/27 13:11, , 7F
05/27 13:11, 7F
推
05/27 15:43, , 8F
05/27 15:43, 8F
→
05/27 17:32, , 9F
05/27 17:32, 9F
→
05/27 17:34, , 10F
05/27 17:34, 10F
→
05/27 19:48, , 11F
05/27 19:48, 11F
→
05/27 19:49, , 12F
05/27 19:49, 12F
推
05/28 11:34, , 13F
05/28 11:34, 13F
→
05/28 11:34, , 14F
05/28 11:34, 14F
→
05/28 11:34, , 15F
05/28 11:34, 15F
→
05/28 11:34, , 16F
05/28 11:34, 16F
→
05/28 11:34, , 17F
05/28 11:34, 17F
→
05/28 17:22, , 18F
05/28 17:22, 18F
推
05/28 21:39, , 19F
05/28 21:39, 19F
→
05/28 21:40, , 20F
05/28 21:40, 20F
推
05/29 00:21, , 21F
05/29 00:21, 21F
→
05/29 00:21, , 22F
05/29 00:21, 22F
→
05/29 00:22, , 23F
05/29 00:22, 23F
→
05/31 18:34, , 24F
05/31 18:34, 24F
→
05/31 18:35, , 25F
05/31 18:35, 25F
→
06/04 18:20, , 26F
06/04 18:20, 26F
推
06/05 16:52, , 27F
06/05 16:52, 27F
→
06/15 16:12, , 28F
06/15 16:12, 28F
→
06/20 03:03, , 29F
06/20 03:03, 29F
→
06/20 03:06, , 30F
06/20 03:06, 30F
→
06/20 03:07, , 31F
06/20 03:07, 31F
→
06/20 03:08, , 32F
06/20 03:08, 32F
推
06/20 22:44, , 33F
06/20 22:44, 33F
→
06/20 22:44, , 34F
06/20 22:44, 34F
→
06/20 22:44, , 35F
06/20 22:44, 35F
→
06/20 22:44, , 36F
06/20 22:44, 36F
→
06/20 22:45, , 37F
06/20 22:45, 37F
→
06/20 22:45, , 38F
06/20 22:45, 38F
→
06/20 22:45, , 39F
06/20 22:45, 39F
還有 27 則推文
→
06/22 07:42, , 67F
06/22 07:42, 67F
→
06/22 07:42, , 68F
06/22 07:42, 68F
→
06/22 07:43, , 69F
06/22 07:43, 69F
→
06/22 07:43, , 70F
06/22 07:43, 70F
→
06/22 07:43, , 71F
06/22 07:43, 71F
→
06/22 07:44, , 72F
06/22 07:44, 72F
→
06/22 07:44, , 73F
06/22 07:44, 73F
→
06/22 07:44, , 74F
06/22 07:44, 74F
→
06/22 07:44, , 75F
06/22 07:44, 75F
→
06/22 07:44, , 76F
06/22 07:44, 76F
→
06/22 07:45, , 77F
06/22 07:45, 77F
→
06/22 07:45, , 78F
06/22 07:45, 78F
→
06/22 07:45, , 79F
06/22 07:45, 79F
→
06/22 07:46, , 80F
06/22 07:46, 80F
→
06/22 07:46, , 81F
06/22 07:46, 81F
→
06/22 10:06, , 82F
06/22 10:06, 82F
→
06/22 10:07, , 83F
06/22 10:07, 83F
→
06/22 10:08, , 84F
06/22 10:08, 84F
→
06/22 10:09, , 85F
06/22 10:09, 85F
→
06/22 10:10, , 86F
06/22 10:10, 86F
→
06/22 10:15, , 87F
06/22 10:15, 87F
→
06/22 10:24, , 88F
06/22 10:24, 88F
→
06/22 10:25, , 89F
06/22 10:25, 89F
→
06/22 10:27, , 90F
06/22 10:27, 90F
→
06/22 10:27, , 91F
06/22 10:27, 91F
→
06/22 10:29, , 92F
06/22 10:29, 92F
→
06/22 10:30, , 93F
06/22 10:30, 93F
→
06/22 10:32, , 94F
06/22 10:32, 94F
→
06/22 10:33, , 95F
06/22 10:33, 95F
→
06/22 10:33, , 96F
06/22 10:33, 96F
→
06/22 10:34, , 97F
06/22 10:34, 97F
→
06/22 10:34, , 98F
06/22 10:34, 98F
→
06/22 11:00, , 99F
06/22 11:00, 99F
→
06/22 11:00, , 100F
06/22 11:00, 100F
→
06/22 11:01, , 101F
06/22 11:01, 101F
→
06/22 11:02, , 102F
06/22 11:02, 102F
→
06/22 11:03, , 103F
06/22 11:03, 103F
→
06/22 11:03, , 104F
06/22 11:03, 104F
→
06/22 11:04, , 105F
06/22 11:04, 105F
推
06/22 11:06, , 106F
06/22 11:06, 106F
AntiVirus 近期熱門文章
PTT數位生活區 即時熱門文章