景鴻理 ,黃 娜 ,2,李建國
(1.北京天融信科技有限公司,北京 100085;2.北京工業(yè)大學,北京 100124)
惡意軟件是計算機與網(wǎng)絡領域不可避免的一項安全風險,也是安全研究者聚焦的研究熱點之一。用戶的隱私數(shù)據(jù)、個人信息及財產(chǎn),都是惡意軟件攻擊的目標[1]。惡意軟件自身的一些特性為檢測提供了可能性和有利條件,安全研究人員提出了很多檢測分析方法來遏制、打擊惡意軟件的發(fā)展勢頭。計算機技術高速發(fā)展,不僅為人們的日常生活和工作帶來了便利,也促使黑客的攻擊手段和技術不斷提高,使得惡意軟件變得更加多元化,而且利用無線網(wǎng)絡、局域網(wǎng)絡、可移動設備等多種傳播渠道快速傳播,數(shù)量與日俱增,傳統(tǒng)的基于特征庫匹配等技術顯得效率不足[2]。因此,研究者逐漸趨向于使用機器學習技術,來應對惡意軟件難以預測的變種和日益龐大的數(shù)量[3]。
目前已經(jīng)有許多機器學習技術和框架被研究提出,應用于惡意軟件檢測,起到了非??捎^的效果 。根 據(jù) SGANDURRA D 等[4]在 2016年的 調(diào) 研 ,使用機器學習技術的靜態(tài)檢測方法準確率達到90%以上,動態(tài)檢測方法準確率能夠達到96%以上,經(jīng)過近幾年的繼續(xù)發(fā)展,此類方法的性能得到了進一步提高?;跈C器學習技術建立智能化檢測模型,形成阻斷惡意軟件的一道防線,是技術突破與市場拓展的一個新方向,具有重要的研究意義和應用價值。
本文總結了基于機器學習的惡意軟件檢測方法的一般流程,回顧現(xiàn)有的研究成果;分別對結構化特征相關方法以及序列化特征相關方法進行了實驗驗證,結合實驗結果分析討論各類方法的適用場景以及面臨的挑戰(zhàn),最后指出進一步研究方向。
本節(jié)簡要介紹惡意軟件檢測方法的相關基礎,從靜態(tài)和動態(tài)兩個角度闡述不同的特征, 為分析機器學習方法作鋪墊,并總結機器學習檢測方法的一般流程。
根據(jù)角度的不同,惡意軟件檢測方法分為靜態(tài)檢測和動態(tài)檢測兩種類型,下面介紹這兩類方法,闡述存在的區(qū)別和各自的優(yōu)缺點。
(1)靜態(tài)檢測方法
圖1 Windows 系統(tǒng)下PE 文件的結構
Windows 系統(tǒng)下的可移植可執(zhí)行 (Portable Exe cutable,PE)文件有統(tǒng)一的結構和存儲數(shù)據(jù)的方式, 主要包含匯編指令、圖像、文本等數(shù)據(jù),以及程序運行所需的元數(shù)據(jù)。圖 1 展示了 PE 文件的結構,由一系列的頭部(Header)及節(jié)(Section)組 成 。PE 頭 定 義 程 序的一般屬性,如目標系統(tǒng)、創(chuàng)建時間戳、二進制代碼屬性、圖像屬性等??蛇x頭定義 PE 文件程序入口點的位置、加載數(shù)據(jù)的大小以及其他有關程序的高級信息。程序入口點是逆向工程中重要的基礎。節(jié)頭描述了PE 文件中各個節(jié)的屬性,如節(jié)的名稱、大小、程序為可讀或可寫或可執(zhí)行的標記等。節(jié)則是在程序加載時被映射到內(nèi)存的具體內(nèi)容,節(jié)的名稱可以自定義,如.text 節(jié)可用于存放可執(zhí)行代碼,.idata 節(jié)可用于列出導入的動態(tài)鏈接庫 (Dynamic Link Library,DLL) 及函數(shù),.rsrc、.data及.rdata 節(jié)可用于存放圖像、音頻等多媒體數(shù)據(jù)。
惡意軟件的靜態(tài)檢測方法,即根據(jù)PE 文件本身所包含的信息做出分析。PE 文件通常為二進制數(shù)據(jù)形式,不能直接獲取以上內(nèi)容信息,而且惡意軟件往往采取加密、加殼等手段,需要進行解密、脫殼以及解析之后,才能獲取具體內(nèi)容。加密、加殼和混淆等,也是靜態(tài)檢測方法最主要的阻礙。與動態(tài)檢測方法相比,此類方法不需要在特定環(huán)境下運行可執(zhí)行文件,避免了可能產(chǎn)生的風險,更加易于實施。
(2)動態(tài)檢測方法
惡意軟件在運行時會做出各類威脅行為,包括修改文件系統(tǒng)(如寫入設備驅動程序、更改系統(tǒng)配置文件)、修改注冊表(如修改注冊表鍵值、更改防火墻設置)、網(wǎng)絡行為(如解析域名、發(fā)出 HTTP 請求)等。動態(tài)檢測是在獨立、安全的沙箱(Sandbox)環(huán)境中運行PE 文件,通過行為分析來判定其是否為惡意軟件。動態(tài)檢測通常與可視化技術相結合,便于分析動態(tài)行為軌跡。
動態(tài)檢測技術不受加殼、混淆等的限制,能夠更加直接地分析PE 文件行為特征,但也并非沒有缺陷,動態(tài)檢測的效率較低、部署困難,而且一些惡意軟件能夠察覺所處的運行條件或計算環(huán)境,從而逃逸檢測[5]。
基于機器學習的惡意代碼檢測方法關鍵在于特征和算法的選擇。靜態(tài)特征和動態(tài)特征都可用于機器學習,但無關特征和噪聲特征會影響模型的準確性。利用數(shù)據(jù)挖掘選擇數(shù)據(jù)、特征,再結合機器學習技術完成檢測,是現(xiàn)有研究中常見的解決方案,一般分為四個步驟:數(shù)據(jù)準備,特征提取及特征選擇,訓練機器學習模型,獲取檢測結果,流程如圖2所示。特征提取分為靜態(tài)特征(如 PE 頭特征、二進制內(nèi)容特征等)以及動態(tài)特征(如 API 調(diào)用特征、系統(tǒng)修改特征和網(wǎng)絡行為特征等)。然后選擇一種機器學習算法,使用提取的特征集合訓練模型。
圖2 基于機器學習的惡意軟件檢測一般流程
機器學習模型是通過計算目標分配到不同類別的概率來完成分類任務,應當首先檢測PE 文件是否為惡意,通過分類模型將目標文件歸類為惡意或良性,然后才能對確定為惡意的PE 文件進行族群分類。在惡意軟件檢測中常用的機器學習算法有距離類算法、樹模型以及深度神經(jīng)網(wǎng)絡,總結如下:
(1)K-means 是一種無監(jiān)督的聚類算法,將每個樣本歸類到距離最近的質心的類別,核心在于選取及優(yōu)化質心。趙中軍等[6]通過優(yōu)化的 K-means 算法,快速有效地識別出惡意軟件;張瑩等[7]解決了傳統(tǒng)K-means 選擇初始質心不穩(wěn)定的問題, 提出一種基于PSO-K-means 的惡意代碼檢測方法。
(2)SVM 是在數(shù)據(jù)的特征空間中尋找一個或多個最優(yōu)超平面,將數(shù)據(jù)劃分成不同類別,可以處理分類及回歸問題。在惡意軟件變種檢測[8]、Android惡意軟件檢測[9]、網(wǎng)絡惡意程序檢測[10]、惡意 PDF檢測[11]中有相關應用。
(3)決策樹是樹形結構的機器學習模型,發(fā)展出許多具體的算法,如 ID3、C4.5、Cart,以及以 Cart 為基礎的隨機森林以及梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)等。決策樹算法是目前應用中準確性相對較高的一種方法,楊宏宇等[12]提出的改進隨機森林算法在惡意軟件檢測實驗中準確率達到 98%,ANDERSON H S 等[13]使用 LightGBM 算法在 Ember 2017 數(shù)據(jù)集上實驗AUC 達到了99.91%。
(4)深度學習包括全連接神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡(CNN)以及循環(huán)神經(jīng)網(wǎng)絡(RNN)等不同的結構,與淺層機器學習算法相比,需要學習的參數(shù)數(shù)量更多,但模型能夠從輸入的數(shù)據(jù)中自動學習不同層次的特征,避免了人工提取的過程。目前硬件計算能力的大幅提高,使得深度學習的普及成為可能,逐漸步入人們的視野。在惡意軟件檢測中,CNN、RNN以及兩者的結合應用較多,PE 文件的二進制字節(jié)內(nèi)容可以直接作為深度神經(jīng)網(wǎng)絡的輸入[14],也可以提取序列化的特征作為輸入[15~18]。
表1 調(diào)研了 2012年至今的相關研究, 其中LightGBM[13]和幾種深度學習方法[14-18]具有不錯的表現(xiàn)。研究[19]、[20]為傳統(tǒng)的相似性匹配方法,分別采用了靜態(tài)特征和動態(tài)特征,通過計算相似性區(qū)分惡意軟件族群。毛蔚軒等[22]為了解決惡意軟件數(shù)量有限的問題,提出一種基于最小化估計風險的主動學習方法,不斷地從未標記樣本中尋找小風險樣本,以預測標簽作為標記,使可學習的樣本數(shù)量增加。樣本不足限制著機器學習技術的應用,該方法為解決此問題提供了一種思路。
表1 相關研究總結
本節(jié)區(qū)分結構化特征及序列化特征,對RF、LightGBM、SVM、K-means 等幾種常用的機器學習方法及深度學習方法DNN、CNN、RNN 進行分析驗證。通過建立分類模型區(qū)分惡意軟件與良性軟件,對比不同方法的測試性能,結合實驗結果分析討論。
2018年,網(wǎng)絡安全公司Endgame 公開發(fā)布了Ember數(shù)據(jù)集,希望促進機器學習技術在惡意軟件檢測中的研究進展及應用,按照樣本的出現(xiàn)時間,目前包括 Ember 2017 和 Ember 2018 兩個部分,表 2 展示了數(shù)據(jù)集的樣本數(shù)量及類別。發(fā)布者(Endgame)保證,所收集的惡意樣本在VirusTotal 上有多個檢測引擎將其標記為惡意,同時良性樣本在截至到收集時間為止未出現(xiàn)惡意標記。本節(jié)使用該數(shù)據(jù)集作為實驗數(shù)據(jù),另外收集了 2019年間的 7 994 個惡意樣本和7 158 個良性樣本,對幾種主要的方法進行驗證對比。
表2 Ember 數(shù)據(jù)集情況
本文實驗環(huán)境如下:硬件環(huán)境為Windows10 系統(tǒng),i7-8565U CPU@1.8 GHz,RAM 16.0 GB;軟件環(huán)境為 Python 3.5,sklearn 0.20.3 以及其他工具包。
過濾掉數(shù)據(jù)集中的未知樣本,使用惡意樣本(標記為1)和良性樣本(標記為 0)作為訓練數(shù)據(jù)。根據(jù)提取特征角度的不同,本文將現(xiàn)有方法中使用的特征分為結構化特征和序列化特征兩種類型。結構化特征是指從樣本中直接提取的、具有維度意義的特征,包括解析特征、統(tǒng)計特征等。序列化特征是指根據(jù)樣本的字節(jié)流、DLL 序列以及反匯編指令序列,間接提取的 n-gram 特征、語義特征[24]等。
首先對結構化特征相關方法進行試驗驗證。按照 ANDERSON H S 等[13]的方法提取了樣本的解析特征和二進制字節(jié)特征。在結構化特征的應用中,樹模型的性能通常優(yōu)于其他類型算法,因此下一小節(jié)著重分析 RF 和 LightGBM 模型的泛化能力,另外與 SVM、K-means 和 CNN 算法進行對比。
(1)RF
按照3:1 的比例將數(shù)據(jù)集劃分為訓練集和測試集,使用對數(shù)損失(Binary-log loss)作為損失函數(shù)訓練隨機森林模型。訓練完成的模型分別命名為“rf2017”和“rf2018”。
(2)LightGBM
按照3:1 的比例將數(shù)據(jù)集劃分為訓練集和測試集,使用對數(shù)損失(Binary-log loss)作為損失函數(shù)訓練梯度提升決策樹模型。經(jīng)過參數(shù)優(yōu)化,訓練得到的模型分別命名為“l(fā)gbm2017”和“l(fā)gbm2018”。
其次,對序列化特征相關方法進行實驗驗證。本文提取 PE 文件匯編指令的 n-gram(n=3)特征,分別應用前饋神經(jīng)網(wǎng)絡(DNN)、遞歸神經(jīng)網(wǎng)絡(RNN)以及卷積神經(jīng)網(wǎng)絡(CNN)三種深度學習算法。Ember數(shù)據(jù)集未提供原始的PE 樣本,僅包含特征數(shù)據(jù),不能反匯編PE 文件獲得指令集,因此使用自行收集的2019年間的樣本集作為實驗數(shù)據(jù),包含7 994 個惡意樣本和7 158 個良性樣本。
(1)DNN
按照4:1 的比例將數(shù)據(jù)集劃分為訓練集和測試集,構建具有5 個前饋全連接層的網(wǎng)絡結構,訓練分類模型。
(2)RNN
按照4:1 的比例將數(shù)據(jù)集劃分為訓練集和測試集,構建具有 2 個遞歸層、1 個全連接層的網(wǎng)絡結構,訓練分類模型。
(3)CNN
按照4:1 的比例將數(shù)據(jù)集劃分為訓練集和測試集,構建具有2 個卷積層、2 個最大池化層以及 1個全連接層的網(wǎng)絡結構,訓練分類模型。
使用 ROC 曲線、AUC(Area Under the Curve)評價模型對閾值的敏感性和穩(wěn)定性,在閾值確定的情況下,使用準確率(Accuracy)、精確率(Precision)、召回率(Recall)以及 F1-值(F1_score)評價模型的性能。用TP、FP、TN、FN 分別表示真正例、假正例、真負例、假負例的數(shù)量,各項指標的計算如式(1)~式(4)。
將四個使用結構化特征的模型在Ember 2017 測試集、Ember 2018 測試集以及 2019年樣本集上進行交叉檢驗。圖3 展示了性能評估的結果,在閾值取0.5 時 計 算 Accuracy、Precision、Recall 以及 F1_score,其中,圖(a)和圖(c)為“rf2017”和“rf2018”的測試結果,圖(b)和圖(d)為“l(fā)gbm2017”和“l(fā)gbm2018”的測試結果。根據(jù)整體對比,本文得出如下結論:
(1)所有模型在 Ember 2017 測試集上的性能均優(yōu)于其在 Ember 2018 測試集上的性能。據(jù)發(fā)布者(Endgame)聲明,在收集 2018年惡意軟件樣本時,有目的地增加了檢測難度,因此在本實驗中產(chǎn)生了這一對比結果,也反映出基于機器學習的檢測方法仍然會受到惡意軟件本身檢測難度的影響。
圖3 RF 和 LightGBM 模型的性能評估
(2)對比 Accuracy、Precision、Recall 以及 F1_score,可 以 看 出 , 在 Ember 2017 測 試 集 上 , “ rf2017 ” 和“l(fā)gbm2017”性能優(yōu)于“rf2018”和“l(fā)gbm2018”;在 Ember 2018 測試集上,結果反之。這一結果說明訓練數(shù)據(jù)的覆蓋情況會對模型性能產(chǎn)生影響,模型的檢測能力依賴于對訓練數(shù)據(jù)的學習,使訓練數(shù)據(jù)盡可能全面地涵蓋不同類型的樣本,應能夠增強模型的泛化能力。
(3)對比圖(a)和圖(b),兩種算法在 Ember 2017測試集上 AUC 均達到 1,在 Ember 2018 測試集上LightGBM 的 AUC 略高于 RF,圖(c)和圖(d)中其它指標的對比也表明LightGBM 具有更好的性能。
(4)所有模型在2019年樣本集上平均檢測準確率為 80%左右,與 2017 和 2018年測試集上的準確率相比降低了約20%,說明檢測模型不足以應對樣本(包括惡意樣本和良性樣本)的演變,例如惡意功能增強、對抗檢測等。因此模型的后期維護十分重要,訓練集應定期更新,另一方面,有待進一步研究更加魯棒的檢測方法。
在Ember 2017 數(shù)據(jù)集上實驗使用了SVM(Linear svc)、K-means 和 CNN,各類算法模型準確率的對比如圖4 所示。深度學習在計算機視覺、自然語言處理及其他領域有廣泛、優(yōu)良的應用,前饋神經(jīng)網(wǎng)絡、遞歸神經(jīng)網(wǎng)絡以及卷積神經(jīng)網(wǎng)絡等,分析處理序列化數(shù)據(jù)非常具有優(yōu)勢。PE 文件的二進制數(shù)據(jù)流也可以作為一種序列化數(shù)據(jù), 進而應用深度學習算法,如文獻[14]直接將二進制數(shù)據(jù)形式的PE 文件作為 CNN 模型的輸入,取得了 95%的準確率,在未知數(shù)據(jù)中測試的準確率為65%至80%。然而,由于模型輸入尺寸固定的限制,該方法只能截取PE 文件中固定大小的二進制數(shù)據(jù)流, 不能獲取到完整的信息。本文在應用 CNN 模型時,間接采用結構化特征,將每個維度的特征看作灰度圖中一個像素。此類方法雖然避免了輸入尺寸不統(tǒng)一以及信息損失的問題,但限制了深度神經(jīng)網(wǎng)絡應對序列化數(shù)據(jù)的優(yōu)勢。實驗結果也表明,在本應用中樹模型的表現(xiàn)最佳。
圖4 不同算法的準確性對比
使用匯編指令序列化特征的三類深度學習算法模型,在測試集上的性能評估結果如圖5 所示,同時也應用了LightGBM 算法作為對比,本文中的CNN 模型優(yōu)于 DNN 和 RNN,AUC 值為 92%,仍然低于 LightGBM 模型。本文中的實驗均為靜態(tài)檢測場景,未涉及動態(tài)檢測方法,而動態(tài)運行中的指令序列、API 調(diào)用序列應當比靜態(tài) PE 文件中的序列化特征更加具有檢測意義。結合實驗結果,可以得出如下結論:在靜態(tài)檢測中使用結構化特征,提升樹模型為較優(yōu)選擇;深度學習方法更加適用于在動態(tài)檢測場景中,使用指令運行、API 調(diào)用等序列化特征。
本文的主要工作總結如下:(1)回顧總結了領域內(nèi)的研究進展,梳理現(xiàn)有方法,為后續(xù)開展深入的研究提供基礎;(2)對幾類不同的方法做了實驗驗證,在不同的測試數(shù)據(jù)上交叉檢驗,其中,LightGBM 測試的平均準確率達到97.06%,平均AUC 值達到99.25%,另外與SVM、K-means 和深度學習算法等對比,結果表明LightGBM 算法模型具有較好的性能。
經(jīng)過調(diào)研及實驗,本文指出機器學習技術應用于惡意軟件檢測所面臨的挑戰(zhàn)及下一步研究方向:(1)訓練樣本不足會影響模型的實際檢測性能,由于涉及法律法規(guī)、隱私及利益,能夠獲取的惡意軟件樣本十分有限。下一步將根據(jù)不同的類型,全面收集具有典型性的惡意軟件樣本,完善訓練數(shù)據(jù),以增強模型的泛化能力。(2)靜態(tài)特征和動態(tài)特征的類型廣泛,應用無關特征和噪聲特征不僅會消耗計算資源,還會干擾模型對重要特征的學習。因此,將研究混合特征的挖掘和選擇方法,使模型性能進一步提升。(3)模型結構過于復雜,參數(shù)過多,會產(chǎn)生一定的部署困難。研究模型結構復雜度與準確性之間的平衡,能夠促進機器學習方法在本領域的應用進展。