摘 要:基于數(shù)據(jù)流圖的惡意軟件檢測(cè)方法通常僅關(guān)注API(application programming interface)調(diào)用過程中的數(shù)據(jù)流信息,而忽略API調(diào)用順序信息。為解決此問題,所提方法在傳統(tǒng)數(shù)據(jù)流圖的基礎(chǔ)上融入API調(diào)用的時(shí)序信息,提出惡意軟件時(shí)序?qū)ε紨?shù)據(jù)流圖的概念,并給出模型挖掘方法,最后提出一種基于優(yōu)化的圖卷積網(wǎng)絡(luò)對(duì)時(shí)序?qū)ε紨?shù)據(jù)流圖進(jìn)行分類、進(jìn)而用于惡意軟件檢測(cè)與分類的方法。實(shí)驗(yàn)結(jié)果表明,所提方法的惡意軟件識(shí)別準(zhǔn)確率較傳統(tǒng)基于數(shù)據(jù)流圖的惡意軟件識(shí)別方法有更好的檢測(cè)效果。
關(guān)鍵詞:惡意軟件檢測(cè);過程挖掘;時(shí)序?qū)ε紨?shù)據(jù)流圖;圖卷積網(wǎng)絡(luò)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2023)06-037-1829-08
doi:10.19734/j.issn.1001-3695.2022.10.0561
Mining of dual data flow graph combined with sequence information and detection method of malwares
Lu Faming Jiang Tingting Bao Yunxia Cui Haidong Cai Chaoyang
(1.College of Computer Science amp; Engineering,Shandong University of Science amp; Technology,Qingdao Shandong 266590,China;2.Tai-shan Information Technology Co.,Ltd.,Tai’an Shandong 271000,China)
Abstract:The malware detection methods based on data flow graph only focused on the data flow information caused by API calls,which ignored the sequence information among API calls.To address this issue,this paper integrated the sequence information of API calls into data flow graph,put forward the concept of dual data flow graph combined with sequence information,gave the method of constructing event logs from the API call sequence,and proposed the mining method of dual data flow graph combined with sequence information.Finally,this paper proposed an improved graph convolution network to classify dual data flow graph combined with sequential information.The classification result could be used to detect and classify malwares.The experimental results show that the proposed method has better detection accuracy than traditional methods based on data flow graphs.
Key words:malware detection;process mining;dual data flow graph combined with sequence information;graph convolution network
0 引言
當(dāng)前,惡意軟件正嚴(yán)重威脅著信息安全與網(wǎng)絡(luò)安全,給經(jīng)濟(jì)、科技等重要領(lǐng)域以及國(guó)民生活帶來了巨大損失和影響。據(jù)AV-Test統(tǒng)計(jì)報(bào)告[1],惡意軟件的數(shù)量也正急速增長(zhǎng),2021年累計(jì)惡意程序數(shù)量為13.126 4億,比2020年增加1.734億。雖然有諸多商用或者開源的惡意軟件檢測(cè)工具出現(xiàn),但惡意軟件反檢測(cè)技術(shù)也層出不窮,這給惡意軟件的檢測(cè)與識(shí)別帶來了挑戰(zhàn)。如何有效地對(duì)惡意軟件進(jìn)行檢測(cè)和分類成為備受關(guān)注的研究熱點(diǎn)。
惡意軟件的檢測(cè)方法通常分為靜態(tài)分析和動(dòng)態(tài)分析[2]。靜態(tài)分析可以在不執(zhí)行目標(biāo)程序的情況下,通過對(duì)軟件二進(jìn)制文件的分析完成惡意軟件檢測(cè),包括對(duì)字節(jié)序列文件、符號(hào)簽名、文件報(bào)頭信息等靜態(tài)特征分析[3]。靜態(tài)分析方法操作相對(duì)簡(jiǎn)單,但容易受到加殼、加密、多態(tài)[4,5]等惡意軟件規(guī)避檢測(cè)方法的干擾。動(dòng)態(tài)分析通常是捕獲惡意軟件的API調(diào)用序列等動(dòng)態(tài)行為數(shù)據(jù),再對(duì)行為數(shù)據(jù)進(jìn)行特征提取與模型挖掘來完成惡意軟件檢測(cè)。通常而言,惡意軟件的動(dòng)態(tài)行為特征相較于靜態(tài)特征更加穩(wěn)定,能有效應(yīng)對(duì)加殼、加密等混淆技術(shù)對(duì)惡意軟件檢測(cè)的干擾,因此得到了更多的關(guān)注。
鑒于軟件的API系統(tǒng)調(diào)用信息能很好地反映程序行為,諸多基于API調(diào)用信息的惡意軟件動(dòng)態(tài)檢測(cè)方法被提出[6]。例如,文獻(xiàn)[7]采用DNA序列比對(duì)算法,從惡意軟件中提取出惡意功能的API調(diào)用序列,給出了一種基于API調(diào)用序列分析的惡意軟件檢測(cè)方法,此方法從不同的惡意軟件中提取API調(diào)用序列,重點(diǎn)關(guān)注常見的惡意軟件,并開發(fā)了基于API序列的簽名數(shù)據(jù)庫和基于該數(shù)據(jù)庫的檢測(cè)方法APIMDS,能夠有效地從不同的序列中提取相似的子序列,實(shí)現(xiàn)對(duì)插入無效代碼混淆的惡意軟件的檢測(cè),并且基于API序列構(gòu)建的簽名數(shù)據(jù)庫方法可以克服傳統(tǒng)靜態(tài)信息簽名數(shù)據(jù)庫更新不及時(shí)的弊端;文獻(xiàn)[8]通過API調(diào)用構(gòu)建惡意軟件行為圖,基于API調(diào)用序列與行為圖提出了一種使用深度圖卷積神經(jīng)網(wǎng)絡(luò)(DGCNN)進(jìn)行惡意軟件檢測(cè)分類的模型,此方法將可執(zhí)行文件置于可控環(huán)境中執(zhí)行并生成包含動(dòng)態(tài)分析數(shù)據(jù)的原始JSON報(bào)告,定義一種API序列行為圖,將API序列及其所發(fā)生的調(diào)用行為進(jìn)行抽象表示,用LSTM和DGCNN分別在平衡和不平衡數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),在二分類實(shí)驗(yàn)中(判斷是否為惡意軟件)取得了較高準(zhǔn)確率、召回率和精確率,但此方法完全忽略了API調(diào)用過程中產(chǎn)生的數(shù)據(jù)流交互信息,難以應(yīng)對(duì)插入無效API序列、同義API替換等混淆;文獻(xiàn)[9]在考慮API調(diào)用種類、頻率等特征的基礎(chǔ)上,對(duì)API序列的內(nèi)在特征進(jìn)行挖掘,提出了一種新的惡意軟件檢測(cè)方法,該方法在考慮API函數(shù)的同時(shí),結(jié)合與API函數(shù)調(diào)用相關(guān)的特定參數(shù)作為行為動(dòng)態(tài)特征,引入信息增益值來進(jìn)行特征選擇,并使用小部分集合及相關(guān)特征進(jìn)行分類,提高了檢測(cè)效率,但是此方法僅考慮了API函數(shù)自身的特征,忽視了API序列的時(shí)序等特征。
然而,上述方法單純依賴API調(diào)用及其序列信息進(jìn)行惡意軟件檢測(cè)或者僅考慮API函數(shù)及其相關(guān)參數(shù)特征,難以應(yīng)對(duì)API序列重排、指令插入等混淆方法給惡意軟件檢測(cè)帶來的干擾。實(shí)際上,惡意軟件執(zhí)行過程中由API調(diào)用而導(dǎo)致的系統(tǒng)實(shí)體之間的數(shù)據(jù)流交互也是軟件的重要行為特征,并且系統(tǒng)實(shí)體間的數(shù)據(jù)流交互不會(huì)因API序列重排等混淆方式而改變,因此基于軟件的API調(diào)用構(gòu)建數(shù)據(jù)流圖、進(jìn)而基于數(shù)據(jù)流圖進(jìn)行惡意軟件檢測(cè)與分類也得到了廣泛關(guān)注。具體而言,基于數(shù)據(jù)流圖的惡意軟件分類方法分為基于自定義特征、基于圖相似度計(jì)算、基于圖神經(jīng)網(wǎng)絡(luò)三種類型。文獻(xiàn)[10]首次提出了惡意軟件數(shù)據(jù)流圖的概念,根據(jù)API函數(shù)調(diào)用系統(tǒng)實(shí)體過程中產(chǎn)生的數(shù)據(jù)流交互關(guān)系,給出了數(shù)據(jù)流圖的構(gòu)建方法,并制定了復(fù)制啟發(fā)式、操縱啟發(fā)式和定量啟發(fā)式三種啟發(fā)式方法對(duì)惡意軟件的數(shù)據(jù)流圖所表達(dá)的特征進(jìn)行提取,據(jù)此確定惡意軟件的類別,此方法對(duì)API排序重排、注入虛假和無效替換API調(diào)用序列等混淆技術(shù)具有較好的檢測(cè)效果,在惡意軟件的二分類實(shí)驗(yàn)中,召回率為96 %,誤報(bào)率低于1.6 %;文獻(xiàn)[11]在文獻(xiàn)[10]的基礎(chǔ)上進(jìn)一步研究,提出了一種基于相似度指標(biāo)的惡意軟件檢測(cè)方法,此方法基于惡意軟件行為的局部和全局特征,提出用兩類特征指標(biāo)對(duì)惡意軟件進(jìn)行區(qū)分與識(shí)別,其中局部特征包括熵值和數(shù)據(jù)流比例,全局特征包括接近中心性和中心中介性,采用機(jī)器學(xué)習(xí)的方法進(jìn)行分類,召回率為98.01%,誤報(bào)率為0.48%。然而上述兩種方法未考慮API與系統(tǒng)實(shí)體之間發(fā)生數(shù)據(jù)流交互關(guān)系的次數(shù)特征以及API序列的時(shí)序信息。文獻(xiàn)[12]提出一種基于子圖相似度的惡意軟件檢測(cè)方法,此方法提取數(shù)據(jù)流圖的特征子圖,使用字符串匹配替代圖的匹配,通過神經(jīng)網(wǎng)絡(luò)來計(jì)算子圖間的相似性,最后結(jié)合SVM分類器進(jìn)行分類,此方法在覆蓋惡意行為的同時(shí),降低了惡意軟件數(shù)據(jù)流圖的結(jié)構(gòu)復(fù)雜度并且考慮了子圖間的相互關(guān)系,提高了惡意程序檢測(cè)的檢測(cè)速度和準(zhǔn)確率,但未對(duì)子圖數(shù)量進(jìn)行評(píng)估。文獻(xiàn)[13]提出一種基于屬性數(shù)據(jù)流圖的惡意軟件家族分類方法,此方法在沙箱中執(zhí)行惡意代碼的PE文件,提取惡意代碼運(yùn)行時(shí)調(diào)用的系統(tǒng)API函數(shù),構(gòu)建屬性數(shù)據(jù)流圖并對(duì)傳統(tǒng)的圖卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),在屬性數(shù)據(jù)流圖中對(duì)邊的方向和屬性進(jìn)行區(qū)分,檢測(cè)效果優(yōu)于API調(diào)用圖和傳統(tǒng)的圖卷積神經(jīng)網(wǎng)絡(luò)方法,此方法未考慮發(fā)生數(shù)據(jù)流交互的時(shí)間點(diǎn)信息和API序列的時(shí)序信息。
上述基于數(shù)據(jù)流圖的惡意軟件檢測(cè)方法為規(guī)避序列重排等混淆技術(shù)給惡意軟件分類帶來的挑戰(zhàn)而完全忽略API調(diào)用之間的順序信息,API序列時(shí)序信息作為一種重要特征,適當(dāng)捕獲這些信息并基于深度學(xué)習(xí)的方法對(duì)數(shù)據(jù)流和時(shí)序信息進(jìn)行融合、對(duì)混淆技術(shù)帶來的噪聲進(jìn)行處理,這有望提高惡意軟件檢測(cè)的準(zhǔn)確性。為此,本文擬基于API調(diào)用序列構(gòu)建的同時(shí)包含實(shí)體間數(shù)據(jù)流交互信息和API調(diào)用順序信息的新型惡意軟件行為模型——時(shí)序?qū)ε紨?shù)據(jù)流圖,并針對(duì)該模型的特點(diǎn)提出一種基于優(yōu)化的圖卷積網(wǎng)絡(luò)進(jìn)行惡意軟件檢測(cè)與分類的新方法。通過本文方法,達(dá)到API時(shí)序信息與數(shù)據(jù)流交互信息的綜合考慮,以捕獲更多的惡意行為特征,加強(qiáng)對(duì)惡意軟件的分類與檢測(cè)。
1 惡意軟件時(shí)序?qū)ε紨?shù)據(jù)流圖及其挖掘
本章首先給出軟件數(shù)據(jù)流圖[10]的概念,在此基礎(chǔ)上重點(diǎn)給出惡意軟件時(shí)序?qū)ε紨?shù)據(jù)流圖的概念,以及通過API調(diào)用序列構(gòu)建事件日志,并基于該日志進(jìn)行時(shí)序?qū)ε紨?shù)據(jù)流圖挖掘的算法。
1.1 惡意軟件的數(shù)據(jù)流圖
由數(shù)據(jù)流圖的定義和上述實(shí)例可見,數(shù)據(jù)流圖一方面反映了軟件執(zhí)行過程中進(jìn)程、文件、注冊(cè)表項(xiàng)等重要實(shí)體之間的交互信息,這在一定程度上反映了軟件的行為特征;另一方面,即使惡意軟件通過API調(diào)用序列重排或者加殼/加密等方式規(guī)避檢測(cè),數(shù)據(jù)流圖也不會(huì)受其影響。因此,基于數(shù)據(jù)流圖進(jìn)行惡意軟件檢測(cè)能在一定程度上解決混淆技術(shù)對(duì)惡意軟件檢測(cè)帶來的挑戰(zhàn)。然而,這種傳統(tǒng)的數(shù)據(jù)流圖完全忽略了API調(diào)用的順序關(guān)系這一特征,在數(shù)據(jù)流圖的基礎(chǔ)上適度擴(kuò)展API調(diào)用之間的相對(duì)次序有望提高惡意軟件的檢測(cè)準(zhǔn)確性,為此,下面給出時(shí)序?qū)ε紨?shù)據(jù)流圖的概念。該模型在傳統(tǒng)數(shù)據(jù)流的基礎(chǔ)上部分保留API調(diào)用的順序信息,力爭(zhēng)在傳統(tǒng)數(shù)據(jù)流圖的抗混淆特性和保留更多軟件行為特征之間實(shí)現(xiàn)一種平衡。
1.2 惡意軟件時(shí)序?qū)ε紨?shù)據(jù)流圖
惡意軟件數(shù)據(jù)流圖中的每個(gè)流關(guān)系實(shí)際對(duì)應(yīng)一個(gè)API調(diào)用,采用對(duì)偶圖的概念將數(shù)據(jù)流圖中各流關(guān)系對(duì)應(yīng)的邊轉(zhuǎn)換為節(jié)點(diǎn),將數(shù)據(jù)流圖的節(jié)點(diǎn)轉(zhuǎn)換為邊(無向邊),則所得對(duì)偶圖中的每個(gè)節(jié)點(diǎn)會(huì)對(duì)應(yīng)惡意軟件的一個(gè)API調(diào)用,對(duì)偶圖中若兩個(gè)節(jié)點(diǎn)有邊相連則意味著它們兩個(gè)對(duì)應(yīng)的API調(diào)用關(guān)聯(lián)著同一個(gè)實(shí)體(如同一進(jìn)程的兩個(gè)操作,或者針對(duì)同一文件/注冊(cè)表項(xiàng)的兩個(gè)讀寫操作等),稱對(duì)偶圖中的這類邊為實(shí)體關(guān)聯(lián)邊。以圖1中的數(shù)據(jù)流圖為例,其對(duì)偶圖如圖2所示,惡意軟件數(shù)據(jù)流圖中流關(guān)系的屬性信息在其對(duì)偶圖中轉(zhuǎn)換為節(jié)點(diǎn)的屬性之一。
不難發(fā)現(xiàn),與惡意軟件的數(shù)據(jù)流圖類似,上述數(shù)據(jù)流圖的對(duì)偶圖保留了惡意軟件執(zhí)行過程中的實(shí)體交互信息,但也同樣未保留任何API調(diào)用之間的順序信息。然而,由于對(duì)偶圖中的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)API調(diào)用,很容易根據(jù)兩個(gè)API調(diào)用在調(diào)用序列上的相鄰關(guān)系向?qū)ε紙D上添加有向邊,如此便可保留API調(diào)用之間的部分順序關(guān)系。以表1中的API調(diào)用序列為例,在其數(shù)據(jù)流圖對(duì)偶圖(圖2)的基礎(chǔ)上,根據(jù)API調(diào)用序列中的順序關(guān)系添加有向邊(稱此類邊為操作順序邊),可得如圖3所示的模型。顯然,該模型在保留數(shù)據(jù)流圖實(shí)體交互信息的同時(shí),保留了部分API調(diào)用的時(shí)序信息,因此,稱其為惡意軟件的時(shí)序?qū)ε紨?shù)據(jù)流圖,形式化定義如下。
1.3 惡意軟件時(shí)序?qū)ε紨?shù)據(jù)流圖的挖掘
1.1與1.2節(jié)結(jié)合實(shí)例給出了惡意軟件數(shù)據(jù)流圖與時(shí)序?qū)ε紨?shù)據(jù)流圖的概念與構(gòu)造過程,本節(jié)就構(gòu)造時(shí)序?qū)ε紨?shù)據(jù)流圖需要具體捕獲的惡意軟件API種類予以說明,給出由其構(gòu)造事件日志的規(guī)則,并在此基礎(chǔ)上給出惡意軟件時(shí)序?qū)ε紨?shù)據(jù)流圖的具體挖掘算法。
1.3.1 惡意軟件運(yùn)行事件日志的構(gòu)造
首先,本文方法需要捕獲的API調(diào)用包括文件讀/寫操作、注冊(cè)表讀/寫操作、套接字收/發(fā)操作、進(jìn)程創(chuàng)建以及進(jìn)程內(nèi)存的讀/寫操作。各操作對(duì)應(yīng)的函數(shù)名及其參數(shù)信息如表2所示,表2中最后一列給出了根據(jù)各類API調(diào)用生成事件信息的具體規(guī)則。
依據(jù)上述規(guī)則,基于捕獲的惡意軟件API調(diào)用序列可得一個(gè)事件日志,下面基于此事件日志按照流程挖掘[14]的思想構(gòu)造惡意軟件的時(shí)序?qū)ε紨?shù)據(jù)流圖。
2 基于時(shí)序?qū)ε紨?shù)據(jù)流圖的惡意軟件檢測(cè)算法
時(shí)序?qū)ε紨?shù)據(jù)流圖是一種典型的圖數(shù)據(jù)。實(shí)際上,圖數(shù)據(jù)廣泛應(yīng)用于交通優(yōu)化、知識(shí)圖譜分析等多個(gè)領(lǐng)域。作為一種非歐幾里德數(shù)據(jù),圖數(shù)據(jù)的核心是節(jié)點(diǎn)與節(jié)點(diǎn)之間的關(guān)系,它具有不規(guī)則、無序的空間結(jié)構(gòu),不具備平移不變性,因此,常用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[15]無法有效進(jìn)行圖數(shù)據(jù)的分類。然而,圖卷積網(wǎng)絡(luò)(graph convolutional network,GCN)[16]可以通過對(duì)圖的結(jié)構(gòu)特征進(jìn)行聚合變換來提取圖數(shù)據(jù)的特征,進(jìn)而用于圖數(shù)據(jù)的分類。下面介紹基于圖卷積網(wǎng)絡(luò)對(duì)軟件的時(shí)序?qū)ε紨?shù)據(jù)流圖進(jìn)行分類的方法。
2.1 基于圖卷積網(wǎng)絡(luò)的惡意軟件分類流程
對(duì)給定的每個(gè)軟件API調(diào)用序列,首先根據(jù)表2中的規(guī)則構(gòu)造事件日志;之后,借助算法1挖掘軟件的時(shí)序?qū)ε紨?shù)據(jù)流圖,并根據(jù)API調(diào)用序列所屬的惡意軟件種類為時(shí)序?qū)ε紨?shù)據(jù)流添加標(biāo)簽;最后,訓(xùn)練圖卷積網(wǎng)絡(luò)用于軟件分類,判斷是否為某種惡意軟件。具體的流程如圖4所示,下面對(duì)各個(gè)主要階段進(jìn)行簡(jiǎn)要說明。
a)數(shù)據(jù)預(yù)處理階段。提取非惡意軟件和惡意軟件的API調(diào)用序列,基于TF-IDF算法的思路對(duì)API調(diào)用過程中代表性和特異性強(qiáng)的實(shí)體進(jìn)行篩選,在此基礎(chǔ)上按照表2的規(guī)則生成事件日志。使用TF-IDF算法對(duì)數(shù)據(jù)流交互實(shí)體進(jìn)行篩選并在此基礎(chǔ)上生成事件日志的具體過程見3.1節(jié)。
b)圖的構(gòu)建。按照第1章給出的方法,分別基于API調(diào)用序列構(gòu)建軟件的數(shù)據(jù)流圖,基于API調(diào)用序列對(duì)應(yīng)的事件日志構(gòu)建軟件的時(shí)序?qū)ε紨?shù)據(jù)流圖,此處同時(shí)構(gòu)建數(shù)據(jù)流圖和時(shí)序?qū)ε紨?shù)據(jù)流圖是為了方便后續(xù)實(shí)驗(yàn)的對(duì)比分析。之后,根據(jù)API調(diào)用序列所述的軟件種類(如非惡意軟件、Backdoor、Downloader等)為各個(gè)圖添加標(biāo)注標(biāo)簽。
c)圖卷積網(wǎng)絡(luò)模型的訓(xùn)練與圖分類。分別將軟件的數(shù)據(jù)流圖、時(shí)序?qū)ε紨?shù)據(jù)流圖及其標(biāo)簽作為輸入,分別借助傳統(tǒng)的圖卷積網(wǎng)絡(luò)以及優(yōu)化后的圖卷積網(wǎng)絡(luò)進(jìn)行分類模型訓(xùn)練,最后將訓(xùn)練好的分類器用于軟件分類與惡意軟件檢測(cè)。傳統(tǒng)圖卷積網(wǎng)絡(luò)以及針對(duì)時(shí)序?qū)ε紨?shù)據(jù)流圖分類優(yōu)化后的圖卷積網(wǎng)絡(luò)在接下來兩節(jié)分別予以介紹。
2.2 基于傳統(tǒng)圖卷積網(wǎng)絡(luò)的惡意軟件檢測(cè)算法
本文使用Adam優(yōu)化算法進(jìn)行優(yōu)化。Adam優(yōu)化算法是一種對(duì)隨機(jī)目標(biāo)函數(shù)執(zhí)行一階梯度優(yōu)化的算法。Adam算法的實(shí)現(xiàn)簡(jiǎn)單快捷,用動(dòng)量和自適應(yīng)學(xué)習(xí)率來加快收斂速度,能夠基于訓(xùn)練迭代更新網(wǎng)絡(luò)權(quán)重,具有較高的計(jì)算效率和較低的內(nèi)存需求。
2.3 面向時(shí)序?qū)ε紨?shù)據(jù)流圖的圖卷積網(wǎng)絡(luò)優(yōu)化
3 實(shí)驗(yàn)評(píng)估與分析
3.1 實(shí)驗(yàn)數(shù)據(jù)集及其預(yù)處理
為對(duì)本文所提的惡意軟件檢測(cè)與分類方法進(jìn)行驗(yàn)證,以文獻(xiàn)[17,18]中制備的惡意軟件變體及其API調(diào)用序列數(shù)據(jù)集為樣本進(jìn)行實(shí)驗(yàn)評(píng)估。數(shù)據(jù)集中的軟件包括非惡意軟件樣本76個(gè),Backdoor、Downloader、Hoax、Keylogger四種惡意軟件615個(gè),同時(shí)包含289 267條API調(diào)用序列信息。API調(diào)用的屬性數(shù)據(jù)包含了API名稱、文件地址、注冊(cè)表項(xiàng)、進(jìn)程ID、數(shù)據(jù)流大小等信息。為保證分類效果,進(jìn)行具體的時(shí)序?qū)ε紨?shù)據(jù)流圖構(gòu)建和分類前,首先使用TF-IDF算法篩選每類軟件最具代表性和特異性的數(shù)據(jù)流交互實(shí)體,再據(jù)此確定時(shí)序?qū)ε紨?shù)據(jù)流圖中的特征節(jié)點(diǎn),詳細(xì)方法見3.1.1節(jié)。預(yù)處理后的數(shù)據(jù),選取20%的軟件樣本作為測(cè)試集,80%軟件樣本作為訓(xùn)練集。下面對(duì)關(guān)鍵的數(shù)據(jù)預(yù)處理環(huán)節(jié)、評(píng)價(jià)指標(biāo)設(shè)置進(jìn)行說明。
3.1.1 基于TF-IDF算法的特征節(jié)點(diǎn)選擇
從原始API調(diào)用序列數(shù)據(jù)集中提取的系統(tǒng)實(shí)體包括文件、進(jìn)程、注冊(cè)表和網(wǎng)絡(luò)套接字等四種類型,實(shí)體數(shù)量上萬個(gè),若使用所有這些節(jié)點(diǎn)構(gòu)造數(shù)據(jù)流圖或者時(shí)序?qū)ε紨?shù)據(jù)流圖,則會(huì)給模型計(jì)算帶來巨大壓力。為此,本文基于TF-IDF算法[19]的思想,根據(jù)API調(diào)用所涉及實(shí)體的重要性對(duì)系統(tǒng)實(shí)體進(jìn)行篩選。
TF-IDF算法通常用于自然語言文本處理,用以評(píng)估一個(gè)單詞對(duì)于一個(gè)文檔集中給定的某一份文檔的重要程度。其認(rèn)為,單詞的重要性與它在給定文檔中的出現(xiàn)頻次成正比,而與它在文檔集中的出現(xiàn)頻率成反比,據(jù)此可以為每個(gè)單詞設(shè)定一個(gè)權(quán)重以刻畫其重要性。在基于API調(diào)用序列進(jìn)行惡意軟件分類的過程中,針對(duì)文件實(shí)體、進(jìn)程實(shí)體、注冊(cè)表實(shí)體和網(wǎng)絡(luò)套接字實(shí)體分別使用TF-IDF算法對(duì)候選實(shí)體進(jìn)行篩選。以注冊(cè)表實(shí)體的篩選為例,將API調(diào)用中涉及到的注冊(cè)表項(xiàng)ID作為單詞,每類軟件的API調(diào)用序列中所有涉及到的注冊(cè)表項(xiàng)實(shí)體詞構(gòu)成一個(gè)文檔,所有非惡意軟件和惡意軟件各自對(duì)應(yīng)的文檔構(gòu)成文檔集,如此一來,可以計(jì)算各個(gè)注冊(cè)表項(xiàng)實(shí)體的TF-IDF權(quán)重值。可根據(jù)權(quán)重值排名,選取重要程度較高的實(shí)體節(jié)點(diǎn)。
通過上述方法,可以對(duì)每種軟件的API調(diào)用中涉及的實(shí)體分別進(jìn)行篩選。然而,本文是基于時(shí)序?qū)ε紨?shù)據(jù)流圖進(jìn)行惡意軟件檢測(cè),時(shí)序?qū)ε紨?shù)據(jù)流圖中實(shí)體并不是作為節(jié)點(diǎn)獨(dú)立存在的,無法直接根據(jù)實(shí)體的篩選結(jié)果對(duì)時(shí)序?qū)ε紨?shù)據(jù)流圖進(jìn)行簡(jiǎn)化。對(duì)此,本文的處理方法是,在根據(jù)API調(diào)用序列生成事件日志時(shí),若一個(gè)API調(diào)用涉及到的實(shí)體因?yàn)門F-IDF權(quán)值較低而被篩除,則不會(huì)根據(jù)該API調(diào)用生成事件,從而保證了時(shí)序?qū)ε紨?shù)據(jù)流圖中不會(huì)出現(xiàn)該API調(diào)用對(duì)應(yīng)的節(jié)點(diǎn)。如此處理,可以保證所得軟件的時(shí)序?qū)ε紨?shù)據(jù)流圖中各個(gè)節(jié)點(diǎn)是具有更高代表性與特異性的特征節(jié)點(diǎn)。
3.1.2 評(píng)價(jià)指標(biāo)設(shè)置
3.1.3 圖卷積網(wǎng)絡(luò)異質(zhì)邊權(quán)重參數(shù)設(shè)置
時(shí)序?qū)ε紨?shù)據(jù)流圖中的邊具有不同的含義,一種表示API調(diào)用之間的實(shí)體關(guān)聯(lián)關(guān)系,另一種邊表示API調(diào)用在時(shí)序上的相鄰關(guān)系。基于圖卷積網(wǎng)絡(luò)進(jìn)行惡意軟件分類時(shí),首先針對(duì)不同含義的異質(zhì)邊分別訓(xùn)練相應(yīng)的變換矩陣并得到對(duì)應(yīng)的聚合特征矩陣;之后,以線性加權(quán)的方式對(duì)兩個(gè)聚合后的特征矩陣進(jìn)行融合。對(duì)實(shí)體關(guān)聯(lián)邊和操作順序邊在加權(quán)融合時(shí)的參數(shù)問題,分別以準(zhǔn)確率、召回率、誤報(bào)率為依據(jù),對(duì)不同設(shè)置進(jìn)行對(duì)比,結(jié)果如圖7所示。
3.2 實(shí)驗(yàn)對(duì)比與分析
本文共設(shè)置五個(gè)實(shí)驗(yàn)進(jìn)行對(duì)比分析。其中,第一個(gè)對(duì)比實(shí)驗(yàn)以軟件的API調(diào)用序列為輸入,使用BiLSTM[20]模型進(jìn)行序列分類;第二個(gè)對(duì)比實(shí)驗(yàn)以API調(diào)用序列對(duì)應(yīng)的數(shù)據(jù)流圖為輸入,使用傳統(tǒng)的圖卷積網(wǎng)絡(luò)進(jìn)行分類;第三個(gè)對(duì)比實(shí)驗(yàn)以API調(diào)用序列及其目標(biāo)系統(tǒng)實(shí)體作為輸入,以BiLSTM模型進(jìn)行序列分類;第四個(gè)對(duì)比實(shí)驗(yàn)以API調(diào)用序列對(duì)應(yīng)的時(shí)序?qū)ε紨?shù)據(jù)流圖為輸入,將實(shí)體關(guān)聯(lián)邊對(duì)應(yīng)的關(guān)系矩陣與操作順序邊對(duì)應(yīng)的關(guān)系矩陣相加得到圖的矩陣表示,在此基礎(chǔ)上使用傳統(tǒng)的圖卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行相鄰特征聚合;第五個(gè)對(duì)比實(shí)驗(yàn)以API調(diào)用序列對(duì)應(yīng)的時(shí)序?qū)ε紨?shù)據(jù)流圖為輸入,使用改進(jìn)的圖卷積神經(jīng)網(wǎng)絡(luò)對(duì)相鄰節(jié)點(diǎn)特征進(jìn)行聚合,將聚合得到的特征矩陣加權(quán)融合,得到最終用于分類的特征矩陣,再使用分類器進(jìn)行分類。
3.2.1 分類實(shí)驗(yàn)對(duì)比
對(duì)四種惡意軟件和非惡意軟件進(jìn)行分類,實(shí)驗(yàn)結(jié)果如表4所示。由實(shí)驗(yàn)結(jié)果可見,基于API序列的分類方法由于其僅關(guān)注API的序列信息,難以有效檢測(cè)API序列重排、插入無效API等混淆。基于數(shù)據(jù)流圖的方法考慮了調(diào)用API函數(shù)的過程中與系統(tǒng)實(shí)體間發(fā)生的數(shù)據(jù)流交互關(guān)系,以及關(guān)于數(shù)據(jù)流的各類屬性,并且API序列重排、插入無效API序列等混淆技術(shù)不會(huì)改變API函數(shù)與系統(tǒng)實(shí)體之間的數(shù)據(jù)流交互關(guān)系,因此能夠有效應(yīng)對(duì)此類混淆,其檢測(cè)效果較基于API序列的方法有所提升,但此方法忽略了API序列的時(shí)序信息。基于API序列+實(shí)體節(jié)點(diǎn)的分類方法,在考慮API序列時(shí)序信息的基礎(chǔ)上加入了與惡意程序發(fā)生數(shù)據(jù)流交互關(guān)系的系統(tǒng)實(shí)體信息,進(jìn)一步捕捉了惡意行為特征,其檢測(cè)效果有明顯的提升,但此方法僅考慮API序列的時(shí)序信息及其目標(biāo)實(shí)體,并且未提取數(shù)據(jù)流的大小等屬性特征,無法對(duì)復(fù)雜的數(shù)據(jù)流交互關(guān)系特征進(jìn)行更全面的提取;基于傳統(tǒng)的GCN模型進(jìn)行分類,采用時(shí)序?qū)ε紨?shù)據(jù)流圖的方法相較于采用傳統(tǒng)的數(shù)據(jù)流圖效果更優(yōu),究其原因,時(shí)序?qū)ε紨?shù)據(jù)流圖同時(shí)包含了軟件運(yùn)行過程中的數(shù)據(jù)流交互信息和API調(diào)用的時(shí)序信息,而傳統(tǒng)的數(shù)據(jù)流圖只包含數(shù)據(jù)流交互信息。此外,雖然第一、三個(gè)實(shí)驗(yàn)方案同樣使用了API調(diào)用的時(shí)序信息,但其分類效果弱于本文方案,可能有兩個(gè)方面的原因:a)API調(diào)用序列中未考慮數(shù)據(jù)流交互信息;b)軟件行為更適合適用圖結(jié)構(gòu)進(jìn)行描述,而基于圖卷積網(wǎng)絡(luò)的方法相比BiLSTM等面向序列的分類算法能更好地提取圖的特征。
基于時(shí)序?qū)ε紨?shù)據(jù)流圖的方法與基于API序列的方法相比,召回率與誤報(bào)率降低方面都有明顯提升,說明在加入數(shù)據(jù)流交互關(guān)系特征后,在分類的過程中模型的查全能力較高,正例漏檢的概率較低,精確率的提高較大,準(zhǔn)確率提升了2.09%。與基于數(shù)據(jù)流圖的方法相比,降低誤報(bào)率方面提高較大,而召回率提高較小,說明在加入API序列的時(shí)序特征后,精確率提升更明顯,模型查全能力提升不明顯,準(zhǔn)確率提高了0.93%。與基于API序列+實(shí)體節(jié)點(diǎn)的方法相比,同樣降低誤報(bào)率方面提高較大,而召回率提高較小,說明使用圖卷積神經(jīng)網(wǎng)絡(luò)提取更多節(jié)點(diǎn)的特征后,精確率提升更明顯,模型查全能力提升不明顯,準(zhǔn)確率提高了0.91%。與基于時(shí)序數(shù)據(jù)流圖+GCN的方法相比,召回率與降低誤報(bào)率方面均有所提升,但提升不大,說明在對(duì)傳統(tǒng)的GCN進(jìn)行改進(jìn),加入權(quán)重參數(shù)對(duì)兩種關(guān)系進(jìn)行重要程度區(qū)分后,分類效果有所提升,但提升較為不明顯,準(zhǔn)確率提升了0.29%。
3.2.2 單一惡意軟件分類情況對(duì)比分析
本節(jié)對(duì)實(shí)驗(yàn)中單一惡意軟件的分類情況進(jìn)行對(duì)比分析。Backdoor、Downloader、Keylogger(由于Hoax惡意軟件樣本數(shù)量較少且不具有明顯對(duì)比差異性,本文未對(duì)其進(jìn)行對(duì)比分析)三種惡意軟件的分類結(jié)果中的TPR、PPV、F1值的表現(xiàn)如圖8所示。
通過F1值來對(duì)TPR和PPV進(jìn)行整體評(píng)價(jià),由實(shí)驗(yàn)結(jié)果可知,對(duì)于Backdoor,分類效果方法3gt;方法5gt;方法2gt;方法4gt;方法1;對(duì)于Downloader,分類效果方法5gt;方法4gt;方法3gt;方法2gt;方法1;對(duì)于Keylogger,分類效果方法4gt;方法5gt;方法3gt;方法1gt;方法2。基于API序列時(shí)序信息與數(shù)據(jù)流交互信息的分類方法對(duì)于三種惡意軟件都有較好的分類效果,而Downloader與Keylogger在實(shí)驗(yàn)結(jié)果中表現(xiàn)更優(yōu),更加符合實(shí)驗(yàn)預(yù)期,其原因可以從兩個(gè)方面進(jìn)行分析:a)從方法1和2的實(shí)驗(yàn)結(jié)果來看,對(duì)于Downloader和Keylogger的分類結(jié)果相差較小,API序列時(shí)序信息和數(shù)據(jù)流交互關(guān)系信息在分類過程中都發(fā)揮重要作用;b)Downloader、Keylogger惡意行為特征明顯且較易混淆,本文方法能夠從API序列時(shí)序和數(shù)據(jù)流交互兩個(gè)方面進(jìn)行惡意特征的提取,得到更加全面的行為特征。
綜上所述,本文方法更適用于API序列信息和數(shù)據(jù)流交互信息在檢測(cè)過程中同樣發(fā)揮重要作用的惡意軟件,可通過調(diào)整加權(quán)融合參數(shù)對(duì)API序列信息和數(shù)據(jù)流交互信息在模型中的重要程度進(jìn)行調(diào)整;方法對(duì)惡意行為特征明顯易混淆的惡意軟件具有較好的分類效果。
4 結(jié)束語
為提高惡意軟件動(dòng)態(tài)檢測(cè)和分類的準(zhǔn)確性,本文在惡意軟件數(shù)據(jù)流圖的基礎(chǔ)上融入API調(diào)用的時(shí)序信息,提出了惡意軟件時(shí)序?qū)ε紨?shù)據(jù)流圖的概念,并給出了由API調(diào)用序列構(gòu)建事件日志、挖掘時(shí)序?qū)ε紨?shù)據(jù)流圖的具體方法;之后,針對(duì)時(shí)序?qū)ε紨?shù)據(jù)流圖中實(shí)體關(guān)聯(lián)邊和操作順序邊的異質(zhì)特性,對(duì)傳統(tǒng)給予圖卷積網(wǎng)絡(luò)的惡意軟件分類方法進(jìn)行優(yōu)化,提出了基于多關(guān)系融合的GCN進(jìn)行軟件分類和惡意軟件檢測(cè)的方法;最終,借助公開的惡意軟件及其API調(diào)用序列數(shù)據(jù)集對(duì)所提方法進(jìn)行了驗(yàn)證和評(píng)估。實(shí)驗(yàn)結(jié)果表明,所提方法相比已有基于數(shù)據(jù)流圖的惡意軟件分類方法,或者面向API調(diào)用序列的BiLSTM等分類模型有更好的分類效果。然而,本文方法還存在諸多不足:a)實(shí)驗(yàn)驗(yàn)證的數(shù)據(jù)集包含的惡意軟件種類不夠豐富,后續(xù)需要制備更多的惡意軟件及其API調(diào)用序列樣本,并據(jù)此對(duì)所提方法進(jìn)行驗(yàn)證和優(yōu)化;b)惡意軟件執(zhí)行事件日志的采樣方法也存在一定的改進(jìn)空間,如采用文獻(xiàn)[21]進(jìn)行高效采樣以及對(duì)軟件中的并發(fā)缺陷[22,23]進(jìn)行檢測(cè)等。
參考文獻(xiàn):
[1]AV-Test.org.AV-TEST anti-virus testing agency static analysis report[EB/OL].(2022)[2022-07-03].https://www.avtest.org/de/statistiken/ malweare.
[2]Damodaran A,Troia F D,Visaggio C A,et al.A comparison of static,dynamic,and hybrid analysis for malware detection[J].Journal of Computer Virology and Hacking Techniques,2017,13(1):1-12.
[3]汪嘉來,張超,戚旭衍,等.Windows平臺(tái)惡意軟件智能檢測(cè)綜述[J].計(jì)算機(jī)研究與發(fā)展,2021,58(5):977-994.(Wang Jialai,Zhang Chao,Qi Xuyan,et al.Overview of intelligent detection of malware on Windows platform[J].Computer Research and Development,2021,58(5):977-994.)
[4]李劍.惡意軟件行為分析及變種檢測(cè)技術(shù)研究[D].杭州:杭州電子科技大學(xué),2009.(Li Jian.Research into malware behavior analysis and obfuscation detection technology[D].Hangzhou:Hangzhou Dianzi University,2009.)
[5]Cesare S,Yang Xiang.A fast flowgraph based classification system for packed and polymorphic malware on the endhost[C]//Proc of the 24th IEEE International Conference on Advanced Information Networking and Applications.Piscataway,NJ:IEEE Press,2010:721-728.
[6]周楊,蘆天亮,杜彥輝,等.基于線程融合特征的Windows惡意代碼檢測(cè)與分析[J].計(jì)算機(jī)工程與應(yīng)用,2020,56(23):103-108.(Zhou Yang,Lu Tianliang,Du Yanhui,et al.Detection and analysis of Windows malicious code based on thread fusion feature[J].Compu-ter Engineering and Application,2020,56(23):103-108.)
[7]Ki Y,Kim E,Kim H K.A novel approach to detect malware based on API call sequence analysis[J].International Journal of Distributed Sensor Networks,2015,11(6):article ID 659101.
[8]Oliveira A,Sassi R J.Behavioral malware detection using deep graph convolutional neural networks[J].International Journal of Compu-ter Applications,2021,174(29):1-8.
[9]韓蘭勝,高昆侖,趙保華,等.基于API函數(shù)及其參數(shù)相結(jié)合的惡意軟件行為檢測(cè)[J].計(jì)算機(jī)應(yīng)用研究,2013,30(11):3407-3410,3425.(Han Lansheng,Gao Kunlun,Zhao Baohua,et al.Malware behavior detection based on API functions and their parameters[J].Application Research of Computers,2013,30(11):3407-3410,3425.)
[10]Wüchner T,Ochoa M,Pretschner A.Malware detection with quantitative data flow graphs[C]//Proc of the 9th ACM Symposium on Information,Computer and Communications Security.New York:ACM Press,2014:271-282.
[11]Wüchner T,Ochoa M,Pretschner A.Robust and effective malware detection through quantitative data flow graph metrics[C]//Proc of the 12th International Conference on Detection of Intrusions and Malware,and Vulnerability Assessment.Cham:Springer,2015:98-118.
[12]汪潔,王長(zhǎng)青.子圖相似性的惡意程序檢測(cè)方法[J].軟件學(xué)報(bào),2020,31(11):3436-3447.(Wang Jie,Wang Changqing.Malicious program detection method for subgraph similarity[J].Journal of Software,2020,31(11):3436-3447.)
[13]楊頻,朱悅,張磊.基于屬性數(shù)據(jù)流圖的惡意代碼家族分類[J].信息安全研究,2020,6(3):228-234.(Yang Pin,Zhu Yue,Zhang Lei.Classification of malicious code families based on attribute data flow graph[J].Information Security Research,2020,6(3):228-234.)
[14]王麗麗,方賢文.基于行為距離的帶隱變遷過程模型挖掘方法[J].計(jì)算機(jī)集成制造系統(tǒng),2021,27(9):2670-2679.(Wang Lili,F(xiàn)ang Xianwen.Mining method of process model with hidden changes based on behavioral distance[J].Computer Integrated Manufacturing System,2021,27(9):2670-2679.)
[15]Niepert M,Ahmed M,Kutzkov K.Learning convolutional neural networks for graphs[C]//Proc of the 33rd International Conference on Machine Learning.New York:JMLR.org,2016:2014-2023.
[16]Kipf T N,Welling M.Semi-supervised classification with graph convolutional networks[C]//Proc of International Conference on Learning Representations.2016:1-14.
[17]Lu Faming,Cai Zhaoyang,Lin Zedong,et al.Research on the construction of malware variant datasets and their detection method[J].Applied Sciences,2022,12(15):article ID 7546.
[18]Cai Zhaoyang.MalwareDataset[EB/OL].(2022-02-08)[2022-07-03].https://github.com/WindrunnerMax/MalwareDataset.
[19]施聰鶯,徐朝軍,楊曉江.TFIDF算法研究綜述[J].計(jì)算機(jī)應(yīng)用,2009,29(S1):167-170,180.(Shi Congying,Xu Chaojun,Yang Xiaojiang.Overview of TFIDF algorithm research[J].Journal of Compu-ter Applications,2009,29(S1):167-170,180.)
[20]Chen Tao,Xu Ruifeng,He Yulan,et al.Improving sentiment analysis via sentence type classification using BiLSTM-CRF and CNN[J].Expert Systems with Applications,2017,72:221-230.
[21]劉聰,張帥鵬,李會(huì)玲,等.LogRank++:一種高效的業(yè)務(wù)過程事件日志采樣方法[J/OL].計(jì)算機(jī)集成制造系統(tǒng).(2022-04-19).http://kns.cnki.net/kcms/detail/11.5946.TP.20220416.2203.002.html.(Liu Cong,Zhang Shuaipeng,Li Huiling,et al.LogRank++:an efficient sampling method for business process event log[J/OL].Computer Integrated Manufacturing System.(2022-04-19).http://kns.cnki.net/kcms/detail/11.5946.TP.20220416.2203.002.html.)
[22]魯法明,崔明浩,包云霞,等.基于程序運(yùn)行軌跡Petri網(wǎng)模型挖掘的死鎖檢測(cè)方法[J].計(jì)算機(jī)集成制造系統(tǒng),2021,27(9):2611-2624.(Lu Faming,Cui Minghao,Bao Yunxia,et al.Deadlock detection method based on Petri net model mining of program running tra-jectory[J].Computer Integrated Manufacturing System,2021,27(9):2611-2624.)
[23]魯偉娜,魯法明,包云霞,等.精細(xì)化的BPEL程序數(shù)據(jù)競(jìng)爭(zhēng)動(dòng)態(tài)檢測(cè)方法[J].計(jì)算機(jī)集成制造系統(tǒng),2022,28(10):3064-3080.(Lu Weina,Lu Faming,Bao Yunxia,et al.Refined BPEL program data competition dynamic detection method[J].Computer Integrated Manufacturing System,2022,28(10):3064-3080.)