李炳龍,佟金龍,張宇,孫怡峰,王清賢,常朝穩(wěn)
基于TensorFlow的惡意代碼片段自動(dòng)取證檢測(cè)算法
李炳龍,佟金龍,張宇,孫怡峰,王清賢,常朝穩(wěn)
(信息工程大學(xué)密碼工程學(xué)院,河南 鄭州 450001)
自動(dòng)取證;深度學(xué)習(xí);全連接神經(jīng)網(wǎng)絡(luò);惡意代碼片段
隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,數(shù)字犯罪事件頻繁發(fā)生,磁盤介質(zhì)容量不斷增大以及存儲(chǔ)犯罪事件信息數(shù)字設(shè)備數(shù)量的不斷增加,造成司法機(jī)構(gòu)在進(jìn)行事件調(diào)查過(guò)程中需要處理的數(shù)字證據(jù)量劇增。據(jù)德克薩斯州司法機(jī)構(gòu)2019年數(shù)字取證能力分析報(bào)告稱:美國(guó)聯(lián)邦調(diào)查局(FBI,F(xiàn)ederal Bureau of Investigation)擁有最好的取證實(shí)驗(yàn)室,但卻積壓了長(zhǎng)達(dá)超過(guò)9個(gè)月的數(shù)字證據(jù)量,并且因?yàn)榇罅康臄?shù)字證據(jù)不能進(jìn)行有效分析,從而導(dǎo)致結(jié)案量不得不減少[1-2]。此外,由于犯罪事件證據(jù)來(lái)源于計(jì)算機(jī)、智能手機(jī)、平板電腦,甚至物聯(lián)網(wǎng)設(shè)備及可穿戴設(shè)備等不同類型的設(shè)備,這些海量證據(jù)因具有不同操作系統(tǒng)和文件系統(tǒng)等元數(shù)據(jù)信息,導(dǎo)致了犯罪事件證據(jù)分析的極大差異性[3-4]。另外,為確保數(shù)字犯罪證據(jù)分析的完整性和可重復(fù)性,數(shù)字犯罪證據(jù)需要通過(guò)存儲(chǔ)介質(zhì)映像技術(shù)將不同設(shè)備中的證據(jù)保存在AFF、E01、RAW等證據(jù)容器中[5-7],以底層二進(jìn)制格式存儲(chǔ)在取證容器中的證據(jù)數(shù)據(jù)導(dǎo)致取證分析越來(lái)越復(fù)雜。因此,為解決數(shù)字犯罪事件中數(shù)字證據(jù)分析的大數(shù)據(jù)性、證據(jù)差異性以及復(fù)雜性,自動(dòng)取證分析技術(shù)成為數(shù)字取證領(lǐng)域的重點(diǎn)研究問題,目前,該技術(shù)已經(jīng)取得了初步研究成果。有學(xué)者探討了高度自動(dòng)化數(shù)字取證的必要性和重要性,并分析了自動(dòng)化取證的優(yōu)點(diǎn)[8]。此外為提升取證分析的自動(dòng)性,在經(jīng)典的取證套件中增加按鈕式自動(dòng)取證功能,如EnCase、Forensic ToolKit、Autopsy Forensic Browser等具有全功能的取證工具套件允許取證調(diào)查人員僅通過(guò)知道要按哪一個(gè)按鈕就能進(jìn)行初步的,甚至一些復(fù)雜的調(diào)查分析任務(wù)[8-10]。這些受歡迎的工具讓取證調(diào)查人員的工作更加容易,并提升了自動(dòng)化取證能力。而且功能較為單一的取證軟件TraceHunter[11]也能夠提供關(guān)聯(lián)、解釋以及Windows注冊(cè)表分析的自動(dòng)取證功能。此外數(shù)字取證領(lǐng)域中證據(jù)分類技術(shù)是一個(gè)快速增長(zhǎng)的且自動(dòng)化程度較高的研究方向,許多研究[12-16]已經(jīng)支持在計(jì)算機(jī)和移動(dòng)電話中,相關(guān)證據(jù)自動(dòng)分類的功能,從而便于取證人員快速、自動(dòng)、實(shí)時(shí)獲取證據(jù)。根據(jù)美國(guó)FBI發(fā)布的2019年互聯(lián)網(wǎng)犯罪調(diào)查報(bào)告分析:自動(dòng)取證技術(shù)有利于快速、自動(dòng)進(jìn)行犯罪事件分析,其已經(jīng)成為數(shù)字調(diào)查中數(shù)字證據(jù)深度分析約減的關(guān)鍵技術(shù)[17]。然而,有學(xué)者針對(duì)手工調(diào)查和證據(jù)自動(dòng)分類進(jìn)行了比較研究,研究結(jié)果表明,在較為復(fù)雜的網(wǎng)絡(luò)攻擊犯罪調(diào)查中,如犯罪分子將惡意代碼以分片的形式存儲(chǔ)在網(wǎng)絡(luò)硬盤或者在對(duì)等網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中,因缺乏惡意代碼的整體知識(shí)而導(dǎo)致自動(dòng)分類取證技術(shù)檢測(cè)漏掉潛在的證據(jù)。
此外,惡意軟件威脅日益增加,已經(jīng)成為數(shù)字取證檢測(cè)的難點(diǎn)。根據(jù)McAfee實(shí)驗(yàn)室的報(bào)告,2019年第一季度該實(shí)驗(yàn)室新增超過(guò)6.5×107個(gè)新的惡意軟件[18]。傳統(tǒng)的惡意軟件檢測(cè)機(jī)制依賴于在惡意軟件樣本中提取簽名特征,并將這些特征存儲(chǔ)在數(shù)據(jù)庫(kù)中。然而,提取惡意軟件樣本特征需要進(jìn)行大量的手工分析,并且基于簽名特征的惡意代碼檢測(cè)技術(shù)難以有效跟上惡意軟件數(shù)量的快速增長(zhǎng),其根本原因是惡意代碼簽名掃描技術(shù)僅對(duì)已知惡意軟件樣本有效,而對(duì)新增未知惡意軟件無(wú)效。另外一個(gè)經(jīng)典方法是根據(jù)惡意軟件的運(yùn)行行為進(jìn)行檢測(cè),該方法涉及運(yùn)行惡意軟件樣本,并且觀察其運(yùn)行行為。盡管該方法能夠改善未知惡意軟件的檢測(cè),但這種方法容易受到虛擬機(jī)逃逸技術(shù)惡意代碼的阻擾。此外,可疑惡意代碼運(yùn)行還需要耗費(fèi)大量時(shí)間和計(jì)算資源。由于這兩種惡意代碼檢測(cè)技術(shù)方面的局限性,加上犯罪分子在大容量存儲(chǔ)介質(zhì)中不斷增加的通過(guò)分片、加密等反取證手段,造成惡意代碼檢測(cè)難度更大。
研究人員利用機(jī)器學(xué)習(xí)模型,訓(xùn)練學(xué)習(xí)惡意軟件特征,從而增強(qiáng)檢測(cè)精確度、提升速度[19-21]。深度學(xué)習(xí)(deep learning)是機(jī)器學(xué)習(xí)領(lǐng)域的分支,是一種試圖使用包含復(fù)雜結(jié)構(gòu)或由多重非線性變換構(gòu)成的多個(gè)處理層對(duì)數(shù)據(jù)進(jìn)行高層抽象的算法。深度學(xué)習(xí)在圖像分類、語(yǔ)音識(shí)別、機(jī)器翻譯等領(lǐng)域獲得了突破性的進(jìn)展,產(chǎn)生了大量的研究成果[22-24]。然而,要獲得一個(gè)好的深度學(xué)習(xí)模型需要針對(duì)每個(gè)具體問題(如圖像分類)研究其深度學(xué)習(xí)框架,并進(jìn)行長(zhǎng)期調(diào)優(yōu)(即通過(guò)訓(xùn)練使模型參數(shù)最優(yōu)),這使深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法應(yīng)用具有局限性。為此,Lukasz等[25]研究探索了統(tǒng)一的深度學(xué)習(xí)模型,即通過(guò)構(gòu)建一個(gè)模型自適應(yīng)地解決圖像分類、語(yǔ)音識(shí)別、機(jī)器翻譯等不同領(lǐng)域、不同數(shù)據(jù)模態(tài)下的多個(gè)不同類型的任務(wù),且在特定任務(wù)上的性能沒有明顯損失或接近于現(xiàn)有的主流方法。該模型主要適用于圖像分類、語(yǔ)音識(shí)別及機(jī)器翻譯等問題。
TensorFlow是一個(gè)采用數(shù)據(jù)流圖,用于數(shù)值計(jì)算的開源軟件庫(kù)[26],是谷歌公司開發(fā)的深度學(xué)習(xí)框架,也是深度學(xué)習(xí)的主流框架之一[22],它可以實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和深度神經(jīng)網(wǎng)絡(luò)(DNN)等經(jīng)典算法,并應(yīng)用于語(yǔ)音識(shí)別、自然語(yǔ)言處理、計(jì)算機(jī)視覺等方面[23]。此外,TensorBoard是與TensorFlow配套的可視化工具,能夠?qū)崿F(xiàn)深度學(xué)習(xí)程序運(yùn)行過(guò)程的可視化,包括對(duì)訓(xùn)練過(guò)程中參數(shù)變化、損失及準(zhǔn)確率等的可視化[26]。TensorFlow平臺(tái)已經(jīng)被廣泛應(yīng)用于工業(yè)界和學(xué)術(shù)界,許多提供源代碼的深度學(xué)習(xí)文章使用TensorFlow來(lái)實(shí)現(xiàn)其模型。
針對(duì)數(shù)字犯罪事件調(diào)查,在復(fù)雜、異構(gòu)及底層的海量證據(jù)數(shù)據(jù)中惡意代碼片段識(shí)別問題,本文采用深度學(xué)習(xí)模型和理論,從證據(jù)數(shù)據(jù)存儲(chǔ)的底層特征出發(fā),探索惡意代碼片段自動(dòng)取證檢測(cè)問題。盡管Yara規(guī)則能夠針對(duì)磁盤等存儲(chǔ)介質(zhì)進(jìn)行惡意軟件檢測(cè)自動(dòng)化[27]。然而,該方法的本質(zhì)與簽名檢測(cè)類似,即該方法仍需要惡意軟件樣本的對(duì)應(yīng)規(guī)則,才能夠檢測(cè)到對(duì)應(yīng)的惡意軟件。本文提出的方法受統(tǒng)一模型[25]的啟發(fā),但和文獻(xiàn)[25]方法的不同之處在于,不是通過(guò)在現(xiàn)有深度學(xué)習(xí)框架中增加不同操作系統(tǒng)類型的惡意代碼處理模塊,而是根據(jù)惡意代碼在存儲(chǔ)介質(zhì)底層將“扇區(qū)”或者“簇”的二進(jìn)制片段數(shù)據(jù)轉(zhuǎn)換為深度學(xué)習(xí)模型的高維特征數(shù)據(jù),并進(jìn)而利用TensorFlow深度學(xué)習(xí)模型網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練調(diào)參,獲得適合惡意代碼片段處理的深度學(xué)習(xí)模型。為此,本文首先通過(guò)分析TensorFlow深度學(xué)習(xí)模型結(jié)構(gòu)及其特性,提出一種基于TensorFlow的惡意代碼片段檢測(cè)算法框架;其次,通過(guò)分析深度學(xué)習(xí)算法訓(xùn)練流程及其機(jī)制,提出一種基于反向梯度訓(xùn)練的算法;最后,為自適應(yīng)TensorFlow模型輸入數(shù)據(jù)要求,提出一種惡意代碼片段特征轉(zhuǎn)化算法。
圖1給出了本文提出的惡意代碼片段識(shí)別算法框架,該框架包括3個(gè)主要模塊。第一個(gè)模塊是基于TensorFlow惡意代碼片段自動(dòng)識(shí)別框架。該模塊為解決磁盤敏感扇區(qū)識(shí)別問題使用的深度學(xué)習(xí)網(wǎng)絡(luò)是全連接網(wǎng)絡(luò)(FCN),即每個(gè)神經(jīng)元與前后相鄰層的每一個(gè)神經(jīng)元都有連接關(guān)系,輸入是4 096維特征向量,輸出為正常或惡意的預(yù)測(cè)結(jié)果。第二個(gè)模塊是基于惡意代碼訓(xùn)練集的訓(xùn)練。利用惡意代碼片段數(shù)據(jù)訓(xùn)練集訓(xùn)練深度學(xué)習(xí)模型,微調(diào)深度學(xué)習(xí)模型相關(guān)參數(shù),學(xué)習(xí)并得到惡意代碼片段的抽象特征。第三個(gè)模塊是利用生成的FCN模型進(jìn)行惡意代碼片段的自動(dòng)識(shí)別與檢測(cè)。通過(guò)訓(xùn)練的分層深度學(xué)習(xí)模型對(duì)待檢測(cè)代碼片段進(jìn)行檢測(cè)與分類。本文采用TensorFlow深度學(xué)習(xí)開源框架[8]構(gòu)建惡意代碼片段自動(dòng)取證算法,其中,輸入節(jié)點(diǎn)數(shù)為4 096,模型輸出節(jié)點(diǎn)數(shù)為2的分類輸出。
基于反向傳播的訓(xùn)練策略機(jī)制是惡意代碼片段識(shí)別算法框架的主要模塊,其流程如圖2所示。該算法流程為訓(xùn)練過(guò)程開始后,如果存在模型則恢復(fù)模型,否則直接開始進(jìn)入訓(xùn)練循環(huán),設(shè)定每1 000輪次訓(xùn)練保存一次模型參數(shù),并計(jì)算、打印當(dāng)前損失值。該算法中增加了訓(xùn)練模型保存功能,其目的在于實(shí)現(xiàn)斷點(diǎn)續(xù)訓(xùn),可以在損失值趨于穩(wěn)定后手動(dòng)停止,或者運(yùn)行直到給定輪次的訓(xùn)練。反向傳播訓(xùn)練算法實(shí)施過(guò)程中需要考慮兩點(diǎn):一是采用隨機(jī)參數(shù)初始化方法,其目的在于使參數(shù)服從正態(tài)分布或均勻分布,確保網(wǎng)絡(luò)層不同神經(jīng)元對(duì)不同的輸入有不同的輸出,并確保網(wǎng)絡(luò)訓(xùn)練過(guò)程中有好的收斂效果;二是訓(xùn)練優(yōu)化方法,即在深度學(xué)習(xí)模型中采用交叉熵(cross entropy)損失函數(shù)尋找模型的最優(yōu)解,TensorFlow根據(jù)輸入模型預(yù)測(cè)值和實(shí)際值得到損失函數(shù),再計(jì)算損失函數(shù)的梯度,并根據(jù)梯度調(diào)整模型參數(shù)。此外,為提升惡意代碼片段自動(dòng)識(shí)別算法框架的泛化能力引入正則化機(jī)制。在損失函數(shù)中引入模型復(fù)雜指標(biāo),給每個(gè)權(quán)重參數(shù)加上權(quán)重,抑制訓(xùn)練數(shù)據(jù)中的噪聲,注意一般不對(duì)模型中的偏置參數(shù)使用。另外,學(xué)習(xí)率的設(shè)置對(duì)訓(xùn)練有很大影響,本文選擇指數(shù)衰減學(xué)習(xí)率,在訓(xùn)練過(guò)程中動(dòng)態(tài)調(diào)整學(xué)習(xí)率,每隔一段輪次,計(jì)算學(xué)習(xí)率衰減率,并更新學(xué)習(xí)率:新學(xué)習(xí)率=學(xué)習(xí)率初值×學(xué)習(xí)率衰減率。滑動(dòng)平均的作用是記錄每個(gè)參數(shù)過(guò)去一段時(shí)間內(nèi)的平均值,像影子一樣緩慢變化,也能增加模型的泛化性?;瑒?dòng)平均針對(duì)所有參數(shù)優(yōu)化。
圖1 惡意代碼片段識(shí)別算法框架
Figure 1 Forensic algorithm framework for malicious code fragment
圖 2 反向訓(xùn)練傳播算法流程
Figure 2 Back training propagation algorithm process
數(shù)字事件調(diào)查的證據(jù)來(lái)源于不同設(shè)備和不同文件系統(tǒng)類型的存儲(chǔ)介質(zhì),為此,本文設(shè)計(jì)并實(shí)現(xiàn)了惡意代碼片段特征預(yù)處理算法,其流程如圖3所示。惡意代碼特征預(yù)處理算法主要過(guò)程如下。
(1)根據(jù)原始證據(jù)進(jìn)行文件系統(tǒng)類型和證據(jù)存儲(chǔ)容器類型的識(shí)別,確定原始證據(jù)的文件系統(tǒng)類型或者證據(jù)存儲(chǔ)容器類型。
(2)依據(jù)存儲(chǔ)介質(zhì)文件系統(tǒng)特征,或者AFF、E01等存儲(chǔ)容器原理,解析出存儲(chǔ)介質(zhì)中文件數(shù)據(jù)存儲(chǔ)的起始與結(jié)束位置,以及文件數(shù)據(jù)存儲(chǔ)的簇大?。ā按亍庇啥鄠€(gè)扇區(qū)構(gòu)成,每個(gè)扇區(qū)大小為512 byte),本文中記錄文件數(shù)據(jù)存儲(chǔ)的起始與結(jié)束位置為惡意代碼片段的起始與結(jié)束位置,文件數(shù)據(jù)存儲(chǔ)的簇大小為惡意代碼片段大小。
(3)從惡意代碼片段的起始位置開始,以惡意代碼片段大小為讀取單元,以十六進(jìn)制格式讀取惡意代碼數(shù)據(jù),將這個(gè)惡意代碼片段的十六進(jìn)制數(shù)據(jù)稱為惡意代碼的預(yù)處理特征,這個(gè)預(yù)處理特征將作為深度學(xué)習(xí)模型框架的直接輸入特征。
惡意代碼片段大小對(duì)應(yīng)的是存儲(chǔ)介質(zhì)中的“文件簇”存儲(chǔ)單元,其本身是存儲(chǔ)介質(zhì)中扇區(qū)的整數(shù)倍,因此在惡意代碼片段特征預(yù)處理過(guò)程中,不存在片段數(shù)據(jù)少或者多的問題,不需要考慮惡意代碼片段特征數(shù)據(jù)補(bǔ)齊或者裁減的問題。但是,惡意代碼片段大小對(duì)深度學(xué)習(xí)網(wǎng)絡(luò)模型訓(xùn)練和實(shí)際檢測(cè)有一定的影響。
代碼片段訓(xùn)練集和數(shù)據(jù)集對(duì)深度學(xué)習(xí)網(wǎng)絡(luò)模型的構(gòu)建和評(píng)估至關(guān)重要,基于惡意代碼特征預(yù)處理算法對(duì)磁盤等介質(zhì)處理完成后,會(huì)得到大量的數(shù)據(jù)樣本文件,其結(jié)果都是大小為4 kB的包含某類代碼片段的二進(jìn)制數(shù)據(jù)文件。目前沒有基于磁盤等存儲(chǔ)介質(zhì)的代碼片段數(shù)據(jù)集,因此在預(yù)處理階段,本文選擇訓(xùn)練用的正常代碼、惡意代碼數(shù)據(jù)集各約150 MB,并確保正常代碼和惡意代碼分別來(lái)自Android、Linux及Windows平臺(tái),且數(shù)量均衡。分別保存于兩個(gè)文件夾(normal、malware),數(shù)據(jù)集制作完成后,經(jīng)過(guò)調(diào)整,最終包含39 944個(gè)正常代碼片段文件和40 056個(gè)惡意代碼片段文件信息,共計(jì)80 000個(gè)樣本文件。
測(cè)試集可以用于評(píng)估已訓(xùn)練模型的效果,在本文實(shí)驗(yàn)中,測(cè)試集用于檢驗(yàn)算法,沒有單獨(dú)設(shè)計(jì)驗(yàn)證集。制作測(cè)試集時(shí)隨機(jī)選擇了兩類訓(xùn)練數(shù)據(jù)各2 500個(gè),共5 000個(gè),另外重新用上述方法制作了5 000個(gè)新的代碼片段文件,共計(jì)10 000個(gè)。
在上述處理的基礎(chǔ)上為數(shù)據(jù)樣本代碼片段文件打標(biāo)簽。得到分好類的數(shù)據(jù)樣本代碼片段文件后,利用批處理方式為數(shù)據(jù)代碼片段文件添加標(biāo)簽,具體算法過(guò)程如下。
圖3 惡意代碼片段特征預(yù)處理算法流程
Figure 3 Feature preprocessing algorithm of malicious code fragment process
(1)遍歷normal目錄下的所有文件名,每個(gè)文件名一行,并在文件名后添加標(biāo)簽“0”,保存至label0.txt,該文件表示正常代碼片段標(biāo)簽。
(2)遍歷malware目錄下的所有文件名,每個(gè)文件名一行,并在文件名后添加標(biāo)簽“1”,最終得到label1.txt,該文件表示惡意代碼片段標(biāo)簽。
(3)將正常代碼片段標(biāo)簽和惡意代碼片段標(biāo)簽文件內(nèi)容進(jìn)行合并,并利用偽隨機(jī)方法將合并的標(biāo)簽內(nèi)容打亂,使標(biāo)簽“0”和標(biāo)簽“1”數(shù)據(jù)隨機(jī)分布,得到共計(jì)80 000行的隨機(jī)順序文本,將其保存為train_labes.txt。使用上述算法制作測(cè)試集標(biāo)簽文件test_labels.txt。
此外,為提高基于深度學(xué)習(xí)的惡意代碼片段自動(dòng)取證檢測(cè)算法的運(yùn)行效率,減少訓(xùn)練過(guò)程讀取文件耗費(fèi)的時(shí)間,利用tfrecords文件對(duì)訓(xùn)練數(shù)據(jù)集及其標(biāo)簽(包括測(cè)試集及其標(biāo)簽)進(jìn)行處理,具體算法過(guò)程如圖4所示。
圖4 數(shù)據(jù)集處理算法流程
Figure 4 Data set processing algorithm process
根據(jù)圖4所示的數(shù)據(jù)集處理算法,得到如圖5的兩個(gè)tfrecords文件。
圖5 Tfrecords文件
Figure 5 Tfrecords file
基于深度學(xué)習(xí)的惡意代碼片段的自動(dòng)取證檢測(cè)算法所需的數(shù)據(jù)集需要根據(jù)Windows系統(tǒng)中FAT32文件系統(tǒng)格式,選擇惡意代碼片段大小為4 000 byte,這也是大容量磁盤中默認(rèn)的文件存儲(chǔ)基本單位(4 000 byte對(duì)應(yīng)于8個(gè)扇區(qū)的大?。=Y(jié)合惡意代碼片段預(yù)處理算法和數(shù)據(jù)集制作算法,具體步驟如下。
(1)準(zhǔn)備正常代碼和惡意代碼,二者數(shù)量(總大?。┫喈?dāng)。
(2)將上述兩類代碼分別寫入干凈的磁盤,磁盤已經(jīng)利用WinHex工具進(jìn)行全0填充。
(3)根據(jù)磁盤文件系統(tǒng)目錄表,定位單個(gè)程序。
(4)以4 000 byte為單位讀取程序(正常程序或者惡意程序)數(shù)據(jù),并另存為4 000 byte大小的文件,文件名為程序的唯一標(biāo)識(shí)ID+序號(hào)。
(5)逐一讀取每個(gè)代碼數(shù)據(jù),并將正常代碼和惡意代碼分開存放,方便制作數(shù)據(jù)集。
(6)共生成4個(gè)目錄的文件,分別為正常代碼片段訓(xùn)練(train_positive)、惡意代碼片段訓(xùn)練(train_virus)、正常代碼片段測(cè)試(test_positive)、惡意代碼片段測(cè)試(test_virus)。
數(shù)據(jù)集質(zhì)量會(huì)直接影響全連接深度學(xué)習(xí)網(wǎng)絡(luò)功能效果,因?yàn)榫W(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)過(guò)程是根據(jù)訓(xùn)練數(shù)據(jù)進(jìn)行的。如果全連接深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練了很久,損失降低很慢甚至不收斂,或者準(zhǔn)確率一直很低,在全連接深度學(xué)習(xí)網(wǎng)絡(luò)沒有錯(cuò)誤的情況下,可能是數(shù)據(jù)集出現(xiàn)了問題,問題可能包括但不限于:惡意代碼片段和正常代碼片段數(shù)量比例失衡,某類數(shù)據(jù)比例過(guò)大;數(shù)據(jù)集標(biāo)簽沒有打亂順序,如存在前一半全是“0”的情況,即前一半全是正常代碼片段,后一半全是“1”的情況,即后一半全是惡意代碼片段;收集的數(shù)據(jù)不合格或標(biāo)簽制作錯(cuò)誤。
為提升全連接深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練效果,針對(duì)數(shù)據(jù)集中惡意代碼和正常代碼數(shù)量上的比例失衡問題,以及代碼片段標(biāo)簽沒有打亂順序等不平衡問題,本文提出了數(shù)據(jù)集樣本不平衡處理機(jī)制,重新制作了相對(duì)平衡的數(shù)據(jù)集:正常和惡意的程序樣本數(shù)量相當(dāng),都是40 000左右;標(biāo)簽文件打亂了順序,進(jìn)行了隨機(jī)重排列。
3.3.1 FCN訓(xùn)練過(guò)程及準(zhǔn)確率
經(jīng)過(guò)測(cè)試與調(diào)整,本文發(fā)現(xiàn)3層全連接神經(jīng)網(wǎng)絡(luò)能夠達(dá)到最佳的取證檢測(cè)結(jié)果。根據(jù)經(jīng)驗(yàn)設(shè)置的全連接神經(jīng)網(wǎng)絡(luò)反向傳播超參數(shù)值為:學(xué)習(xí)率初值為0.1,學(xué)習(xí)率衰減率為0.99,正則化系數(shù)為0.000 1,參數(shù)的滑動(dòng)平均為0.99。同時(shí)利用訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,每次輸入200組數(shù)據(jù),每1 000輪次保存訓(xùn)練結(jié)果,共訓(xùn)練80 000輪次。生成的反向訓(xùn)練算法數(shù)據(jù)流程如圖6所示。
另外,F(xiàn)CN模型在平滑參數(shù)設(shè)置為0.6時(shí)訓(xùn)練過(guò)程中的損失值變化趨勢(shì)如圖7所示,準(zhǔn)確率變化趨勢(shì)如圖8所示,可以看出,在訓(xùn)練初始期間,訓(xùn)練數(shù)據(jù)的損失值(綠色線)、準(zhǔn)確率(綠色線)與FCN模型的目標(biāo)函數(shù)和準(zhǔn)確率未完全擬合,但隨著訓(xùn)練次數(shù)不斷增加,兩者完全擬合并趨于穩(wěn)定,準(zhǔn)確率達(dá)到99%。
此外,本文還進(jìn)行了5層全連接神經(jīng)網(wǎng)絡(luò)(其中包含3個(gè)隱藏層)構(gòu)建,利用數(shù)據(jù)集進(jìn)行訓(xùn)練發(fā)現(xiàn):訓(xùn)練開始后僅第一次計(jì)算出一個(gè)較小的損失值,之后訓(xùn)練得到的損失值是‘nan’,也就是損失值過(guò)小無(wú)法計(jì)算,該實(shí)驗(yàn)結(jié)果從另一方面證實(shí)了:理論上,當(dāng)全連接神經(jīng)網(wǎng)絡(luò)規(guī)模達(dá)到5層時(shí),訓(xùn)練過(guò)程就會(huì)出現(xiàn)梯度消失問題。雖然將激活函數(shù)調(diào)整為relu后訓(xùn)練能夠正常開展,但網(wǎng)絡(luò)結(jié)構(gòu)的增加使訓(xùn)練時(shí)間大幅增長(zhǎng),因?yàn)閰?shù)呈指數(shù)增長(zhǎng),且經(jīng)訓(xùn)練生成的網(wǎng)絡(luò)模型檢測(cè)結(jié)果并不如3層全連接神經(jīng)網(wǎng)絡(luò)??赡艿脑蚴蔷W(wǎng)絡(luò)輸入?yún)?shù)數(shù)量太大,4 096個(gè)輸入從一定意義上來(lái)說(shuō)限制了網(wǎng)絡(luò)規(guī)模。
圖6 Tensorboard自動(dòng)生成的數(shù)據(jù)流
Figure 6 The data flow based on Tensorboard
3.3.2 算法具體應(yīng)用及比較
圖7 損失值隨訓(xùn)練過(guò)程變化趨勢(shì)
Figure 7 The losses change with the training process
VirusTotal是一款由獨(dú)立的IT安全實(shí)驗(yàn)室Hispasec Sistemas所開發(fā)的服務(wù),它使用了多種反病毒引擎。利用VirusTotal針對(duì)測(cè)試集中的惡意代碼片段進(jìn)行查殺,并和本文方法進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如表1所示。
圖8 準(zhǔn)確率隨訓(xùn)練集樣本數(shù)變化趨勢(shì)
Figure 8 The accuracy trends with the training process
表1 基于VirusTotal網(wǎng)站測(cè)試集數(shù)據(jù)取證檢測(cè)結(jié)果
本文基于TensorFlow深度學(xué)習(xí)模型,提出了一個(gè)惡意代碼片段自動(dòng)識(shí)別算法框架;基于該框架設(shè)計(jì)了一種基于后向傳播的訓(xùn)練機(jī)制;從二進(jìn)制存儲(chǔ)底層角度,提出一種針對(duì)磁盤、U盤、智能手機(jī),以及RAW、E01、AFF等證據(jù)容器的不同存儲(chǔ)介質(zhì)的惡意代碼片段預(yù)處理算法;設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)代碼片段數(shù)據(jù)集制作算法;算法實(shí)驗(yàn)結(jié)果表明該方法能夠針對(duì)不同存儲(chǔ)介質(zhì)以及證據(jù)存儲(chǔ)容器中惡意代碼片段的自動(dòng)取證檢測(cè),綜合評(píng)價(jià)指標(biāo)1達(dá)到0.922,并且和CloudStrike、Comodo、FireEye等相比,該算法在處理底層代碼片段數(shù)據(jù)方面具有絕對(duì)優(yōu)勢(shì)。未來(lái)工作將針對(duì)內(nèi)存取證中的內(nèi)存映像進(jìn)行分析。
[1] TEPE A N, BOYLAN A A, DAVIS D W. Analysis of digital forensic capabilities in texas law enforcement agencies[R]. The Bush School of Government & Public Service, 2019.
[2] CAVIGLIONE L, WENDZE S, MAZURCZKY W. The future of digital forensics: challenges and the road ahead[J]. IEEE Security & Privacy, 2017, 15(6): 12-17.
[3] LIN X D, CHEN T, ZHU T, et al. Automated forensic analysis of mobile applications on Android devices[J]. Digital Investigation, 2018, 26: S59-S66.
[4] 高元照, 李炳龍, 陳性元. 基于MapReduce的HDFS數(shù)據(jù)竊取隨機(jī)檢測(cè)算法[J]. 通信學(xué)報(bào), 2018, 39(10): 11-21.
GAO Y Z, LI B L, CHEN X Y. Stochastic algorithm for HDFS data detection based on MapReduce[J]. Journal on Communications, 2018, 39(10): 11-21.
[5] ZAWOAD S, HASAN R. Digital forensics in the age of big data: challenges, approaches, and opportunities[C]//IEEE Big Data Security 2015. 2015: 1-7.
[6] SERVIDA F, CASEY E. IoT forensic challenges and opportunities for digital traces[J]. Digital Investigation, 2019, 28 : S22-S29.
[7] 韓宗達(dá), 李炳龍. 基于證據(jù)庫(kù)的數(shù)據(jù)證據(jù)轉(zhuǎn)換模型[J]. 計(jì)算機(jī)應(yīng)用研究, 2015, 32(7): 2140-2143.
HAN Z D, LI B L. Evidence conversion model based on evidence database[J]. Application Research of Computers, 2015, 32(7): 2140-2143.
[8] JAMES J I, PAVEL G. Challenges with automation in digital forensic investigations[J]. arXiv:1303.4498, 2013.
[9] Guidanc[EB].
[10] AccessData[EB].
[11] ZHU Y, JAMES J, GLADYSHEV P. A consistency study of the windows registry[C]//6th IFIP WG 11.9 International Conference on Digital Forensics(DF). 2010: 77-90.
[12] ROGERS, M, GOLDMAN J, et al. Computer forensics field triage process model[J]. Journal of Digital Forensics, Security and Law, 2006, 1(2): 27-40.
[13] MISLAN R P, CASEY E, et al. The growing need for on-scene triage of mobile devices[J]. Digital Investigation, 2010, 6(3-4): 112-124.
[14] MARZIALE L, RICHARD G G, ROUSSEV V. Massive threading: using GPUs to increase the performance of digital forensics tools[J]. Digital Investigation, 2007, 4S: S73-S81.
[15] GARFINKEL S, NELSON A, WHITE D, et al. Using purpose-built functions and block hashes to enable small block and sub-file forensics[J]. Digital Investigation, 2010, 7: S13-S23.
[16] QUICK D, CHOO K K R. Impacts of increasing volume of digital forensic data: a survey and future research challenges [J]. Digital Investigation, 2014, 11 (4): 273-294.
[17] Federal Bureau of Investigation(FBI). 2019 Internet Crime Report[R]. 2020.
[18] McAfee Labs. 2019 Threats Report[EB]. 2019.
[19] PIRSCOVEANU R, HANSEN S, CZECH A. Analysis of malware behavior: type classification using machine learning[C]//Proceedings of the 2015 International Conference on Cyber Situational Awareness, Data Analytics and Assessment (CyberSA). 2015.
[20] MOHAISEN A, ALRAWI O, MOHAISEN M. Amal: High-fidelity, behavior-based automated malware analysis and classification[J]. Computers & Security, 2015, 52: 251-266.
[21] LIN Y D, LAI Y C, LU C N, et al. Three-phase behavior-based detection and classification of known and unknown malware[J]. Security and Communication Networks, 2015, 8(11): 2004-2015.
[22] KRIS C, MAREK R. A Joint model for word embedding and word morphology[C]//Proc of the 1st Workshop on Representation Learning for NLP, August 11th. 2016: 18-26.
[23] 陳翠平. 基于深度信念網(wǎng)絡(luò)的文本分類算法[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2015, 24(2): 121-126.
CHEN C P. Text Categorization based on deep belief network[J]. Computer System & Application, 2015, 24(2): 121-126.
[24] 黎亞雄, 張堅(jiān)強(qiáng), 潘登, 等. 基于RNN-RBM語(yǔ)言模型的語(yǔ)音識(shí)別研究[J]. 計(jì)算機(jī)研究與發(fā)展, 2014, 51(9): 1936-1944.
LI Y X, ZHANG J Q, PAN D, et al. A study of speech recognition based on RNN-RBM language model[J]. Journal of Computer Research and Development, 2014, 51(9): 1936-1944.
[25] LUKASZ K, AIDAN N. G, NOAM S, et al. One model to learn them all[J]. arXiv:1706.05137v1, 2017.06:1-10.
[26] Ponemon Institite. 2017 Cost of Data Breach Study[R].
[27] RAFF E, ZAK R, MUNOZ G, et al. Automatic yara rele generation using biclustering[C]//Proceedings of the 13th ACM Workshop on Artificial Intelligence and Security. 2020: 71-82.
Auto forensic detecting algorithms of malicious code fragment based on TensorFlow
LI Binglong, TONG Jinlong, ZHANG Yu, SUN Yifeng, WANG Qingxian, CHANG Chaowen
College of Cryptographic Engineering, Information Engineering University, Zhengzhou 450001, China
auto forensics, deep learning, full connected network, malicious code fragment
TP309
A
10.11959/j.issn.2096?109x.2021048
2020?11?16;
2021?02?01
李炳龍,lbl2017@163.com
國(guó)家自然科學(xué)基金(60903220)
The National Natural Science Foundation of China (60903220)
李炳龍, 佟金龍, 張宇, 等. 基于TensorFlow的惡意代碼片段自動(dòng)取證檢測(cè)算法[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2021, 7(4): 154-163.
LI B L, TONG J L, ZHANG Y, et al. Auto forensic detecting algorithms of malicious code fragment based on TensorFlow[J]. Chinese Journal of Network and Information Security, 2021, 7(4): 154-163.
李炳龍(1974? ),男,河南衛(wèi)輝人,博士,信息工程大學(xué)副教授,主要研究方向?yàn)閿?shù)字調(diào)查與取證、網(wǎng)絡(luò)入侵溯源追蹤與取證、云計(jì)算取證、智能手機(jī)取證等。
佟金龍(1997? ),男,河北保定人,信息工程大學(xué)助理工程師,主要研究方向?yàn)樾畔⒅悄馨踩?/p>
張宇(1996? ),男,江蘇連云港人,信息工程大學(xué)碩士生,主要研究方向?yàn)橹悄苁謾C(jī)取證。
孫怡峰(1976? ),男,河南新鄉(xiāng)人,博士,信息工程大學(xué)副教授,主要研究方向?yàn)槿斯ぶ悄芘c信息安全。
王清賢(1960? ),男,河南衛(wèi)輝人,信息工程大學(xué)教授、博士生導(dǎo)師,主要研究方向?yàn)榫W(wǎng)絡(luò)與信息安全。
常朝穩(wěn)(1966? ),男,河南滑縣人,博士,信息工程大學(xué)教授、博士生導(dǎo)師,主要研究方向?yàn)榫W(wǎng)絡(luò)信息防御。