• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于1D-CNN-Densenet的惡意代碼檢測方法

      2022-07-20 02:29:08劉曉晨蘆天亮楊錦璈
      關鍵詞:調(diào)用個數(shù)卷積

      劉曉晨, 蘆天亮, 楊錦璈, 楊 明

      (1.中國人民公安大學信息網(wǎng)絡安全學院, 北京 100038; 2.中國人民公安大學公共安全行為科學實驗室, 北京 100038)

      0 引言

      網(wǎng)絡技術的日益發(fā)展帶來越來越多的網(wǎng)絡安全問題,惡意軟件如病毒、蠕蟲、后門、僵尸網(wǎng)絡和特洛伊木馬等成為當今影響世界網(wǎng)絡安全的一大威脅,其多種多樣的攻擊手段給人們的生活帶來了極為不利的影響。惡意代碼對互聯(lián)網(wǎng)的健康發(fā)展產(chǎn)生了嚴重的影響,甚至對重點行業(yè)的關鍵基礎設施造成威脅。McAfee發(fā)布報告稱,2020年第二季度新發(fā)現(xiàn)惡意軟件樣本數(shù)量增長了11.5%,平均每分鐘會出現(xiàn)419個新威脅[1]。

      隨著深度學習模型的發(fā)展,API調(diào)用序列作為特征處理惡意代碼檢測不再局限于數(shù)據(jù)挖掘和傳統(tǒng)的機器學習算法[2-3],基于深度學習的惡意代碼檢測模型中循環(huán)神經(jīng)網(wǎng)絡占多數(shù),這些模型比數(shù)據(jù)挖掘和傳統(tǒng)的機器學習方法具有更高的準確性。本文設計了一種1D-CNN-Densenet模型對惡意代碼進行檢測,主要工作如下:

      (1)通過Cuckoo Sandbox動態(tài)提取API序列,對獲取到的API原始序列轉(zhuǎn)化、去重,對每個API進行十進制編碼向量化表示。

      (2)統(tǒng)計所有API個數(shù)和每一個惡意程序的API個數(shù),通過剪裁和補齊,構(gòu)建輸入到檢測模型的矩陣。

      (3)設計基于一維卷積和稠密網(wǎng)絡結(jié)構(gòu)的1D-CNN-Densenet,提取和學習更深層次的惡意代碼特征,進一步提高惡意代碼檢測模型的準確率。

      1 相關工作

      1.1 惡意代碼分析技術

      靜態(tài)分析和動態(tài)分析是惡意代碼分析技術的兩種常見方法。靜態(tài)分析不對惡意樣本進行執(zhí)行操作,直接從二進制文件中提取特征,方法簡單,效率高,占用資源較少,從特征碼、文件完整性、反匯編等方面了解惡意軟件的代碼、邏輯結(jié)構(gòu)等。廖國輝等[4]從Windows可執(zhí)行PE文件中提取靜態(tài)特征分析惡意代碼;Natarajf等[5]將惡意代碼的二進制文件轉(zhuǎn)化為灰度圖像,利用神經(jīng)網(wǎng)絡分類惡意代碼;楊頻等[6]提取操作碼特征構(gòu)建檢測模型;Raff等[7]將惡意代碼原生字節(jié)序列作為輸入,將可執(zhí)行文件結(jié)構(gòu)通過神經(jīng)網(wǎng)絡學習軟件中具有判別力的特征信息;Zhao等[8]基于函數(shù)的調(diào)用圖對惡意代碼的變形進行分類檢測。靜態(tài)分析具有局限性,攻擊技術的加強,受混淆、壓縮、加殼等影響,靜態(tài)分析的泛化能力變?nèi)?,易出現(xiàn)漏報和誤報。

      動態(tài)分析是在隔離環(huán)境如沙箱中執(zhí)行惡意樣本,提取樣本的動態(tài)特征,對新型惡意代碼識別率較高。其中分析API調(diào)用序列最具代表性,Dahl等[9]根據(jù)置信度分析惡意代碼的動態(tài)API序列進行惡意代碼分類;Hyunjoo等[10]使用API調(diào)用序列和序列比對算法實現(xiàn)了惡意軟件的檢測和分類;Abdurrahman等[11]提取惡意代碼注冊表活動以及API序列等動態(tài)特征,構(gòu)建特征向量,對惡意軟件進行分類檢測。

      此外還有通過靜態(tài)分析技術提取惡意代碼特征,利用動態(tài)檢測方法識別惡意代碼的混合分析技術。Zhao等[12]結(jié)合動態(tài)和靜態(tài)特征基于機器學習算法對惡意代碼進行檢測;Kang[13]等基于word2vec以較少維度分析操作碼和API序列,使用分類器分類惡意軟件。

      綜上,無論是靜態(tài)分析還是動態(tài)分析都是通過分析樣本的內(nèi)容以及樣本間的關系提取惡意代碼的特征并對其進行分類。

      1.2 基于API調(diào)用序列的惡意代碼檢測技術

      傳統(tǒng)的基于特征碼的檢測受限于混淆、多態(tài)的代碼。許多研究使用機器學習算法進行惡意代碼分析如LR、DT、NNs等。Kolter等[14]使用字節(jié)序列N- Gram通過機器學習(如NB、SVM、DT等)構(gòu)建分類模型對惡意代碼進行檢測。Saxe等[15]使用神經(jīng)網(wǎng)絡算法對惡意代碼進行分類檢測。深度學習的卷積神經(jīng)網(wǎng)絡和循環(huán)神經(jīng)網(wǎng)絡及其改進的算法在惡意代碼檢測領域中也有所應用。Kolosnjaji等[16]將提取的特征通過N- Gram和CNN模型將其轉(zhuǎn)換為LSTM模型的輸入進行分類。Tobiyama等[17]將API序列和API返回值輸入RNN模型中進行惡意代碼分類。

      API調(diào)用序列可以反映惡意代碼的運行,可以作為惡意代碼檢測的特征進行分析。Chen等[18]從PE文件中提取API調(diào)用序列;Ravi等[19]將API調(diào)用序列用用數(shù)據(jù)挖掘算法進行惡意代碼檢測;Hansen等[20]利用RF根據(jù)API調(diào)用序列和API調(diào)用頻率對惡意軟件進行分類;Ding等[21]標記API序列,提取調(diào)用關系,挖掘行為依賴圖用于惡意代碼檢測。蘆效峰[22]基于序列數(shù)據(jù)的長短期記憶深度學習模型對API調(diào)用統(tǒng)計特征組合提出惡意樣本檢測框架。

      上述列舉的基于API調(diào)用序列的模型大多依賴于循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)按順序處理長數(shù)據(jù),處理較長的輸入序列性能較低,需要消耗較長的時間和資源,影響惡意代碼檢測的性能。在這種情況下,本文設計了基于一維卷積和稠密結(jié)構(gòu)的1D-CNN-Densenet模型。

      2 模型設計與實現(xiàn)

      如圖1所示,本文設計了一種1D-CNN-Densenet針對惡意代碼進行檢測,在Cuckoo sandbox中運行程序動態(tài)提取正常軟件和惡意代碼的行為報告,經(jīng)過API序列數(shù)據(jù)預處理[23],將十進制編碼映射API序列對其進行補齊和裁剪,向量化輸入到1D-CNN-Densenet模型,通過稠密網(wǎng)絡式結(jié)構(gòu),挖掘和學習更深層次的特征,訓練和測試模型,從而判斷程序是良性還是惡意。

      圖1 實驗流程

      2.1 數(shù)據(jù)預處理

      2.1.1 惡意代碼行為表示

      每一個可執(zhí)行文件運行程序的行為都可以使用API調(diào)用序列來表示,API調(diào)用序列的提取可以通過沙箱動態(tài)執(zhí)行程序獲得。本文基于Cuckoo sandbox[24]搭建惡意代碼分析環(huán)境,使用隔離環(huán)境自動執(zhí)行不可信的惡意軟件,分析樣本提取出進程、網(wǎng)絡、文件等動態(tài)行為。主機通過Cuckoo sandbox分發(fā)惡意樣本至客戶機并執(zhí)行惡意代碼,Cuckoo sandbox生成多種形式的結(jié)果,由于Json格式的報告在跨平臺適用性方面較好,且格式規(guī)范統(tǒng)一,便于下一步對惡意代碼樣本行為進行批量處理,因此采用Json格式的報告提取API調(diào)用序列并轉(zhuǎn)化為txt文檔進行下一步數(shù)據(jù)處理。

      經(jīng)轉(zhuǎn)化,每一個txt文檔代表著一個程序所有的API調(diào)用,即一個程序的所有動態(tài)行為,其中一行由API類型和API名稱兩部分組成,表示一個API調(diào)用序列。

      2.1.2 向量化表示

      程序會連續(xù)執(zhí)行類似的操作,因此在分析API調(diào)用序列時發(fā)現(xiàn)無論正常還是惡意程序,同一個API函數(shù)通常被連續(xù)多次調(diào)用,為減少送入模型的序列的長度,對重復調(diào)用的API序列進行去重,刪除重復的API調(diào)用序列可以避免信息冗余。

      將txt文件去重后將每一串字符用十進制編碼成[n,m]的矩陣。n為每個程序中API的取值個數(shù),m為每個API的平均長度,本文3.4的預實驗中得出結(jié)論n的取值為平均個數(shù)時效率最高,因此n為每個程序的平均API個數(shù)。對每個API長度不足平均長度的補0,大于平均長度的裁剪,將所有API個數(shù)不足平均個數(shù)的補[1,m]的0矩陣至n,超過n的進行裁剪以保證每一個txt里面的矩陣為[n,m]。

      本次實驗最終網(wǎng)絡輸出為(N, 50,22),其中N代表輸入數(shù)據(jù)的批次,是一個由20行20列組成的矩陣;50代表經(jīng)過裁剪和補齊的行數(shù),即每一個txt里有50個API。22代表API編碼化后的平均列數(shù),即每一個API編碼化后的向量長度為22。

      2.2 1D-CNN-Densenet模型

      2.2.1 模型設計

      本文設計了一種融合一維卷積和稠密結(jié)構(gòu)的模型:1D-CNN-Densenet模型,此模型包含了兩部分:一維卷積和稠密結(jié)構(gòu),橫向進行一維卷積計算,縱向構(gòu)建稠密結(jié)構(gòu)網(wǎng)絡,每一層的輸入都是前面所有層輸出的相加。本文采用的基于深度學習的惡意代碼檢測程序能夠自主學習惡意代碼的深度特征,對測試集的惡意代碼樣本進行分類。

      (1)一維卷積網(wǎng)絡

      一維卷積在單方向上滑動窗口并相乘求和,常用于序列模型、自然語言處理領域,對本文惡意代碼序列預處理后的數(shù)據(jù)處理效果較好。將處理過的惡意代碼API序列向量表示為矩陣,輸入到模型中,如圖2對矩陣橫向做一維卷積,一個n×m的矩陣經(jīng)一維卷積計算為n×1的矩陣,惡意代碼特征數(shù)據(jù)在卷積層進行學習和訓練,同時數(shù)據(jù)經(jīng)轉(zhuǎn)置為(N,1,n)。

      圖2 一維卷積網(wǎng)絡

      (2)稠密結(jié)構(gòu)

      卷積層的加深可以提高分類模型準確性,但隨著卷積層增多、計算量增加,梯度消失等問題隨之而來,準確率反而會受到影響,因此引入跳躍連接嵌套稠密卷積網(wǎng)絡的稠密結(jié)構(gòu),稠密網(wǎng)絡[25]的結(jié)構(gòu)每個層都會接受其前面所有層作為其額外的輸入,能很好地學習惡意代碼更深層次的特征如式(1),通過加深網(wǎng)絡層數(shù)提高分類準確性的同時,跳躍連接[26]即式(2)對于解決梯度消失、改善梯度反向傳播、加快訓練過程效果較好。

      xl=Hl([x0,x1,…,xl-1])

      (1)

      y=H(x,WH)+X

      (2)

      以上的優(yōu)點融合有效地提高了分類檢測的準確性。一維稠密網(wǎng)絡的輸入(1,n),特征通過包含17層卷積層和1層全連接層的18層稠密結(jié)構(gòu)網(wǎng)絡,稠密結(jié)構(gòu)的稠密塊使用跳躍連接使得網(wǎng)絡層數(shù)加深也不會出現(xiàn)梯度消失問題,卷積層能夠向更深發(fā)展,提取和學習更深層次的特征,提高惡意代碼檢測的準確性,1D-CNN-Densenet的稠密結(jié)構(gòu)及其內(nèi)部的卷積塊如圖3所示。

      圖3 稠密結(jié)構(gòu)

      2.2.2 模型優(yōu)化及訓練

      本文設計的1D-CNN-Densenet模型在選取激活函數(shù)時考慮到ReLU函數(shù)可以增加神經(jīng)網(wǎng)絡模型的非線性,提升分類的準確性。且該激活函數(shù)計算簡便,沒有復雜運算,消耗資源少,收斂速度快,提高檢測效率,于是選取此函數(shù)作為激活函數(shù)。ReLU函數(shù)契合神經(jīng)網(wǎng)絡激活機制,貼近深度學習模型,能更好地挖掘惡意代碼特征,擬合訓練數(shù)據(jù),取得更好的效果,公式如(3)。

      ReLU(x)=max(0,x)

      (3)

      神經(jīng)網(wǎng)絡模型參數(shù)的優(yōu)化需要優(yōu)化器來調(diào)整,模型學習和訓練參數(shù)在優(yōu)化器的優(yōu)化下得到更新,這充分地挖掘模型的潛力,使分類檢測取得更好的效果。本文為了提升模型的準確性,通過對超參數(shù)進行對比實驗選擇Adam優(yōu)化器[27]優(yōu)化模型參數(shù)。該優(yōu)化器可對學習率的動態(tài)調(diào)整且實現(xiàn)簡單,計算效率卻很高。Adam優(yōu)化器每次迭代的學習率都有確定范圍,因此參數(shù)比較平穩(wěn),不需要調(diào)整,對大批量數(shù)據(jù)的優(yōu)化優(yōu)勢明顯。

      根據(jù)訓練模型的經(jīng)驗,本文采用的稠密結(jié)構(gòu)包含了17個卷積層和1個全連接層。每個卷積層的各單元之間共享訓練參數(shù)。使用dropout避免過擬合問題[28],dropout設置為0.7,為了更好地估計模型在新數(shù)據(jù)集上的錯誤率,采用十折交叉法驗證線性核函數(shù)的分類準確率,每次留一份數(shù)據(jù)作為測試集,其余數(shù)據(jù)用于訓練模型。模型的參數(shù)對于大批量的惡意代碼檢測能發(fā)揮其優(yōu)越性。

      3 實驗結(jié)果與分析

      3.1 數(shù)據(jù)集

      實驗數(shù)據(jù)中Windows平臺惡意代碼樣本的收集使用網(wǎng)站http:∥virusshare.com[29]以及http:∥www.malware-traffic-analysis.net[30],正常樣本的收集是Windows操作系統(tǒng)中的正常應用程序,且經(jīng)VirusTotal[31]檢測掃描確認無惡意。將分類錯誤的惡意樣本和正確樣本剔除,以保證樣本的純凈。實驗數(shù)據(jù)通過在虛擬環(huán)境Cuckoo Sandbox中模擬運行正常和惡意的樣本,獲取分析報告,提取其API調(diào)用序列。為保證正負樣本比例近似為1∶1,惡意樣本取5 000,正常樣本取4 975,其中70%的樣本用于模型訓練,30%的樣本用于測試,篩選后的數(shù)據(jù)集樣本分布如表1所示。

      表1 數(shù)據(jù)集樣本分布

      3.2 實驗環(huán)境

      本實驗環(huán)境為Ubuntu 16.04 LTS,依托編程語言Python實現(xiàn),運行環(huán)境為PyCharm,算法的實現(xiàn)由TensorFlow深度學習框架完成。其中Cuckoo Sandbox提取API序列運行環(huán)境為Ubuntu 16.10,虛擬機環(huán)境為Windows 7。

      3.3 評價指標

      為分析該模型的惡意代碼檢測效果,本實驗使用以下評價指標來評價模型的效果:準確率(accuracy)、精確率(precision)、召回率(recall)。

      本實驗解決樣本基于深度學習模型的二分類問題,因此實驗結(jié)果會出現(xiàn)以下4種情況:

      TP:正常樣本被算法分類為正常樣本;

      TN:惡意樣本被算法分類為惡意樣本;

      FP:惡意樣本被算法分類為正常樣本;

      FN:正常樣本被算法分類為惡意樣本。

      其混淆矩陣如表2:

      表2 混淆矩陣

      準確率是指輸入到所設計的分類模型中所有數(shù)據(jù)中分類正確的數(shù)據(jù)個數(shù):

      (4)

      精確率是指輸入到所設計的分類模型中分類為正常樣本的數(shù)據(jù)個數(shù)中分類正確的數(shù)據(jù)個數(shù):

      (5)

      召回率是指輸入到所設計的分類模型中真實為正常樣本的數(shù)據(jù)個數(shù)中分類正確的數(shù)據(jù)個數(shù):

      (6)

      3.4 實驗結(jié)果與分析

      為評估設計的模型對惡意代碼檢測任務的有效性以及所提出的設計和設置的影響,包括API序列預處理方法、超參數(shù)設置以及評估所提出模型的性能。

      首先,為在數(shù)據(jù)預處理階段選取更好的網(wǎng)絡輸入矩陣進行預實驗,以此決定編碼后的每個程序中API的個數(shù),以評估所提出的數(shù)據(jù)預處理的效果。經(jīng)統(tǒng)計,每個程序API個數(shù)的平均值為50,去重后的API個數(shù)最大為156。預實驗階段,取不同的API數(shù)據(jù)長度進行實驗,分別取30、50、70、90、120、150,通過準確性評估訓練后的模型。結(jié)果如圖4。

      圖4 API個數(shù)取值對準確率的影響

      由圖4可知,當API的個數(shù)取到50及以上實驗結(jié)果趨于平緩,且API個數(shù)為50時預實驗效果最好,這表明當每一個程序里的API個數(shù)取到50時,模型能學習到更多的特征,可以有效地提高此模型的性能,同時保證了模型效率。因此,在以下所有實驗選取50個API個數(shù)作為模型輸入。

      進行實驗以選擇模型的超參數(shù)值,控制其他變量,通過準確率、每個epoch的用時來評估不同的設置,其中對于重要性較低的超參數(shù)不做討論,結(jié)果如表3所示。

      表3 不同超參數(shù)的影響

      作為深度學習模型中的重要超參數(shù)之一,學習率(lr)對目標函數(shù)收斂到最小值起決定作用。合適時間收斂到局部最小值是選取學習率的標準。如表3所示,當lr取0.001時模型收斂到局部最小值的時間和準確率最佳。batch_size表示模型模塊能夠接受作為輸入的長度,序列越長,分裂越少,但訓練成本卻會增加。如表3所示,尺寸增大至128效果最好。在優(yōu)化器的選擇上Adam的效果和效率均比SGD要高。

      為驗證本文所提1D-CNN-Densenet模型對于惡意代碼檢測的有效性,本文還進行了不同模型的對比實驗,選取SVM、DT、RF 3種傳統(tǒng)的基于機器學習的惡意代碼檢測方法,CNN、LSTM、LSTM- ATT、Ghostnet 4種深度學習算法的惡意代碼檢測方法在不改變運行環(huán)境的基礎上,使用同樣的數(shù)據(jù)集對它們進行控制變量的對比試驗,實驗所得的結(jié)果如表4所示。

      表4 不同模型對模型的評價

      上表列出上述模型的檢測準確率、精確率和召回率。模型1~3是基于傳統(tǒng)機器學習算法對文本特征進行分類,模型4~7是基于現(xiàn)有熱門的深度學習算法對文本輸入進行分類的,通過兩組模型對比可以得出結(jié)論,在機器學習算法中隨機森林在3種評價指標中的結(jié)果較穩(wěn)定,但召回率較低,在現(xiàn)有的熱門深度學習算法中添加注意力機制的LSTM模型和Ghostnet模型在3種評價指標中的結(jié)果較穩(wěn)定,但同樣召回率較低,同時可知當使用API調(diào)用序列作為文本特征輸入時,深度學習模型的性能優(yōu)于傳統(tǒng)的機器學習模型。模型8結(jié)果與模型4~7的對比表明了本文設計的模型帶來了可觀的性能改進。從以上結(jié)果可以得出結(jié)論,1D-CNN-Densenet模型具有最高的準確率、精確率、召回率,因此其性能優(yōu)于表中的其他模型。

      4 結(jié)語

      本文針對依賴于循環(huán)神經(jīng)網(wǎng)絡的基于API調(diào)用序列進行惡意代碼檢測存在按序處理長數(shù)據(jù)性能低、消耗時間長,影響檢測效果等問題,提出了一種基于API序列和卷積神經(jīng)網(wǎng)絡的惡意代碼檢測方法,設計了基于1D-CNN-Densenet的網(wǎng)絡模型,通過沙箱動態(tài)提取的惡意代碼特征,編碼處理動態(tài)API調(diào)用序列,輸入到基于1D-CNN-Densenet的網(wǎng)絡模型,學習惡意代碼更深層次的特征,從而進行模型的訓練和測試。從實驗結(jié)果可知,對比傳統(tǒng)的神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡和圖像分類網(wǎng)絡等,在相同惡意代碼數(shù)據(jù)集情況下,1D-CNN-Densenet模型在惡意代碼檢測方面有更高的準確率和效率,性能更好。

      猜你喜歡
      調(diào)用個數(shù)卷積
      基于3D-Winograd的快速卷積算法設計及FPGA實現(xiàn)
      怎樣數(shù)出小正方體的個數(shù)
      核電項目物項調(diào)用管理的應用研究
      等腰三角形個數(shù)探索
      怎樣數(shù)出小木塊的個數(shù)
      從濾波器理解卷積
      電子制作(2019年11期)2019-07-04 00:34:38
      LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
      測控技術(2018年5期)2018-12-09 09:04:46
      怎樣數(shù)出小正方體的個數(shù)
      基于傅里葉域卷積表示的目標跟蹤算法
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
      运城市| 富锦市| 冕宁县| 山西省| 龙口市| 马尔康县| 云浮市| 遂川县| 浏阳市| 苍溪县| 富民县| 贵南县| 庄浪县| 中西区| 沁水县| 凤城市| 衡南县| 钦州市| 汉源县| 错那县| 迭部县| 治多县| 寿宁县| 绥滨县| 彩票| 绥江县| 大渡口区| 中山市| 宿州市| 安国市| 萨迦县| 株洲县| 通州市| 离岛区| 乐山市| 沭阳县| 印江| 郧西县| 敦煌市| 深水埗区| 崇阳县|