病毒特徵碼對偵測惡意軟體來說可以是一項不可或缺的偵測方法, 過去與現在都是, 將來的電腦世界亦應該如此
可是這裡卻很少有關病毒特徵碼的討論, 即使之前有討論過的都只是表面 (如: 特徵碼的好壞等) 亦不是本質問題
有幸可以趁這個機會由小弟說明大家一直未有詳細討論過的病毒特徵碼的構成結構
何謂病毒特徵碼 :
最簡單, 亦是最多人知的: 病毒特徵碼就是一段獨一無二的字串或 16進制編碼, 它代表著一個或一系的惡意軟體, 而防病毒軟體在掃瞄檔案時需依據它來判斷檔案是否為惡意軟體
不過定義病毒特徵碼不是重點, 只要知道它是甚麼就可以了, 重點是以下的部份
建立病毒特徵碼 / 病毒特徵碼的結構 :
建立病毒特徵碼其實不難, 只要符合上述提到的獨一無二的條件就可以.
大體來說, 就小弟的知識, 可以有 4 種方法建立病毒特徵碼, 亦即是說會有 4 類病毒特徵碼結構.
第一類 : MD5 + 檔案大小
這一類是最簡單的, 亦不應有很多防病毒軟體在使用, 因為太過單一性, 會使病毒特徵庫變得很大.
建立方法/結構: 提取檔案的 MD5 數值. 當然是不會單單使用 MD5 數值, 通常這一類會與檔案大小一同使用來構成病毒特徵
第二類 : 區段的 MD5 + 區段的大小
這一類開始, 建立會變得複雜, 亦不會像第一類對惡意軟體太過專一, 但這一類仍然不是主流所使用的.
建立方法/結構: 提取檔案中某區段的 MD5 數值配合該區段的大小來構成病毒特徵
第三類 : 位移 + 特徵片段 // 特徵片段 // 多重位移 + 特徵片段
這一類是主流所使用, 彈性增加, 單一性降低. 可惜這一類不及第四類的擴充性, 建立不當可能會造成異常大的病毒特徵庫.
建立方法/結構: 假定檔案位移, 然後由這位移為開始, 提取一段 16進制的特徵片段, 當中這段特徵片段可以使用萬用字元取代某幾個字節來提高彈性. 如果不涉及位移, 提到的假定檔案位移當然不需要. 如果是多重特徵片段, 各特徵片段需同時符合.
第四類 : 邏輯特徵片段
這一類是最複雜的. 雖然都是建立特徵碼的主流之一, 但不及第三類的多.
建立方法/結構: 分析病毒並提取數段 16進制的特徵片段 (當中這些特徵片段可以使用萬用字元取代某幾個字節來提高彈性), 配合邏輯條件建立特徵碼.
評論 :
第一及第二類應該不須評論了, 自己想一想已有數不盡的弊處.
第三類 :
利: 快速建立特徵碼, 快速掃瞄, 高彈性
弊: 誤判時, 有機會要重新修改特徵碼, 特徵碼白名單要分開
第四類 :
利: 高擴充性, 特徵碼白名單可以合併一起
弊: 建立特徵碼較慢, 掃瞄時間延長
後話 :
第三類及第四類混合使用可會建立一強而有效的病毒特徵庫, 可惜同時使用就意味著要建立兩個引擎, 這應該是安全廠商不想/願會發生的事. 不論他們願不願意, 亦必需有一些改革來面對威脅爆發的電腦世界, 否則要繼續在這戰場立足是不太可能的. 前一句說的不是 HIPS, Collective (Cloud) Technology 等技術是必須整合到防病毒軟體中, 而是單一的防病毒軟體不能保障我們的電腦安全.
PS. 本文章由 KiNg 在 AVPClub 編寫及發表. 可以轉載 URL, 但請勿轉載整篇文章到其它論壇!!

我也來說兩句 查看全部評論 相關評論