孫甜甜,王寶會,辛敏健
(1.北京航空航天大學軟件學院,北京 100000;2.北京航空航天大學自動化學院,北京 100000)
隨著互聯(lián)網(wǎng)技術的迅速發(fā)展,不僅為人們提供便利,而且也帶來了許多網(wǎng)絡安全問題,網(wǎng)絡安全形勢已經(jīng)十分嚴峻。各類安全威脅飛速增長,嚴重威脅著用戶的個人信息安全,惡意代碼就是其中之一。惡意代碼[1]泛指所有惡意的程序代碼,是一種可造成目標系統(tǒng)信息泄露和資源濫用、破壞系統(tǒng)完整性及可用性、違背目標系統(tǒng)安全策略的程序代碼。惡意代碼的種類包括特洛伊木馬、計算機病毒、蠕蟲和后門等。近年來,由于惡意代碼的攻擊,造成了數(shù)以萬計的財產(chǎn)損失。
針對惡意代碼爆發(fā)式地增長情況,安全研究人員針對惡意代碼分析技術展開了深入研究。研究發(fā)現(xiàn),大多數(shù)新型惡意代碼都是已有惡意代碼的變種。代碼編寫者利用加殼、變形、代碼擾亂等技術處理原有代碼,以躲避傳統(tǒng)惡意代碼檢測技術。由于同一作者或同一團隊的編碼習慣是比較相似的,所以我們將具有高度相似的結構、雷同的函數(shù)調用順序的惡意代碼稱其具有同源性。惡意代碼同源性[2]則定義為是否源自同一套惡意代碼或是否由同一個作者、團隊編寫,其是否具有內在關聯(lián)性、相似性。
本文對目前研究的惡意代碼同源性分析技術分為靜態(tài)分析和動態(tài)分析,并且介紹了這兩種分析判定技術的主要思路與特點,最后對惡意代碼同源性分析提出了未來的展望。如表1所示為兩種分析方法的比較。

表1 惡意代碼兩種分析技術比較
同源的惡意代碼出自同一作者、團隊,通過這些編寫習慣往往導致它們存在相似的代碼結構。靜態(tài)分析技術關注的是代碼的靜態(tài)結構,根據(jù)結構相似性來判定是否同源。按照分析對象,靜態(tài)分析又可分為基于序列的方法和基于圖的方法。
在靜態(tài)分析技術中,基于序列的方法關注的是最底層的惡意代碼,通過對二進制代碼的匹配與處理完成同源性判定,處理速度快并且容易實現(xiàn);基于圖的方法則是從惡意代碼更高層的結構入手,從函數(shù)調用圖出發(fā),相比較序列的方法,基于圖的方法使得惡意代碼的特征更加抽象且具有代表性,判定效果更好。
靜態(tài)分析需要使用IDA Pro、Win32asm等反匯編程序對惡意代碼進行反匯編,然后再從反匯編文件中提取有用特征信息。如圖1所示為反匯編代碼,由于靜態(tài)分析只是針對惡意代碼的代碼層面上做分析,不用實際執(zhí)行惡意代碼,所以速度相對較快,并且不會產(chǎn)生危害操作系統(tǒng)的惡意行為。

圖1 靜態(tài)反匯編代碼
Yang Zhong[2]等人使用局部函數(shù)特征作為惡意代碼的特征進行同源性分析,在沒有使用整個文件進行相似性比較的情況下,取得了很好的分類效果。陳琪[3]等人在其使用局部函數(shù)特征提取出現(xiàn)不均的情況下,使用IDA反匯編工具將惡意代碼進行反匯編,然后提取程序代碼函數(shù)作為單類支持向量機(OCSVM)的輸入,篩選出樣本特征函數(shù),之后引入聚類算法BSAS的思想構建惡意代碼家族特征庫,計算惡意代碼字符串、API的N-Gram特征的相似度,為惡意代碼及其變種的檢測分類提供依據(jù)。
如圖2所示是未知樣本與惡意代碼家族特征庫相似性比較結果,圖中縱坐標代表未知樣本的真實惡意代碼家族名,橫坐標代表惡意代碼家族特征庫中存有特征的家族名稱,用序號表示,圖中的色塊表示未知樣本經(jīng)過與惡意代碼各個家族進行相似度計算得出的平均相似度,色塊顏色越深相似度越高。根據(jù)圖上相似度展示,各個家族的未知樣本與已知樣本生成的家族特征庫的平均相似度較高,并且與其他家族的平均相似度較低,說明本文所用方法是可行性的,能夠提高家族判定準確率。

圖2 未知樣本與特征庫家族平均相似度
文獻[4]是將惡意代碼的行為與其反匯編代碼相結合,首先通過IDA反匯編工具將惡意代碼進行反匯編,然后提取其控制流程圖,并以圖相似度作為相似性度量方式,之后通過DBSCAN聚類算法對同源性惡意代碼進行家族聚類。
由于惡意代碼中函數(shù)的調用、代碼的執(zhí)行流程影響它的行為操作,在一定程度上能夠體現(xiàn)作者的母的和編碼習慣,所以可作為惡意代碼同源性分析的典型特征。將函數(shù)控制流程圖與行為操作相結合的方式,能夠對惡意代碼中會對系統(tǒng)產(chǎn)生危害的操作進行重點關注,然后通過比較惡意代碼相同行為的函數(shù)控制流程圖,判斷行為操作的同源性,如圖3所示為函數(shù)控制流程圖。

圖3 函數(shù)控制流圖
因為本文選取的惡意代碼特征是圖,所以采用的相似性度量是圖相似度,通過比較兩個圖中相同節(jié)點與邊的數(shù)量,計算Jaccard作為圖的相似度。如圖4所示,各個家族的簇內相似度都在78%以上,族間相似度在20%以下,說明不同家族內部聚合度比較高,同一家族的惡意代碼差異性小。

圖4 簇內及簇間相似度
靜態(tài)分析技術是將惡意代碼進行成功反匯編后進行分析,在面對惡意代碼加殼、擾亂、變形和多態(tài)等多種自保護方式時,僅通過靜態(tài)分析技術進行分析往往存在不足,所以需要動態(tài)分析技術來補充。動態(tài)分析技術是通過搭建沙箱模擬一個虛擬環(huán)境,將惡意代碼放在該環(huán)境下,提取在運行過程中下的特征,通過這種方式,可以避免加殼等技術帶來的影響。但是它需要提供虛擬的運行環(huán)境,并且對特征提取技術有更高的要求。
在惡意代碼可執(zhí)行文件中,由于代碼與指令未進行分割,指令流難以識別,所以在使用深度學習模型時,難以形成有實際意義的詞向量來作為深度學習的輸入。文獻[5]基于文本分析思想并結合深度學習算法,提出了基于Asm2Vec的惡意代碼同源判定方法。通過搭建虛擬化環(huán)境提取惡意代碼的動態(tài)API信息,利用Word2Vec進行矢量化形成詞向量,并搭建TextCNN深度學習模型進行家族判定。該方法準確率較高且預測時間短,既快速又高效。
圖5所示為Word2vec的模型結構,利用詞的上下文,使語義信息更加豐富。TextCNN模型結構簡單,在文本分類任務上應用比較廣泛,如圖6所示,是采用TextCNN模型作為進行惡意代碼同源判定的實現(xiàn)過程。

圖5 word2vec 模型

圖6 基于TextCNN 的惡意代碼同源性分析模型
通過采用微軟惡意代碼分類挑戰(zhàn)賽的數(shù)據(jù)集進行實驗,在準確率方面,采用Asm2vec方式小幅度小于采用傳統(tǒng)特征工程方法,但是在檢測速度方面,領先于傳統(tǒng)機器學習方法,因此基于Asm2Vec[10]的惡意代碼同源判定方法在準確率和檢測速度具有較高的優(yōu)越性。

圖7 實驗結果對比
基于圖的動態(tài)分析方法存在兩個問題,第一是這些方法大都依賴于圖匹配,而圖匹配是一個NP完全問題,存在計算緩慢;第二將特征子圖作為檢測分類的方法,忽略了子圖間的關系[7]。針對上述問題,文獻[6]提出了基于子圖相似性的惡意代碼檢測方法,使用DMBSS(逆拓撲標識)將特征子圖轉換成字符串,子圖的結構信息蘊含在字符串內,然后基于神經(jīng)網(wǎng)絡計算子圖間的相似性,最后,使用子圖向量構建惡意程序的相似性函數(shù),并在此基礎上,結合SVM分類器對惡意程序進行檢測,速度較快且準確率較高。

圖8
如圖8所示,介紹了基于子圖相似性的惡意代碼檢測框架,分為3部分,特征子圖庫構建及其向量表示、訓練模型的構建過程以及未知程序的檢測過程。其中數(shù)據(jù)流圖是通過捕獲程序在運行時期內進程、注冊表、文件、URL的行為生成的。圖間的相似度是使用深度圖內核來計算[8]。
目前,對于惡意代碼同源性判定的技術研究已經(jīng)越來越成熟,本文分別從靜態(tài)分析、動態(tài)分析兩個不同角度,分析了當前惡意代碼同源性判定的特征提取方法和算法選擇,比較了各自的優(yōu)缺點。但是現(xiàn)在的研究大多是分步來進行的,并沒有一套成型的惡意代碼同源判定系統(tǒng)。并且對于基于基因視角的惡意軟件分析研究也很少,各界對惡意軟件基因也沒有統(tǒng)一的定義,所以后續(xù)對于惡意代碼的同源性分析,可以從群體和遺傳學等角度出發(fā),以基因視角來研究惡意代碼的同源性。