利用神經網絡挖掘共同特征發現未知的APT
簡介
命令和控制(C&C)通道廣泛存在于APT攻擊中,攻擊者通過C&C通道與受感染的主機進行通信,以獲取目標網絡信息、傳輸攻擊指令或執行惡意軟件更新等操作。檢測C&C通道最有效的方法是基于流量檢測,因為目標系統中隱藏的惡意軟件必須與外部C&C服務器進行通信,才能接收命令或發送數據,數據傳輸的過程就會在網絡流量中留下攻擊者無法消除的痕跡。然而,目前的流量檢測方法主要面臨兩個難題:
- 隱蔽性:APT長期威脅的主要原因。攻擊者會通過各種手段隱藏他們的痕跡,如加密流量、動態域名解析、降低數據傳輸頻率等。這使得APT攻擊很容易繞過入侵檢測系統,也很難針對未知攻擊提取特征。
- 靈活性:面對現有的檢測方法,攻擊者很容易通過定制惡意軟件、根據目標網絡調整和配置工具來繞過檢測。技術和工具的不斷改進以及復雜多樣的攻擊過程使得檢測未知C&C信道非常困難。
針對以上問題,作者提出了一種利用惡意軟件和C&C服務器之間通信流量的共同特征來檢測C&C信道的方法,實驗證明對于未知APT攻擊的發現效果好于現有的其他方法。
方法
APT組織會共享使用的惡意軟件,如下表就是部分組織使用的惡意軟件重合情況。除了將工具共享,APT組織開發新的惡意軟件時也會參考現有的軟件,如Duqu, Flame, Shamoon, Triton幾個工具就從震網病毒Stuxnet中借用了大量代碼。基于這一發現,可以推斷未知APT組織使用的惡意軟件和已知惡意軟件之間存在某些共同的特征。

因此,為了發現未知的C&C信道,需要先從現有的攻擊流量數據中找出惡意軟件和C&C服務器通信流量存在哪些共同的特征。顯然由于數據加密等原因,很難由人工來完成這個工作,作者設計了以下的方法:首先從pcap數據包中解析出基于包(packet-based)和基于流(flow-based)的統計信息,針對包級統計信息使用LSTM來提取基于時間序列的共同特征,針對流級統計信息使用CNN來提取共同特征;最后通過PCA降維并進行實驗選擇合適的分類器完成對流量的分類。實驗的流程圖如下圖所示。

為了進行對比,作者也對現有論文以及對惡意流量檢測研究工作進行了總結,人工提取了10個特征,均為比較常見的流量檢測特征類型,如下表所示。

實驗
作者使用的APT攻擊流量樣本來自Contagio malware database,其中包含了36個APT樣本,實驗中一部分用作訓練集,一部分用作測試集來測試模型發現未知C&C信道的能力。正常流量樣本來自TcpPlay的bigFlows.pcap,它是一個從私有網絡接入點上捕獲的流量數據,包含了132個應用產生的約80萬數據包,其中有約2萬個雙向網絡流。為了模擬真實場景中可能存在的長會話、發送少量數據包的特點,作者將數據集中惡意流量的比例調整為約1%,與真實場景中的比例一致,增加了檢測難度。
首先作者調整了神經網絡和PCA降維的輸出維度,在LSTM和CNN的輸出分別為20維和30維,PCA降維輸出為22維時得到了最佳效果。下表是這一參數下不同模型的分類結果,可以看到決策樹家族和KNN的表現要比SVM、貝葉斯等經典算法的效果要好;隨機森林的精確度和誤報率雖然最佳,但是召回率較低;結果表明,梯度提升決策樹GBDT是最優的檢測算法。

作者與部分參考文獻進行了對比,參考文獻中僅使用了基于流的特征,檢測結果如下表所示。

可以看出,使用兩種特征的檢測效果普遍好于僅使用基于流的特征的效果。實際上,惡意流量因為有發送頻率低的特點,