一種檢測惡意代碼的方法和裝置的制造方法
【技術領域】
[0001] 本發明涉及計算機安全技術和圖像處理技術,尤指一種檢測惡意代碼的方法和裝 置。
【背景技術】
[0002] 互聯網技術的蓬勃發展使人們的生活和工作方式發生了巨大變革,人們在享受著 因特網提供便利的同時,也遭受著惡意程序帶來的安全威脅,在數字化時代的今天,與惡意 代碼的對抗已成為信息領域的焦點。
[0003] 傳統的惡意代碼檢測技術是基于靜態特征碼的檢測,而惡意程序采用的混淆、加 密、加殼等技術,使得基于靜態特征碼的檢測技術變得無能為力。惡意程序的動態分析技術 解決了混淆、加密、加殼等技術問題,但惡意程序的變種及多態性卻是動態分析無法解決的 問題。
[0004] 現有的惡意代碼變種在實現上可大致分為兩類;一類是基于基礎技術的共用,惡 意代碼開發人員通過重用基礎代碼實現變種;一類是惡意代碼專口針對現有防范技術而設 計開發的混淆技術。混淆技術按實現機理可分為兩類:一類是干擾反匯編的混淆,使反匯 編無法得到正確結果,從而阻礙進一步分析;另一類是指令/控制流混淆,此類混淆技術通 常采用垃圾代碼插入、寄存器重分配、等價指令替換及代碼變化等方式,改變代碼的語法特 征,隱藏其內部邏輯關系。目前已提出檢測惡意代碼變種的不同檢測方法,當更復雜的惡意 代碼仍然層出不窮。
[0005] 惡意代碼變種的檢測通常是基于一個特征向量,該向量標識了惡意代碼的內在特 征,良好的特征抽取算法是變種檢測的關鍵環節。目前,主流的檢測惡意代碼的方法主要分 為兩類:基于惡意代碼二進制的靜態特征檢測方法和基于惡意代碼運行行為的動態檢測方 法。
[0006] 基于靜態特征的檢測方法首先將可移植的執行體(?6,化的油1eExecute)文件轉 變為匯編文件,再通過分析惡意代碼的靜態文件結構、二進制字節碼、反匯編后的代碼、反 匯編后的靜態系統調用等獲取惡意代碼的靜態特征,利用分類算法區分正常代碼與惡意代 碼,實現已知和未知惡意代碼的檢測。基于靜態特征的惡意代碼檢測通常容易受代碼混淆 技術幼日加殼、變形、多態技術等)的影響,提高逆向(即將PE文件轉變為匯編文件)的難度, 使其幾乎很難逆向或是不可能,而且靜態檢測方法沒有真實地運行軟件,判斷是否為惡意 代碼的行為沒有展現,誤報和漏報的情況比較明顯。
[0007] 基于動態特征的檢測方法是將待檢測目標程序放置在一個沙箱環境巧日虛擬機) 中,通過監控目標程序運行過程的行為來判斷是否為惡意程序。動態檢測方法又分為粗粒 度方法和細粒度方法。粗粒度方法通過運行惡意代碼分析其行為所對應的應用程序接口 (API,ApplicationProgramInte;rface)調用序列來進行惡意代碼檢測,細粒度方法通過 惡意代碼的運行動態指令序列來進行檢測。然而,動態檢測方法是時間密集型和資源消耗 型的方法,虛擬機執行包括2、執行、全路徑探索來捕捉調用序列、退出等過程,動態檢測方 法的平均分析時間為3-5分鐘。因此,動態檢測方法可擴展性不足。而且,由于激發條件不 能滿足,一些惡意代碼的行為不能表現出來。
【發明內容】
[0008] 為了解決上述問題,本發明提出了一種檢測惡意代碼的方法和裝置,能夠彌補靜 態檢測方法無法檢測未知的惡意代碼及其變種的問題。
[0009] 為了達到上述目的,本發明提出了一種檢測惡意代碼的方法,預先建立惡意代碼 樣本數據庫,所述惡意代碼樣本數據庫包括已知惡意代碼的可移植的執行體PE文件的信 息摘要;預先建立布隆過濾器Bloom-Filter索引結構;
[0010] 該方法包括:
[0011] 獲取待測代碼的PE文件的信息摘要;
[0012] 當判斷出獲得的信息摘要和惡意代碼樣本數據庫中的已知惡意代碼的PE文 件的信息摘要不匹配時,獲取所述待測代碼的PE文件的紋理指紋;根據預先建立的 Bloom-Filter索引結構對獲得的紋理指紋進行檢測,并返回第一檢測報告,所述第一檢測 報告至少包括所述待測代碼是否為惡意代碼的檢測結果。
[0013] 優選地,當判斷出獲得的信息摘要和惡意代碼樣本數據庫中的已知惡意代碼的PE 文件的信息摘要相匹配時,該方法還包括:
[0014] 返回第二檢測報告,所述第二檢測報告包括確認所述待測代碼為惡意代碼的檢測 結果。
[0015] 優選地,所述預先建立Bloom-Filter索引結構包括:
[0016] 接收來自用戶的已確認為惡意代碼的PE文件;
[0017] 獲取接收到的惡意代碼的PE文件的信息摘要,當判斷出所述獲得的信息摘要和 所述惡意代碼樣本數據庫中的已知惡意代碼的PE文件的信息摘要不匹配時,將所述接收 到的惡意代碼的PE文件保存到所述惡意代碼樣本數據庫中,并對所述接收到的惡意代碼 的PE文件進行標注;獲取所述接收到的惡意代碼的PE文件的紋理指紋;根據獲得的惡意 代碼的PE文件的紋理指紋建立Bloom-Filter索引結構。
[0018] 優選地,當判斷出獲得的信息摘要和所述惡意代碼樣本數據庫中的已知惡意代碼 的PE文件的信息摘要相匹配時,該方法還包括:
[0019] 丟棄所述接收到的惡意代碼的陽文件。
[0020] 優選地,所述獲取所述待測代碼的PE文件的紋理指紋包括:
[0021] 將所述待測代碼的PE文件映射為灰度紋理圖像;
[0022] 采用紋理分割算法對所述灰度紋理圖像進行分塊;
[0023] 提取各分塊的紋理特征。
[0024] 優選地,所述采用紋理分割算法對所述灰度紋理圖像進行分塊包括:
[00巧]對所述灰度紋理圖像按紋理段順序掃描,找到第一個還沒有歸屬的紋理段,標記 該紋理段為當前紋理段;
[0026] 當判斷出所述當前紋理段滿足退化準則時,將所述當前紋理段所在分塊的所有紋 理段劃分為一個分塊;
[0027] 當判斷出所述當前紋理段不滿足退化準則,且所述當前紋理段與下一紋理段滿足 生長準則時,將所述當前紋理段和所述下一紋理段合并為一個分塊,并將所述下一紋理段 標記為當前紋理段,繼續執行判斷所述當前紋理段是否滿足退化準則的步驟;
[0028] 讀取灰度紋理圖像的下一紋理段,繼續執行判斷所述當前紋理段是否滿足退化準 則的步驟;
[0029]當判斷出當前紋理段為灰度紋理圖像的最后一紋理段時,返回圖像紋理的分塊結 果。
[0030]優選地,采用灰度共生矩陣、或通用搜索樹方法、或局部二值模式方法、或傅里葉 變換方法提取所述各分塊的紋理特征。
[0031] 優選地,所述根據預先建立的Bloom-Filter索引結構對獲得的紋理指紋進行檢 測包括:
[0032] 獲取所述灰度紋理圖像各分塊在惡意代碼樣本數據庫中出現的次數;
[0033] 根據獲得的次數獲取所述待測代碼的總體匹配度;
[0034] 根據獲得的總體匹配度判斷所述待測代碼是否為惡意代碼。
[0035] 優選地,根據公式
計算所述待測代碼的總體匹配度;其中,Md為所 述待測代碼的總體匹配度,Wi為塊權重指標,化i為可信度評分,i為分塊數,n為總分塊數; 所述化i根據所述次數確定。
[0036] 優選地,所述根據預先建立的Bloom-Filter索引結構對獲得的紋理指紋進行檢 測還包括:
[0037] 對所述待測代碼所屬惡意代碼家族進行評估。
[0038] 優選地,所述對所述待測代碼所屬惡意代碼家族進行評估包括:
[0039] 根據公式My=n;L,冷確定所述待測代碼所屬惡意代碼家族;其中,Mp為所述待測 代碼所屬惡意代碼家族,Si為BgMp個惡意代碼的名稱集合,B。為所述Bloom-Filter索引結 構中與分塊町匹配的分塊個數,Mp為每個所述與分塊町匹配的數據塊對應的惡意代碼數。
[0040] 本發明還提出一種檢測惡意代碼的裝置,至少包括:
[0041] 惡意樣本存儲模塊,用于保存預先建立惡意代碼樣本數據庫,所述惡意代碼樣本 數據庫包括已知惡意代碼的可移植的執行體PE文件的信息摘要;
[0042] 索引模塊,用于保存預先建立布隆過濾器Bloom-Filter索引結構;
[0043] 獲取模塊,用于獲取待測代碼的PE文件的信息摘要;判斷出獲得的信息摘要和惡 意代碼樣本數據庫中的已知惡意代碼的PE文件的信息摘要不匹配,獲取所述待測代碼的 PE文件的紋理指紋;
[0044] 計算模塊,用于根據預先建立的Bloom-Filter索引結構對獲得的紋理指紋進行 檢測,并返回第一檢測報告,所述第一檢測報告至少包括所述待測代碼是否為惡意代碼的 檢測結果。
[0045] 優選地,所述獲取模塊,還用于:
[0046] 判斷出獲得的信息摘要和惡意代碼樣本數據庫中的已知惡意代碼的PE文件的信 息摘要相匹配,返回第二檢測報告,所述第二檢測報告包括確認所述待測代碼為惡意代碼 的檢測結果。
[0047] 優選地,所述獲取模塊,還用于:
[004引接收來自用戶的已確認