梁 鶴,李 鑫,尹南南,李 超
1.中國人民公安大學信息網絡安全學院,北京100038
2.公安部第一研究所,北京100048
近年來,高級持續性威脅(advanced persistent threat,APT)引起了人們的廣泛關注[1]。攻擊者利用目標系統的漏洞,使用各種方法和工具為特定目標(政府、金融機構或大公司)編排設計APT 攻擊,如Stuxnet[2]。APT 攻擊的特點是明確的目的性、入侵方法的多樣性、長而隱蔽的持續性以及對目標系統的嚴重破壞性。攻擊者擁有雄厚的資金實力和豐富的資源,入侵之前先通過社會工程等技術盡可能多地收集目標信息,然后,通過零日攻擊、水坑攻擊、惡意郵件等方式,定向侵入目標系統并長期潛伏,隱藏惡意活動的同時持續提升權限,直到能夠竊取機密數據,達到把機密數據傳輸到特定的外部服務器的目的[3]。
目前,研究人員試圖利用網絡流量或安全日志信息挖掘隱藏的異常行為來發現APT 攻擊的痕跡[4-5]。然而由于安全性和隱私性的要求,普通研究人員很難獲得網絡流量或安全日志信息。還有研究使用基于自己構建和開發的實驗數據集進行檢測[6-7]。這導致了實驗數據和實際監測數據之間的不匹配,在研究和實驗中,可以產生良好的結果,當應用于實際監測模型時,并沒有產生預期的結果[8]。因此,需要探索其他方式開展APT攻擊研究。與傳統網絡攻擊類似,APT攻擊者需要利用惡意軟件發動網絡攻擊。因此,分析APT攻擊中部署的惡意軟件,為開展APT攻擊研究提供了一種可行方法。
APT 惡意軟件是專門為特定目標量身定制的惡意軟件,相比傳統惡意軟件更具威脅性。檢測過程中除了檢測出該軟件是具有惡意行為的APT惡意軟件外,檢測出其所屬的APT 組織也同樣具有重要意義。APT 惡意軟件的組織分類能夠指示出惡意軟件的行為類別和執行目的,提供其危害程度等信息,有利于跟蹤APT組織的發展變化,幫助研究人員對APT攻擊溯源并快速評估網絡空間安全的發展態勢。
基于此本文提出了一種基于動態行為和靜態特征結合的APT攻擊檢測方法。檢測分為兩個階段,第一階段對APT惡意軟件進行識別,從APT惡意軟件、傳統惡意軟件和良性軟件中識別出APT惡意軟件;第二階段對已經識別出的APT惡意軟件進行組織分類,最終實現對APT惡意軟件的識別和組織分類。
基于本文主題,本章將對學術領域和工業界常用的利用網絡流量檢測APT攻擊和分析APT攻擊中部署的惡意軟件兩方面對APT攻擊檢測做概括。
研究人員通常從大量網絡流量中進行數據挖掘,基于顯式特征或知識識別未知的APT 攻擊行為,并預測APT攻擊。
Shang 等[9]提出了一種檢測未知APT 攻擊的隱藏C&C通道的方法。首先從已知的多類攻擊流中挖掘共享網絡流特征;然后用合適的分類器來檢測C&C流量;最后在公共數據集上進行測試。實驗結果表明,在處理未知惡意網絡流量時,該方法的F1評分達到0.968。
Liu 等[10]提出了基于GAN-LSTM 的APT 攻擊檢測方法,基于GAN模擬生成攻擊數據,為判別模型生成大量攻擊樣本,基于LSTM模型的記憶單元和門結構保證了APT攻擊序列中存在相關性且時間間距較大的序列片段之間的特征記憶。
Xuan 等[11]提出了一種基于網絡流量異常行為的機器學習檢測APT 攻擊的方法,將網絡流量中APT 攻擊的異常行為定義在域和IP兩個組件上,然后基于隨機森林分類算法對這些行為進行評估和分類,以總結APT攻擊的行為。
Li等[12]通過監控APT攻擊的目標實體,提出了一種檢測受感染主機的方法。通過在網絡級別總結受感染主機的行為特征來量化特征向量,并將這些向量作為無監督學習的輸入,以導出可疑主機列表。該方法檢測受APT攻擊的主機,準確率達到了97.3%。
根據分析過程中是否運行程序,惡意軟件檢測主要分為靜態分析和動態分析[13]。靜態分析在不需要執行程序的情況下對可執行程序進行分析,利用特征進行學習,優點是無需執行開銷[14-15]。而動態分析是把待檢測惡意軟件放入虛擬機或者沙箱中運行,監控其是否有相應的惡意行為[16-17]。還有研究人員將靜態分析和動態分析相結合,進行混合分析,充分利用兩種分析技術的優勢[18-19]。
Laurenza 等[20]基于從文件頭、模糊字符串、導入、函數和目錄獲取的靜態惡意軟件特征,構建了APT惡意軟件分類框架,能夠快速識別惡意軟件和APT攻擊相關的惡意軟件,準確率達到了96%。
沈元等[21]提出了一種基于深度學習的惡意代碼克隆檢測框架,通過反匯編技術對惡意代碼進行靜態分析,利用其關鍵函數調用圖以及反匯編代碼作為該惡意代碼的特征,然后根據神經網絡模型對APT組織庫中的惡意代碼進行分類,準確率達到了95.3%。
Sexton等[22]研究了基于統計的方法,利用大量入侵目標網絡的惡意軟件家族檢測APT 惡意軟件。該方法根據程序與已知惡意軟件子程序的相似性對程序進行分類,將APT惡意軟件分類為其所屬的APT組織。
Friedberg 等[23]記錄了APT 惡意軟件在沙箱中運行時的動態行為,利用深層神經網絡作為APT惡意軟件的分類器,將提取的動態行為作為分類器的輸入特征。
Han 等[24]提出了一種名為APTMalInsight 的APT 惡意軟件檢測和認知框架,他們系統地研究APT 惡意軟件,并提取動態系統調用信息來描述其行為特征,利用已建立的特征向量,檢測APT惡意軟件并準確分類到其所屬的APT組織。
基于流量分析的APT 攻擊檢測具有一定的檢測效果,但是由于隱私性和安全性的考慮,研究人員很難獲得網絡流量,而基于自己模擬構建數據集的檢測方法在實驗中和現實檢測時又很難匹配。基于靜態分析的方法分析速度快且準確,但是可執行樣本容易受到混淆和加殼的影響,動態分析能夠捕獲待測軟件的行為軌跡,發現惡意行為,但是無差別地執行待檢測樣本會帶來巨大的時間和資源開銷。本文對APT 惡意軟件的檢測方法,首先在執行速度更快的Noriben 沙箱中運行待檢測樣本,提取待檢測樣本的動態行為特征,利用Transformer-Encoder 算法識別出APT 惡意軟件,再用Python 編程提取APT 惡意軟件的靜態特征,利用1D-CNN 算法實現APT惡意軟件的組織分類。本文的主要貢獻如下:
(1)提出了一種基于動態行為和靜態特征結合的APT攻擊檢測方法,分兩個階段實現檢測過程。
(2)搭建Noriben 沙箱,提取待檢測軟件的進程行為、注冊表行為、文件行為和網絡行為特征,并去掉每個樣本中前后重復的動態行為;提取APT惡意軟件調用的DLL和API作為靜態特征,組合為DLL:API的形式。
(3)將Transformer-Encoder 算法和1D-CNN 算法引入APT惡意軟件檢測領域,對比了其他熱門的深度學習算法和機器學習算法,實驗結果證明了本文檢測模型的效率和提取特征的分類能力。
(4)利用本文檢測方案檢測了未知類型的軟件,檢測結果良好,證明文本方法具有較強的泛化能力。
2.1.1 動態行為特征提取
惡意軟件在感染主機的過程中會有一系列行為操作,以Wannacry[25]蠕蟲病毒惡意軟件為例,其主程序釋放惡意軟件的可執行文件后,會先更改系統注冊表注冊本地服務,之后向內網探測和移動,對認為有價值的文件執行加密操作,然后刪除原文件,最后強制重啟電腦顯示出勒索窗口。軟件的動態行為可以表現軟件執行的目的,不同類型軟件的動態行為及其執行順序差異很大,可以用來識別惡意軟件的惡意性。
本文在動態特征提取過程中采用了Noriben沙箱環境,Noriben是一個基于python的開源項目(https://github.com/Rurik/Noriben),可直接下載搭建。Noriben 沙箱是對軟件procmon.exe的簡單改造,把它部署在虛擬機后,可以方便地對虛擬機內某一特定軟件進行監控,并且將客戶機信息實時反饋給主機。如圖1是Noriben沙箱的工作流程。

圖1 Noriben沙箱工作流程圖Fig.1 Noriben sandbox workflow diagram
首先由主機恢復客戶機的快照,使其回到檢測的最佳狀態,然后操作虛擬機軟件打開客戶機,將待檢測的目標程序復制進客戶機的對應目錄,運行起客戶機內的procmon.exe 軟件,然后由主機記錄下客戶機內目標程序的動態行為信息,生成CSV表格以便后續分析。
動態行為特征提取時,每個樣本在沙箱中運行1 min,Noriben沙箱對應生成csv表格,使用Python腳本提取表格中的動態行為序列。這些動態行為包括4種:進程行為、文件行為、注冊表行為和網絡行為,一共提取了1 928種動態行為特征。在Noriben沙箱測試過程中,待測軟件會因為各種原因反復執行特定的行為,這些行為有些是正常的,有些則是在非預期條件下的重復行為。為了消除這些重復行為對數據集的影響,且在不影響實驗精度的情況下提高運行速度,刪除了每個樣本前后重復的行為特征。
算法1 動態行為特征去重

動態行為提取流程如圖2所示,其中數據預處理過程如圖3所示。

圖2 動態行為提取流程圖Fig.2 Flow chart of dynamic behavior extraction

圖3 動態行為數據預處理流程圖Fig.3 Flow chart of dynamic behavior data preprocessing
2.1.2 靜態特征提取
之前的文章[26]提取了入口點、DLL、資源語言,節數和資源種類數作為靜態特征,5種特征融合后對于APT組織分類的準確率為93.7%,其中貢獻率最高的特征為DLL,其作為單一特征進行分類就有83.0%的準確率。在每個APT 惡意軟件被調用的DLL 目錄下,包含多種API,之前的研究也證明了API 作為靜態特征的分類能力[27-28],因此本文提取了DLL 和API 兩種特征??紤]到DLL 和API 一對多的映射關系,把兩種特征組合成了DLL:API 的形式。靜態特征的提取流程如圖4 所示。表1為提取的某個APT樣本的DLL及其目錄下的API。需要將數據編碼形成神經網絡可以處理的形式,若待測樣本的特征集包含此類特征,用1 表示,否則用0 表示。最后將APT組織映射為整數標簽,預處理之后的向量表如表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 靜態特征提取流程圖Fig.4 Flow chart of static feature extraction
算法2 提取APT惡意軟件的DLL和API并組合為DLL:API的形式
輸入:所有APT惡意軟件樣本的路徑SampleList。


近幾年深度學習技術在網絡安全領域蓬勃發展,許多研究也證明了其在代碼分析方面的有用性,應用在惡意軟件的惡意性識別和家族分類上取得了不錯的效果[19,23-24,26-27]。下面將介紹本文模型兩個階段使用的深度學習算法。
2.2.1 Transformer-Encoder
Vaswani等[29]在2017年改進了seq2seq模型,拋棄了傳統的RNN結構,設計了一種多頭注意力機制,通過堆疊編碼-解碼(encoder-decoder)結構,得到了Transformer模型。Transformer算法廣泛應用在自然語言處理(NLP)領域,并取得了開創性的效果。本文提取的待檢測軟件的動態行為特征是較長的序列數據,Transformer算法的結構天然適合處理此類數據。對于APT 惡意軟件的識別,本質上屬于三分類任務,因此本文只關注Transformer算法的編碼(Encoder)部分,如圖5 所示,本文N取6。編碼部分由兩個重要的模塊組成,多頭注意力和前饋網絡(feedforward network,FFN)。多頭注意力機制相當于多個自注意力機制合并,FFN 提供非線性變換,這兩個模塊之后都進行殘差連接和層標準化。

圖5 Transformer-Encoder結構圖Fig.5 Transformer-Encoder structure diagram
位置嵌入:不采用CNN 和RNN 結構,無法充分利用序列的位置信息,Transformer采用基于頻率變化的位置編碼解決這個問題。第n個單詞的位置嵌入計算公式,如式(1)、(2):
其中,PE代表位置嵌入,提供每個時刻的位置信息,n代表輸入序列的第n個單詞,d表示輸入的詞向量的維度,2i和2i+1 分別表示屬于奇數維和偶數維(2i 多頭注意力:縮放點積注意力是多頭注意力的核心,其使用點積進行相似度計算的方法相比一般的注意力,會更快更節省空間。輸入矩陣經過線性變換之后得到查詢矩Q、鍵值矩陣K和數值矩陣V,三者都是向量組成的二維矩陣,作為縮放點積注意力的輸入,如式(3): Q和K矩陣經過點積操作之后,除以尺度標度來進行縮放,目的是避免矩陣內積過大而造成經過softmax函數后的結果太逼近0或1,影響最終概率的計算。經過softmax層歸一化后,得到自注意力的得分值,再與矩陣V進行點積操作,最終得到自注意力的輸出。其中dk是矩陣QK的列數,即向量的維度。縮放點積注意力計算出每個詞和各個詞之間的注意力,賦予每個詞全局語義信息。 上述過程重復h次即為多頭注意力,如式(4),但是要注意不同層的權重矩陣參數是不同的。Wq、Wk和Wv為計算時的權重參數矩陣,其中Wq∈Rdm×dk,Wk∈Rdm×dk,Wv∈Rdm×dv,dm是模型的維度,dk、dv分別是權重矩陣的維度,默認(dm=dk=dv)/h,Wi是一個向量,為權重參數矩陣的第i個維度,最后將并行計算后的結果進行拼接,即Concat操作,如式(5),WC是拼接層的權重系數。 前饋網絡:多頭注意力的輸出會經過一個全連接網絡FFN,它包含兩個線性變換和一個激活函數ReLU,這層網絡結構可以提高模型的非線性變換能力,計算公式如下: 其中,W1,W2∈Rdm×df為可學習參數矩陣,df =1 024 是一個超參數,為中間層維度,b1∈Rdf、b2∈Rd,都為可學習向量,x為輸入。 2.2.2 1D-CNN 1D-CNN常應用于自然語言處理領域,在處理短序列時甚至比機器學習算法更有成效,它能很好地識別出數據中的簡單模式,然后在后續更加高級的層中生成更復雜的模式。1D-CNN之所以稱為一維,是因為它的卷積核沿著一個方向移動,從輸入序列中按照一定大小的窗口長度提取局部一維序列段,然后與一個權重做點積計算,輸出結果為新序列上的一部分。 本文使用的1D-CNN 結構圖如圖6 所示。輸入的每個待檢測樣本的文本序列需要經過三個卷積層、三個池化層和三個全連接層,每個卷積層后面有一個ReLU激活函數并對應一個池化層,最終通過softmax分類層實現多分類任務。 圖6 1D-CNN結構圖Fig.6 1D-CNN structure diagram 1D-CNN模型的計算公式如下: Zi表示第i層的特征向量,Wi表示第i層卷積核的權重矩陣,bi表示第i層卷積核的偏重向量,?表示卷積運算符,f表示激活函數。 ReLU激活函數計算公式如下: 本文的模型流程圖如圖7所示。 圖7 本文檢測模型圖Fig.7 Proposed detection model diagram 第一階段進行APT惡意軟件的識別,首先用Noriben沙箱提取待檢測軟件的動態行為特征,預處理后形成可以用深度學習模型處理的特征集,用Transformer-Encoder 算法識別出APT 惡意軟件;第二階段在第一階段識別結果的基礎上進行APT惡意軟件的組織分類,用Python編程實現APT惡意軟件PE頭中DLL和API的提取,預處理后用1D-CNN算法對APT惡意軟件進行組織分類。 實驗的第一階段,本文收集了APT 惡意軟件,傳統惡意軟件和良性軟件三類軟件作為數據集,其中APT惡意軟件來源于GitHub(https://github.com/cyber-research/APTMalware),下載了3 594個可執行樣本,傳統惡意軟件來源于VirusShare(https://www.virusshare.com),共有5 980 個可執行樣本,良性軟件為實驗室收集的和在Windows 應用商店(https://apps.microsoft.com)爬取的,加起來共有1 100個可執行樣本。刪除了APT惡意軟件中信息不全和樣本數量過少的組織樣本后,最后三類軟件的數量比大約為1∶6∶2,數據集分布如表3所示。 表3 識別階段數據集分布表Table 3 Identification stage data set distribution table 實驗的第二階段是在第一階段識別結果的基礎上,對APT 惡意軟件進行組織分類,這里直接使用APT 惡意軟件數據集作為訓練數據,數據集包含12 個組織類別,分布情況如表4。 表4 分類階段APT組織及其樣本分布Table 4 APT tissue and its sample distribution in classification stage 兩個實驗階段的數據集均劃分為8∶1∶1的比例,分別為訓練集、驗證集和測試集,三者沒有任何交叉。訓練集只用來訓練選擇的神經網絡模型,計算梯度和損失值。驗證集用來驗證訓練的模型,實驗過程中選擇驗證準確率高且損失值小的模型進行保存。測試集對保存的模型進行預測,檢測模型的實際效果。 本文所用實驗設備信息如表5所示。 表5 實驗設備及環境Table 5 Experimental equipment and environment 本文實驗過程第一個階段是APT惡意軟件的識別,實際上是三分類問題;第二個階段是APT惡意軟件的組織分類,為多分類問題。為了評估分類算法的性能,選擇用混淆矩陣和損失值表示分類結果。實驗中所用的性能指標如下幾類: 準確率(Accuracy)表示實驗模型中正確分類的樣本占實驗總樣本的比例,計算公式為: 精確率,也稱查準率(Precision),表示模型中正確分類的正例個數占分類為正例的實例個數的比例,計算公式為: 靈敏度,又稱查全率(Recall),表示模型中正確分類的正例個數占實際正例個數的比例,計算公式為: F1-score 是基于Recall 與Precision 的調和平均,即將查全率和查準率綜合起來評價,綜合判斷分類模型對于某類樣本的預測能力,計算公式為: 其中,TP表示正確預測到的正例的數量,FP表示把負例預測成正例的數量,FN表示把正例預測成負例的數量,TN表示正確預測到的負例的數量,n代表軟件類別或APT組織數。 3.4.1 APT惡意軟件的識別結果分析 經實驗本文所用的Transformer-Encoder 算法的最優參數設置為:batchsize 取32,6 個Encoder 結構堆疊,多頭注意力選擇8個頭,優化函數選擇Adam,訓練500輪。 為了驗證所提方法的有效性,實驗第一階段的方法與主流的深度學習算法BiLSTM、GRU、LSTM和機器學習算法隨機森林(RF)、決策樹(DT)、GBDT、XGboost算法做了全面對比。表6 為本文與其他三種深度學習算法的實驗結果,可以看出Transformer-Encoder算法對比LSTM、BiLSTM和GRU優勢明顯,準確率達到了95.8%,比第二高的GRU高了2.8個百分點。 表6 Transformer-Encoder與主流深度學習算法實驗結果Table 6 Experimental results of Transformer-Encoder and mainstream deep learning algorithms 圖8為四種算法模型的訓練損失值曲線圖,代表四種算法模型在訓練數據集過程中的損失值變化。損失值是衡量預測值和實際值相似程度的指標,根據圖8,四種算法模型的損失值隨著epoch 的增大逐漸降低,當epoch 的值到達2 000 后,損失值趨于穩定,達到收斂狀態,其中Transformer-Encoder 算法的損失值最低,即預測結果與實際值最為相似,實驗效果最好。圖9為訓練準確率曲線圖,代表四種算法模型在設置的實驗輪次內的實驗準確率變化,隨著epoch的增加,四種算法模型訓練準確率先增大,epoch在到達2 000后逐漸趨于穩定。 圖8 四種深度學習算法的損失值變化Fig.8 Loss value variation of four deep learning algorithms 圖9 四種深度學習算法的訓練準確率變化Fig.9 Changes in training accuracy of four deep learning algorithms 圖10和圖11為驗證準確率曲線圖和最大驗證準確率曲線圖,前者表示在每一輪訓練中使用驗證集驗證的準確率變化曲線,由圖10 可知,在前幾個epoch 時,Transformer-Encoder 算法便迅速趨于穩定,明顯高于其他算法模型,且驗證準確率的曲線(紅色曲線)對比圖9而言,高度近乎一致,即結果沒有過擬合,驗證效果較好。而后者是取每輪的最大驗證集,即最優訓練結果,是從圖10中取得的每輪的最好結果,Transformer-Encoder算法的收斂速度最快,因此曲線最早變得平滑。通過這四張圖可以直觀地看出Transformer-Encoder 算法在本文實驗第一階段識別APT 惡意軟件上,對比其他三種算法,效果有明顯的提升。 圖10 四種深度學習算法的驗證準確率變化Fig.10 Change of verification accuracy of four deep learning algorithms 圖11 四種深度學習算法的最大驗證準確率變化Fig.11 Maximum verification accuracy change of four deep learning algorithms 表7為本文模型與幾種常用的機器學習算法模型的實驗結果,可以看出Transformer-Encoder算法比機器學習算法效果更好。隨機森林在實驗中也取得了較好的效果,是因為其結構上的優勢,采用多個決策樹共同決策,擅長處理高維特征,因此也取得了較好的實驗效果。為了直觀觀察實驗結果,將幾種深度學習算法和機器學習算法的實驗結果形成折線圖如圖12所示,Transformer-Encoder算法實驗結果各項指標都最高,其中RF、GRU、GBDT和XGBoost的各項指標也都達到了90%以上。 表7 Transformer-Encoder與常用機器學習算法實驗結果Table 7 Experimental results of Transformer-Encoder and common machine learning algorithms 圖12 識別階段本文與其他算法模型的實驗結果對比Fig.12 Comparison of experimental results between proposed and other algorithm models in recognition stage 3.4.2 APT惡意軟件的組織分類結果分析 經實驗所用的1D-CNN 算法的最優參數設置為3個卷積層,每個卷積層有3個卷積核、3個池化層、3個全連接層,步長為2,batchsize 取32,優化函數用Adam,激活函數用Relu,訓練500輪。 實驗第二階段的方法同樣與3.4.1小節一樣同其他幾種算法做全面對比,實驗過程中發現BiLSTM、GRU和LSTM算法效果不佳,因此重點與機器學習算法作對比。表8為1D-CNN與RF、DT、GBDT、XGBoost算法的實驗結果,圖13 為1D-CNN 實驗結果的混淆矩陣圖。為了直觀觀察實驗結果,把幾種評價指標數據形成折線圖如圖14 所示,可知1D-CNN 在APT 組織分類的實驗中取得了98.7%分類準確率,對比其他機器學習算法效果有很大提升。 表8 1D-CNN與常用機器學習算法的實驗結果Table 8 Experimental results of 1D-CNN and common machine learning algorithms 圖13 1D-CNN實驗結果混淆矩陣Fig.13 Confusion matrix of 1D-CNN experimental results 圖14 分類階段本文與其他算法的實驗結果對比Fig.14 Comparison of experimental results between proposed and other algorithms in classification stage 表9為1D-CNN 和其他四種機器學習算法在每個APT組織的分類準確率,可以看出1D-CNN分類準確率很高,有7個APT組織的分類準確率都達到了1,雖然在個別組織的分類準確率略低于其他機器學習算法,但是整體效果遠高于其他算法。 表9 在每個APT組織的分類準確率Table 9 Classification accuracy in each APT organization 將1D-CNN 處理DLL:API 特征的方法與近期其他文獻的同類方法做對比,比較結果如表10所示。文獻[21]以APT 惡意軟件的關鍵函數調用圖和反匯編代碼作為特征,需要提取大約68萬個自定義函數,數據處理量巨大,而且分類準確率偏低,為95.3%。文獻[26]提取了入口點、DLL、資源語言,節數和資源種類數五種特征,提取的特征種類數偏多,處理特征更耗時,且分類準確率偏低,只有93.7%。相比以上方法,本文方法僅僅提取了DLL和API兩種特征,組合為DLL:API的形式,數據處理過程更簡單,準確率也有較大提升,證明了本文所提特征的分類能力,和所用模型的有效性。 表10 同類方法比較Table 10 Comparison of similar methods 本節實驗,利用2.3 節提出的檢測方案對隨機收集的未知類型的PC 端軟件進行檢測,以檢測其在實際應用中的檢測效果。首先在GitHub上下載APT惡意軟件樣本(https://github.com/Cherishao/APT-Sample),隨機從中選取1 000 個不同組織類別的樣本,然后在Windows應用商店和各大應用市場下載1 000 個未知類型的軟件,再上傳至VirusTotal(https://www.virustotal.com/)查毒網站進行在線分類檢測,可以準確檢測出所下載軟件是否具有惡意性,其檢測結果作為本節實驗的基準。經VirusTotal網站檢測,1 000個軟件中有263個惡意軟件,737 個良性軟件。兩個試驗階段仍然采取3.4.1 小節和3.4.2小節所用的深度學習模型和機器學習模型所得的結果進行對比。Transformer-Encoder 和其他算法模型識別未知類型APT惡意軟件的結果如表11所示。 表11 識別未知類型APT惡意軟件的結果Table 11 Results of identifying unknown type APT malware 由表11可知,Transformer-Encoder模型在未知類型的軟件檢測中,相比于其他幾個算法模型,可較好地識別出APT 惡意軟件,獲得較高的準確率和F1 評分。識別結果幾乎與3.4.1 小節的實驗結果一致,是因為識別階段為三分類,僅根據三種類型軟件的動態行為從中識別出APT 惡意軟件,而APT 惡意軟件的動態行為與惡意軟件和良性軟件區別較為明顯。 APT 惡意軟件的組織分類結果如表12 所示,由于BiLSTM、GRU 和LSTM 模型檢測效果不佳,與3.4.2 小節一樣,這里不再進行對比,僅對比1D-CNN模型與RF、DT、GBDT、XGBoost等機器學習算法模型的分類結果。 表12 對未知類型APT惡意軟件的組織分類結果Table 12 Organization classification results of unknown type APT malware 由表12可知,對于APT惡意軟件的組織分類,1D-CNN模型和幾種機器學習模型的實驗結果相比3.4.2小節略有下降,1D-CNN 模型的分類效果仍然好于其他模型,各項指標均高于其他模型。實驗表明,雖然在應對未知類型的APT惡意軟件組織分類時的準確率略有下降,在未知類型的軟件檢測中,本文所提方案仍然能夠較為準確地識別出APT 惡意軟件,并較為準確地將識別出的APT惡意軟件進行組織分類,切合對APT攻擊檢測的實際需要。 本文提出了一種綜合的APT攻擊檢測方案,先后實現對APT惡意軟件的識別和組織分類。在APT惡意軟件識別方面采用了動態分析的方法,使用Noriben 沙箱捕獲待測軟件的進程行為、文件行為、注冊表行為和網絡行為,使用Transformer-Encoder算法對APT惡意軟件進行識別,準確率高達95.8%,優于當前流行的BiLSTM、GRU、LSTM 深度學習算法和RF、DT、GBDT、XGBoost等機器學習算法。在APT惡意軟件組織分類方面,采用靜態分析的方法,提取可執行文件PE頭的DLL和API,組成DLL:API的形式,用1D-CNN算法取得了98.7%的APT 惡意軟件組織分類準確率,優于RF、DT、GBDT、XGBoost 等機器學習算法,相比之前文章的分類方法,提取了更少的特征,準確率增加了5個百分點。實驗證明,本文方法的兩個實驗階段都有很高的準確率,在應對未知類型軟件時仍然可以有效識別出APT惡意軟件并準確進行組織分類。但是本文依舊存在不足之處,雖然Noriben 沙箱運行較快,但是仍然會在實驗前期耗費大量時間,并且本文所用樣本量仍然較少。后續將優化特征提取方式并擴大實驗樣本容量。
2.3 本文檢測方案

3 實驗
3.1 數據集選取


3.2 實驗平臺配置

3.3 性能指標選取
3.4 實驗結果分析












3.5 未知類型軟件檢測


4 結束語