李 豪,錢麗萍
(北京建筑大學電氣與信息工程學院,北京 100044)
在大數據時代,互聯網的發(fā)展加快了人們生活節(jié)奏,極大程度提高了生活品質,但在很多方面都存在著無法避免的安全問題。隨著計算機技術的不斷發(fā)展,越來越多黑客通過網絡攻擊來獲取利益,惡意代碼即是其中的常見手段之一。惡意代碼的泛濫給國家、社會及個人帶來了巨大危害。2020 年,國家互聯網應急中心CNCERT 捕獲惡意程序樣本數量超過4 200 萬個,日均傳播次數達到482 萬余次,涉及惡意程序家族近34.8 萬個[1]。因此,如何快速、準確地檢測出惡意代碼,是目前網絡安全領域的研究熱點。
目前,國內外針對惡意代碼檢測技術進行全面綜述的文獻較少。如文獻[2]從動態(tài)、靜態(tài)和形式化3 個角度分析各種檢測方法的原理及優(yōu)缺點,但文獻發(fā)表時間較長,缺乏先進性與全面性;文獻[3]是一篇全面描述在Windows平臺上進行惡意軟件檢測的綜述性文章,從特征提取、特征處理及分類器設計方面對智能檢測進行歸納與總結,但對當前研究熱點(基于可視化的惡意代碼檢測)的分析較少。本文對不同類型的惡意代碼檢測方法進行全面的調研分析,從惡意代碼可視化方法、圖像特征提取、分類器設計、當前檢測所面臨的問題4 個方面系統地進行探究,總結了近年來針對惡意代碼檢測的新興技術,提出未來可能的研究方向,旨在提高惡意代碼檢測的準確率與效率。
惡意代碼也稱為惡意軟件,是指通過各種手段對用戶、計算機或網絡造成破壞的軟件。通過人工分析惡意代碼具體函數來檢測惡意軟件,不僅時間成本高,而且檢測效率低、實用性差。依據是否運行程序可將傳統惡意代碼檢測技術分為靜態(tài)檢測、動態(tài)檢測與混合檢測3類。
靜態(tài)檢測技術不需要運行惡意軟件,其研究重點在于如何準確、有效地提取靜態(tài)特征。通常對惡意代碼文件進行反編譯、反匯編、文件結構分析以及控制流與數據流分析,提取程序中的指令、字節(jié)序列、文件頭部信息等作為靜態(tài)特征。該方法的優(yōu)點在于能耗小、風險低、速度快,且對實時性要求低,對惡意樣本覆蓋率高,可快速捕獲語法和語義信息進行全面分析,但缺點是受到經變形、多態(tài)、代碼混淆技術處理后的惡意代碼干擾,會出現誤報和漏報的情況。本文根據靜態(tài)特征種類對不同靜態(tài)檢測技術進行探究與分析。
惡意代碼的字節(jié)序列特征通常使用N-Gram 方法提取,原因是惡意代碼由字符、文字和符號等構成,包含了語義和區(qū)塊結構,所以統計語言模型N-Gram 適用于惡意代碼特征提取。N-Gram 方法需要設置一個長度為n 的滑動窗口,在原始字節(jié)序列上進行平滑操作,將長度為n 的子序列頻率作為特征,提取方式如圖1 所示。Schultz 等[4]是第一個使用N-Gram 方法在基于Windows 平臺下提取特征的,其將特征輸入到各個分類器,并通過五倍交叉驗證實驗驗證了N-Gram 方法優(yōu)于單純基于簽名的方法?;瑒哟翱诖笮∈荖-Gram 方法的重要參數,將直接影響到惡意代碼檢測準確率。如果n 值過小,提取的特征缺乏代碼的整體性,容易陷入局部最優(yōu);如果n 值過大,會影響特征之間的相關性。Kolter 等[5]設置不同n 值的N-Gram 法進行特征提取,旨在找出最優(yōu)n 值以提高惡意代碼檢測準確率。由于N-Gram 特征提取存在方法單一、效率較低等問題,通常將N-Gram 提取的字節(jié)序列特征與其他特征融合或采用不同n值特征進行訓練[6-7]。
Fig.1 N-Gram extracts byte sequence features圖1 N-Gram提取字節(jié)序列特征
PE 文件通常由DOS 頭、PE 頭與各類區(qū)塊段組成,具體結構如圖2 所示。由于PE 頭是特有的可執(zhí)行文件頭,包含程序文件的結構特征、動態(tài)鏈接庫及導入導出表等信息,所以PE 頭信息也可作為惡意代碼檢測的靜態(tài)特征。Li等[8]將惡意代碼樣本中的文件頭、熵、DLL 等信息作為特征,并通過實驗證明了訓練出的分類器對重要類別的自動規(guī)避攻擊具有魯棒性;Kumar 等[9]組合了PE 頭的原始值與派生值,對比了集成特征集與原始特征集(頭部信息、熵等特征)在機器學習分類器中的效果,通過實驗證明了集成特征集訓練出的分類器能以較高精度與較低成本分類出良性或惡性代碼。
Fig.2 PE file structure圖2 PE文件結構
除上述兩種靜態(tài)特征外,還有動態(tài)鏈接庫(DLL)、API序列、可閱讀字符串和熵等信息可作為靜態(tài)特征。但隨著對抗反匯編、反調試、反虛擬機、加殼與脫殼等惡意代碼反檢測技術的發(fā)展,使得傳統靜態(tài)檢測方法提取的特征不能準確代表惡意代碼攻擊信息。
動態(tài)檢測技術是指監(jiān)控惡意代碼在虛擬環(huán)境(模擬器)中運行的行為。為充分展現惡意代碼的行為及隱藏功能,需在運行前賦予惡意代碼足夠的權限。要保障含有不同攻擊內容的惡意代碼能正常運行,需要配置不同運行環(huán)境,如操作系統版本、運行必備軟件等。動態(tài)檢測方法的優(yōu)點在于能識別新型惡意代碼,有效處理靜態(tài)檢測中存在的誤報、漏報等問題,但缺點是惡意代碼對運行環(huán)境要求高,且所需的時間成本高。
Kim 等[10]使用序列對比算法(MSA)對API序列進行動態(tài)分析,該方法能快速分析識別惡意代碼及其變種,并對網絡入侵作出快速響應;陳佳捷等[11]將CucKoo 沙箱與改進的DynamoRIO 系統作為虛擬環(huán)境,從Cuckoo 報告、網絡日志與行為信息記錄中提取特征并融合,并使用基于雙向門循環(huán)單元(BGRU)的機器學習模型,檢測結果表明該模型性能優(yōu)于LSTM 與BLSTM 等模型;周楊等[12]在傳統沙箱中運行惡意代碼得到動態(tài)分析報告,并將API 調用信息中函數的調用時序、返回值等參數作為特征,利用統計與計算兩種方式構建訓練所需特征集,實驗結果證明,改進后的Vec-LR 優(yōu)于SVM、RF、DT 等算法,但該方法的缺點在于沙箱運行及特征抽取階段消耗了大量時間。
觀察虛擬環(huán)境中的惡意代碼行為是動態(tài)檢測的唯一方式,無需對惡意代碼進行解密與解壓縮操作。有些惡意代碼變種能檢測虛擬環(huán)境的存在,此時由動態(tài)行為產生的特征不能準確代表其惡意行為。雖然強制代碼執(zhí)行隱藏路徑使其能充分展現惡意行為,但是通常容易出現路徑爆炸、運行超時等問題。每個惡意代碼都需設定不同的虛擬環(huán)境,可沙箱環(huán)境終究與真實計算機環(huán)境存在差異,將導致一些功能無法觸發(fā)或表現有所不同。動態(tài)檢測除時間成本高外,還面臨一些安全問題,比如內核級的特殊權限、網絡連接等都會帶來一些安全隱患[13]。
對于加殼的惡意代碼,很難對其進行反匯編操作,意味著無法準確提取代表其惡意行為的特征,所以常規(guī)靜態(tài)檢測技術很難分類出加殼等變種惡意代碼。通過觀察惡意代碼在虛擬環(huán)境中的行為,可檢測到加殼惡意代碼的隱藏行為,但這種方式存在安全隱患,且時間成本高,實用性與可擴展性差。因此,這種加殼的惡意代碼適用于動靜結合的分析方法,即混合分析。通常首先使用動態(tài)分析對加殼惡意代碼進行去殼,然后通過靜態(tài)分析脫殼代碼,進而全面獲取代碼的惡意攻擊行為[14]?;旌蠙z測旨在結合靜態(tài)檢測與動態(tài)檢測的優(yōu)勢,在確保準確率的同時降低資源與時間開銷。
Islam 等[15]提出一種基于兩個靜態(tài)特征與一個動態(tài)特征的分類模型,將函數長度頻率與可打印字符串信息矢量化成靜態(tài)特征向量,從日志文件中提取API 特性(API 函數名、參數)構成動態(tài)特征向量,組合3 個向量后用于分類器訓練;Santos 等[16]提出一種混合惡意軟件檢測器(OPEM),將操作碼的出現頻率(靜態(tài)特征)與執(zhí)行程序的軌跡信息(動態(tài)特征)相結合。針對惡意代碼快速增長導致動態(tài)沙箱資源消耗過大的問題,梁光輝等[17]提取惡意代碼的模糊哈希特征(靜態(tài))和動態(tài)行為特征,將無監(jiān)督聚類學習與有監(jiān)督分類學習結合后用于惡意代碼檢測。
雖然混合檢測方法涵蓋了靜態(tài)與動態(tài)檢測的優(yōu)點,能根據具體的惡意代碼家族制定針對性的特殊檢測方式,但是這種方式也會消耗大量資源,并且混合檢測的復雜度與工作量使這種方式不適用于大規(guī)模數據集。
盡管惡意代碼衍生了大量變體,但同類惡意家族代碼中的核心具有相似性與傳承性。這種變體會導致基于簽名的檢測方法失效,但將惡意代碼可視化為圖像不會從本質上改變圖像紋理及結構特征,該方式能有效對抗惡意代碼混淆。與人工提取特征向量相比,惡意代碼圖像包含豐富、幾乎全部的惡意代碼信息。無論是通過圖像結構、紋理與顏色分析(局部特征和全局特征提?。?,還是通過深度學習算法自動學習圖像特征,惡意代碼可視化都能最大程度上減少混淆技術帶來的影響。
Nataraj 等[18]將惡意代碼.text 區(qū)塊的二進制數據可視化為灰度圖像,利用GIST 算法提取圖像特征,并使用k 最近鄰(kNN)算法進行分類,開啟了基于可視化的惡意代碼檢測方法研究。目前,將惡意代碼可視化為灰度圖像是檢測惡意代碼的主流方法,以下對常見的灰度可視化方法進行具體介紹。
Nataraj 矢量化是將惡意代碼二進制文件作為編碼源,并把原始二進制序列切割成長度為8bit 的子序列,產生的8 位二進制串通過進制轉換到[0,255],正好對應像素區(qū)間。由于每個惡意代碼文件包含的攻擊類型不同,導致可視化圖像大小不一,因此通過文件大小固定圖像寬度,將惡意代碼可視化為長條狀的灰度圖像,具體可視化步驟如圖3 所示。Nataraj 矢量化與B2M 算法思想相同,這種灰度可視化方法已被廣泛應用于惡意代碼檢測中[19-22]。Han等[23]在Nataraj 矢量化基礎上增加了熵圖,利用熵圖特征進一步判斷惡意代碼圖像的相似性,改進了圖像紋理特征提取方法及相似度度量策略。
Fig.3 Nataraj vectorization specific steps圖3 Nataraj矢量化具體步驟
在2015 年黑帽大會上,Davis 等[24]提出反匯編的惡意代碼矢量化方法,將反匯編的十六進制數據作為編碼源,每個十六進制數據轉換到4-bit 的二進制并填充到64bit,其中每位二進制乘以255,對應像素灰度值0 或255。這種方式將惡意代碼可視化為只含像素值0 和255 的灰度圖,圖像每一行矢量都對應一條機器碼。在此基礎上,蔣永康等[25]進一步探究了編碼長度、編碼量等參數選擇,并給出具體的深度學習模型。
Ni 等[26]提出一種結合操作碼序列與LSH 提取惡意軟件特征的MCSC 算法,將惡意代碼進行反匯編,獲取匯編指令中的操作碼序列,并使用SimHash 與雙線性插值法將操作碼序列轉換為惡意代碼圖像,具體可視化步驟如圖4所示。因為惡意代碼變體通過該方式可視化的圖像在某些區(qū)域存在相似的指紋,所以通過圖像處理技術識別同類惡意代碼變體具有可行性。
Fig.4 Ni visualization specific steps圖4 Ni可視化具體步驟
喬延臣等[27]提出一種基于匯編指令詞向量的惡意代碼可視化方法,首先通過反匯編操作得到匯編代碼,將指令看作詞,函數看作句子,從而把惡意代碼文件轉換為文檔,然后對文檔使用Word2Vec 算法獲取匯編指令詞向量,統計訓練集中Top100 的匯編指令,據此將每個文檔轉換為矩陣,最后歸一化矩陣得到可視化的灰度圖像。具體操作步驟如圖5所示。
Fig.5 Visualization method based on assembly instruction word vector圖5 基于匯編指令詞向量的可視化方法
陳小寒等[28]不僅考慮了惡意代碼原始信息,而且考慮了原始代碼與時序特征相關聯的能力,增強了分類特征的信息密度。首先提取出匯編代碼中的操作碼序列,利用雙向遞歸神經網絡(BRNN)對其進行處理,然后使用Simhash算法將原始編碼與預測編碼融合,生成灰度特征圖像。
上述5 種將惡意代碼可視化為灰度圖像的方法均取得了不錯的分類效果,在一定程度上克服了代碼混淆技術帶來的影響,在實際應用中通常采取多種可視化方法進行對比分析。可視化的灰度圖像其實并不能確定其包含全面的惡意攻擊信息,由于同類惡意家族代碼可視化的灰度圖像具有相似的指紋特征,而不同家族間的差異較大,所以將惡意代碼可視化為灰度圖像進行分類檢測具有可行性。
由于灰度圖只有單個通道,能包含的信息較少,不能全面地將惡意代碼攻擊信息體現在圖像中,導致可視化的灰度圖像特征不明顯,不能很好地反映出惡意代碼特性。相比惡意代碼灰度圖像,將惡意代碼可視化為彩色圖像既保留了灰度主要特征,又強調了二進制文件中重復出現的數據片段,使得同類惡意家族的彩色圖像具有相似的紋理、顏色與結構特征。
代碼復用技術已普遍應用于惡意代碼中,使得屬于同類家族的惡意代碼變種擁有相似的二進制序列片段,因此采用可視化技術分析惡意代碼具有可行性。王博等[29]將惡意代碼二進制序列分割成RGB 三通道值,從而將惡意代碼可視化為彩色圖像,由于并不是每個惡意代碼的比特位都是24 比特的整數倍,所以不足24 比特的用1 補足,具體可視化步驟如圖6 所示(彩圖掃OSID 碼可見,下同)。但該方法的不足之處在于模型過于復雜,且參數量大、訓練效率不高。針對上述問題,蔣考林等[30]提出基于多通道圖像與AlexNet 神經網絡的惡意代碼檢測方法,采用彩色圖像特征提取、局部響應歸一化等技術,在降低模型復雜度的同時,提升了模型泛化能力。在惡意代碼可視化方面,其在惡意代碼二進制序列末尾數據量不足3 字節(jié)的情況下,用0進行補足,然后將像素序列正方化。
Fig.6 Visualization method based on binary sequence segmentation圖6 基于二進制序列分割的可視化方法
以同類惡意家族代碼的操作碼頻率相近、異族操作碼頻率差異較大為前提,任卓君等[31]提出一種基于操作碼頻率的惡意代碼可視化分析方法。首先提取匯編惡意代碼中的操作碼序列,然后對序列進行縮放采樣并轉換到整數區(qū)間[0,253],統計數量排前15 的操作碼類型來設計色譜,以此區(qū)分常見與罕見的操作碼指令,最后根據顏色向量在RGB 空間中的次序重排操作碼,實現根據操作碼頻率將惡意代碼可視化為彩色圖像。這種可視化方法可解決圖像視覺區(qū)分度不強、分類精度不高等問題。同時,其對比了Gist 特征與卷積神經網絡學習到的特征對惡意代碼圖像分類結果的影響。
王潤正等[32]利用反匯編工具獲取惡意代碼中的各區(qū)塊數據,并轉化到RGB 彩色圖像的各個通道,從而將惡意代碼可視化為RGB 彩色圖像,具體步驟如圖7 所示。惡意代碼分類前需對其各區(qū)塊段進行分析,因為各區(qū)塊存放了惡意代碼特征信息,能在一定程度上反映出惡意家族的特性。
上述研究說明基于彩色圖像的可視化方法對惡意代碼的分析具有可行性,彩色圖像擁有3 個通道,能更好地保留惡意代碼的特征信息,從而有效對惡意代碼及其變種進行檢測與分類。但就目前而言,將惡意代碼可視化為彩色圖像,然后根據彩色圖像特征進行惡意代碼檢測的相關工作較少,仍處于早期發(fā)展階段。
Fig.7 Block-based visualization method圖7 基于區(qū)塊的可視化方法
同類惡意家族擁有相似的攻擊信息,所以可視化圖像也具有相似的紋理、顏色、結構等特征。惡意代碼被可視化為圖像后,提取出圖像的全局特征與局部特征,輸入到分類器中獲取分類結果,此時已將惡意代碼的分類問題轉化為惡意代碼圖像分類。在當前研究工作中,分類器主要分為基于機器學習算法的分類器與基于深度學習算法的分類器,二者各有優(yōu)缺點,通常采用多種分類器進行實驗對比,選擇一種效果最優(yōu)的特征提取算法與分類算法。
機器學習算法能自動分析數據規(guī)律,并據此對未知數據進行預測分析,目前機器學習算法已應用于惡意代碼檢測、入侵檢測等計算機安全領域。將惡意代碼可視化為圖像后,采用基于機器學習的惡意代碼檢測方法進行檢測,其原理是通過圖像處理技術從圖像中提取不同類型特征,描述待分析樣本的惡意攻擊行為,每個惡意代碼樣本均由一個降維后的固定維度向量表示,然后使用機器學習算法對已知標簽樣本圖像進行訓練,構建分類器,訓練出分類器后便可對未知樣本進行檢測分析。
使用機器學習算法訓練惡意代碼圖像,難點在于如何使用特征分析技術提取出不易受隨機因子干擾且具有家族代表性的信息,優(yōu)秀的特征分析方法可在去除冗余信息的同時提高模型訓練效率。常見的特征分析技術分為特征抽象與特征降維,特征抽象是指將源數據抽象成算法可理解的數據,而特征降維可分為兩種:一種是從原有特征集中選出子集,僅單純進行挑選不改變特征性質,即特征選擇;另一種是在原有特征集基礎上創(chuàng)造一個新的特征子集,通過空間變換改變了特征性質,即特征提取。
目前基于機器學習算法的惡意代碼檢測方法已有很多,并取得了不錯的分類結果,本節(jié)將對其中基于可視化的惡意代碼檢測方法進行介紹、分析與比較,具體如表1所示。
Table 1 Visual malicious code detection methods based on machine learning表1 基于機器學習的可視化惡意代碼檢測方法
深度學習是機器學習的分支,是一種端到端的系統,且無需先驗知識。深度學習利用大量隱藏層的非線性網絡結構對樣本進行訓練,可將原始數據的特征空間轉換到新空間,提取出訓練樣本的內在特征,提高模型的泛化性。深度學習的最大優(yōu)點在于能自動學習、提取特征,利用深度學習算法學習惡意代碼圖像特征并進行預測分析,可減少人工提取特征的時間成本。因其具有可擴展性、靈活性等特點,被廣泛應用于惡意代碼檢測與分類。
Zhao 等[39]提出一種基于紋理可視化的深度學習惡意軟件分類框架(MalDeep),通過代碼映射(灰度圖像)、紋理分割與紋理特征提取,將惡意代碼表征在一個新的圖像紋理特征空間,并構建一個由兩個卷積層、兩個下采樣層與多個全連接層組成的卷積神經網絡。實驗結果證明了該模型在代價函數、交叉熵、訓練與測試損失方面具有良好的收斂性,針對一些后門家族的惡意代碼,模型分類準確率能達到99%以上。Chu 等[40]利用灰度可視化算法將同源分類問題轉化為圖像分類問題,構建基于惡意代碼圖像的卷積神經網絡,并通過實驗驗證該模型具有很強的可擴展性與通用性,在Kaggle 數據集上的分類準確率能達到98.60%,但缺點在于沒有進一步探究模型參數對分類的影響。
Sun 等[41]結合惡意代碼靜態(tài)分析、循環(huán)神經網絡(RNN)與卷積神經網絡(CNN),不僅考慮了惡意代碼原始信息,而且考慮了原始代碼與時序特征相關聯的能力。該過程減少了對類別標簽的依賴,保證不丟失有效信息,同時使生成的特征圖像非常相似。采用Kaggle 數據集進行實驗,當訓練集與驗證集比例為1:30 時,準確率能達到92%以上,調整比例為3:1 時,準確率超過了99.5%,實驗結果驗證了該模型具有不錯的分類性能。Vasan 等[42]將原始惡意代碼二進制文件轉換為彩色圖像,利用微調卷積神經網絡(IMCFN)對惡意代碼進行檢測與識別。該方式能有效檢測隱藏代碼、混淆惡意軟件與惡意軟件變種,且時間成本低,IMCFN 在Malimg 數據集上的準確率為98.82%。
目前,越來越多深度學習模型被用于惡意代碼檢測,如卷積神經網絡(CNN)、循環(huán)神經網絡(RNN)和圖卷積神經網絡(GCN)等,這些模型通過從大量訓練樣本中提取惡意代碼內在特征進行訓練與分類,具有自動化程度高、速度快及資源消耗少等優(yōu)點。但不足之處在于不能深層次提取特征、模型結構復雜、參數過多及模型泛化能力不足等,仍需作進一步研究。
隨著惡意代碼檢測技術的發(fā)展,其面臨的問題也不容忽視。本節(jié)介紹當前檢測技術面臨的主要問題,并提出對未來的展望,這些問題的存在也意味著相關方向會成為未來研究的重點。
當前數據集存在的問題主要有惡意代碼形態(tài)多樣化、標準數據集較少、數據分布不均衡及數據缺乏標簽等。為規(guī)避惡意代碼檢測,網絡攻擊者會利用代碼混淆、重打包等技術制造出多種類型的變種。由于標準數據集較少,且均為非完整性程序,將影響到分類器評估效果。目前公開的基于Windows 的惡意軟件數據集有4 個,即Malimg[43]、Malheur[44]、VirusShare[45]和Microsoft Kaggle[46]。
某些惡意軟件需在特定環(huán)境下才能顯現其惡意行為,并且會檢測是否存在虛擬環(huán)境,進而避免被收集,這必然會導致收集的數據集分布不均衡。若正負數據樣本數量或不同家族的樣本數量差距較大,將不利于深度模型學習樣本內在特征。在深度學習中,只有輸入足夠且均衡的訓練數據才能有效避免過擬合現象,如果數據集較小,可通過數據增強技術增加樣本數量,抑制數據集不平衡帶來的不良影響。采用適當的數據增強方法可有效避免過擬合現象,提高模型的泛化性與魯棒性。
Cui 等[47]首先將惡意代碼轉化為灰度圖像,然后針對惡意代碼家族樣本數量不均勻導致的過擬合問題,采用蝙蝠算法(BA)并結合卷積神經網絡對惡意代碼圖像進行識別與分類。朱曉慧等[48]分別對有監(jiān)督與無監(jiān)督數據增強方法進行分析,并闡述了數據增強技術在視覺圖像領域的具體應用,論證了該技術能有效解決數據不平衡或數據缺失等問題。近幾年主流基于增擴數據的生成式模型有自動編碼器、自回歸模型與生成對抗網絡等,其中生成對抗網絡(GAN)可不用預先假設數據分布直接進行采樣,理論上可完全擬合真實數據,因此基于GAN 的數據增強方法表現突出。基于GAN 的數據增強技術在圖像領域已相當成熟,將基于GAN 的網絡安全數據增強與圖像處理方法相結合,探討基于GAN 的惡意代碼圖像增強技術,并結合深度學習算法進行分類與預測,該方式在惡意代碼檢測領域具有很高的潛在價值。
對收集的惡意代碼進行信息標注是一件耗時耗力的工作,如果依照原有惡意代碼樣本的相關惡意行為判別未知惡意代碼,該方式具有挑戰(zhàn)性?,F有的打標簽方法主要依賴于殺毒軟件與檢測平臺,該方式的準確性完全依賴于軟件可靠性,而對于新型惡意代碼變種,軟件泛化能力可能不足,此時仍舊需要專家經驗進行輔助分析。
本文綜述了基于數據可視化進行惡意代碼檢測的方法,首先介紹傳統惡意代碼檢測方法的原理及優(yōu)缺點,然后具體分析惡意代碼的灰度可視化與彩色可視化方法,從機器學習與深度學習兩個角度對現有的各種惡意代碼圖像分類方法進行全面分析與比較,最后對當前惡意代碼檢測技術所面臨的問題進行總結與思考。在未來研究中,可從以下兩方面進行探究:一是探索一種新型的惡意代碼可視化方法,使圖像能包含獨特的家族特征,并利用GAN 解決數據集分布不均衡問題,提高模型泛化能力;二是當前檢測技術所用的深度學習模型以CNN 和RNN 為主,而GCN 的特別之處在于對象是圖數據,并能直接在圖數據上進行卷積。當前將GCN 用于惡意代碼檢測的應用較少,未來研究工作可考慮將數據可視化、圖像處理、GAN 與GCN等方法相結合,以更好地檢測出新型惡意代碼。