孫甜甜,王寶會(huì),辛敏健
(1.北京航空航天大學(xué)軟件學(xué)院,北京 100000;2.北京航空航天大學(xué)自動(dòng)化學(xué)院,北京 100000)
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,不僅為人們提供便利,而且也帶來了許多網(wǎng)絡(luò)安全問題,網(wǎng)絡(luò)安全形勢(shì)已經(jīng)十分嚴(yán)峻。各類安全威脅飛速增長(zhǎng),嚴(yán)重威脅著用戶的個(gè)人信息安全,惡意代碼就是其中之一。惡意代碼[1]泛指所有惡意的程序代碼,是一種可造成目標(biāo)系統(tǒng)信息泄露和資源濫用、破壞系統(tǒng)完整性及可用性、違背目標(biāo)系統(tǒng)安全策略的程序代碼。惡意代碼的種類包括特洛伊木馬、計(jì)算機(jī)病毒、蠕蟲和后門等。近年來,由于惡意代碼的攻擊,造成了數(shù)以萬計(jì)的財(cái)產(chǎn)損失。
針對(duì)惡意代碼爆發(fā)式地增長(zhǎng)情況,安全研究人員針對(duì)惡意代碼分析技術(shù)展開了深入研究。研究發(fā)現(xiàn),大多數(shù)新型惡意代碼都是已有惡意代碼的變種。代碼編寫者利用加殼、變形、代碼擾亂等技術(shù)處理原有代碼,以躲避傳統(tǒng)惡意代碼檢測(cè)技術(shù)。由于同一作者或同一團(tuán)隊(duì)的編碼習(xí)慣是比較相似的,所以我們將具有高度相似的結(jié)構(gòu)、雷同的函數(shù)調(diào)用順序的惡意代碼稱其具有同源性。惡意代碼同源性[2]則定義為是否源自同一套惡意代碼或是否由同一個(gè)作者、團(tuán)隊(duì)編寫,其是否具有內(nèi)在關(guān)聯(lián)性、相似性。
本文對(duì)目前研究的惡意代碼同源性分析技術(shù)分為靜態(tài)分析和動(dòng)態(tài)分析,并且介紹了這兩種分析判定技術(shù)的主要思路與特點(diǎn),最后對(duì)惡意代碼同源性分析提出了未來的展望。如表1所示為兩種分析方法的比較。
表1 惡意代碼兩種分析技術(shù)比較
同源的惡意代碼出自同一作者、團(tuán)隊(duì),通過這些編寫習(xí)慣往往導(dǎo)致它們存在相似的代碼結(jié)構(gòu)。靜態(tài)分析技術(shù)關(guān)注的是代碼的靜態(tài)結(jié)構(gòu),根據(jù)結(jié)構(gòu)相似性來判定是否同源。按照分析對(duì)象,靜態(tài)分析又可分為基于序列的方法和基于圖的方法。
在靜態(tài)分析技術(shù)中,基于序列的方法關(guān)注的是最底層的惡意代碼,通過對(duì)二進(jìn)制代碼的匹配與處理完成同源性判定,處理速度快并且容易實(shí)現(xiàn);基于圖的方法則是從惡意代碼更高層的結(jié)構(gòu)入手,從函數(shù)調(diào)用圖出發(fā),相比較序列的方法,基于圖的方法使得惡意代碼的特征更加抽象且具有代表性,判定效果更好。
靜態(tài)分析需要使用IDA Pro、Win32asm等反匯編程序?qū)阂獯a進(jìn)行反匯編,然后再?gòu)姆磪R編文件中提取有用特征信息。如圖1所示為反匯編代碼,由于靜態(tài)分析只是針對(duì)惡意代碼的代碼層面上做分析,不用實(shí)際執(zhí)行惡意代碼,所以速度相對(duì)較快,并且不會(huì)產(chǎn)生危害操作系統(tǒng)的惡意行為。
圖1 靜態(tài)反匯編代碼
Yang Zhong[2]等人使用局部函數(shù)特征作為惡意代碼的特征進(jìn)行同源性分析,在沒有使用整個(gè)文件進(jìn)行相似性比較的情況下,取得了很好的分類效果。陳琪[3]等人在其使用局部函數(shù)特征提取出現(xiàn)不均的情況下,使用IDA反匯編工具將惡意代碼進(jìn)行反匯編,然后提取程序代碼函數(shù)作為單類支持向量機(jī)(OCSVM)的輸入,篩選出樣本特征函數(shù),之后引入聚類算法BSAS的思想構(gòu)建惡意代碼家族特征庫(kù),計(jì)算惡意代碼字符串、API的N-Gram特征的相似度,為惡意代碼及其變種的檢測(cè)分類提供依據(jù)。
如圖2所示是未知樣本與惡意代碼家族特征庫(kù)相似性比較結(jié)果,圖中縱坐標(biāo)代表未知樣本的真實(shí)惡意代碼家族名,橫坐標(biāo)代表惡意代碼家族特征庫(kù)中存有特征的家族名稱,用序號(hào)表示,圖中的色塊表示未知樣本經(jīng)過與惡意代碼各個(gè)家族進(jìn)行相似度計(jì)算得出的平均相似度,色塊顏色越深相似度越高。根據(jù)圖上相似度展示,各個(gè)家族的未知樣本與已知樣本生成的家族特征庫(kù)的平均相似度較高,并且與其他家族的平均相似度較低,說明本文所用方法是可行性的,能夠提高家族判定準(zhǔn)確率。
圖2 未知樣本與特征庫(kù)家族平均相似度
文獻(xiàn)[4]是將惡意代碼的行為與其反匯編代碼相結(jié)合,首先通過IDA反匯編工具將惡意代碼進(jìn)行反匯編,然后提取其控制流程圖,并以圖相似度作為相似性度量方式,之后通過DBSCAN聚類算法對(duì)同源性惡意代碼進(jìn)行家族聚類。
由于惡意代碼中函數(shù)的調(diào)用、代碼的執(zhí)行流程影響它的行為操作,在一定程度上能夠體現(xiàn)作者的母的和編碼習(xí)慣,所以可作為惡意代碼同源性分析的典型特征。將函數(shù)控制流程圖與行為操作相結(jié)合的方式,能夠?qū)阂獯a中會(huì)對(duì)系統(tǒng)產(chǎn)生危害的操作進(jìn)行重點(diǎn)關(guān)注,然后通過比較惡意代碼相同行為的函數(shù)控制流程圖,判斷行為操作的同源性,如圖3所示為函數(shù)控制流程圖。
圖3 函數(shù)控制流圖
因?yàn)楸疚倪x取的惡意代碼特征是圖,所以采用的相似性度量是圖相似度,通過比較兩個(gè)圖中相同節(jié)點(diǎn)與邊的數(shù)量,計(jì)算Jaccard作為圖的相似度。如圖4所示,各個(gè)家族的簇內(nèi)相似度都在78%以上,族間相似度在20%以下,說明不同家族內(nèi)部聚合度比較高,同一家族的惡意代碼差異性小。
圖4 簇內(nèi)及簇間相似度
靜態(tài)分析技術(shù)是將惡意代碼進(jìn)行成功反匯編后進(jìn)行分析,在面對(duì)惡意代碼加殼、擾亂、變形和多態(tài)等多種自保護(hù)方式時(shí),僅通過靜態(tài)分析技術(shù)進(jìn)行分析往往存在不足,所以需要?jiǎng)討B(tài)分析技術(shù)來補(bǔ)充。動(dòng)態(tài)分析技術(shù)是通過搭建沙箱模擬一個(gè)虛擬環(huán)境,將惡意代碼放在該環(huán)境下,提取在運(yùn)行過程中下的特征,通過這種方式,可以避免加殼等技術(shù)帶來的影響。但是它需要提供虛擬的運(yùn)行環(huán)境,并且對(duì)特征提取技術(shù)有更高的要求。
在惡意代碼可執(zhí)行文件中,由于代碼與指令未進(jìn)行分割,指令流難以識(shí)別,所以在使用深度學(xué)習(xí)模型時(shí),難以形成有實(shí)際意義的詞向量來作為深度學(xué)習(xí)的輸入。文獻(xiàn)[5]基于文本分析思想并結(jié)合深度學(xué)習(xí)算法,提出了基于Asm2Vec的惡意代碼同源判定方法。通過搭建虛擬化環(huán)境提取惡意代碼的動(dòng)態(tài)API信息,利用Word2Vec進(jìn)行矢量化形成詞向量,并搭建TextCNN深度學(xué)習(xí)模型進(jìn)行家族判定。該方法準(zhǔn)確率較高且預(yù)測(cè)時(shí)間短,既快速又高效。
圖5所示為Word2vec的模型結(jié)構(gòu),利用詞的上下文,使語義信息更加豐富。TextCNN模型結(jié)構(gòu)簡(jiǎn)單,在文本分類任務(wù)上應(yīng)用比較廣泛,如圖6所示,是采用TextCNN模型作為進(jìn)行惡意代碼同源判定的實(shí)現(xiàn)過程。
圖5 word2vec 模型
圖6 基于TextCNN 的惡意代碼同源性分析模型
通過采用微軟惡意代碼分類挑戰(zhàn)賽的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),在準(zhǔn)確率方面,采用Asm2vec方式小幅度小于采用傳統(tǒng)特征工程方法,但是在檢測(cè)速度方面,領(lǐng)先于傳統(tǒng)機(jī)器學(xué)習(xí)方法,因此基于Asm2Vec[10]的惡意代碼同源判定方法在準(zhǔn)確率和檢測(cè)速度具有較高的優(yōu)越性。
圖7 實(shí)驗(yàn)結(jié)果對(duì)比
基于圖的動(dòng)態(tài)分析方法存在兩個(gè)問題,第一是這些方法大都依賴于圖匹配,而圖匹配是一個(gè)NP完全問題,存在計(jì)算緩慢;第二將特征子圖作為檢測(cè)分類的方法,忽略了子圖間的關(guān)系[7]。針對(duì)上述問題,文獻(xiàn)[6]提出了基于子圖相似性的惡意代碼檢測(cè)方法,使用DMBSS(逆拓?fù)錁?biāo)識(shí))將特征子圖轉(zhuǎn)換成字符串,子圖的結(jié)構(gòu)信息蘊(yùn)含在字符串內(nèi),然后基于神經(jīng)網(wǎng)絡(luò)計(jì)算子圖間的相似性,最后,使用子圖向量構(gòu)建惡意程序的相似性函數(shù),并在此基礎(chǔ)上,結(jié)合SVM分類器對(duì)惡意程序進(jìn)行檢測(cè),速度較快且準(zhǔn)確率較高。
圖8
如圖8所示,介紹了基于子圖相似性的惡意代碼檢測(cè)框架,分為3部分,特征子圖庫(kù)構(gòu)建及其向量表示、訓(xùn)練模型的構(gòu)建過程以及未知程序的檢測(cè)過程。其中數(shù)據(jù)流圖是通過捕獲程序在運(yùn)行時(shí)期內(nèi)進(jìn)程、注冊(cè)表、文件、URL的行為生成的。圖間的相似度是使用深度圖內(nèi)核來計(jì)算[8]。
目前,對(duì)于惡意代碼同源性判定的技術(shù)研究已經(jīng)越來越成熟,本文分別從靜態(tài)分析、動(dòng)態(tài)分析兩個(gè)不同角度,分析了當(dāng)前惡意代碼同源性判定的特征提取方法和算法選擇,比較了各自的優(yōu)缺點(diǎn)。但是現(xiàn)在的研究大多是分步來進(jìn)行的,并沒有一套成型的惡意代碼同源判定系統(tǒng)。并且對(duì)于基于基因視角的惡意軟件分析研究也很少,各界對(duì)惡意軟件基因也沒有統(tǒng)一的定義,所以后續(xù)對(duì)于惡意代碼的同源性分析,可以從群體和遺傳學(xué)等角度出發(fā),以基因視角來研究惡意代碼的同源性。