陳紀龍,張鴻宇,張聰益,宋子康,涂 然
(西南石油大學計算機科學學院,四川 成都 610500)
已知的主要流量類型為正常業(yè)務流量、網(wǎng)絡攻擊流量與病毒流量。這些流量分為加密流量與未加密流量。已有的研究重點關注流量的某些局部特征,然而忽視了特征之間的交叉和時序關系,并且對加密流量是不適用的。魯剛等利用手工特征工程對流量進行特征提取,描述特征之間的關系[1]。張偉等設計了一個惡意流量實時識別引擎,然而其識別范圍僅限于傳輸層,具有較大的限制,且依賴于部分種類流量的專有特征,不利于推廣使用[2]。 駱子銘等對加密流量和非加密流量進行了識別,但忽視了流量特征域之間的交叉和時序關系,且不利于處理高維稀疏特征[3]。
針對以上研究現(xiàn)狀和啟發(fā),提出在系統(tǒng)中使用 CNN+LSTM 時空神經(jīng)網(wǎng)絡,結合在線學習技術和虛擬化,保證模型的實時推斷性能和隔離容錯性。這樣的模型能夠在準確地對流量進行分類和識別的同時,根據(jù)線上流量特性自行進行動態(tài)調整,確保模型的及時更新。
數(shù)據(jù)集通過CyberFlood工具生成 TLS 加密與非加密的正常業(yè)務流量與網(wǎng)絡攻擊行為流量,再使用 Python 對指定的網(wǎng)絡端口抓取流量。對于非加密流量為了使用模型精度達到最大化,直接匹配其 URL 字段用于模型訓練。對于 TLS 加密流量,本系統(tǒng)考慮在不解密加密流量的情況下,通過獲取數(shù)據(jù)流中的元數(shù)據(jù)特征,并將其導入至機器學習模型中進行識別。
對于加密流量,利用Python的Pandas庫進一步進行處理,如對離散型特征進行one-hot編碼來對每一個特征的多個可能值進行處理轉變?yōu)槎鄠€二元特征,并對特征進行歸一化、數(shù)值化等。
對于非加密流量,由于流量特征為URL文本格式,讀取后得到的是一個文本數(shù)據(jù),設使用正則表達式解析預處理和分詞之后的流量數(shù)據(jù)為單詞-文本矩陣,m條流量的URL數(shù)據(jù)對應m條文本,每條文本的向量空間為單詞向量空間(word vector space),即對每一條流量 URL 文本,用一個向量表示該文本的“語義”,向量的每一維對一個單詞,其數(shù)值為該單詞在該文本中出現(xiàn)的權值[4]。數(shù)據(jù)預處理流程如圖1所示。

圖1 數(shù)據(jù)預處理流程
將流量信息建模為行向量作為特征取值,列向量為不同流量的矩陣。使用CNN+LSTM時空神經(jīng)網(wǎng)絡模型[5]。CNN神經(jīng)網(wǎng)絡學習流量的空間信息,LSTM神經(jīng)網(wǎng)絡學習流量在時間方向的信息。
在將文本用TF-IDF表示后可以獲得m×n矩陣,(m為流量條數(shù),n為當前單詞表示所在的向量空間維度)。對每一個n維流量向量,都定義一個從Rn到Rp的線性映射:x→Tx,完成了詞嵌入。
完成詞嵌入后,定義k為卷積核的大小,向量M∈Rk×p是卷積操作的卷積核,然后使M卷積核對窗口張量W(k-grams)的每一個位置j進行卷積,產(chǎn)生多張?zhí)卣鲌Dcj∈Rm-k+1。對每一個Wj,可以將其重新以不同特征表示,即Wj=[c1c2…cq],q為卷積核個數(shù)。接著每一個Wj會被輸入LSTM模型,如圖2所示。

圖2 CNN特征取示意圖
這里采用標準LSTM架構。在每一步中,模塊的輸出由一系列做為舊的隱藏層的ht-1和當前時間輸入xt的共同控制。模型還包括遺忘門ft,輸入門it,輸出門ot。這些門共同決定如何更新當前的記憶單元ct以及當前的隱藏狀態(tài)ht。本文選擇在CNN之上增加LSTM學習更高特征序列中的時序依賴。
將LSTM最后一步的最后一個隱藏狀態(tài)輸出視為流量的新的表示,添加一個softmax層,最終獲得不同分類標簽的預測概率值。以最小化交叉熵損失的形式訓練整個模型,并使用隨機梯度下降法(SGD)來學習模型參數(shù)。
采用2種手段dropout和L2權重正則化來防止模型過擬合。在模型中,將流量序列輸入卷積層之前以及在將LSTM的輸出傳入softmax層之前,對流量向量使用dropout。L2正則化作用于softmax層的權值。
因為在實際線上環(huán)境中正常流量要遠遠多于惡意流量,故這是一個類別不平衡問題,評價分類器的標準包括AUC、查準率(P)、查全率(R)和綜合評價(F1)。其中,查準率、查全率和綜合評價代表分類器對每種類別的識別能力,AUC能反應模型對樣本的排序的能力。
從表1可以看出,模型在線下同時包括加密和非加密的流量驗證集上的AUC為93.4%,查準率為91.55%,查全率為92.25%,綜合評價得分為91.70%。

表1 模型在不同數(shù)據(jù)集上的效果 單位:%
本文運用數(shù)據(jù)并行處理技術,采用Hive分布式數(shù)據(jù)庫對原始流量數(shù)據(jù)進行存儲。同時使用Spark批處理機制與Flink流式處理機制對流量數(shù)據(jù)進行并行處理。在模型上,使用CNN+LSTM時空神經(jīng)網(wǎng),其中采用CNN對流量空間特征進行提取,LSTM對流量時序特征進行提取,能完成不同種類流量的準確分類。最后在工程上結合在線學習與虛擬化技術,既能滿足高實時性,同時具有高隔離性與容錯性,在工業(yè)界有較高的應用價值。