梁 鶴,李 鑫,尹南南,李 超
1.中國人民公安大學(xué)信息網(wǎng)絡(luò)安全學(xué)院,北京100038
2.公安部第一研究所,北京100048
近年來,高級持續(xù)性威脅(advanced persistent threat,APT)引起了人們的廣泛關(guān)注[1]。攻擊者利用目標(biāo)系統(tǒng)的漏洞,使用各種方法和工具為特定目標(biāo)(政府、金融機(jī)構(gòu)或大公司)編排設(shè)計(jì)APT 攻擊,如Stuxnet[2]。APT 攻擊的特點(diǎn)是明確的目的性、入侵方法的多樣性、長而隱蔽的持續(xù)性以及對目標(biāo)系統(tǒng)的嚴(yán)重破壞性。攻擊者擁有雄厚的資金實(shí)力和豐富的資源,入侵之前先通過社會(huì)工程等技術(shù)盡可能多地收集目標(biāo)信息,然后,通過零日攻擊、水坑攻擊、惡意郵件等方式,定向侵入目標(biāo)系統(tǒng)并長期潛伏,隱藏惡意活動(dòng)的同時(shí)持續(xù)提升權(quán)限,直到能夠竊取機(jī)密數(shù)據(jù),達(dá)到把機(jī)密數(shù)據(jù)傳輸?shù)教囟ǖ耐獠糠?wù)器的目的[3]。
目前,研究人員試圖利用網(wǎng)絡(luò)流量或安全日志信息挖掘隱藏的異常行為來發(fā)現(xiàn)APT 攻擊的痕跡[4-5]。然而由于安全性和隱私性的要求,普通研究人員很難獲得網(wǎng)絡(luò)流量或安全日志信息。還有研究使用基于自己構(gòu)建和開發(fā)的實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行檢測[6-7]。這導(dǎo)致了實(shí)驗(yàn)數(shù)據(jù)和實(shí)際監(jiān)測數(shù)據(jù)之間的不匹配,在研究和實(shí)驗(yàn)中,可以產(chǎn)生良好的結(jié)果,當(dāng)應(yīng)用于實(shí)際監(jiān)測模型時(shí),并沒有產(chǎn)生預(yù)期的結(jié)果[8]。因此,需要探索其他方式開展APT攻擊研究。與傳統(tǒng)網(wǎng)絡(luò)攻擊類似,APT攻擊者需要利用惡意軟件發(fā)動(dòng)網(wǎng)絡(luò)攻擊。因此,分析APT攻擊中部署的惡意軟件,為開展APT攻擊研究提供了一種可行方法。
APT 惡意軟件是專門為特定目標(biāo)量身定制的惡意軟件,相比傳統(tǒng)惡意軟件更具威脅性。檢測過程中除了檢測出該軟件是具有惡意行為的APT惡意軟件外,檢測出其所屬的APT 組織也同樣具有重要意義。APT 惡意軟件的組織分類能夠指示出惡意軟件的行為類別和執(zhí)行目的,提供其危害程度等信息,有利于跟蹤APT組織的發(fā)展變化,幫助研究人員對APT攻擊溯源并快速評估網(wǎng)絡(luò)空間安全的發(fā)展態(tài)勢。
基于此本文提出了一種基于動(dòng)態(tài)行為和靜態(tài)特征結(jié)合的APT攻擊檢測方法。檢測分為兩個(gè)階段,第一階段對APT惡意軟件進(jìn)行識(shí)別,從APT惡意軟件、傳統(tǒng)惡意軟件和良性軟件中識(shí)別出APT惡意軟件;第二階段對已經(jīng)識(shí)別出的APT惡意軟件進(jìn)行組織分類,最終實(shí)現(xiàn)對APT惡意軟件的識(shí)別和組織分類。
基于本文主題,本章將對學(xué)術(shù)領(lǐng)域和工業(yè)界常用的利用網(wǎng)絡(luò)流量檢測APT攻擊和分析APT攻擊中部署的惡意軟件兩方面對APT攻擊檢測做概括。
研究人員通常從大量網(wǎng)絡(luò)流量中進(jìn)行數(shù)據(jù)挖掘,基于顯式特征或知識(shí)識(shí)別未知的APT 攻擊行為,并預(yù)測APT攻擊。
Shang 等[9]提出了一種檢測未知APT 攻擊的隱藏C&C通道的方法。首先從已知的多類攻擊流中挖掘共享網(wǎng)絡(luò)流特征;然后用合適的分類器來檢測C&C流量;最后在公共數(shù)據(jù)集上進(jìn)行測試。實(shí)驗(yàn)結(jié)果表明,在處理未知惡意網(wǎng)絡(luò)流量時(shí),該方法的F1評分達(dá)到0.968。
Liu 等[10]提出了基于GAN-LSTM 的APT 攻擊檢測方法,基于GAN模擬生成攻擊數(shù)據(jù),為判別模型生成大量攻擊樣本,基于LSTM模型的記憶單元和門結(jié)構(gòu)保證了APT攻擊序列中存在相關(guān)性且時(shí)間間距較大的序列片段之間的特征記憶。
Xuan 等[11]提出了一種基于網(wǎng)絡(luò)流量異常行為的機(jī)器學(xué)習(xí)檢測APT 攻擊的方法,將網(wǎng)絡(luò)流量中APT 攻擊的異常行為定義在域和IP兩個(gè)組件上,然后基于隨機(jī)森林分類算法對這些行為進(jìn)行評估和分類,以總結(jié)APT攻擊的行為。
Li等[12]通過監(jiān)控APT攻擊的目標(biāo)實(shí)體,提出了一種檢測受感染主機(jī)的方法。通過在網(wǎng)絡(luò)級別總結(jié)受感染主機(jī)的行為特征來量化特征向量,并將這些向量作為無監(jiān)督學(xué)習(xí)的輸入,以導(dǎo)出可疑主機(jī)列表。該方法檢測受APT攻擊的主機(jī),準(zhǔn)確率達(dá)到了97.3%。
根據(jù)分析過程中是否運(yùn)行程序,惡意軟件檢測主要分為靜態(tài)分析和動(dòng)態(tài)分析[13]。靜態(tài)分析在不需要執(zhí)行程序的情況下對可執(zhí)行程序進(jìn)行分析,利用特征進(jìn)行學(xué)習(xí),優(yōu)點(diǎn)是無需執(zhí)行開銷[14-15]。而動(dòng)態(tài)分析是把待檢測惡意軟件放入虛擬機(jī)或者沙箱中運(yùn)行,監(jiān)控其是否有相應(yīng)的惡意行為[16-17]。還有研究人員將靜態(tài)分析和動(dòng)態(tài)分析相結(jié)合,進(jìn)行混合分析,充分利用兩種分析技術(shù)的優(yōu)勢[18-19]。
Laurenza 等[20]基于從文件頭、模糊字符串、導(dǎo)入、函數(shù)和目錄獲取的靜態(tài)惡意軟件特征,構(gòu)建了APT惡意軟件分類框架,能夠快速識(shí)別惡意軟件和APT攻擊相關(guān)的惡意軟件,準(zhǔn)確率達(dá)到了96%。
沈元等[21]提出了一種基于深度學(xué)習(xí)的惡意代碼克隆檢測框架,通過反匯編技術(shù)對惡意代碼進(jìn)行靜態(tài)分析,利用其關(guān)鍵函數(shù)調(diào)用圖以及反匯編代碼作為該惡意代碼的特征,然后根據(jù)神經(jīng)網(wǎng)絡(luò)模型對APT組織庫中的惡意代碼進(jìn)行分類,準(zhǔn)確率達(dá)到了95.3%。
Sexton等[22]研究了基于統(tǒng)計(jì)的方法,利用大量入侵目標(biāo)網(wǎng)絡(luò)的惡意軟件家族檢測APT 惡意軟件。該方法根據(jù)程序與已知惡意軟件子程序的相似性對程序進(jìn)行分類,將APT惡意軟件分類為其所屬的APT組織。
Friedberg 等[23]記錄了APT 惡意軟件在沙箱中運(yùn)行時(shí)的動(dòng)態(tài)行為,利用深層神經(jīng)網(wǎng)絡(luò)作為APT惡意軟件的分類器,將提取的動(dòng)態(tài)行為作為分類器的輸入特征。
Han 等[24]提出了一種名為APTMalInsight 的APT 惡意軟件檢測和認(rèn)知框架,他們系統(tǒng)地研究APT 惡意軟件,并提取動(dòng)態(tài)系統(tǒng)調(diào)用信息來描述其行為特征,利用已建立的特征向量,檢測APT惡意軟件并準(zhǔn)確分類到其所屬的APT組織。
基于流量分析的APT 攻擊檢測具有一定的檢測效果,但是由于隱私性和安全性的考慮,研究人員很難獲得網(wǎng)絡(luò)流量,而基于自己模擬構(gòu)建數(shù)據(jù)集的檢測方法在實(shí)驗(yàn)中和現(xiàn)實(shí)檢測時(shí)又很難匹配?;陟o態(tài)分析的方法分析速度快且準(zhǔn)確,但是可執(zhí)行樣本容易受到混淆和加殼的影響,動(dòng)態(tài)分析能夠捕獲待測軟件的行為軌跡,發(fā)現(xiàn)惡意行為,但是無差別地執(zhí)行待檢測樣本會(huì)帶來巨大的時(shí)間和資源開銷。本文對APT 惡意軟件的檢測方法,首先在執(zhí)行速度更快的Noriben 沙箱中運(yùn)行待檢測樣本,提取待檢測樣本的動(dòng)態(tài)行為特征,利用Transformer-Encoder 算法識(shí)別出APT 惡意軟件,再用Python 編程提取APT 惡意軟件的靜態(tài)特征,利用1D-CNN 算法實(shí)現(xiàn)APT惡意軟件的組織分類。本文的主要貢獻(xiàn)如下:
(1)提出了一種基于動(dòng)態(tài)行為和靜態(tài)特征結(jié)合的APT攻擊檢測方法,分兩個(gè)階段實(shí)現(xiàn)檢測過程。
(2)搭建Noriben 沙箱,提取待檢測軟件的進(jìn)程行為、注冊表行為、文件行為和網(wǎng)絡(luò)行為特征,并去掉每個(gè)樣本中前后重復(fù)的動(dòng)態(tài)行為;提取APT惡意軟件調(diào)用的DLL和API作為靜態(tài)特征,組合為DLL:API的形式。
(3)將Transformer-Encoder 算法和1D-CNN 算法引入APT惡意軟件檢測領(lǐng)域,對比了其他熱門的深度學(xué)習(xí)算法和機(jī)器學(xué)習(xí)算法,實(shí)驗(yàn)結(jié)果證明了本文檢測模型的效率和提取特征的分類能力。
(4)利用本文檢測方案檢測了未知類型的軟件,檢測結(jié)果良好,證明文本方法具有較強(qiáng)的泛化能力。
2.1.1 動(dòng)態(tài)行為特征提取
惡意軟件在感染主機(jī)的過程中會(huì)有一系列行為操作,以Wannacry[25]蠕蟲病毒惡意軟件為例,其主程序釋放惡意軟件的可執(zhí)行文件后,會(huì)先更改系統(tǒng)注冊表注冊本地服務(wù),之后向內(nèi)網(wǎng)探測和移動(dòng),對認(rèn)為有價(jià)值的文件執(zhí)行加密操作,然后刪除原文件,最后強(qiáng)制重啟電腦顯示出勒索窗口。軟件的動(dòng)態(tài)行為可以表現(xiàn)軟件執(zhí)行的目的,不同類型軟件的動(dòng)態(tài)行為及其執(zhí)行順序差異很大,可以用來識(shí)別惡意軟件的惡意性。
本文在動(dòng)態(tài)特征提取過程中采用了Noriben沙箱環(huán)境,Noriben是一個(gè)基于python的開源項(xiàng)目(https://github.com/Rurik/Noriben),可直接下載搭建。Noriben 沙箱是對軟件procmon.exe的簡單改造,把它部署在虛擬機(jī)后,可以方便地對虛擬機(jī)內(nèi)某一特定軟件進(jìn)行監(jiān)控,并且將客戶機(jī)信息實(shí)時(shí)反饋給主機(jī)。如圖1是Noriben沙箱的工作流程。
圖1 Noriben沙箱工作流程圖Fig.1 Noriben sandbox workflow diagram
首先由主機(jī)恢復(fù)客戶機(jī)的快照,使其回到檢測的最佳狀態(tài),然后操作虛擬機(jī)軟件打開客戶機(jī),將待檢測的目標(biāo)程序復(fù)制進(jìn)客戶機(jī)的對應(yīng)目錄,運(yùn)行起客戶機(jī)內(nèi)的procmon.exe 軟件,然后由主機(jī)記錄下客戶機(jī)內(nèi)目標(biāo)程序的動(dòng)態(tài)行為信息,生成CSV表格以便后續(xù)分析。
動(dòng)態(tài)行為特征提取時(shí),每個(gè)樣本在沙箱中運(yùn)行1 min,Noriben沙箱對應(yīng)生成csv表格,使用Python腳本提取表格中的動(dòng)態(tài)行為序列。這些動(dòng)態(tài)行為包括4種:進(jìn)程行為、文件行為、注冊表行為和網(wǎng)絡(luò)行為,一共提取了1 928種動(dòng)態(tài)行為特征。在Noriben沙箱測試過程中,待測軟件會(huì)因?yàn)楦鞣N原因反復(fù)執(zhí)行特定的行為,這些行為有些是正常的,有些則是在非預(yù)期條件下的重復(fù)行為。為了消除這些重復(fù)行為對數(shù)據(jù)集的影響,且在不影響實(shí)驗(yàn)精度的情況下提高運(yùn)行速度,刪除了每個(gè)樣本前后重復(fù)的行為特征。
算法1 動(dòng)態(tài)行為特征去重
動(dòng)態(tài)行為提取流程如圖2所示,其中數(shù)據(jù)預(yù)處理過程如圖3所示。
圖2 動(dòng)態(tài)行為提取流程圖Fig.2 Flow chart of dynamic behavior extraction
圖3 動(dòng)態(tài)行為數(shù)據(jù)預(yù)處理流程圖Fig.3 Flow chart of dynamic behavior data preprocessing
2.1.2 靜態(tài)特征提取
之前的文章[26]提取了入口點(diǎn)、DLL、資源語言,節(jié)數(shù)和資源種類數(shù)作為靜態(tài)特征,5種特征融合后對于APT組織分類的準(zhǔn)確率為93.7%,其中貢獻(xiàn)率最高的特征為DLL,其作為單一特征進(jìn)行分類就有83.0%的準(zhǔn)確率。在每個(gè)APT 惡意軟件被調(diào)用的DLL 目錄下,包含多種API,之前的研究也證明了API 作為靜態(tài)特征的分類能力[27-28],因此本文提取了DLL 和API 兩種特征??紤]到DLL 和API 一對多的映射關(guān)系,把兩種特征組合成了DLL:API 的形式。靜態(tài)特征的提取流程如圖4 所示。表1為提取的某個(gè)APT樣本的DLL及其目錄下的API。需要將數(shù)據(jù)編碼形成神經(jīng)網(wǎng)絡(luò)可以處理的形式,若待測樣本的特征集包含此類特征,用1 表示,否則用0 表示。最后將APT組織映射為整數(shù)標(biāo)簽,預(yù)處理之后的向量表如表2所示。
表1 某APT樣本的DLL及其目錄下的APITable 1 DLL of APT sample and API in its directory
表2 DLL:API特征向量表Table 2 DLL:API eigenvector table
圖4 靜態(tài)特征提取流程圖Fig.4 Flow chart of static feature extraction
算法2 提取APT惡意軟件的DLL和API并組合為DLL:API的形式
輸入:所有APT惡意軟件樣本的路徑SampleList。
近幾年深度學(xué)習(xí)技術(shù)在網(wǎng)絡(luò)安全領(lǐng)域蓬勃發(fā)展,許多研究也證明了其在代碼分析方面的有用性,應(yīng)用在惡意軟件的惡意性識(shí)別和家族分類上取得了不錯(cuò)的效果[19,23-24,26-27]。下面將介紹本文模型兩個(gè)階段使用的深度學(xué)習(xí)算法。
2.2.1 Transformer-Encoder
Vaswani等[29]在2017年改進(jìn)了seq2seq模型,拋棄了傳統(tǒng)的RNN結(jié)構(gòu),設(shè)計(jì)了一種多頭注意力機(jī)制,通過堆疊編碼-解碼(encoder-decoder)結(jié)構(gòu),得到了Transformer模型。Transformer算法廣泛應(yīng)用在自然語言處理(NLP)領(lǐng)域,并取得了開創(chuàng)性的效果。本文提取的待檢測軟件的動(dòng)態(tài)行為特征是較長的序列數(shù)據(jù),Transformer算法的結(jié)構(gòu)天然適合處理此類數(shù)據(jù)。對于APT 惡意軟件的識(shí)別,本質(zhì)上屬于三分類任務(wù),因此本文只關(guān)注Transformer算法的編碼(Encoder)部分,如圖5 所示,本文N取6。編碼部分由兩個(gè)重要的模塊組成,多頭注意力和前饋網(wǎng)絡(luò)(feedforward network,F(xiàn)FN)。多頭注意力機(jī)制相當(dāng)于多個(gè)自注意力機(jī)制合并,F(xiàn)FN 提供非線性變換,這兩個(gè)模塊之后都進(jìn)行殘差連接和層標(biāo)準(zhǔn)化。
圖5 Transformer-Encoder結(jié)構(gòu)圖Fig.5 Transformer-Encoder structure diagram
位置嵌入:不采用CNN 和RNN 結(jié)構(gòu),無法充分利用序列的位置信息,Transformer采用基于頻率變化的位置編碼解決這個(gè)問題。第n個(gè)單詞的位置嵌入計(jì)算公式,如式(1)、(2):
其中,PE代表位置嵌入,提供每個(gè)時(shí)刻的位置信息,n代表輸入序列的第n個(gè)單詞,d表示輸入的詞向量的維度,2i和2i+1 分別表示屬于奇數(shù)維和偶數(shù)維(2i 多頭注意力:縮放點(diǎn)積注意力是多頭注意力的核心,其使用點(diǎn)積進(jìn)行相似度計(jì)算的方法相比一般的注意力,會(huì)更快更節(jié)省空間。輸入矩陣經(jīng)過線性變換之后得到查詢矩Q、鍵值矩陣K和數(shù)值矩陣V,三者都是向量組成的二維矩陣,作為縮放點(diǎn)積注意力的輸入,如式(3): Q和K矩陣經(jīng)過點(diǎn)積操作之后,除以尺度標(biāo)度來進(jìn)行縮放,目的是避免矩陣內(nèi)積過大而造成經(jīng)過softmax函數(shù)后的結(jié)果太逼近0或1,影響最終概率的計(jì)算。經(jīng)過softmax層歸一化后,得到自注意力的得分值,再與矩陣V進(jìn)行點(diǎn)積操作,最終得到自注意力的輸出。其中dk是矩陣QK的列數(shù),即向量的維度??s放點(diǎn)積注意力計(jì)算出每個(gè)詞和各個(gè)詞之間的注意力,賦予每個(gè)詞全局語義信息。 上述過程重復(fù)h次即為多頭注意力,如式(4),但是要注意不同層的權(quán)重矩陣參數(shù)是不同的。Wq、Wk和Wv為計(jì)算時(shí)的權(quán)重參數(shù)矩陣,其中Wq∈Rdm×dk,Wk∈Rdm×dk,Wv∈Rdm×dv,dm是模型的維度,dk、dv分別是權(quán)重矩陣的維度,默認(rèn)(dm=dk=dv)/h,Wi是一個(gè)向量,為權(quán)重參數(shù)矩陣的第i個(gè)維度,最后將并行計(jì)算后的結(jié)果進(jìn)行拼接,即Concat操作,如式(5),WC是拼接層的權(quán)重系數(shù)。 前饋網(wǎng)絡(luò):多頭注意力的輸出會(huì)經(jīng)過一個(gè)全連接網(wǎng)絡(luò)FFN,它包含兩個(gè)線性變換和一個(gè)激活函數(shù)ReLU,這層網(wǎng)絡(luò)結(jié)構(gòu)可以提高模型的非線性變換能力,計(jì)算公式如下: 其中,W1,W2∈Rdm×df為可學(xué)習(xí)參數(shù)矩陣,df =1 024 是一個(gè)超參數(shù),為中間層維度,b1∈Rdf、b2∈Rd,都為可學(xué)習(xí)向量,x為輸入。 2.2.2 1D-CNN 1D-CNN常應(yīng)用于自然語言處理領(lǐng)域,在處理短序列時(shí)甚至比機(jī)器學(xué)習(xí)算法更有成效,它能很好地識(shí)別出數(shù)據(jù)中的簡單模式,然后在后續(xù)更加高級的層中生成更復(fù)雜的模式。1D-CNN之所以稱為一維,是因?yàn)樗木矸e核沿著一個(gè)方向移動(dòng),從輸入序列中按照一定大小的窗口長度提取局部一維序列段,然后與一個(gè)權(quán)重做點(diǎn)積計(jì)算,輸出結(jié)果為新序列上的一部分。 本文使用的1D-CNN 結(jié)構(gòu)圖如圖6 所示。輸入的每個(gè)待檢測樣本的文本序列需要經(jīng)過三個(gè)卷積層、三個(gè)池化層和三個(gè)全連接層,每個(gè)卷積層后面有一個(gè)ReLU激活函數(shù)并對應(yīng)一個(gè)池化層,最終通過softmax分類層實(shí)現(xiàn)多分類任務(wù)。 圖6 1D-CNN結(jié)構(gòu)圖Fig.6 1D-CNN structure diagram 1D-CNN模型的計(jì)算公式如下: Zi表示第i層的特征向量,Wi表示第i層卷積核的權(quán)重矩陣,bi表示第i層卷積核的偏重向量,?表示卷積運(yùn)算符,f表示激活函數(shù)。 ReLU激活函數(shù)計(jì)算公式如下: 本文的模型流程圖如圖7所示。 圖7 本文檢測模型圖Fig.7 Proposed detection model diagram 第一階段進(jìn)行APT惡意軟件的識(shí)別,首先用Noriben沙箱提取待檢測軟件的動(dòng)態(tài)行為特征,預(yù)處理后形成可以用深度學(xué)習(xí)模型處理的特征集,用Transformer-Encoder 算法識(shí)別出APT 惡意軟件;第二階段在第一階段識(shí)別結(jié)果的基礎(chǔ)上進(jìn)行APT惡意軟件的組織分類,用Python編程實(shí)現(xiàn)APT惡意軟件PE頭中DLL和API的提取,預(yù)處理后用1D-CNN算法對APT惡意軟件進(jìn)行組織分類。 實(shí)驗(yàn)的第一階段,本文收集了APT 惡意軟件,傳統(tǒng)惡意軟件和良性軟件三類軟件作為數(shù)據(jù)集,其中APT惡意軟件來源于GitHub(https://github.com/cyber-research/APTMalware),下載了3 594個(gè)可執(zhí)行樣本,傳統(tǒng)惡意軟件來源于VirusShare(https://www.virusshare.com),共有5 980 個(gè)可執(zhí)行樣本,良性軟件為實(shí)驗(yàn)室收集的和在Windows 應(yīng)用商店(https://apps.microsoft.com)爬取的,加起來共有1 100個(gè)可執(zhí)行樣本。刪除了APT惡意軟件中信息不全和樣本數(shù)量過少的組織樣本后,最后三類軟件的數(shù)量比大約為1∶6∶2,數(shù)據(jù)集分布如表3所示。 表3 識(shí)別階段數(shù)據(jù)集分布表Table 3 Identification stage data set distribution table 實(shí)驗(yàn)的第二階段是在第一階段識(shí)別結(jié)果的基礎(chǔ)上,對APT 惡意軟件進(jìn)行組織分類,這里直接使用APT 惡意軟件數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù),數(shù)據(jù)集包含12 個(gè)組織類別,分布情況如表4。 表4 分類階段APT組織及其樣本分布Table 4 APT tissue and its sample distribution in classification stage 兩個(gè)實(shí)驗(yàn)階段的數(shù)據(jù)集均劃分為8∶1∶1的比例,分別為訓(xùn)練集、驗(yàn)證集和測試集,三者沒有任何交叉。訓(xùn)練集只用來訓(xùn)練選擇的神經(jīng)網(wǎng)絡(luò)模型,計(jì)算梯度和損失值。驗(yàn)證集用來驗(yàn)證訓(xùn)練的模型,實(shí)驗(yàn)過程中選擇驗(yàn)證準(zhǔn)確率高且損失值小的模型進(jìn)行保存。測試集對保存的模型進(jìn)行預(yù)測,檢測模型的實(shí)際效果。 本文所用實(shí)驗(yàn)設(shè)備信息如表5所示。 表5 實(shí)驗(yàn)設(shè)備及環(huán)境Table 5 Experimental equipment and environment 本文實(shí)驗(yàn)過程第一個(gè)階段是APT惡意軟件的識(shí)別,實(shí)際上是三分類問題;第二個(gè)階段是APT惡意軟件的組織分類,為多分類問題。為了評估分類算法的性能,選擇用混淆矩陣和損失值表示分類結(jié)果。實(shí)驗(yàn)中所用的性能指標(biāo)如下幾類: 準(zhǔn)確率(Accuracy)表示實(shí)驗(yàn)?zāi)P椭姓_分類的樣本占實(shí)驗(yàn)總樣本的比例,計(jì)算公式為: 精確率,也稱查準(zhǔn)率(Precision),表示模型中正確分類的正例個(gè)數(shù)占分類為正例的實(shí)例個(gè)數(shù)的比例,計(jì)算公式為: 靈敏度,又稱查全率(Recall),表示模型中正確分類的正例個(gè)數(shù)占實(shí)際正例個(gè)數(shù)的比例,計(jì)算公式為: F1-score 是基于Recall 與Precision 的調(diào)和平均,即將查全率和查準(zhǔn)率綜合起來評價(jià),綜合判斷分類模型對于某類樣本的預(yù)測能力,計(jì)算公式為: 其中,TP表示正確預(yù)測到的正例的數(shù)量,F(xiàn)P表示把負(fù)例預(yù)測成正例的數(shù)量,F(xiàn)N表示把正例預(yù)測成負(fù)例的數(shù)量,TN表示正確預(yù)測到的負(fù)例的數(shù)量,n代表軟件類別或APT組織數(shù)。 3.4.1 APT惡意軟件的識(shí)別結(jié)果分析 經(jīng)實(shí)驗(yàn)本文所用的Transformer-Encoder 算法的最優(yōu)參數(shù)設(shè)置為:batchsize 取32,6 個(gè)Encoder 結(jié)構(gòu)堆疊,多頭注意力選擇8個(gè)頭,優(yōu)化函數(shù)選擇Adam,訓(xùn)練500輪。 為了驗(yàn)證所提方法的有效性,實(shí)驗(yàn)第一階段的方法與主流的深度學(xué)習(xí)算法BiLSTM、GRU、LSTM和機(jī)器學(xué)習(xí)算法隨機(jī)森林(RF)、決策樹(DT)、GBDT、XGboost算法做了全面對比。表6 為本文與其他三種深度學(xué)習(xí)算法的實(shí)驗(yàn)結(jié)果,可以看出Transformer-Encoder算法對比LSTM、BiLSTM和GRU優(yōu)勢明顯,準(zhǔn)確率達(dá)到了95.8%,比第二高的GRU高了2.8個(gè)百分點(diǎn)。 表6 Transformer-Encoder與主流深度學(xué)習(xí)算法實(shí)驗(yàn)結(jié)果Table 6 Experimental results of Transformer-Encoder and mainstream deep learning algorithms 圖8為四種算法模型的訓(xùn)練損失值曲線圖,代表四種算法模型在訓(xùn)練數(shù)據(jù)集過程中的損失值變化。損失值是衡量預(yù)測值和實(shí)際值相似程度的指標(biāo),根據(jù)圖8,四種算法模型的損失值隨著epoch 的增大逐漸降低,當(dāng)epoch 的值到達(dá)2 000 后,損失值趨于穩(wěn)定,達(dá)到收斂狀態(tài),其中Transformer-Encoder 算法的損失值最低,即預(yù)測結(jié)果與實(shí)際值最為相似,實(shí)驗(yàn)效果最好。圖9為訓(xùn)練準(zhǔn)確率曲線圖,代表四種算法模型在設(shè)置的實(shí)驗(yàn)輪次內(nèi)的實(shí)驗(yàn)準(zhǔn)確率變化,隨著epoch的增加,四種算法模型訓(xùn)練準(zhǔn)確率先增大,epoch在到達(dá)2 000后逐漸趨于穩(wěn)定。 圖8 四種深度學(xué)習(xí)算法的損失值變化Fig.8 Loss value variation of four deep learning algorithms 圖9 四種深度學(xué)習(xí)算法的訓(xùn)練準(zhǔn)確率變化Fig.9 Changes in training accuracy of four deep learning algorithms 圖10和圖11為驗(yàn)證準(zhǔn)確率曲線圖和最大驗(yàn)證準(zhǔn)確率曲線圖,前者表示在每一輪訓(xùn)練中使用驗(yàn)證集驗(yàn)證的準(zhǔn)確率變化曲線,由圖10 可知,在前幾個(gè)epoch 時(shí),Transformer-Encoder 算法便迅速趨于穩(wěn)定,明顯高于其他算法模型,且驗(yàn)證準(zhǔn)確率的曲線(紅色曲線)對比圖9而言,高度近乎一致,即結(jié)果沒有過擬合,驗(yàn)證效果較好。而后者是取每輪的最大驗(yàn)證集,即最優(yōu)訓(xùn)練結(jié)果,是從圖10中取得的每輪的最好結(jié)果,Transformer-Encoder算法的收斂速度最快,因此曲線最早變得平滑。通過這四張圖可以直觀地看出Transformer-Encoder 算法在本文實(shí)驗(yàn)第一階段識(shí)別APT 惡意軟件上,對比其他三種算法,效果有明顯的提升。 圖10 四種深度學(xué)習(xí)算法的驗(yàn)證準(zhǔn)確率變化Fig.10 Change of verification accuracy of four deep learning algorithms 圖11 四種深度學(xué)習(xí)算法的最大驗(yàn)證準(zhǔn)確率變化Fig.11 Maximum verification accuracy change of four deep learning algorithms 表7為本文模型與幾種常用的機(jī)器學(xué)習(xí)算法模型的實(shí)驗(yàn)結(jié)果,可以看出Transformer-Encoder算法比機(jī)器學(xué)習(xí)算法效果更好。隨機(jī)森林在實(shí)驗(yàn)中也取得了較好的效果,是因?yàn)槠浣Y(jié)構(gòu)上的優(yōu)勢,采用多個(gè)決策樹共同決策,擅長處理高維特征,因此也取得了較好的實(shí)驗(yàn)效果。為了直觀觀察實(shí)驗(yàn)結(jié)果,將幾種深度學(xué)習(xí)算法和機(jī)器學(xué)習(xí)算法的實(shí)驗(yàn)結(jié)果形成折線圖如圖12所示,Transformer-Encoder算法實(shí)驗(yàn)結(jié)果各項(xiàng)指標(biāo)都最高,其中RF、GRU、GBDT和XGBoost的各項(xiàng)指標(biāo)也都達(dá)到了90%以上。 表7 Transformer-Encoder與常用機(jī)器學(xué)習(xí)算法實(shí)驗(yàn)結(jié)果Table 7 Experimental results of Transformer-Encoder and common machine learning algorithms 圖12 識(shí)別階段本文與其他算法模型的實(shí)驗(yàn)結(jié)果對比Fig.12 Comparison of experimental results between proposed and other algorithm models in recognition stage 3.4.2 APT惡意軟件的組織分類結(jié)果分析 經(jīng)實(shí)驗(yàn)所用的1D-CNN 算法的最優(yōu)參數(shù)設(shè)置為3個(gè)卷積層,每個(gè)卷積層有3個(gè)卷積核、3個(gè)池化層、3個(gè)全連接層,步長為2,batchsize 取32,優(yōu)化函數(shù)用Adam,激活函數(shù)用Relu,訓(xùn)練500輪。 實(shí)驗(yàn)第二階段的方法同樣與3.4.1小節(jié)一樣同其他幾種算法做全面對比,實(shí)驗(yàn)過程中發(fā)現(xiàn)BiLSTM、GRU和LSTM算法效果不佳,因此重點(diǎn)與機(jī)器學(xué)習(xí)算法作對比。表8為1D-CNN與RF、DT、GBDT、XGBoost算法的實(shí)驗(yàn)結(jié)果,圖13 為1D-CNN 實(shí)驗(yàn)結(jié)果的混淆矩陣圖。為了直觀觀察實(shí)驗(yàn)結(jié)果,把幾種評價(jià)指標(biāo)數(shù)據(jù)形成折線圖如圖14 所示,可知1D-CNN 在APT 組織分類的實(shí)驗(yàn)中取得了98.7%分類準(zhǔn)確率,對比其他機(jī)器學(xué)習(xí)算法效果有很大提升。 表8 1D-CNN與常用機(jī)器學(xué)習(xí)算法的實(shí)驗(yàn)結(jié)果Table 8 Experimental results of 1D-CNN and common machine learning algorithms 圖13 1D-CNN實(shí)驗(yàn)結(jié)果混淆矩陣Fig.13 Confusion matrix of 1D-CNN experimental results 圖14 分類階段本文與其他算法的實(shí)驗(yàn)結(jié)果對比Fig.14 Comparison of experimental results between proposed and other algorithms in classification stage 表9為1D-CNN 和其他四種機(jī)器學(xué)習(xí)算法在每個(gè)APT組織的分類準(zhǔn)確率,可以看出1D-CNN分類準(zhǔn)確率很高,有7個(gè)APT組織的分類準(zhǔn)確率都達(dá)到了1,雖然在個(gè)別組織的分類準(zhǔn)確率略低于其他機(jī)器學(xué)習(xí)算法,但是整體效果遠(yuǎn)高于其他算法。 表9 在每個(gè)APT組織的分類準(zhǔn)確率Table 9 Classification accuracy in each APT organization 將1D-CNN 處理DLL:API 特征的方法與近期其他文獻(xiàn)的同類方法做對比,比較結(jié)果如表10所示。文獻(xiàn)[21]以APT 惡意軟件的關(guān)鍵函數(shù)調(diào)用圖和反匯編代碼作為特征,需要提取大約68萬個(gè)自定義函數(shù),數(shù)據(jù)處理量巨大,而且分類準(zhǔn)確率偏低,為95.3%。文獻(xiàn)[26]提取了入口點(diǎn)、DLL、資源語言,節(jié)數(shù)和資源種類數(shù)五種特征,提取的特征種類數(shù)偏多,處理特征更耗時(shí),且分類準(zhǔn)確率偏低,只有93.7%。相比以上方法,本文方法僅僅提取了DLL和API兩種特征,組合為DLL:API的形式,數(shù)據(jù)處理過程更簡單,準(zhǔn)確率也有較大提升,證明了本文所提特征的分類能力,和所用模型的有效性。 表10 同類方法比較Table 10 Comparison of similar methods 本節(jié)實(shí)驗(yàn),利用2.3 節(jié)提出的檢測方案對隨機(jī)收集的未知類型的PC 端軟件進(jìn)行檢測,以檢測其在實(shí)際應(yīng)用中的檢測效果。首先在GitHub上下載APT惡意軟件樣本(https://github.com/Cherishao/APT-Sample),隨機(jī)從中選取1 000 個(gè)不同組織類別的樣本,然后在Windows應(yīng)用商店和各大應(yīng)用市場下載1 000 個(gè)未知類型的軟件,再上傳至VirusTotal(https://www.virustotal.com/)查毒網(wǎng)站進(jìn)行在線分類檢測,可以準(zhǔn)確檢測出所下載軟件是否具有惡意性,其檢測結(jié)果作為本節(jié)實(shí)驗(yàn)的基準(zhǔn)。經(jīng)VirusTotal網(wǎng)站檢測,1 000個(gè)軟件中有263個(gè)惡意軟件,737 個(gè)良性軟件。兩個(gè)試驗(yàn)階段仍然采取3.4.1 小節(jié)和3.4.2小節(jié)所用的深度學(xué)習(xí)模型和機(jī)器學(xué)習(xí)模型所得的結(jié)果進(jìn)行對比。Transformer-Encoder 和其他算法模型識(shí)別未知類型APT惡意軟件的結(jié)果如表11所示。 表11 識(shí)別未知類型APT惡意軟件的結(jié)果Table 11 Results of identifying unknown type APT malware 由表11可知,Transformer-Encoder模型在未知類型的軟件檢測中,相比于其他幾個(gè)算法模型,可較好地識(shí)別出APT 惡意軟件,獲得較高的準(zhǔn)確率和F1 評分。識(shí)別結(jié)果幾乎與3.4.1 小節(jié)的實(shí)驗(yàn)結(jié)果一致,是因?yàn)樽R(shí)別階段為三分類,僅根據(jù)三種類型軟件的動(dòng)態(tài)行為從中識(shí)別出APT 惡意軟件,而APT 惡意軟件的動(dòng)態(tài)行為與惡意軟件和良性軟件區(qū)別較為明顯。 APT 惡意軟件的組織分類結(jié)果如表12 所示,由于BiLSTM、GRU 和LSTM 模型檢測效果不佳,與3.4.2 小節(jié)一樣,這里不再進(jìn)行對比,僅對比1D-CNN模型與RF、DT、GBDT、XGBoost等機(jī)器學(xué)習(xí)算法模型的分類結(jié)果。 表12 對未知類型APT惡意軟件的組織分類結(jié)果Table 12 Organization classification results of unknown type APT malware 由表12可知,對于APT惡意軟件的組織分類,1D-CNN模型和幾種機(jī)器學(xué)習(xí)模型的實(shí)驗(yàn)結(jié)果相比3.4.2小節(jié)略有下降,1D-CNN 模型的分類效果仍然好于其他模型,各項(xiàng)指標(biāo)均高于其他模型。實(shí)驗(yàn)表明,雖然在應(yīng)對未知類型的APT惡意軟件組織分類時(shí)的準(zhǔn)確率略有下降,在未知類型的軟件檢測中,本文所提方案仍然能夠較為準(zhǔn)確地識(shí)別出APT 惡意軟件,并較為準(zhǔn)確地將識(shí)別出的APT惡意軟件進(jìn)行組織分類,切合對APT攻擊檢測的實(shí)際需要。 本文提出了一種綜合的APT攻擊檢測方案,先后實(shí)現(xiàn)對APT惡意軟件的識(shí)別和組織分類。在APT惡意軟件識(shí)別方面采用了動(dòng)態(tài)分析的方法,使用Noriben 沙箱捕獲待測軟件的進(jìn)程行為、文件行為、注冊表行為和網(wǎng)絡(luò)行為,使用Transformer-Encoder算法對APT惡意軟件進(jìn)行識(shí)別,準(zhǔn)確率高達(dá)95.8%,優(yōu)于當(dāng)前流行的BiLSTM、GRU、LSTM 深度學(xué)習(xí)算法和RF、DT、GBDT、XGBoost等機(jī)器學(xué)習(xí)算法。在APT惡意軟件組織分類方面,采用靜態(tài)分析的方法,提取可執(zhí)行文件PE頭的DLL和API,組成DLL:API的形式,用1D-CNN算法取得了98.7%的APT 惡意軟件組織分類準(zhǔn)確率,優(yōu)于RF、DT、GBDT、XGBoost 等機(jī)器學(xué)習(xí)算法,相比之前文章的分類方法,提取了更少的特征,準(zhǔn)確率增加了5個(gè)百分點(diǎn)。實(shí)驗(yàn)證明,本文方法的兩個(gè)實(shí)驗(yàn)階段都有很高的準(zhǔn)確率,在應(yīng)對未知類型軟件時(shí)仍然可以有效識(shí)別出APT惡意軟件并準(zhǔn)確進(jìn)行組織分類。但是本文依舊存在不足之處,雖然Noriben 沙箱運(yùn)行較快,但是仍然會(huì)在實(shí)驗(yàn)前期耗費(fèi)大量時(shí)間,并且本文所用樣本量仍然較少。后續(xù)將優(yōu)化特征提取方式并擴(kuò)大實(shí)驗(yàn)樣本容量。2.3 本文檢測方案
3 實(shí)驗(yàn)
3.1 數(shù)據(jù)集選取
3.2 實(shí)驗(yàn)平臺(tái)配置
3.3 性能指標(biāo)選取
3.4 實(shí)驗(yàn)結(jié)果分析
3.5 未知類型軟件檢測
4 結(jié)束語