薛昊天,王 晨
(1.武漢郵電科學研究院,湖北武漢 430000;2.南京烽火天地通信科技有限公司,江蘇 南京 210000)
隨著網絡攻擊行為愈加多樣復雜,對僵尸網絡這一入侵攻擊行為的檢測也顯得愈加重要。隨著時代不斷發展變化,僵尸網絡有了全新的特點并急速壯大。舉例來說,Linux 系統因為其開源特性,其系統幾乎毫不設防,對僵尸網絡攻擊毫無防備。路由器設備作為家家戶戶互聯互通的樞紐,亦是肉雞的攻擊目標。物聯網產業產品種類多、范圍廣、標準不一、易于破解,成為僵尸網絡感染的新爆發點。
僵尸網絡之所以成為僵尸網絡,是在于這樣的事實,即這種管理應允許對手安排進一步的攻擊[1],例如通過向受感染的主機(BOT)發送新命令,延長攻擊的發現時間,阻止執法機構發現它的真實身份。顯然,受感染的設備之間存在直接通信通道,只要將特定IP 或域列入黑名單,就可以有效地檢測和阻止服務器受到C&C 的影響[2]。為防止這種情況的發生,惡意軟件作者嘗試使用將流量偽裝為良性且無法輕易阻止的通信渠道[3],例如社交網絡或經常更改托管C&C 服務器的域名。
僵尸網絡檢測的最新趨勢是基于流或基于圖的功能?;诹鞯姆椒ㄊ菍⒕W絡數據包數據重新整合為流[4]。源IP、目標IP、源端口、目標端口和網絡協議稱為五元組[5],以此來確定流。它們使用諸如監督分類[6]或聚類等機器學習[7]技術來分析標準的數據包級別或流量級別的統計數據。
傳統上采用統計分析的方式,判斷流量的各項指標的數值是在僵尸流量的范圍內還是在正常流量的范圍內,進入到機器學習時代后多使用機器學習中的聚類算法和分類算法。這一思路的缺點在于只針對訓練過的僵尸網絡流量種類有效,缺乏對未知流量的檢測能力。
另一種比較新潮的檢測方法是基于圖的檢測方法。這些方法忽略了數據的順序性質,而是使用基于中心性的圖形度量關注通信的圖形結構[8]。但是,由于它們需要一次訪問所有數據以建立圖形模型,因此通常不適合當作真正有用的工具。
網絡流量分析是指在流量中監察可能的C&C命令[9],以此來探測。考慮普通P2P 流量與僵尸P2P流量之間必然會存在某種差異[10],可以通過通信時長、數據包大小、數據長度等流量特性來進行區分。但對于一些高度隱藏的僵尸網絡,檢測率并不高,因為提取特性不可能十全十美,不能夠代表流量的全部內容,可能提取到的特征代表性很強,也可能特征代表性很弱,檢測效果很差,全在于特征能夠代表多少有價值的信息[11]。
對于分析網絡中的流行為特征這一思路,深度學習技術能夠自動學習事物的本質特征,以模擬大腦學習的方式去學習。生成對抗網絡能夠增加樣本的種類和數量,增加對分類模型的反饋,輔助提升分類模型的分類能力。因此該文考慮以深度學習中的這兩種方法,應用于分析網絡流行為特征。
該文提出一種基于GAN 的檢測botnet 的新方案,該方法可以有效地提升現有方法的僵尸網絡檢測效率,具有相當的實際應用價值。
GAN 的原理框圖如圖1 所示。GAN 的原理是將生成模型制造的假樣本混入到真實樣本中,為判別模型增加輸入,提高其判別能力。生成樣本不斷地偽裝成真實樣本,提高了其偽裝能力。

圖1 生成對抗網絡的原理
GAN 網絡可以定義為式(1)所給出的極大優化問題[12],假設x代表數據樣本,p(z)代表輸入噪聲,G(z)代表處理后的噪聲,D(x)代表樣本x是真正的樣本,而非生成樣品。因此,混入的生成樣本的被識別率降到最低,判別模型的分辨能力最高,這兩個點可視為GAN 的優化目標[13]。目標函數定義如式(1)所示:

由式(1)可知,要提高判斷能力,目標函數要取最大值,即max(D(x))和min(D(G(z)));要提高偽裝能力,目標函數取最小值,即min(D(x))和max(D(G(z)))[14]。實際操作中,保持兩者之一不變,訓練另一者,不斷更新其參數達到階段的預期,然后解放不變的模型,鎖定變化的模型再訓練。重復這個過程,使對方獲得最大誤差[15]。此時兩個模型均取得最優解,即判斷真假正確的概率是50%。此時,認為訓練完成,生成樣本和真實樣基本一致,讓判別模型D 無從辨認。
將半監督學習方法加入到GAN中[16],可以充分利用無標簽樣本數據來輔助有監督的學習訓練分類。
損失函數可以作變形如式(2)-(5)所示,對于有標簽樣本數據,Lsupervised表示有監督學習的目標函數,即正確預測的能力。

對于無標簽樣本數據,Lunsupervised表示無監督學習的損失函數,pmodel(y=K+1|x)表示樣本x是生成樣本的概率。當將D(x)=1-pmodel(y=K+1|x)插入一個表達式Lunsupervised時,它等于GAN 的目標函數,如式(6)所示:

該節融入GAN 的理念,在分類模型的訓練過程中混入生成樣本,如圖2 所示。分類模型也相應增加一類標簽(Fake)。

圖2 改造的生成式對抗網絡
Iscx2014 被認為是種類豐富、樣本量充足的優質數據集。提取傳輸層協議、TCP 協議標記、流持續時間、網絡流第一個數據包的長度、交換小數據包數、交換小數據包百分比、重連接次數、總長度、有效載荷數據包平均數、有效載荷數據包的標準差、平均每秒比特數、平均數據包到達時間、每秒平均包數共13個特征,將非數值型特征值轉化為一個數值型特征值,并對所有這些特征值問題進行歸一化處理。將13 個特征處理為129 維特征值。
生成模型設為3 層LSTM 網絡,為輸入層配置120個節點,隱藏層配置60個節點,輸出層配置129個節點。
在分類模型的選擇上,神經網絡4 層結構被普遍認為是一種比較好的模型選擇,隱藏層可以設為兩層。INPUT層節點為129個,HIDDEN1節點為80個,HIDDEN2 節點為20 個,OUTPUT 節點為3 個。
tensorflow作為深度學習框架。計算機為神舟Z7-CT7NA,CPU為IntelCorei7-9750HCPU@2.60GHz,內存為8 GB。
在訓練集中,每個訓練輪均混入100、500、1 000、2 000、5 000、8 000 個生成樣本,迭代100 次以觀察混入生成樣本的訓練效果。
為保證客觀性,對比試驗中的原型和GAN 的分類模型網絡結構及參數配置是一致的。亦設置4 層神經網絡,不同的是為輸出層配置兩個節點,即正常樣本或僵尸網絡樣本,沒有虛假樣本標簽。在同樣配置下完成訓練,分析兩者在training group 上的accuracy、precision、F1 值及error rate。
實驗設置從100 個到8 000 個假樣本共六組對照組,折線代表增強模型,虛線表示原模型。橫坐標是每輪混入的生成樣本數,縱坐標是對應的檢測指標。
如圖3 所示,增強模型的性能整體上優于原模型,僅在混入樣本超過5 000 個后,準確率下跌較為嚴重,但也僅僅是略低于原模型。這表明了生成器對判別器的加成作用,還要考慮到混入假樣本的數量,并不是越多越好。原因在于隨著生成樣本數據量的增大,分類器在判斷時過分關注樣本是生成的還是真實的,即注意力遷移到了別的地方,偏離了樣本是否是僵尸網絡樣本這一原本的目的。

圖3 訓練時是否混入生成樣本的分類模型的準確率
由圖3 可以看出,當混入樣本超過100 個而小于1 000個時,對原模型的加成效果達成了一個較優解,雖然第二實驗組在六組實驗中準確率最高,但不能認為這就是最佳假樣本數,這個數量可能大于500 個也可能小于500 個,還需要通過進一步的實驗來細化。
如圖4 所示,增強模型的性能整體上優于原模型,僅在混入樣本超過5 000 個后,精確率下跌較為嚴重,還是略高于原模型。同樣說明混入假樣本太多反而對檢測性能起反效果。顯然,第三實驗組在六組實驗中精確率最高,但這并不是最佳假樣本數,具體數量還需進一步的實驗來細化。

圖4 訓練時是否混入生成樣本的分類模型的精確率
如圖5 所示,增強模型的性能整體上優于原模型,但是F1 值的折線不同于準確率折線和精確率折線,其起伏較為反復,并沒有明顯的漲跌,整體上是持平并高于原模型的。這表明了假樣本對判別器在F1 值上的加成作用并不是十分有效。顯然第二實驗組在六組實驗中準確率最高,但不能認為這就是最佳假樣本數,若要確定最佳假樣本數量,還需要進一步的細化。

圖5 訓練時是否混入生成樣本的分類模型的F1值
如圖6 所示,實驗中,增強模型的性能整體上優于原模型,僅在混入樣本超過5 000 個后,誤報率上漲,但還是略低于原模型。顯然第二實驗組在六組實驗中誤報率最低,但不能認為這就是最佳假樣本數,還需要進一步的實驗來細化。

圖6 訓練時是否混入生成樣本的分類模型的誤報率
在訓練集中混入生成樣本這一行為,提高了分類模型的檢測性能,模型準確率和精確率平均提高了2%和5%,誤報率降低2%,實驗結果符合預期。該文提出的研究成果還有值得改進的地方。檢測技術和僵尸網絡是同步在發展的,即使現在十分有效的方法,對以后的新類型、新模式的僵尸網絡可能檢測效果很差。持續地收集僵尸網絡數據,持續地改進檢測算法,是一項長期的工程。