?

基于改進的CNN-LSTM的DGA域名檢測算法

2023-03-09 05:32褚冰融付海艷
關鍵詞:域名卷積分類

褚冰融,付海艷,劉 夢

(海南師范大學 信息科學技術學院,海南 ???571127)

隨著網絡日新月異的發展,網絡攻擊也層出不窮。其中,僵尸網絡造成了巨大的威脅,黑客通過命令與控制(Command&Control,C&C)服務器[1]對受僵尸病毒感染的主機進行控制,從而發起網絡攻擊。由于通過C&C服務器的IP地址可以被逆向或者列入黑名單以阻止攻擊,因此攻擊者為了使攻擊主機不易被發現,使用域名生成算法DGA(Domain Generation Algorithms)[2]生成大量域名,以此快速變換域名對網絡進行攻擊。

DGA的目標是生成不存在的域名,因此DGA域名變化速率快且種類繁多。域名生成算法DGA主要分為兩種,一種是基于隨機字符的DGA,另一種是基于單詞字典[3]的DGA?;陔S機字符的DGA域名主要都是通過種子和算法進行生成的[4]?;谧值涞腄GA域名是通過隨機字典中的合法詞匯而生成的,這類域名由于與合法域名過于形似,因此加大了檢測難度。一些常見類別的惡意域名見表1。由于DGA有不同的用途和類別,因此要對DGA進行多分類,由此來判別其所生成的惡意軟件的類型,以便更好地應對DGA 域名所帶來的危害。

表1 常見的DGA域名Table 1 Common DGA domain names

目前針對DGA 域名的檢測方法主要是基于深度學習的檢測方法,以循環神經網絡RNN(Recurrent Neural Netwok)和卷積神經網絡CNN(Convolutional Neural Network)為主[5]。Yu 等[6]比較了堆疊CNN 和并行CNN(Parallel CNN)模型,Parallel CNN在檢測DGA域名時具有更高的精確度。為了解決正負樣本數據不均衡的問題,楊路輝等[7]提出了一種改進的基于卷積神經網絡的惡意域名檢測方法,通過引入一種聚焦損失函數提高了部分難檢測域名的檢測準確率。Qiao 等[8]提出了一種基于長短時記憶網絡Long Short-Term Memory(LSTM)和注意力機制的DGA域名分類方法,其準確率高于單一的LSTM模型。隨后,Namgung等[9]使用并行卷積神經網絡(PCNN)結合基于注意力機制的雙向LSTM(BiLSTM),雖然整體檢測率高,但是對于locky、cryptolocker 這些基于隨機字符的域名檢測率依舊很低。Highnam 等[10]提出了CNN 與LSTM 并行使用的Bilbo-Hybrid模型,提高了對字典型DGA域名的檢測率。Ayub等[11]使用人工神經網絡ANN(Artificial Netural Network)結合Word2vec模型對域名進行檢測,相比于單一的LSTM模型有更好的檢測率。

由此可知,目前DGA域名檢測所存在的主要問題是:(1)只對一些經典的域名種類進行檢測;(2)無法同時檢測出基于字典的和基于隨機字符的DGA域名;(3)對于樣本分布不均衡的數據集域名檢測率低。因此,針對這些問題,本文構建了改進的CNN-LSTM算法,該算法結合了注意力機制、并行卷積神經網絡(Parallel CNN)[12]和雙向長短時記憶網絡(BiLSTM),并且改進了損失函數,將focalloss 函數融入至算法中,即構建了APCNN-BiLSTM-ATT(Attention Parallel CNN-Bidirectional LSTM-Attention)檢測算法進行域名檢測。

1 APCNN-BiLSTM-ATT域名檢測算法

該域名檢測算法主要分為3個步驟,分別為數據預處理、特征提取和特征融合。經過上述3個步驟后便可以得到APCNN-BiLSTM-ATT算法模型,該模型的總體架構如圖1所示。

圖1 模型總體架構Figure 1 Overall structure of the model

1.1 數據預處理

數據預處理的步驟主要分為兩步,第一步是將域名文本轉化為數字序列,即進行字符編碼和填充,第二步是將數字序列輸入至嵌入層,將其進行向量化。

嵌入層的作用是將輸入的序列向量化,在嵌入層中,給定輸入矩陣Xn×t、權重矩陣Wt×m,該權重矩陣為模型在訓練中學到的參數,通過下列公式得到嵌入矩陣Yn×m:

數據預處理的算法步驟如下:

算法1 數據預處理算法

輸入:域名文本x

輸出:嵌入矩陣Y

(1)將域名文本x進行字符編碼,得到數字序列xi;

(2)將xi進行長度標準化(為了統一輸入長度),得到數字序列x′i;

(3)將輸入至嵌入層,通過式(1)得到嵌入矩陣Y。

1.2 特征提取

特征提取由添加注意力機制的并行卷積神經網絡(APCNN)和添加了注意力機制的雙向長短期記憶網絡(BiLSTM-ATT)兩部分組成,其APCNN層的作用是對特征向量進行局部特征提取,BiLSTM層的作用是對特征向量進行全局特征提取。

1.2.1 APCNN層

APCNN層是指添加了注意力機制的并行卷積神經網絡層。

注意力機制(Attention 機制)最早在視覺圖像領域中被提出[13],在本文算法中所使用的注意力機制均為自注意力機制,它不需要依賴次序序列計算,可以有效地減少長距離依賴,提取域名中的重要信息,減少了計算的復雜度,同時也增加了計算的并行性[14],在注意力機制中,給定3個輸入:Q(查詢Query)、K(鍵值Key)和V(內容Value)。Q、K和V都是通過輸入矩陣Y和訓練優化得到的矩陣WQ、Wk和Wv進行點積運算得來的。然后將Q與K的轉置做點積運算,接著除以一個縮放系數,再使用softmax函數處理獲得結果,最后與V做張量乘法得到注意力的輸出結果Oatt,公式如下:

卷積神經網絡(CNN)常用于處理圖像數據,也可用來處理序列數據,它通過從序列數據中提取特征來解決分類問題,其優點是能學習局部信息,因此在本文的模型中,使用并行的卷積神經網絡來學習域名中的各類特征。該卷積神經網絡由卷積層、池化層和隱藏層組成。其中,卷積層是核心部分,它將多個濾波器映射到輸入數據,以找到合適的特征,通過將卷積核移動k大小的窗口并在它們和整個輸入數據之間執行卷積運算來提取特征,公式如下:

其中,xt屬于注意力輸出結果Oatt中的向量,xt*xt-1表示卷積,k是卷積核的大小,C(t,k)是指卷積操作,R是卷積操作后得到的卷積結果,K是所有卷積核的大小,在本文中,K=[5, 6, 7]。

池化層的作用是對數據進行降維,以此來提取重要特征,提高檢測率。池化層分為最大池化層和平均池化層,在該模型中,使用最大池化層,池化計算的公式如下:

將每一個卷積層的池化結果拼接起來,得到

隱藏層中包括全連接層、激活層和批處理規范化(Batch Normalization)和Dropout 層,其中,全連接層的作用是將提取的局部特征進行特征融合,使用整流線性單元Re LU作為激活函數,公式如下:

其中x∈P。

而當學習率過高時,會導致神經元被置為0,使訓練中斷,因此激活層中使用ELU函數以彌補ReLU函數的缺點,可以讓激活的平均值接近于0,使其學習更快,然后使用批處理規范化使激活函數的結果服從正態分布,使模型可以學習而不是嚴重依賴于初始值,最后添加Dropout函數以防止過擬合,公式如下:

其中,γ和β為待學習的參數,ε為偏置參數。

APCNN層的結構圖如圖2所示,算法步驟如下:

圖2 APCNN結構圖Figure 2 The structure diagram of APCNN

算法2 APCNN算法

輸入:嵌入矩陣Y

輸出:特征向量D

(1)將嵌入矩陣Y輸入至注意力機制,通過式(2)得到Oatt;

(2)將Oatt輸入至卷積層,通過式(4)得到R;

(3)將R輸入至池化層進行降維,通過式(5)~(6)得到P;

(4)將P輸入至隱藏層,通過式(7)~(10)得到特征向量D。

1.2.2 BiLSTM-ATT層

這一層是由BiLSTM(雙向長短時記憶網絡)和ATT(注意力機制)構成。

LSTM是一種特殊的RNN(循環神經網絡)[15],可以很好地解決長時依賴問題,其結構如圖3所示。

圖3 LSTM結構圖Figure 3 The structure diagram of LSTM

由圖可知,LSTM由3個門來確定單元狀態:遺忘門、輸入門和輸出門,具體公式如下:

其中,xt∈Y,是LSTM 網絡的輸入;ft是遺忘門得出的信息,決定需要丟棄的信息,然后進入sigmoid 層;it是需要更新的值,再通過tanh 函數對狀態進行更新,將舊狀態與ft相乘,丟棄掉確定需要丟棄的信息,接著加上it*C~t,便得到一個候選值;最后通過tanh 和sigmoid 兩個激活函數得到最終的輸出ht,其中Wi、Wc、Wo為權重矩陣。由模型的訓練過程得出bi、bc和bo為偏置值,但LSTM 只能提取單向信息,這會降低準確率。

因此提出了BiLSTM,BiLSTM 由前向LSTM和后向LSTM組成[16],可以同時提取前向和后向信息,輸出由前向輸入和反向輸入共同決定,相比于LSTM可以更好地捕捉雙向的語義依賴,用來提取域名中的字符雙向序列特征[17],結構如圖4所示。

圖4 BiLSTM結構圖Figure 4 The structure diagram of BiLSTM

其中,w1和w2屬于前向層中權重矩陣中的權重向量,w3和w5屬于后向層中權重矩陣中的權重向量,w4和w6屬于輸出層中權重矩陣的權重向量,ht是前向的輸出,是后向的輸出,兩者通過函數g得到BiLSTM層的輸出。然后將BiLSTM 層的輸出輸入至注意力層,通過1.2.1 節中的注意力機制公式得到該層的輸出O。

BiLSTM-ATT的結構如圖5所示。

圖5 BiLSTM-ATT結構圖Figure 5 The structure diagram of BiLSTM-ATT

算法步驟如下:

算法3 BiLSTM-ATT算法

輸入:嵌入矩陣Y

輸出:特征向量O

(1)將Y輸入至BiLSTM層,通過式(15)得到ot;

(2)將ot輸入至注意力層,通過式(2)得到特征向量O。

1.3 特征融合

在這一步中,將經過局部特征提取后得到的結果和經過全局特征提取后得到的結果進行特征融合,即將APCNN層的輸出D和BiLSTM-ATT層的輸出O進行拼接,公式如下:

然后通過全連接層進行分類。全連接層的層數就是需要分類的DGA域名的種類數量,這一層的激活函數使用softmax函數,該函數將多分類結果轉換為概率,公式如下:

特征融合的算法步驟如下:

算法4 特征融合算法

輸入:特征向量O,特征向量D

輸出:分類結果s

(1)將特征向量O和特征向量D通過concatenate函數進行拼接,通過式(20)得到C;

(2)將C輸入至全連接層,使用softmax函數進行分類,通過式(21)得到s= softmax(C);

(3)輸出分類結果s。

2 實驗與結果分析

2.1 實驗數據集

實驗的數據集分為惡意域名數據集和良性域名數據集,惡意域名數據集中的數據主要是域名生成算法(DGA)自動生成的惡意域名,現有的惡意域名數據集DGArchive[18]是公開的惡意域名數據集,良性域名數據集主要來自于文獻[19]。在本文中,DGA數據集中共有約85萬條數據,良性數據集共有約76萬條數據。在評估模型的時候,使用交叉驗證法劃分數據集,將訓練集、驗證集和測試集的樣本數按照8∶1∶1的比例劃分。實驗數據集的數量分布如表2所示。

表2 數據集數量分布Table 2 Distribution of the numbers of datasets

2.2 實驗環境

本文的實驗環境如表3所示。

表3 實驗環境Table 3 Experimental environment

2.3 APCNN-BiLSTM-ATT 域名檢測算法在實驗數據集上的應用

(1)數據預處理

利用pandas 統計該數據集中域名的長度,并且將其可視化,可視化得到的域名長度分布如圖6所示,由此可知域名長度最長的不超過74,因此,在進行數據預處理時,對域名進行字符編碼并將域名長度填充至74,然后將其輸入至嵌入層進行向量化。

圖6 域名長度分布圖Figure 6 Distribution of domain name lengths

(2)特征提取

將經過數據預處理的域名分別輸入至APCNN層進行域名的局部特征提取,再輸入至BiLSTM-ATT層進行域名的全局特征提取。

(3)特征融合

將上一步經過局部特征提取后得到的結果和經過全局特征提取后得到的結果進行特征融合,然后通過全連接層進行輸出。全連接層的層數就是需要分類的DGA域名的類別數,因此在進行二分類實驗時,全連接層的層數為2,在進行多分類實驗時,全連接層的層數便是數據集域名的類別數48。

2.4 實驗參數設計

在APCNN 層中,卷積網絡的卷積核數量為3,卷積核大小為5、6、7,濾波器大小為256,激活函數是ReLU。在BiLSTM-ATT 層中,BiLSTM 層的維度 是128,激活函數為ReLU,該實驗的損失函數為focalloss函數,實驗參數設置如表4所示。

表4 實驗參數設置Table 4 Experimental parameter settings

由于實驗數據集中惡意域名的數量分布不均,因此在進行多分類域名檢測時導致部分數據量很低的域名檢測率很低甚至為0,因此,在本算法進行域名多分類時,損失函數采用focalloss 函數[20]。focalloss 函數的公式如下:

其中,pt代表模型預測某類別的概率,α是類別權重,用來調和正負樣本的權重比,γ是用來調節樣本不均衡的問題,一般取γ≥1,對于易分類樣本的損失進行一個冪函數的降低,因此(1 -pt)γ可以使模型更加關注于難分樣本,有利于模型預測能力的提高,因此在本實驗中將focalloss函數作為損失函數。

2.5 評價指標

為了驗證該模型檢測DGA 域名的能力,本文的評價標準有準確率(Accuracy,Acc)、精確率(Precision,Pr),召回率(Recall,Rc)和F1值(F1-score),計算公式如下:

其中,TP(True Positive)表示被正確歸為DGA類別的樣本數;FP(False Positive)表示被錯誤歸為良性域名的樣本數;TN(True Negative)表示被正確歸為良性域名的樣本數;FN(False Negative)表示被錯誤歸為DGA 類別的樣本數。F1值是精確率和召回率的一個綜合評價指標,準確率(Accuracy)是最基礎的評價指標,描述了整體檢測結果是否正確。在該實驗中使用準確率和F1值作為主要評價標準,準確率和F1值越大,說明模型性能越好。在多分類實驗中,本文使用加權平均值中的評價指標來驗證模型的性能。加權平均(weighted avg)是指對每個類的指標值進行加權平均求和,它考慮了每個類別樣本數量在總樣本中的占比,因此可以用來判斷DGA域名的多分類檢測能力[21]。

2.6 結果分析

在這一節中,對實驗結果進行分析,由于本算法中包含卷積神經網絡,因此卷積核的選擇很重要。首先使用不同的卷積核進行實驗,在選擇好模型參數后進行二分類和多分類實驗分析。

2.6.1 卷積核的選擇

在選擇卷積核時,選擇了幾種常見的卷積核組合進行對比實驗,只改變卷積核的大小,其他實驗參數不變。由表5可知,當卷積核大小為5、6、7時實驗的準確率最高,且這個組合卷積核的數量少,可以減少計算時間,卷積核的濾波器的大小都是256。

表5 卷積核大小對比實驗Table 5 Comparison of convolution kernel sizes

2.6.2 分類結果分析

在這一節中,本文使用并行CNN(Parallel CNN)、LSTM-ATT、Bilbo-Hybrid模型和本文提出的模型進行二分類和多分類對比實驗,通過比對它們的準確率和F1值驗證DGA域名的檢測能力。二分類是指將域名分為DGA 域名和良性域名兩個類別。二分類實驗結果表明,本文提出的模型在DGA 檢測上準確率和F1 值(0.982 9、0.982 9)高于其他模型,計算時間也大都小于其他模型,這說明本文提出的模型對DGA域名檢測能力好于其他模型,結果如表6所示。

表6 二分類實驗結果Table 6 Results of binary classification

隨后再進行多分類對比實驗,實驗的準確率如表7所示,結果表明,在進行多分類實驗時,本文提出的算法檢測DGA域名的準確率(0.929 2)高于其他模型,本文提出的算法在精確率、召回率和F1值這3個加權平均值的綜合評價指標上均有提升(分別為0.931 0、0.929 2、0.928 2),訓練時間也有所減短,這證明本文提出的模型檢測DGA域名的能力高于其他模型。

表7 多分類實驗結果Table 7 Results of multi-classification

2.6.3 多分類對比實驗

本文主要提升了字典型DGA 域名的分類能力,如mastnu、suppobox 和gozi 等域名。圖7 展示了字典型DGA域名的F1值,其中各字典型DGA域名的F1值都有所提升,大部分的字典型DGA域名的F1值幾乎達到了1,這說明本模型對于字典型DGA的檢測能力高于其他模型。由圖7可知,本模型對mastnu這一類別的字典型域名的F1值提升最多。圖8對mastnu 這一域名進行了具體分析,該類域名的準確率和F1值都有大幅度提升,本模型對于這一類別域名的召回率提升最多,由此可知,本文提出的模型對mastnu域名的檢測能力高于其他模型。

圖7 字典型DGA域名F1值Figure 7 F1-scores of dictionary-based DGA domain names

圖8 mastnu DGA域名精確率、召回率和F1值結果對比Figure 8 The precision, recall and F1-score comparison of mastnu DGA domain names

本文同時也提升了基于字符的DGA域名的F1值,但由于其他模型對于基于字符型的DGA域名的檢測率本身就不低,因此本模型對于該類型域名檢測率的提升幅度并不大,字符型的DGA域名的F1值對比如圖9 所示。由于focalloss 函數的加入,因此本文提升了一些數據量很低的域名的檢測率。由表2 可知,mirai、dowanloader、makloader和vidrotid等域名的數據量很少,由圖10對這些類別的DGA域名F1值進行的統計分析可知,這些數據量很少的域名的F1值高于其他模型的F1值,但是對于dircypt這一類域名,本文模型的F1值提升不高??傮w來說,本文提出的模型對DGA的檢測效果好于其他模型。

圖9 字符型DGA域名F1值Figure 9 F1-scores of character-based DGA domain names

圖10 數據量少的DGA域名F1值Figure 10 F1-scores of DGA domain names with less number

APCNN-BiLSTM-ATT 檢測模型的多分類混淆矩陣如圖11所示,該矩陣的每一行對應著預測屬于該類的所有樣本,其對角線表示預測正確的樣本個數,由此可知,本文提出的模型取得了比較有效的分類結果,但同時也有一些域名會被誤判,比如conficker和nymaim域名被誤判為pykspa域名等等,但被誤判的域名類型不多??傮w而言本文所提出的模型在DGA類別的多分類檢測上是有效的。

圖11 APCNN-BiLSTM-ATT檢測模型的多分類混淆矩陣Figure 11 Nomalized confusion matrix for APCNN-BiLSTM-ATT detection model

3 結論

本文提出了APCNN-BiLSTM-ATT域名檢測算法以檢測DGA域名,描述了該域名檢測算法的算法流程,并且使用了大量類別的DGA域名進行了二分類和多分類實驗,通過與其他模型進行比較,可知本文提出的模型對DGA域名的檢測分類效果高于其他模型,尤其提高了基于字典和一些數據量很小的DGA域名的分類準確率。

不過仍然存在少許域名檢測率很低的問題,雖然提高了一些數據量少的DGA域名的檢測率,但提升幅度不高,針對此類問題,后續會繼續改進算法以解決此問題。此外,還有少許基于字符的DGA 域名檢測率低,其原因是本文提出的模型沒有準確地提取其特征,導致這類域名與良性域名相混淆,針對這一類問題,在后續的研究中可以通過在嵌入層中使用詞嵌入的方法以提取域名特征,從而提高域名的檢測率。

猜你喜歡
域名卷積分類
基于3D-Winograd的快速卷積算法設計及FPGA實現
分類算一算
從濾波器理解卷積
分類討論求坐標
Combosquatting域名搶注的測量研究
數據分析中的分類討論
基于傅里葉域卷積表示的目標跟蹤算法
如何購買WordPress網站域名及綁定域名
教你一招:數的分類
騰訊八百萬美元收購域名
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合