任卓君,陳 光,盧文科
東華大學 信息科學與技術學院,上海201620
從廣義上說,惡意軟件是任何有害于用戶、計算機或網(wǎng)絡的可執(zhí)行程序,包括病毒、木馬、后門、蠕蟲、Rootkits、勒索軟件、間諜程序等。為了實現(xiàn)惡意軟件分析,需要一個高效且準確的檢測機制以免誤報查殺了合法的正常文件。經(jīng)典的處理方法是提取能代表該樣本靜態(tài)特征的二進制簽名,或者是在運行時動態(tài)跟蹤由應用程序執(zhí)行的函數(shù)。然而,這些方法完全是由人工操作來實現(xiàn),且簽名特征的構建是一個非常耗時且容易出錯的過程。相反地,惡意攻擊者借助病毒編寫引擎批量地生產(chǎn)惡意代碼。面對數(shù)以億計的待測可疑樣本而不得不手工逐一分析的事實,使得惡意代碼分析工作不僅十分的繁瑣,而且對安全研究人員的業(yè)務水平和專業(yè)知識有著很高的要求。更嚴重的是,隨著網(wǎng)絡攻擊技術(如混淆技術、反跟蹤調(diào)試技術等)的迅速進步,使得原本攻擊能力弱化的傳統(tǒng)惡意代碼(如病毒、蠕蟲等)通過多態(tài)、變形等手段,進化出更具威脅的變種,屢屢逃脫安全防御掃描,暴露了現(xiàn)有檢測手段的局限性。Lee等人[1]通過研究發(fā)現(xiàn)使用可視化技術可以加速惡意代碼的檢測進程。大量的數(shù)據(jù)、復雜的分析要求、及時地反饋專家推理,這些客觀需求使得這一研究領域非常需要可視化分析技術。
惡意代碼可視化可以通過交互界面進行科學的推理,極大地補充人類的認知,近年來,這一領域涌現(xiàn)出很多有意義的研究成果。例如Zhuo等人[2]研發(fā)的MalwareVis系統(tǒng)重點研究惡意樣本的網(wǎng)絡行為。Trinius等人[3]設計的線圖分析系統(tǒng)直觀地呈現(xiàn)了待測惡意樣本所執(zhí)行的系統(tǒng)調(diào)用。Gove等人[4]實現(xiàn)的視覺分析系統(tǒng)以交互的方式探索大型的惡意屬性集。Nataraj等人[5]從灰度圖像上提取各種紋理特征用于分類。Yoo[6]采用自組織映射的方法來呈現(xiàn)文件中受感染的區(qū)域。Ren等人[7-9]設計了一系列基于字節(jié)和熵的可視化映射。另外,還有一些研究使用可視化技術來表達分層聚類[10],如Anderson等人[11]繪制熱圖來反映惡意樣本對內(nèi)核的使用情況。
為了有效地分類惡意代碼,本文提出了基于操作碼頻率的惡意代碼可視化分析方法。該方法將惡意代碼分析轉(zhuǎn)化為圖像間的比較,使用VGG16[12]卷積網(wǎng)絡和支持向量機分類器構成的深度融合網(wǎng)絡來學習惡意代碼生成的圖像并分類。
不受混淆技術干擾的情況下,逆向反匯編能夠提供惡意代碼較全面的信息。匯編源程序文件中包含了豐富的信息,其中CPU指令反映了惡意樣本的核心功能,因此本文著重研究惡意代碼的操作碼特征。相關的研究工作有,Billar等人[13]分別統(tǒng)計了正常文件和惡意軟件中操作碼的分布情況后發(fā)現(xiàn)罕見的操作碼可以作為惡意代碼檢測的指示器。Santos等人[14]提出了基于操作碼N-gram模型的惡意代碼檢測方法。該方法通過挖掘各操作碼間的相關性來給不同的操作碼賦予權重,以此計算文件間的相似度。Feher等人[15-16]基于操作碼詞頻使用隨機森林分類器分析了3萬個樣本,取得了96%的正確率。Sekar等人[17]通過研究執(zhí)行系統(tǒng)調(diào)用的異常操作碼序列來構建入侵檢測模型。
在可視化分析方面,Han等人[18]提出了圖像矩陣的方法,該方法將惡意代碼靜態(tài)分析得到的操作碼序列轉(zhuǎn)換成圖像矩陣上的RGB像素點,通過比較圖像矩陣之間的相似度來識別惡意代碼。由于該方法只分析了三類惡意代碼族的9個樣本,因此在應用上缺乏普適性。此外,該方法使用SimHash和djb2函數(shù)獲得像素點的坐標值和顏色值,鑒于哈希值的唯一性,只有完全相同的操作碼序列才能以相同的顏色出現(xiàn)在圖像矩陣的同一位置,而實現(xiàn)相同惡意功能的基本塊并不一定由完全相同的操作碼序列構成,這會導致實現(xiàn)相似功能的同族惡意代碼所生成的圖像矩陣在視覺表現(xiàn)上并不一定相似。
為了解決上述問題,本文以同族的操作碼頻率相近、而異族的操作碼頻率差別較大為前提,設計了基于操作碼頻率的惡意代碼可視化分析方法。該方法以空間填充曲線遍歷RGB顏色空間的順序重排樣本中的操作碼,令同一操作碼以相同顏色聚集,形成反映操作碼頻率的可視化表征。如圖1所示,該方法由以下三個步驟來實現(xiàn):(1)操作碼的字符提取、采樣與轉(zhuǎn)換;(2)像素標記;(3)空間映射重排。
圖1 所提方法的實現(xiàn)流程Fig.1 Implement process of proposed method
(1)操作碼的字符提取、采樣與轉(zhuǎn)換。首先從反匯編的惡意樣本中提取操作碼字符序列;再以縮放采樣的方式將其固定為65 536長度的新操作碼序列;之后按首字母順序,將操作碼字符轉(zhuǎn)換成[0,253]之間的整數(shù)。
(2)像素標記。按圖2設計的色譜標記微軟樣本集中出現(xiàn)數(shù)量最多的前15種操作碼,其余操作碼則用其對應的整數(shù)值C來標記灰度,即顏色向量為(C,C,C)。
圖2 出現(xiàn)數(shù)量排名前15位的操作碼對應的色譜Fig.2 Corresponding chromatogram of the top 15 opcodes
(3)空間映射重排。分別使用Gray曲線、Hilbert曲線、Sweep曲線和Zigzag曲線(見圖3)遍歷RGB空間(RGB顏色的數(shù)量為2563個),所得關于顏色的排序是不同的。因此,按這4種RGB顏色順序重新排列上一步驟的像素序列,使得相同的操作碼在圖像中集中在一起,形成關于操作碼頻率的可視化結(jié)果。需要解釋的是,遍歷RGB顏色空間需用12階曲線(因為412=2563);而65 536定長像素序列則使用8階曲線填充構圖(因為48=65 536=2562)。
圖3 四種空間填充曲線Fig.3 Four types of space filling curves
本文采用微軟公開的惡意樣本集來驗證所提的方法。(BIG 2015|Kaggle)的訓練集包括了10 868個來自9種惡意代碼族的樣本,每個惡意樣本都有一個唯一識別的ID(一個20字符的哈希值)。從圖4統(tǒng)計的各族樣本數(shù)量上可以看出,該數(shù)據(jù)集的分布很不均勻。需要說明的是,該樣本集中有些惡意樣本不能由反匯編工具解析,因此無法提取到任何指令信息,故將其剔除(剔除數(shù)量見圖4)。
圖4 惡意樣本集的構成Fig.4 Composition of malware samples
將所提方法應用于微軟惡意樣本集,可視化結(jié)果見圖5、6。圖5給出了以12階Gray曲線遍歷RGB顏色空間的順序重排像素位置后,再按8階Gray曲線填充256×256分辨率圖像的結(jié)果。該結(jié)果能明顯地反映出同族樣本相似而異族樣本不同,說明該方法具有較好的視覺區(qū)分度。為節(jié)省篇幅,圖6只展示了第8類示例樣本對應的各種映射重排圖。圖7給出了圖像矩陣方法的可視化結(jié)果。
圖5 使用Gray曲線映射重排的圖像示例Fig.5 Results of Gray mapping rearrangement
圖6 樣本0aVNj3qFgEZI6Akf4Kuv的四種映射重排結(jié)果Fig.6 Four mappings rearrangement results of sample 0aVNj3qFgEZI6Akf4Kuv
圖7 樣本0aVNj3qFgEZI6Akf4Kuv的圖像矩陣Fig.7 Image matrice of sample 0aVNj3qFgEZI6Akf4Kuv
分析圖5~7可知本文所提方法以醒目的顏色標記不僅能讓分析人員直觀地了解樣本中存在哪些常規(guī)的操作碼,還能對少數(shù)罕見的操作碼進行定位;而圖像矩陣方法,即使采用交互技術放大圖像,也無法從像素點的顏色上判斷出被映射的基本塊屬性。因此,本文所提方法在視覺分析上的優(yōu)勢更顯著。
需要說明的是,將圖像矩陣方法應用于微軟樣本集并計算各惡意樣本族的類內(nèi)相似度均為0,而人為觀察圖像顯示并非完全不相似。這一矛盾說明基于向量角距離的相似度算法[19]并不適用于大規(guī)模的圖像分類,故本文僅對圖像矩陣本身具備的可分性進行比較。
(1)不同的圖像特征對分類結(jié)果的影響
為了評估不同的圖像特征對分類結(jié)果的影響,本項實驗以L2范式分別對Gist特征[20]和卷積神經(jīng)網(wǎng)絡(ResNet50[21]、VGG16、VGG19)學習到的特征使用最近鄰決策算法分類,結(jié)果見表1。需要說明的是,本文要解決的惡意代碼分類任務不同于各深度卷積網(wǎng)絡最初的ImageNet分類應用,因此本項實驗只遷移基本的網(wǎng)絡結(jié)構和部分權重,去除卷積網(wǎng)絡原先的全連接層和softmax分類器。
表1 不同圖像特征對分類的影響Table 1 Influence of different image features on classification
由表1可知,本文所提方法在各項比較中均優(yōu)于其他方法,尤其以Sweep映射重排圖的整體分類效果最好,當使用VGG16網(wǎng)絡時獲得最佳的分類正確率為97.96%。
(2)不同的深度融合網(wǎng)絡對分類性能的影響
為了比較不同的卷積神經(jīng)網(wǎng)絡對所提方法分類性能的影響,本項實驗使用卷積網(wǎng)絡疊加支持向量分類算法(SVC)[22]的深度融合網(wǎng)絡進行驗證,結(jié)果如表2所示,使用VGG系列網(wǎng)絡學習特征可以比殘差網(wǎng)絡ResNet50獲得更優(yōu)的分類結(jié)果,尤其是VGG16網(wǎng)絡取得最高98.50%的分類正確率(由Zigzag重排映射獲得)。通過分析可視化結(jié)果中不同的空間排序及其分類效果可知:在使用相同VGG網(wǎng)絡結(jié)構的前提下,非遞歸的空間填充曲線映射與遞歸的空間填充曲線映射相比,其提供的特征更利于分類決策。
表2 不同深度融合網(wǎng)絡對分類的影響Table 2 Influence of different deep fusion networks on classification
本文還將Inception V3[23]、Xception[24]深度卷積網(wǎng)絡應用于分類效果最優(yōu)的Zigzag映射重排圖,結(jié)果分別是95.05%和95.21%,該結(jié)果明了Xception網(wǎng)絡稍微優(yōu)于Inception V3,但并不適合惡意代碼分類。
本文提出了基于操作碼頻率的惡意代碼可視化分析方法,主要貢獻體現(xiàn)在以下三個方面:(1)在視覺表現(xiàn)方面,所提方法在安全分析人員與惡意樣本之間建立了直接的視覺通信,降低了人工分析的難度,并能從視覺效果上有效地區(qū)分各類惡意代碼族。(2)在惡意代碼分類方面,所提方法充分地利用了卷積神經(jīng)網(wǎng)絡在圖像分類上取得的有益成果,其分類正確率優(yōu)于其他方法。(3)在分析效率方面,所提方法能以自動執(zhí)行的方式實現(xiàn),極大地提高了工作效率。