姜 雄,黃文培
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756)
域名系統(tǒng)(Domain Name System,DNS)是現(xiàn)代互聯(lián)網(wǎng)的一項重要的基礎(chǔ)設(shè)施和資源,其主要功能是提供不適合記憶的長IP 地址與由字符組成的可讀域名之間相互映射的服務(wù)。借助DNS,網(wǎng)絡(luò)用戶可以通過記憶可讀域名來連接網(wǎng)絡(luò)。因此本地主機與互聯(lián)網(wǎng)之間的通信,除了利用靜態(tài)網(wǎng)絡(luò)互聯(lián)協(xié)議(Internet Protocol,IP)通信,都依賴于DNS 服務(wù)。一方面,由于DNS 協(xié)議在網(wǎng)絡(luò)中的普遍應(yīng)用和重要性,DNS 協(xié)議報文基本不會被防火墻的出站規(guī)則所屏蔽;另一方面,用戶一般更注重對受到攻擊的流量進行監(jiān)控,而忽略了利用DNS 協(xié)議進行信息傳輸?shù)碾[蔽行為。這兩點使得DNS 成為數(shù)據(jù)傳輸和泄露的隱蔽信道的良好選擇對象[1]。
DNS 隱蔽信道(DNS Covert Channel),又稱DNS 隧道,其主要目的有以下兩點:一是繞過認證和檢測實現(xiàn)網(wǎng)絡(luò)連接;二是突破防護墻的出站規(guī)則和流量檢測,實現(xiàn)惡意代碼遠程控制功能,或者傳輸敏感信息,竊取重要數(shù)據(jù)?,F(xiàn)在許多攻擊者在對目標主機植入惡意代碼后,借助DNS 隱蔽信道傳輸數(shù)據(jù)與信息,破壞系統(tǒng)數(shù)據(jù)完整性和機密性。新型后門木馬PlugX 遠控變種[2]就結(jié)合了DNS 隱蔽信道與PlugX 遠控程序,使得該木馬可以有效穿透防火墻。2017 年3 月一起DNSMessenger 的攻擊事件中的所有命令都通過DNS 隱蔽信道傳輸,以此來躲避檢查[3]。
目前對于DNS 隱蔽信道的檢測主要包括對DNS 報文和DNS 通信行為進行分析并提取特征。Qi 等人[4]提出了一種利用Bigram 對查詢域名進行評分以進行二分類實時檢測DNS 隧道的方法。Aiello 等人[5]提出先提取報文大小、時間間隔等特征,然后進行多數(shù)投票監(jiān)督學(xué)習(xí)的檢測方法。Liu等人[6]提出了一種基于行為特征的二分類方法,主要對DNS 隱蔽信道的通信行為進行特征提取。單康康等人[7]提出了基于多種機器學(xué)習(xí)算法構(gòu)建混合分類模型,通過分配權(quán)重綜合檢測結(jié)果來檢測DNS隱蔽信道。王琪等人[8]將DNS 服務(wù)器日志作為數(shù)據(jù)來源進行特征提取,使用機器學(xué)習(xí)分類模型進行檢測。Yang 等人[9]在使用隨機森林對DNS 隧道檢測時,主要關(guān)注DNS 隧道的會話行為特征。Lai 等人[10]提出了一種無須提取特征的檢測方法,該方法直接以DNS 應(yīng)答報文字節(jié)數(shù)據(jù)訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò)。Liu 等人[11]使用DNS 查詢報文作為數(shù)據(jù),對報文進行編碼,并使用卷積神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,自動對報文提取特征,但未去除受控域名對數(shù)據(jù)的影響。張猛等人[12]對DNS 網(wǎng)絡(luò)分組設(shè)定并提取大量特征數(shù)據(jù),還探索了多種卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的訓(xùn)練測試效果。
基于以上分析,目前的DNS 隱蔽信道檢測方法,都比較傾向于分析并提取特征;但在面對巨大的DNS 流量時恐難以應(yīng)對。在無須提取特征的檢測方法中,只對單一的查詢或應(yīng)答報文進行檢測識別,也難以覆蓋全面。近期,深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)和長短期記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory Neural Network,LSTM)分別在計算機視覺領(lǐng)域和文本領(lǐng)域取得了良好的性能,充分展示了其自動提取特征的能力。因此,本文提出了無須提取大量特征且不區(qū)分查詢與應(yīng)答報文的基于CNN 和基于LSTM 的檢測方法,并通過實驗驗證,以期達到理想的效果。
利用DNS 協(xié)議建立的隱蔽信道一般通過兩種方式實現(xiàn):一種是利用域名系統(tǒng),通過域名解析,與域名系統(tǒng)中的某一特定的域名服務(wù)器建立連接,這里稱為中繼模式;另一種是指定該解析域名的域名服務(wù)器,通過服務(wù)器的IP 地址直接建立連接,不經(jīng)過域名系統(tǒng),這里稱為直連模式。其中,常用中繼模式將DNS 隧道報文隱藏在大量的DNS 流量中,并經(jīng)過域名系統(tǒng)傳遞到目標服務(wù)器。
對于采用中繼模式構(gòu)建的DNS 隱蔽信道,作為數(shù)據(jù)隱藏的載體,DNS 查詢報文和應(yīng)答報文都經(jīng)過域名解析到達目標主機。以example.dnstunnel.com 為例,解析DNS 進行域名解析的流程如下:
(1)客戶端本地DNS 緩存如沒有查詢域名的查詢結(jié)果,則向本地DNS 服務(wù)器發(fā)送查詢請求;
(2)本地DNS 服務(wù)器如沒有相應(yīng)的緩存,則向根服務(wù)器發(fā)送查詢請求,根服務(wù)器返回com 的域名服務(wù)器IP 地址;
(3)本地DNS 服務(wù)器再向com 的域名服務(wù)器發(fā)送目標域名的查詢請求,com 的域名服務(wù)器則返回dnstunnel.com 的域名服務(wù)器IP 地址;
(4)本地DNS 服務(wù)器再向dnstunnel.com 的域名服務(wù)器發(fā)送目標域名的查詢請求,該DNS 服務(wù)器返回example.dnstunnel.com 的查詢結(jié)果,本地DNS服務(wù)器再將查詢結(jié)果返回給客戶端。
攻擊者如要構(gòu)建中繼模式的DNS 隱蔽信道,需要一臺能完全控制的DNS 解析服務(wù)器和一個已注冊的域名,并將該解析服務(wù)器設(shè)置為該域名的授權(quán)服務(wù)器,域名系統(tǒng)就會將對該域名及其子域名的查詢轉(zhuǎn)發(fā)到控制的服務(wù)器上,從而在其控制的客戶端與域名服務(wù)器之間,使用注冊的域名構(gòu)建DNS 隱蔽信道。
客戶端在向服務(wù)端發(fā)送數(shù)據(jù)時,首先將需要發(fā)送的數(shù)據(jù)采用Base64、Base32 等編碼后放在子域名部分,也就是替換上面距離域名的example 部分;其次經(jīng)過DNS 查詢將該子域名部分傳遞給服務(wù)端。服務(wù)端將需要回傳的數(shù)據(jù)編碼后,放在應(yīng)答報文的資源記錄區(qū)域,通過DNS 系統(tǒng)回傳給客戶端。
對于DNS 查詢報文來說,一般除了DNS 協(xié)議頭部信息,就只有查詢區(qū)域。DNS 隱蔽信道的查詢報文與常規(guī)的查詢報文之間的顯著區(qū)別是查詢域名與查詢類型。因為查詢域名時,DNS 隧道是傳遞數(shù)據(jù)的載體,為了提高傳輸?shù)男?,在域名?shù)據(jù)中使用二進制數(shù)據(jù)是一種有效提高傳輸效率的方法[13]?,F(xiàn)有的大多數(shù)工具建立的DNS 隱蔽信道使用了Base32、Base64 等對數(shù)據(jù)編碼,因此會使用非常規(guī)的字符。例如在實驗環(huán)境中,dns2tcp 在與C&C(Command and Control)服務(wù)器通信的過程發(fā)送的查詢域名為778A8QD/BA.dnstunnel.com。因此在子域名中蘊藏許多能表征DNS 隱蔽信道的特征,例如域名長度、字符頻率特征、信息熵等[14]。
為了讓服務(wù)端在DNS 應(yīng)答報文中有足夠大的空間填充數(shù)據(jù),常用TXT、CNAME、MX 等查詢類型,使其中能嵌入字符,而常規(guī)查詢報文為了獲得查詢域名的IP 地址,常用A 類型。
對于DNS 應(yīng)答報文來說,其查詢區(qū)域與其對應(yīng)的查詢報文的查詢區(qū)域相同,因此查詢報文中的檢測特征在應(yīng)答報文中依然存在。并且在常規(guī)的DNS 應(yīng)答報文中,很多時候應(yīng)答資源區(qū)域不止一條資源記錄,因為大型網(wǎng)站會有多個服務(wù)器。而DNS隱蔽信道的應(yīng)答報文,通常只有一條應(yīng)答資源記錄,這是為了節(jié)省應(yīng)答報文的空間而避免多條資源記錄占用頭部信息的空間。因此,應(yīng)答資源記錄數(shù)、應(yīng)答資源區(qū)域及其中的查詢類型也都是隱藏在應(yīng)答報文中的檢測特征。
以上是對DNS 報文所隱藏特征的分析,在通信行為方面,DNS 隱蔽信道的查詢報文與常規(guī)的查詢報文也有較大不同。其中DNS 隱蔽信道在傳輸大量數(shù)據(jù)時,需要在短時間內(nèi)產(chǎn)生大量DNS 報文[15],并且由于為了傳輸數(shù)據(jù)而導(dǎo)致產(chǎn)生查詢的速度過快,因此在一段時間的DNS 流量中查詢與應(yīng)答報文數(shù)量并不接近。
本文主要問題是判斷某個DNS 報文是否是由DNS 隱蔽信道產(chǎn)生??梢詫⑦@個目標表述為一個二分類的任務(wù),如{(P1,y1),…,(PN,yN)},其中Pn,n=1,2,…,N為一個DNS報文,yn∈{0,1}標記該DNS 報文是否是DNS 隱蔽信道的報文,其中1 為DNS 隱蔽信道的報文,0 為常規(guī)DNS 報文。對DNS流量數(shù)據(jù)進行數(shù)據(jù)規(guī)范化處理,然后基于CNN 和LSTM 建立檢測模型并訓(xùn)練,利用神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)自動提取特征,實現(xiàn)對DNS 隱蔽信道的檢測。
根據(jù)前面的分析,針對每一條DNS 流量報文,以字節(jié)為單位轉(zhuǎn)換為0~255 之間的整數(shù)。例如一條DNS 報文,其字節(jié)數(shù)據(jù)為[71,254,1,0,…,0,16,0,1],其長度為252,即該DNS 報文有210 個字節(jié)。由于DNS 協(xié)議在傳輸時,當封裝的DNS 應(yīng)答的長度超過512 字節(jié)時,DNS 協(xié)議就會在傳輸層采用傳輸控制協(xié)議(Transmission Control Protocol,TCP),而絕大多數(shù)DNS 報文使用用戶數(shù)據(jù)包協(xié)議(User Datagram Protocol,UDP)。
查詢域名部分由于不同的DNS 隱蔽信道會使用不同的已控制域名,例如由DNS 隱蔽信道工具dns2tcp 產(chǎn)生的DNS 隧道報文+Z8BRQFUBA.dnstunnel.com,其中的dnstunnel.com 是攻擊者自定義的受控域名,不具有特征,因此為了避免自定義已控制域名對模型的影響,使得訓(xùn)練的模型有更好的普適性,只對查詢域名的第一段域名部分作為數(shù)據(jù)進行訓(xùn)練。
因此DNS 報文中查詢域名只保留第一段子域名,并且去除無意義的會話標識,使用0 填充到623 字節(jié),或者截斷至623 字節(jié),再以50 個報文為一組統(tǒng)計DNS 報文速率與查詢報文占比這兩個數(shù)據(jù)填充至末尾,最后將其轉(zhuǎn)換成25×25的二維矩陣:
這個二維矩陣數(shù)據(jù)中分為報文數(shù)據(jù)與通信行為特征。再將該二維矩陣轉(zhuǎn)換成單通道灰度圖片,如圖1 所示。DNS 報文中的每一個字節(jié)都是圖片中的一個像素點,將該圖片作為卷積神經(jīng)網(wǎng)絡(luò)的輸入。
圖1 CNN 輸入灰度
本文研究的問題是利用CNN 檢測DNS 隱蔽信道,來判別一個DNS 報文是否是DNS 隱蔽信道產(chǎn)生的DNS 報文,這是一個二分類問題,因此在經(jīng)典的CNN 模型結(jié)構(gòu)LeNet-5 的基礎(chǔ)上進行改造。
整體結(jié)構(gòu):C1 卷積層,采用6 組1×6×6 的卷積核;S2 池化層,采用2×2 的采樣窗口;C3 卷積層,采用16 組6×5×5 的卷積核;S4 采樣層,采用2×2 的采樣窗口;F5 全連接層,采用96 個神經(jīng)元;F6 全連接層,采用10 個神經(jīng)元;F6 全連接層softmax 分類器,采用2 個神經(jīng)元。
卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練過程主要采用反向傳播算法來傳遞誤差并計算梯度,然后使用梯度下降的優(yōu)化算法來計算并更新神經(jīng)元之間的連接權(quán)重。通過不斷地訓(xùn)練,使得利用CNN 模型中的參數(shù)計算出的結(jié)果與目標誤差達到最小。其訓(xùn)練過程中的前向傳播、反向傳播及參數(shù)更新的表示方法如下文所述。
(1)前向傳播。其計算方法可以表示為:
式中:*為卷積操作;l為當前的卷積層數(shù);z和x分別為該層卷積操作后的輸出及經(jīng)過激活函數(shù)ReLU 后的輸出;W為該層的卷積核參數(shù)矩陣;b為該層的偏置參數(shù)。
(2)反向傳播。結(jié)合優(yōu)化算法,更新模型的參數(shù),采用交叉熵損失函數(shù)作為目標函數(shù),可以表示為:
式中:a為樣本預(yù)測為正類的概率;y為樣本標簽值為正類的概率;n為樣本大?。籈為目標函數(shù)。
(3)參數(shù)更新。為了使得模型達到目標函數(shù)的結(jié)果,需要根據(jù)預(yù)測值與目標的差距,反向傳播之后更新參數(shù)。其中權(quán)重的更新為偏置的更新為,其中η為學(xué)習(xí)速率,?為求偏導(dǎo)符號。
在C1 卷積層針對單通道灰度圖,即1×25×25的輸入,使用卷積核進行步長為1 且無填充的卷積,輸出6 張20×20 的特征圖像。在S2 采樣層,采用2×2 尺寸的采樣窗口,對C1 卷積層輸出的特征圖進行最大池化下采樣,輸出6×10×10 的特征矩陣。在C3 卷積層,進行步長為1 且無填充的卷積,輸出16 張6×6 的特征圖。在S4 采樣層中,同樣采用2×2 的采樣窗口進行下采樣,輸出16×3×3 的特征矩陣。在F5 全連接層中,將S4 采樣層中輸出的特征數(shù)據(jù)拉成一維數(shù)據(jù),即144 個特征作為輸入,輸入到96 個神經(jīng)元中,輸出96 個數(shù)據(jù)。在F6 全連接層中,使用10 個神經(jīng)元,輸出10 個數(shù)據(jù)。在F7全連接層中使用2個神經(jīng)元利用soft-max分類器,輸出結(jié)果為2 類。選取其中概率更大的數(shù)的索引作為判別結(jié)果,分別是0 或1,其中1 表示DNS 隱蔽信道報文,0 表示常規(guī)DNS 報文。
根據(jù)之前的分析,DNS 隱蔽信道在傳輸數(shù)據(jù)時,其手段是將傳輸?shù)臄?shù)據(jù)進行編碼后放在已控制域名的子域名部分,然后通過DNS 查詢將數(shù)據(jù)通過DNS 系統(tǒng)傳送到服務(wù)端。域名中隱含大量檢測特征,可以只將查詢域名作為使用神經(jīng)網(wǎng)絡(luò)提取特征的對象,然后對長序列數(shù)據(jù)有良好性能的LSTM 建立模型并訓(xùn)練,構(gòu)建對DNS 隱蔽信道的檢測模型。
將上文舉例的DNS 隱蔽信道查詢域名的第一段域名+Z8BRQFUBA 轉(zhuǎn)換成0~255 之間的整數(shù)。由于DNS 協(xié)議中查詢域名采用ASCII,所以可以將這一段域名的字節(jié)數(shù)據(jù),每個字節(jié)轉(zhuǎn)換成十進制的整數(shù),其范圍為0~255。得到一維矩陣輸入為[43,90,56,66,82,81,70,85,66,65]。
為了給LSTM 模型輸入相同格式的數(shù)據(jù),將該矩陣使用0 在前面填充,填充后長度為20。在數(shù)據(jù)末尾添加0 或1,作為數(shù)據(jù)標簽。因此每條DNS 報文處理后,得到長度為21 的數(shù)據(jù)為[0,0,…,66,65,1]。
3.2.1 模型結(jié)構(gòu)
模型整體結(jié)構(gòu):嵌入層,詞空間大小為256,嵌入到128 維向量中;LSTM 層,隱藏元(hidden state)的維數(shù)為256;兩個全連接層,一個是輸入隱藏元維數(shù)256 個數(shù)據(jù),輸出是詞空間大小256 個數(shù)據(jù),另一個是輸入詞空間大小256,輸出是1×2的矩陣。
(1)嵌入層。它可以把一個維數(shù)為所有詞的數(shù)量的高維空間嵌入到一個維數(shù)低得多的連續(xù)向量空間。這樣不僅可以減少離散變量的空間維數(shù),而且可以有意義地表示變量。
(2)LSTM 層。它是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),它有兩個傳輸狀態(tài),分別是cell state 和hidden state。它可以將序列前面部分計算的信息保留在兩個傳輸狀態(tài)中傳遞給當前輸入的數(shù)據(jù),使得在當前數(shù)據(jù)輸入后,可以根據(jù)當前輸入和前面序列的信息,預(yù)測輸出的值。
(3)全連接層。由于每個數(shù)據(jù)輸入到LSTM層之后,根據(jù)兩個傳輸狀態(tài),可以預(yù)測關(guān)于該數(shù)據(jù)的輸出,而該輸出則是在詞空間范圍內(nèi),所以實質(zhì)上每個預(yù)測輸出都是一個分類問題。因此使用全連接層將其分類,神經(jīng)元個數(shù)為詞空間的大小。
3.2.2 訓(xùn)練過程
其訓(xùn)練過程也分為前向傳播、反向傳播和參數(shù)更新。在前向傳播階段,分為兩個階段:
(1)每條數(shù)據(jù)長度為20,將訓(xùn)練數(shù)據(jù)的前19個數(shù)據(jù)依次輸入構(gòu)建的LSTM 模型中。在輸出層,只使用第一個全連接層,將輸出映射到詞空間大小的0~255 上,因為前19 個數(shù)據(jù),通過模型的輸出,都應(yīng)當是詞空間中的某個數(shù)據(jù)。此外,將當前數(shù)據(jù)計算出的隱藏元,在下一個數(shù)據(jù)輸入時,作為輸入的參數(shù),在下一個數(shù)據(jù)進行計算時更新隱藏元。
(2)第20 個數(shù)據(jù)輸入時,此時輸入的隱藏元,將隱含前19 個數(shù)據(jù)的信息,再結(jié)合第20 個數(shù)據(jù),LSTM 模型就提取出整個域名序列所含有的特征。在其經(jīng)過第一個全連接層運算后,輸出256 個數(shù)據(jù),作為第二個全連接層的輸入,最后通過soft-max 分類器輸出判別結(jié)果0 或1。利用LSTM 提取整個序列的特征的能力,對DNS 報文進行檢測。
反向傳播與參數(shù)更新的方式與CNN 的一樣,只是LSTM 模型的反向傳播和參數(shù)更新,發(fā)生在每條數(shù)據(jù)的第20 個元素輸入時,并通過兩層全連接層得到兩類結(jié)果,再與目標值計算交叉熵損失函數(shù),利用梯度更新算法和優(yōu)化算法,進行參數(shù)更新。
本文實驗中的常規(guī)DNS 報文數(shù)據(jù)一部分為local-dns 數(shù)據(jù),該數(shù)據(jù)來源于通過監(jiān)控網(wǎng)絡(luò)接口的方法,在真實校園網(wǎng)絡(luò)環(huán)境中,在一周內(nèi)采集的應(yīng)用層協(xié)議為DNS 協(xié)議的幀數(shù)據(jù),并將其存儲在pcap 格式文件中。為了數(shù)據(jù)的完整性,另一部分數(shù)據(jù)采用加拿大維多利亞大學(xué)ISOT 實驗室收集并公開的數(shù)據(jù)集ISOT HTTP Botnet Dataset 中的DNS 報文數(shù)據(jù),稱為isot-dns 數(shù)據(jù)。
DNS 隱蔽信道報文樣本數(shù)據(jù)除了使用3 個典型且常用的DNS 隧道工具搭建DNS 隧道產(chǎn)生之外,還使用了低速DNS 隧道工具dnsteal 和伊朗黑客組織APT34 使用并泄露出的Glimpse。3 個典型工具為DNSCat2、Iodine 和dns2tcp,它們使用不同的查詢類型和編碼方法,以及不同的通信行為與報文平均長度。例如,Iodine 能使用的查詢類型的種類最多,如SRV 和NULL,其他DNS 隧道工具很少使用這些類型,dns2tcp 常用Base64 編碼。dnsteal 只用于數(shù)據(jù)泄露,并且無需客戶端,DNS 報文速率與常規(guī)DNS 流量幾乎一致。Glimpse 作為在真實攻擊被黑客組織中使用的隧道工具,它所產(chǎn)生的數(shù)據(jù)能使得訓(xùn)練的檢測模型更具普遍性和代表意義。
關(guān)于實驗環(huán)境,在一臺主機上部署CentOS7 和Windows7 主機作為受控主機,并部署Ubuntu16.04搭載Bind9 作為本地DNS 服務(wù)器;在另一臺主機上部署CentOS7 作為控制端。
DNS 隱蔽信道主要有作為C&C 傳輸?shù)耐ǖ?、作為繞過網(wǎng)絡(luò)認證的通道、實現(xiàn)網(wǎng)頁瀏覽及文件秘密傳輸?shù)耐ǖ肋@3 種工作狀態(tài)。前3 個隧道工具通過使用ssh 遠程登錄命令以及搭建socks 代理服務(wù)器和nc 命令的方式分別工作在這3 個狀態(tài),并收集其工作時與空閑時產(chǎn)生的DNS 報文數(shù)據(jù)。dnsteal則通過傳輸文件收集數(shù)據(jù),Glimpse 可以實現(xiàn)命令控制和數(shù)據(jù)傳輸。收集的數(shù)據(jù)如表1 所示,并分配20%為測試數(shù)據(jù)集。
表1 DNS 隱蔽信道檢測數(shù)據(jù)集
為了驗證模型對DNS 隱蔽信道的檢測效果,這里設(shè)立3 個評測指標,分別是準確率ACC、誤報率FPR、精確率PRE,具體計算公式為:
式中:TP為實際正類且預(yù)測為正類的樣本數(shù)量;FN為實際正類且預(yù)測為負類的樣本數(shù)量;FP為實際負類且預(yù)測為正類的樣本數(shù)量;TN表示實際負類且預(yù)測為負類的樣本數(shù)量。
為了與提取特征的機器學(xué)習(xí)方法進行對比,使用邏輯回歸(Logistic Regression,LR)、支持向量機(Support Vector Machine,SVM)和決策樹(Decision Tree,DT)構(gòu)建檢測模型,與本文所提方法進行對比。共提取12 個特征,分別是查詢請求報文字節(jié)數(shù)、UDP 載荷字節(jié)數(shù)、第一段域名長度、整體域名長度、域名中大寫字母的個數(shù)、域名中小寫字母的個數(shù)、域名中數(shù)字的個數(shù)、域名中非法字符的個數(shù)、域名信息熵、查詢類型、對應(yīng)的DNS 應(yīng)答報文的字節(jié)數(shù)、單位時間內(nèi)發(fā)出DNS 請求的個數(shù)。
這5 種檢測模型在測試數(shù)據(jù)集上的測試結(jié)果如表2 所示。
表2 測試結(jié)果 %
從表2 可以看出,本文的基于CNN 和基于LSTM 的DNS 隱蔽信道檢測方法,在3 個指標上好于傳統(tǒng)的提取特征的基于機器學(xué)習(xí)方法。其中CNN方法的表現(xiàn)最好,因為它的訓(xùn)練數(shù)據(jù)包含的特征最全面,包括了報文特征與通信行為特征。LSTM 方法在整體效果上不如CNN 方法,因為其只能自動提取到隱含在子域名中的特征,但LSTM 方法相較于CNN 方法則更加簡便,只需提取報文中的查詢域名的第一段域名的字節(jié)數(shù)據(jù),就能進行檢測識別,更適合在流量出入口進行快速檢測。
本文針對在網(wǎng)絡(luò)攻擊中越來越常見的DNS 隱蔽信道進行了分析,提出了基于CNN 和LSTM 這兩種神經(jīng)網(wǎng)絡(luò)的檢測方法,利用神經(jīng)網(wǎng)絡(luò)對隱含特征的數(shù)據(jù)進行自動提取特征,實現(xiàn)了對DNS 隱蔽信道的有效檢測。該方法無須進行大量的特征設(shè)定和提取,也無須對DNS 查詢和應(yīng)答報文進行區(qū)分。此外,本文數(shù)據(jù)集來源于DNS 隱蔽信道常用的3 種狀態(tài)和網(wǎng)絡(luò)攻擊中黑客組織使用的Glimpse,使得數(shù)據(jù)集更加全面,且更具代表意義。