劉亞姝,侯躍然,嚴(yán)寒冰
(1.北京建筑大學(xué) 電氣與信息工程學(xué)院,北京 100044; 2.北京郵電大學(xué) 網(wǎng)絡(luò)技術(shù)研究院,北京 100876;3.國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心,北京 100029)
惡意代碼可以定義為任意對(duì)用戶、計(jì)算機(jī)或網(wǎng)絡(luò)做出危害的軟件[1]。一般來(lái)講,惡意代碼包括病毒、蠕蟲、后門、漏洞攻擊程序、特洛伊木馬、rootkit等。隨著技術(shù)的發(fā)展,惡意代碼的產(chǎn)生越來(lái)越簡(jiǎn)單,惡意代碼的變體也越來(lái)越多,對(duì)網(wǎng)絡(luò)安全和信息安全造成了嚴(yán)重的威脅。
惡意代碼的檢測(cè)可以分為靜態(tài)分析和動(dòng)態(tài)分析兩大類別。動(dòng)態(tài)分析需要在沙箱中或者虛擬機(jī)里實(shí)際運(yùn)行可執(zhí)行文件,分析執(zhí)行程序的行為來(lái)識(shí)別各種潛在的危害行為和攻擊行為,以便識(shí)別代碼的惡意性。動(dòng)態(tài)分析是惡意代碼分析的一個(gè)重要研究方向,相對(duì)靜態(tài)分析方法而言,動(dòng)態(tài)分析更常用于工業(yè)應(yīng)用中。
本文通過(guò)在沙盒中觀察樣本的動(dòng)態(tài)執(zhí)行過(guò)程,提取動(dòng)態(tài)API的訪問(wèn)序列、調(diào)用的DLL等信息構(gòu)建異質(zhì)信息網(wǎng)絡(luò)(heterogeneous information network,HIN)。在所獲得的節(jié)點(diǎn)類型不充足的情況下,改進(jìn)隨機(jī)游走策略,選取合適的方法描述元圖特征,從而實(shí)現(xiàn)惡意樣本的檢測(cè)和分類。
圖是一種直觀地表現(xiàn)出對(duì)象之間關(guān)系的工具。通常用有向圖描述對(duì)象之間的聯(lián)系,這樣的有向圖也稱為信息網(wǎng)絡(luò)。圖中頂點(diǎn)表示對(duì)象、邊表示對(duì)象間聯(lián)系。如果信息網(wǎng)絡(luò)中描述的對(duì)象類型是不同的,也就意味著圖中有多種類型的數(shù)據(jù)及多種關(guān)系,則被稱為異質(zhì)信息網(wǎng)絡(luò),否則稱為同質(zhì)信息網(wǎng)絡(luò)[2-3]。與同質(zhì)信息網(wǎng)絡(luò)相比,異質(zhì)信息網(wǎng)絡(luò)更能反映真實(shí)條件下對(duì)象之間的關(guān)系,具有更豐富的結(jié)構(gòu)和語(yǔ)義信息。常見的異質(zhì)信息網(wǎng)絡(luò)有社交網(wǎng)絡(luò)、科技文獻(xiàn)、醫(yī)療系統(tǒng)等。
由于異質(zhì)信息網(wǎng)絡(luò)的研究對(duì)象類型、鏈接關(guān)系多樣化,傳統(tǒng)的圖方法并不適用。2011年,Sun等[4]提出了元路徑(meta path)的概念,給出了異質(zhì)網(wǎng)絡(luò)的分析工具,通過(guò)對(duì)稱元路徑抽取2個(gè)節(jié)點(diǎn)之間的鏈接關(guān)系,同時(shí)定義了一種名為PathSim的相似度度量方法,用于在異構(gòu)網(wǎng)絡(luò)中尋找對(duì)等對(duì)象。2012年,Sun等[5]提出了元路徑的聚類方法——PathSelClus。異質(zhì)信息網(wǎng)絡(luò)中一個(gè)很重要的任務(wù)是將元路徑提取的分散語(yǔ)義信息進(jìn)行聚合。PathSelClus采用在用戶提供一個(gè)小的對(duì)象種子集合的指導(dǎo)下(稱為用戶指導(dǎo))實(shí)現(xiàn)元路徑聚類。PathSelClus方法可以自動(dòng)學(xué)習(xí)和設(shè)置元路徑聚集時(shí)的權(quán)重問(wèn)題,與其他方法相比具有聚類結(jié)果穩(wěn)定、隱含語(yǔ)義信息的效果。2014年,Shi等[6]提出了在異質(zhì)信息網(wǎng)絡(luò)中用統(tǒng)一框架判斷相同類型節(jié)點(diǎn)和不同類型節(jié)點(diǎn)的相關(guān)性方法——HeteSim。異質(zhì)信息網(wǎng)絡(luò)中的元圖會(huì)存在奇數(shù)路徑(odd path),也就是路徑不對(duì)稱及任意路徑(arbitrary path)的問(wèn)題。HeteSim通過(guò)約束路徑搜索的方法將奇數(shù)路徑轉(zhuǎn)換為等長(zhǎng)路徑(even path),這樣2個(gè)節(jié)點(diǎn)之間的相關(guān)性概率通過(guò)路徑上的所有概率之和獲得,從而能夠計(jì)算在元圖中無(wú)路徑到達(dá)的2個(gè)節(jié)點(diǎn)的相關(guān)性。2015年,Cao等[7]提出了HCLP方法用于節(jié)點(diǎn)之間多種類型的鏈接關(guān)系的預(yù)測(cè),給出了相似鏈接規(guī)則及不同類型節(jié)點(diǎn)間相關(guān)性度量方法(RM)以便計(jì)算不同類型節(jié)點(diǎn)間的存在概率。2016年,Huang等[8]建議使用元圖/元結(jié)構(gòu)(meta graph/meta structure)度量對(duì)象之間的相似程度。元圖是一種有向無(wú)環(huán)圖,可以描述2個(gè)對(duì)象之間的復(fù)雜關(guān)系。例如,文獻(xiàn)[8]中指出KDD上的2篇論文具有相同類型的主題和相關(guān)的作者,這樣就改變了原有元路徑方法,必須是順序結(jié)構(gòu)的要求,并給出了基于元圖的2個(gè)節(jié)點(diǎn)之間的相關(guān)性判斷策略。
2014年,Tamersoy等[9]基于置信網(wǎng)絡(luò)傳播算法,通過(guò)未知文件與已有標(biāo)簽的文件的關(guān)系實(shí)現(xiàn)無(wú)標(biāo)簽文件惡意性的判斷。2015年,Chen等[10]將同質(zhì)信息網(wǎng)絡(luò)用于惡意代碼文件關(guān)系網(wǎng)絡(luò)的構(gòu)建。2018年,F(xiàn)an等[11]將異質(zhì)信息網(wǎng)絡(luò)應(yīng)用到惡意代碼檢測(cè)中,通過(guò)多種信息——壓縮包、API、DLL及上報(bào)惡意文件所在的機(jī)器或位置等信息構(gòu)建異質(zhì)信息網(wǎng)絡(luò),獲得其語(yǔ)義信息,通過(guò)不同的元圖獲得多種類型的特征描述,并通過(guò)主角度分析將特征向量映射到低維空間。該成果在Comodo反病毒產(chǎn)品中得到了應(yīng)用。
本文將異質(zhì)信息網(wǎng)絡(luò)應(yīng)用于惡意代碼動(dòng)態(tài)分析中,通過(guò)改進(jìn)Metagraph2vec游走方式及網(wǎng)絡(luò)嵌入方法,以獲得樣本特征描述,并將該特征用于惡意代碼分類。實(shí)驗(yàn)結(jié)果證明,本文方法在僅可獲得有限信息的情況下,可以大大提高惡意代碼檢測(cè)、分類的性能。
目前,異質(zhì)信息網(wǎng)絡(luò)最新分析工具是元路徑和元圖,下面給出元路徑和元圖的詳細(xì)說(shuō)明。
2011年,Sun等[4]提出了元路徑的概念,用于異質(zhì)信息網(wǎng)絡(luò)中網(wǎng)絡(luò)模式的特征描述。下面給出相關(guān)的符號(hào)定義。一個(gè)異質(zhì)信息網(wǎng)絡(luò)定義為
其網(wǎng)絡(luò)模式為
式中:A為有向圖TG的頂點(diǎn);R為有向圖的邊。則有對(duì)象類型的映射τ:V→A,鏈接的映射Φ:ε→R。
圖1給出了P1和P2路徑(S為元圖結(jié)構(gòu))??梢酝ㄟ^(guò)統(tǒng)計(jì)2個(gè)對(duì)象節(jié)點(diǎn)x和y的路徑數(shù)量、隨機(jī)游走等方法計(jì)算對(duì)象節(jié)點(diǎn)的相似度s(x,y),從而構(gòu)建節(jié)點(diǎn)的特征向量。元路徑直接反映了對(duì)象節(jié)點(diǎn)之間的單一鏈接關(guān)系,如果對(duì)象間關(guān)系復(fù)雜,則需要處理成多條元路徑。如圖1中的有向圖S所示,需要處理成P1和P2路徑并做線性組合。但是,元路徑這樣的處理方法無(wú)法約束節(jié)點(diǎn)之間的共享關(guān)系,會(huì)造成共享信息丟失的問(wèn)題。為此,Huang等[8]提出了元圖的概念,來(lái)刻畫節(jié)點(diǎn)間的信息共享關(guān)系。元圖相關(guān)性度量的方法有元圖計(jì)數(shù)、結(jié)構(gòu)約束的子圖擴(kuò)展等。
圖1 元路徑與元圖示例Fig.1 Examples of meta path and meta graph
2014年,Perozzi等[12]提出了DeepWalk方法用于社交網(wǎng)絡(luò)的特征表示。Deep Walk使用隨機(jī)游走(random walk)的方式在網(wǎng)絡(luò)中查找當(dāng)前節(jié)點(diǎn)的“上下文”節(jié)點(diǎn),體現(xiàn)了節(jié)點(diǎn)與節(jié)點(diǎn)的共現(xiàn)關(guān)系。隨機(jī)游走從局部一定程度上保持了節(jié)點(diǎn)與其相鄰節(jié)點(diǎn)之間的連接性,即網(wǎng)絡(luò)結(jié)構(gòu)信息。然而對(duì)于異質(zhì)信息網(wǎng)絡(luò)來(lái)說(shuō),由于節(jié)點(diǎn)與連接節(jié)點(diǎn)的異質(zhì)性的存在,異質(zhì)信息網(wǎng)絡(luò)嵌入最大的難點(diǎn)在于如何有效地在多種類型節(jié)點(diǎn)之間保存“節(jié)點(diǎn)上下文”的信息。
2017年,Yu等[13]提出了異質(zhì)網(wǎng)絡(luò)嵌入模型Metapath2vec。Metapath2vec是基于預(yù)先指定的元路徑進(jìn)行隨機(jī)游走的。通過(guò)“有指導(dǎo)的”元路徑游走,從而能夠保持“節(jié)點(diǎn)上下文”的概念。
Metagraph2vec是在Metapath2vec的基礎(chǔ)上提出來(lái)的。區(qū)別之處是:Metagraph2vec同時(shí)有2個(gè)隨機(jī)游走的路線,如果初始給定的2個(gè)游走的起始點(diǎn)一致,Metagraph2vec退化為Metapath2vec。若元圖M的基本模式如圖2所示,則可以有PVP和PTP兩個(gè)游走路徑。
圖2 元圖M示例Fig.2 Examples of meta graph M
采用skip-gram建模,并分別做歸一化得到節(jié)點(diǎn)的表示。在多元圖上會(huì)得到同一個(gè)節(jié)點(diǎn)的不同表示,則需要通過(guò)權(quán)重的設(shè)置將這些節(jié)點(diǎn)表示融合起來(lái)。
應(yīng)用程序?qū)ο到y(tǒng)資源訪問(wèn)、注冊(cè)表訪問(wèn)、活躍的進(jìn)程、被進(jìn)程載入的DLL、進(jìn)程屬性等,都是其是否具有惡意性的判斷標(biāo)志。而這些信息僅僅依靠對(duì)樣本的靜態(tài)分析是很難獲得的,有很多惡意的特征只有在執(zhí)行過(guò)程中才會(huì)動(dòng)態(tài)展現(xiàn)。
本文主要從動(dòng)態(tài)分析角度提取樣本的特征,并基于異質(zhì)信息網(wǎng)絡(luò)構(gòu)建多種類型對(duì)象之間的關(guān)系,采用改進(jìn)的隨機(jī)游走策略獲得特征向量并實(shí)現(xiàn)樣本惡意性的檢測(cè)。
Fan等[11]刻畫的惡意代碼異質(zhì)信息網(wǎng)絡(luò)中的信息包括:上報(bào)樣本所在的主機(jī)(M)、樣本文件(F)、文件所屬的壓縮包(Z)、動(dòng)態(tài)調(diào)用的API(A)、動(dòng)態(tài)調(diào)用的DLL(D)。分析這些類別信息之間存在的關(guān)系是有利于惡意代碼檢測(cè)的。例如,在2個(gè)PE文件中,如果其具有相同的壓縮包、有屬于同一個(gè)DLL的API,那么這2個(gè)PE文件具有很高的概率同屬于一個(gè)類別。圖3刻畫了以上述類別為頂點(diǎn)的惡意代碼網(wǎng)絡(luò)模式。
Fan等[11]研究中使用的數(shù)據(jù)集來(lái)源于Comodo反病毒平臺(tái),可以獲得圖3中全部類型的節(jié)點(diǎn)數(shù)據(jù)。但是,通常在研究中很難獲取機(jī)器信息、壓縮包信息等。為此,如何在有限信息的情況下獲得更好的異質(zhì)信息網(wǎng)絡(luò)的描述是本文的研究重點(diǎn)。
在惡意代碼動(dòng)態(tài)分析中,API(A)、DLL(D)是最常能夠獲取到的信息。本文在構(gòu)建異質(zhì)信息網(wǎng)絡(luò)時(shí),不僅考慮了樣本的內(nèi)容——API、DLL,也考慮了樣本文件(F)與樣本之間的關(guān)系。圖3中虛線框內(nèi)部分為本文構(gòu)建的異質(zhì)信息網(wǎng)絡(luò)。
根據(jù)圖3中虛線框內(nèi)的網(wǎng)絡(luò)模式可以得到圖4所示的4種元圖結(jié)構(gòu)。
圖3 惡意代碼網(wǎng)絡(luò)模式Fig.3 Network schema of malicious code
圖4所示的元圖中,節(jié)點(diǎn)之間涉及到的關(guān)系如下:
圖4 四種元圖Fig.4 Four types of meta graph
1)關(guān)系R1。被調(diào)用API是否屬于同一個(gè)文件。用矩陣I描述,這里,sij∈{0,1,…,n}表示文件i是否包含了第j個(gè)API及包含的次數(shù)。
2)關(guān)系R2。被提取的API是否屬于同一個(gè)DLL(如“WriteFile”與“CreateFileA”都屬于“KERNEL32.DLL”)。用矩陣B描述,這里bij∈{0,1}描述第i個(gè)API是否在第j個(gè)DLL中。
從圖4中給出的4個(gè)元圖結(jié)構(gòu)上可以看到,在可獲得對(duì)象類別有限的情況下,通過(guò)對(duì)象類別之間構(gòu)造多種鏈接結(jié)構(gòu)會(huì)獲得更多的信息。為了獲得惡意代碼異質(zhì)信息網(wǎng)絡(luò)的描述,本文采用了改進(jìn)的隨機(jī)游走策略。
根據(jù)元路徑的對(duì)稱性,在實(shí)際游走的過(guò)程中做了加速處理;限定的、多次隨機(jī)游走,以獲得盡可能多的上下文信息。將隨機(jī)游走獲取的節(jié)點(diǎn)上下文的信息作為CBOW 輸入,提取節(jié)點(diǎn)對(duì)象的特征向量。
2.2.1 改進(jìn)的隨機(jī)游走策略
隨機(jī)游走模型用來(lái)描述不穩(wěn)定的移動(dòng)。以圖4中S1為例說(shuō)明如何通過(guò)隨機(jī)游走獲取樣本文件的環(huán)境信息(上下文信息)。為了在大量數(shù)據(jù)時(shí)游走算法依然保持靈敏,本文采取如下加速策略:
1)減少大量相關(guān)但幫助性不強(qiáng)的信息。采用TF-IDF將普遍出現(xiàn)的關(guān)系信息去除。
2)由于所有的元圖都是在2個(gè)樣本文件之間對(duì)稱,僅僅取其中一半的節(jié)點(diǎn)進(jìn)行隨機(jī)游走,就可以刻畫在這個(gè)元圖下樣本文件的周圍環(huán)境信息。
關(guān)系R1中反映的是樣本文件與其包含的API及API出現(xiàn)的次數(shù)。則可根據(jù)樣本文件中所包含的API數(shù)量確定隨機(jī)游走的概率。通過(guò)游走可獲得F→A→F之間的關(guān)系。
圖5為關(guān)系R1的矩陣I的信息示例。F1的API信息在第2行,先從行的角度,隨機(jī)抽取API的信息,假設(shè)抽取到第2列數(shù)據(jù),即A1,然后沿著第2列繼續(xù)抽樣,抽取到某一行,即得到Fi。這樣的游走是在元圖S1指導(dǎo)下的游走,獲得F→A→F之間的關(guān)系。若從Fi出發(fā)繼續(xù)游走,獲取Aj信息,從Aj列游走獲取Fk,…,這樣的游走是在元圖S4的指導(dǎo)下的游走。以上游走需要進(jìn)行多次,以便獲得更為豐富的信息。
圖5 關(guān)系R1的矩陣I示例Fig.5 Example of matrix I on relationship R1
游走獲得的數(shù)據(jù)具有實(shí)際的物理含義,行表示的是每個(gè)樣本文件中出現(xiàn)的API信息。根據(jù)Fi行游走得到的Ai信息,即得到樣本文件中包含Ai(API)的次數(shù),按照?qǐng)D4所示的4個(gè)元圖,根據(jù)元圖結(jié)構(gòu)在關(guān)系R1、R2上隨機(jī)游走得到Ai信息,即得到樣本文件中包含Ai(API)的次數(shù),根據(jù)Ai獲得該API在其他樣本文件中出現(xiàn)的次數(shù)。
按照?qǐng)D4所示的4個(gè)元圖,根據(jù)元圖結(jié)構(gòu)在關(guān)系R1、R2上隨機(jī)游走獲得相對(duì)應(yīng)的上下文信息,以此作為各個(gè)元圖的詞向量模型。
2.2.2 CBOW 模型與skip-gram模型
CBOW 模型與skip-gram模型都包含3層結(jié)構(gòu)——輸入層、投影層和輸出層[14-15]。
skip-gram模型的訓(xùn)練方法是:中心詞和周圍某個(gè)詞成對(duì)進(jìn)行訓(xùn)練,中心詞做輸入、周圍某個(gè)詞做輸出,描述中心詞對(duì)周圍詞的推斷。因此,可以將skip-gram輸出詞向量理解為對(duì)輸入詞典的降維。而CBOW 模型的訓(xùn)練,是將中心詞周圍多個(gè)詞和中心詞進(jìn)行訓(xùn)練,周圍多個(gè)詞做輸入,中心詞做輸出,描述通過(guò)周圍詞推測(cè)中心詞的過(guò)程。
本文采用CBOW 模型進(jìn)行詞向量的網(wǎng)絡(luò)嵌入,原因?yàn)椋孩賵D4所示的4個(gè)元圖是從不同角度獲得樣本文件與周圍API、DLL異構(gòu)節(jié)點(diǎn)的分布關(guān)系。②使用CBOW 模型可以直接獲得樣本的特征。
本文實(shí)驗(yàn)采用了CNCERT實(shí)驗(yàn)室提供的數(shù)據(jù)集,該數(shù)據(jù)集共有10個(gè)家族,每個(gè)家族1 500個(gè)惡意樣本,共15 000個(gè)惡意代碼樣本。由于動(dòng)態(tài)分析需要實(shí)際執(zhí)行每一個(gè)樣本,非常耗時(shí)。在實(shí)驗(yàn)中隨機(jī)選擇3個(gè)家族,下面以某次隨機(jī)選取的3個(gè)家族Allaple、Virut、Agent為例完成實(shí)驗(yàn)結(jié)果分析和評(píng)價(jià)。
實(shí)驗(yàn)中為了獲得樣本的動(dòng)態(tài)信息,需要在Cuckoo沙箱內(nèi)運(yùn)行樣本。Cuckoo沙箱是一款著名的開源沙箱系統(tǒng),已被業(yè)界廣泛使用。在Cuckoo沙箱內(nèi)運(yùn)行這3個(gè)家族4 500個(gè)樣本,共獲取3 948個(gè)有效樣本的信息。
通過(guò)解析Cuckoo報(bào)告文件——“report.json”包含的字典中“apistats”子項(xiàng),獲得各個(gè)進(jìn)程下的API統(tǒng)計(jì)信息;解析Cuckoo monitor中的hook腳本,獲得API中DLL信息。本實(shí)驗(yàn)中共檢測(cè)到365個(gè)API、27個(gè)DLL。
本文獲得了圖4所示的4張?jiān)獔D,主要描述樣本文件、API及DLL的關(guān)系。關(guān)系R1的矩陣I為3 948×365大小的矩陣,行表示樣本Fi對(duì)365個(gè)API的調(diào)用情況及調(diào)用的次數(shù)。根據(jù)API和DLL的對(duì)照,得到關(guān)系R2的矩陣B,矩陣B為365×27維。
根據(jù)2.2.1節(jié),按照?qǐng)D4所示的元圖做有指導(dǎo)的隨機(jī)游走。在實(shí)驗(yàn)過(guò)程中,為了獲得更為豐富的信息,這樣的隨機(jī)游走需要進(jìn)行多次才能刻畫出一個(gè)樣本點(diǎn)周圍的節(jié)點(diǎn)信息,獲得的API分布才會(huì)盡可能接近樣本的API實(shí)際分布,同時(shí)可以獲得大量相關(guān)的樣本文件作為輔助信息。
經(jīng)過(guò)多次游走實(shí)驗(yàn),最終確定30次隨機(jī)游走可獲得足夠多的信息。因此,本文實(shí)驗(yàn)中規(guī)定任意的元圖都將反復(fù)進(jìn)行30次隨機(jī)游走。以S1為例,經(jīng)過(guò)30次隨機(jī)游走獲得文件節(jié)點(diǎn)F周圍的信息,即獲得30組“F-A-F”信息。將這些信息統(tǒng)計(jì)到一個(gè)字典上,這個(gè)字典包含所有的API、樣本文件及DLL,長(zhǎng)度為4 340(即3 948+365+27=4 340)維。經(jīng)過(guò)30次隨機(jī)游走,可以獲得30個(gè)字典長(zhǎng)的向量,其語(yǔ)義信息是:按照規(guī)定的元圖找到當(dāng)前樣本與周圍節(jié)點(diǎn)的關(guān)系。以此作為樣本根據(jù)這個(gè)子圖獲得的訓(xùn)練結(jié)果。
在4個(gè)元圖上,都可以通過(guò)上述隨機(jī)游走方法獲得對(duì)應(yīng)的上下文信息,最終會(huì)獲得4個(gè)相應(yīng)的詞向量模型。
經(jīng)過(guò)隨機(jī)游走后,獲得的詞向量高達(dá)4 340維,為了達(dá)到降維的目的,本文采用CBOW 模型對(duì)詞向量降維,將4 340維字典嵌入(embedding)到128維中。
實(shí)驗(yàn)中,在每個(gè)元圖指導(dǎo)下的隨機(jī)游走獲取的詞向量經(jīng)過(guò)降維后都可以獨(dú)立用于樣本分類。
1)單元圖分類測(cè)試
實(shí)驗(yàn)代碼由Python語(yǔ)言編寫,采用kNN、RF(random forest)及線性SVM分類器分別完成分類實(shí)驗(yàn)。所有實(shí)驗(yàn)均采用了十重交叉驗(yàn)證。
經(jīng)多次實(shí)驗(yàn)驗(yàn)證,當(dāng)k=2時(shí),kNN算法得到的分類結(jié)果最好,如表1所示。RF分類器中決策樹的數(shù)目設(shè)置為10時(shí),結(jié)果如表2所示。SVM分類器中kernel參數(shù)為“l(fā)inear”(線性核)、懲罰參數(shù)C=1,分類結(jié)果如表3所示。
表2 單元圖模型RF分類結(jié)果Table 2 Classification results of each meta graph model using RF
表3 單元圖模型線性SVM 分類結(jié)果Table 3 Classification results of each meta graph model using linear SVM
表1~表3中,S1、S2、S3及S4分別為在圖4中4個(gè)元圖的指導(dǎo)下,根據(jù)改進(jìn)的Metagraph2vec隨機(jī)游走策略和CBOW 模型獲得的特征向量的分類結(jié)果。
可以發(fā)現(xiàn),根據(jù)S1元圖游走獲得的特征向量具有最好的分類準(zhǔn)確率、最低的誤報(bào)率和漏報(bào)率。這說(shuō)明通過(guò)調(diào)用的API來(lái)判斷樣本之間的相似行為,具有非常好的鑒別能力。S2元圖中在尋找2個(gè)樣本的關(guān)聯(lián)關(guān)系中增加了DLL信息,也可以獲得較好的分類結(jié)果。
S4元圖相比S1元圖增加了通過(guò)API獲取多樣本之間關(guān)聯(lián)性的游走。3種分類器的分類結(jié)果表明,這種游走會(huì)對(duì)樣本之間的相似性判斷產(chǎn)生干擾。
根據(jù)S3元圖游走獲取的特征向量具有最差的分類結(jié)果。S3元圖在S2元圖的基礎(chǔ)上增加了S4元圖的游走路線,影響了分類效果。
2)多元圖融合的分類測(cè)試
為了綜合應(yīng)用這4個(gè)元圖的分類結(jié)果,本文采用了投票的方法以便確定權(quán)重。在4個(gè)元圖中分別對(duì)每個(gè)測(cè)試樣本的詞向量特征采用投票的方法確定樣本屬于哪一個(gè)家族,投票結(jié)果以百分比表示。通過(guò)主角度分析方法,確定各個(gè)元圖分類結(jié)果的權(quán)重。
主角度α的計(jì)算方法為:假設(shè)有空間Yi和Yj,則其角度可以定義為
式中:θ=0,當(dāng)且僅當(dāng)Yi∩Yj≠0;θ=π/2,當(dāng)且僅當(dāng)Yi⊥Yj。
設(shè)θ1,θ2,…,θd為空間Yi和Yj主角度,則Yi和Yj的幾何距離為
則權(quán)重αi為
根據(jù)式(3)可以計(jì)算4個(gè)元圖模型投票結(jié)果的權(quán)重,結(jié)果如表4所示。根據(jù)表4的權(quán)重,融合4個(gè)元圖最終可獲得如表5所示的分類結(jié)果。
表4 元圖權(quán)重結(jié)果Table 4 Weight values of meta graphs
表5 主角度融合分類結(jié)果Table 5 Classification results using principal angle hybrid method
表5中的分類準(zhǔn)確率是S1、S2、S3及S4的融合結(jié)果(分類器的參數(shù)設(shè)置同單元圖中的分類器參數(shù)設(shè)置)。相對(duì)表1~表3,表5的結(jié)果說(shuō)明,融合的方法使得S3及S4元圖的分類準(zhǔn)確率得到了很大的提升。這說(shuō)明,多元圖相比單元圖而言,可以對(duì)部分單元圖的信息給與補(bǔ)充,可以通過(guò)α的物理意義得以解釋。
3)特征有效性分析
動(dòng)態(tài)分析受運(yùn)行條件、觸發(fā)條件的影響較大,而惡意代碼為了不被檢測(cè)到,很多都增加了抗檢測(cè)技術(shù)。因此,在Cuckoo沙箱中獲取的API、DLL可能會(huì)存在漏報(bào)、誤報(bào)的情況。為了分析Cuckoo沙箱獲取的信息對(duì)本文方法的影響,采用DynamoRIO工具對(duì)Cuckoo沙箱中可執(zhí)行惡意樣本再次分析,重新獲取API、DLL信息,并將二者結(jié)果做對(duì)比、合并。
在3個(gè)家族3 948個(gè)有效樣本中Cuckoo沙箱共獲得365個(gè)API、27個(gè)DLL。DynamoRIO再次分析這些樣本,共獲得373個(gè)API、27個(gè)DLL及3 948個(gè)有效樣本。將Cuckoo與DynamoRIO結(jié)果合并之后,獲得3 948個(gè)有效樣本、375個(gè)API及28個(gè)DLL。
根據(jù)合并后的樣本文件、API、DLL信息構(gòu)造異質(zhì)網(wǎng)絡(luò),并再次完成單元圖分類測(cè)試。表6為k=2時(shí)k NN算法得到的分類結(jié)果。
表6 合并2個(gè)沙箱結(jié)果后單元圖模型k NN分類結(jié)果Table 6 Classification results of each meta graph model with two sandboxes results using k NN
可以發(fā)現(xiàn),表6與表1的結(jié)果基本一致。同樣地,采用RF與SVM 分類器可以得到與表2、表3相似的實(shí)驗(yàn)結(jié)果,在此不再贅述。
從對(duì)比實(shí)驗(yàn)結(jié)果可以看到,本文采用的單元圖指導(dǎo)下的多次隨機(jī)游走策略,可以降低單特征(如API、DLL)在異質(zhì)信息網(wǎng)絡(luò)中對(duì)分類結(jié)果的影響。
4)與其他文獻(xiàn)結(jié)果的對(duì)比
Fan等[11]基于Comodo平臺(tái)構(gòu)建了12個(gè)元圖,涉及到樣本文件、API、DLL、壓縮包、樣本來(lái)源的機(jī)器(Machine)等信息,采用的是基本的隨機(jī)游走策略及skip-gram方法描述樣本特征。在該研究中,記錄了單元圖在Comodo公司提供的數(shù)據(jù)集上的分類準(zhǔn)確率、召回率等,多元圖融合后準(zhǔn)確率可達(dá)0.983;但是對(duì)于單元圖(元路徑)的準(zhǔn)確率只有0.75左右。將Fan等[11]的方法應(yīng)用到本文數(shù)據(jù)集上,在S1元圖的指導(dǎo)下,RF的分類準(zhǔn)確率只有0.56,遠(yuǎn)遠(yuǎn)低于本文的單元圖的分類準(zhǔn)確率(見表1)。這說(shuō)明本文采用的隨機(jī)游走和CBOW 策略在單元圖的分類效果是優(yōu)于Fan等[11]的方法的。
由于Comodo公司的數(shù)據(jù)集并未公開,本文在CNCERT數(shù)據(jù)集上只能構(gòu)造出有限種類的元圖。在這種情況下,采取改進(jìn)的Metagraph2vec隨機(jī)游走策略與CBOW 相結(jié)合的方式獲得單元圖特征向量描述,并取得了較好的分類準(zhǔn)確率,這說(shuō)明本文為信息類型不夠豐富的異質(zhì)信息網(wǎng)絡(luò)的信息表示及提高單元圖分類準(zhǔn)確率方面提供了一個(gè)可行的研究方法。
本文從動(dòng)態(tài)分析的角度分析惡意樣本,將異質(zhì)信息網(wǎng)絡(luò)應(yīng)用到惡意代碼動(dòng)態(tài)分析中,為惡意代碼動(dòng)態(tài)分析提供了一種新的特征構(gòu)造、描述方法。本文實(shí)現(xiàn)了:
1)通過(guò)在沙箱中運(yùn)行樣本,獲得PE文件的動(dòng)態(tài)訪問(wèn)信息,例如API、DLL等。通過(guò)構(gòu)建異質(zhì)信息網(wǎng)絡(luò)的4個(gè)元圖,獲得樣本文件與API、樣本文件與DLL、API與DLL、樣本文件與API及DLL之間的關(guān)系。
2)提出改進(jìn)的隨機(jī)游走策略,并結(jié)合CBOW模型獲得元圖的特征描述。本文方法相比Fan等[11]的方法提高了單元圖分類準(zhǔn)確率。
3)通過(guò)投票和主角度權(quán)重設(shè)置實(shí)現(xiàn)了多元圖分類結(jié)果的融合。
實(shí)驗(yàn)中發(fā)現(xiàn),多元圖融合后的分類準(zhǔn)確率提高程度沒有達(dá)到Fan等[11]給出的融合效果。經(jīng)分析,這是由于本文異質(zhì)信息網(wǎng)絡(luò)節(jié)點(diǎn)類型不夠豐富造成的,這將是下一步研究中要解決的問(wèn)題。