陳解元
(國家計算機網(wǎng)絡(luò)與信息安全管理中心,北京100032)
域名系統(tǒng)(Domain Name System,DNS)是把域名和IP 地址相互映射的一種層次化分布式數(shù)據(jù)庫系統(tǒng),是互聯(lián)網(wǎng)上進行域名解析的核心基礎(chǔ)設(shè)施。 互聯(lián)網(wǎng)訪問不可避免地需要進行域名解析服務(wù),正由于DNS 協(xié)議的必要性,大部分網(wǎng)絡(luò)中的防火墻不會攔截 53 端口上的數(shù)據(jù)包[1]。 隨著 DNSCat2、Iodine 等工具的開源,越來越多的黑客開始利用DNS 協(xié)議創(chuàng)建隱蔽信道[2],實現(xiàn)木馬控制、數(shù)據(jù)竊取、高級可持續(xù) 威 脅 攻 擊(Advanced Persistent Threat,APT)等 , 嚴重危害信息系統(tǒng)運營者權(quán)益和用戶個人隱私。
DNS 隱蔽信道[3]是指將其他協(xié)議的內(nèi)容封裝在DNS 數(shù)據(jù)包的可定義字段中,然后以DNS 請求和響應(yīng)包完成數(shù)據(jù)傳輸?shù)耐ǖ馈?常見的可利用字段有QNAME 字 段 、RDATA 字 段 等[4]。
近年來,針對DNS 隱蔽信道的檢測方法不斷被提出,按照分析對象可以分為兩類:基于域名字符串的檢測方法和基于通信特征的檢測方法[5]。 在基于域名字符串分析方面,Born 等[6]通過分析 DNS 查詢和響應(yīng)中域的一字圖、二字圖和三字圖的字符頻率,提出遵循齊普夫定律的模式與自然語言相似,而隧道通信的字符頻率分布更均勻,并以此識別異常流量。Bilge 等[7]通過計算請求域名中最長有意義的字符串所占比例,分段統(tǒng)計字符分布,發(fā)現(xiàn)用于隱蔽通信的域名。Qi 等[8]提出一種基于二元詞頻統(tǒng)計特征的隱蔽通道檢測算法。 Farnham 等[9]利用正則表達式提取特征字段,通過閾值對比發(fā)現(xiàn)隱蔽通信行為。 隨著機器學(xué)習(xí)技術(shù)的發(fā)展,類文本數(shù)據(jù)特征挖掘逐漸應(yīng)用于DNS 隱蔽信道研究。 章思宇等[10]使用樸素貝葉斯、邏輯回歸、決策樹等分類器對提取的 12 維數(shù)據(jù)進行分類。 Buczak 等[11]使用隨機森林算法,訓(xùn)練了16 維數(shù)據(jù)特征模型用于隱蔽信道檢測。 Nadler 等[12]使用熵、請求類型、子域長度、請求長度等作為模型輸入特征,并使用主成分分析算法對特征進行降維,使用合法DNS 數(shù)據(jù)進行訓(xùn)練,將超出正常行為的請求歸類為可疑隧道。 Sheridan 等[13]收集了常見DNS 隱蔽信道通信流量,提取指紋特征,并搭建隱蔽信道實驗環(huán)境進行匹配計算。 上述方法多以DNS 請求流量為研究對象, 忽略了響應(yīng)流量中時間戳、生存時間值(Time to Live,TTL)等重要的隱蔽信道特征, 在誤報率方面仍有提升空間。其次,卷積神經(jīng)網(wǎng)絡(luò)較傳統(tǒng)機器學(xué)習(xí)算法,能夠更全面地感知隱蔽信道行為模式, 提升多類型DNS隱蔽信道檢測識別率。
基于以上分析,本文提出一種基于LSTM 的DNS隱蔽信道檢測方法,加入時間戳、TTL 等作為表征DNS 隱蔽信道的關(guān)鍵因素,最終提取 13 維特征,利用LSTM 算法分別學(xué)習(xí)正常流量、隱蔽信道流量特征,并在真實流量環(huán)境中開展對比實驗,實驗結(jié)果表明,本文提出的特征元素能夠很好地表征異常流量,模型可識別多種類型DNS 隱蔽信道流量,并且在準(zhǔn)確率、精確率等機器學(xué)習(xí)指標(biāo)中均表現(xiàn)最好。
DNS 隱蔽信道依靠遞歸查詢過程中的數(shù)據(jù)轉(zhuǎn)發(fā),將數(shù)據(jù)嵌入DNS 數(shù)據(jù)包,建立受控設(shè)備與攻擊者間隱蔽的通信橋梁。 DNS 協(xié)議定義了兩種報文,一種是由客戶端發(fā)起的查詢報文,另一種是服務(wù)器端對查詢報文的響應(yīng),稱為響應(yīng)報文。 DNS 協(xié)議的特性決定了在查詢報文中,一般以QNAME 字段為最佳數(shù)據(jù)載體字段,在響應(yīng)報文中,RDATA 為最佳數(shù)據(jù)載體字段。 根據(jù) DNS 隱蔽信道原理,其數(shù)據(jù)報文特征與正常數(shù)據(jù)包有所差別。 例如,QNAME 字段最大長度為253 字符,承載數(shù)據(jù)量較小,通過該字段傳輸隱蔽信道數(shù)據(jù),勢必造成QNAME 子域名存儲的數(shù)據(jù)量較正常報文更大。 因此,分析提取異常點可以有效表征DNS 隱蔽信道。
為了收集和構(gòu)建包含黑白樣本的高質(zhì)量數(shù)據(jù)集,正常 DNS 流量樣本采集自某數(shù)據(jù)出口,提取 10天時間內(nèi)全域名請求和應(yīng)答數(shù)據(jù),請求域名去重后,以人工確認與威脅情報API 查詢相結(jié)合的方式篩選出 10 萬行作為白樣本。 DNS 隱蔽信道流量樣本采用5 種流行的隱蔽信道工具模擬生成,分別為Iodine、DNS2TCP、DNSCat2、DNSteal、TCP -over -DNS,通過 wireshark 工具捕獲。 在模擬網(wǎng)絡(luò)環(huán)境中,使用5 臺客戶端同步運行5 種隱蔽信道工具。
對 CNCERT/CC 抽樣監(jiān)測的遠控木馬、APT 攻擊行為進行統(tǒng)計分析顯示,C&C 通信因其具有一對多的主控特征,具有較明顯的時間聚集特性,如圖1所示。因此,在隱蔽信道模擬流量產(chǎn)生時,對應(yīng)白樣本相同的時間段內(nèi),人工選擇10 個小時段,產(chǎn)生較為密集的數(shù)據(jù)傳輸狀態(tài)DNS 隱蔽信道流量樣本,其他時間段隨機產(chǎn)生數(shù)據(jù)傳輸和空閑狀態(tài)混合的DNS 隱蔽信道流量樣本。 由正常 DNS 流量樣本和DNS 隱蔽信道流量樣本組成的數(shù)據(jù)集分布如表1所示。
圖1 惡意木馬C&C 通信時間分布
表1 實驗數(shù)據(jù)集分布
對于 DNS 查詢報文,由于 DNS 隱蔽信道需承載額外數(shù)據(jù),最明顯的特征是請求報文負載長度、請求域名長度、QNAME 二級域名部分的字符串長度等明顯大于正常 DNS 數(shù)據(jù)。 而承載數(shù)據(jù)越多,在域名長度有限制的情況下,想要提升傳輸效率,子域名的級數(shù)也會隨之增多。 此外,經(jīng)過編碼的數(shù)據(jù)字符混亂,熵值較高。
對大量DNS 查詢報文統(tǒng)計特征來說,單一源IP每天DNS 請求的數(shù)量能夠反映受感染的僵尸主機請求數(shù)量往往高于正常主機特征。 單一源IP 每小時最多請求數(shù)能夠反映是否存在使用短暫的DNS請求與多個URL 與 C&C 服務(wù)器進行通信。
對于DNS 響應(yīng)報文,正常流量承載的數(shù)據(jù)為IP地址,最大長度為固定值,由于控制端需向受控端發(fā)送指令,導(dǎo)致DNS 隱蔽信道響應(yīng)報文負載的長度超過正常響應(yīng)報文。
DNS TTL 表示 DNS 記錄在 DNS 服務(wù)器上緩存時間,越長的TTL 可以緩存更長的時間,提高緩存命中的速度,減少收到的查詢數(shù)量,從而使到達C&C服務(wù)器的DNS 流量降低。 相反的,DNS 隱蔽信道為提升數(shù)據(jù)傳輸效率,TTL 值一般只有幾分鐘,與正常TTL 一小時以上的數(shù)值存在較大差距。
此外,檢測DNS 隱蔽信道的重要特征還包括上文提到的時間戳。 通過對比分析,本文采用 13 維特征描述DNS 隱蔽信道流量與正常流量的區(qū)別,具體表征元素如表2 所示。
表2 DNS 報文特征
本文構(gòu)建的DNS 隱蔽信道檢測算法,提取計算每條通信流量的表征元素,通過數(shù)據(jù)清洗,將數(shù)據(jù)轉(zhuǎn)化為二維矩陣。 使用LSTM 算法對輸入矩陣進行訓(xùn)練獲得分類器模型,最終輸出測試集預(yù)測結(jié)果。 算法流程如圖2 所示。
圖2 總體算法流程
數(shù)據(jù)預(yù)處理階段的目標(biāo)是將pcap 格式的網(wǎng)絡(luò)流量數(shù)據(jù),生成帶有標(biāo)記數(shù)據(jù)的輸出csv 文件,轉(zhuǎn)化為卷積神經(jīng)網(wǎng)絡(luò)可運算的二維灰度圖像,過程主要包括數(shù)據(jù)清洗、符號數(shù)據(jù)轉(zhuǎn)換兩個步驟。
數(shù)據(jù)清洗過程包含大小寫字符統(tǒng)一、無效字符替換、缺失數(shù)據(jù)填充。 DNS 協(xié)議規(guī)定每一個域名都是 一 個 標(biāo) 號 序 列 labels, 用 字 母(A ~Z,a ~z,大 小 寫等價)、數(shù)字(0~9)和連接符(-)組成,標(biāo)號序列總長度不能超過255 個字符,由點號分割成一個層次的域名,單層域名長度應(yīng)該在 63 個字符之內(nèi)。 由于大小寫字符等價,而計算熵值時會判定為不同的字符,需要將請求域轉(zhuǎn)化為小寫字母集。 其他不合規(guī)字符(如!?& 等)可視為干擾項,使用統(tǒng)一標(biāo)記替換??罩祷蛉笔е悼梢杂闷渌麑?yīng)值的中值或零來代替,為了減少計算開銷和訓(xùn)練時間,本文采用補零方式處理。
符號數(shù)據(jù)轉(zhuǎn)換階段,計算每條DNS 流量的13個表征元素值轉(zhuǎn)化為圖像灰度值,作為x 維向量,將每一組特征取值表示為y 維向量,轉(zhuǎn)化為q 個x×y大小的二維灰度圖像,作為算法輸入數(shù)據(jù)進行學(xué)習(xí),訓(xùn)練 LSTM 分類器。 公式表示為:
其中,T 為一組流量特征矩陣,Bi為表征元素列向量為向下取整的圖像灰度值為輸入矩陣。
LSTM 是一種時間循環(huán)神經(jīng)網(wǎng)絡(luò),屬于深度學(xué)習(xí)的代表性算法之一,其基本思路是通過提取圖像中相鄰像素之間相似的表達和特征,對輸入向量進行卷積操作,以提取局部特征作為下一層的輸入,通過逐層提取與組合,轉(zhuǎn)化為抽象且全面的信息。 并且由1.2 節(jié)分析,選取的表征元素之間存在一定的強關(guān)聯(lián),如響應(yīng)報文負載長度較長時,響應(yīng)報文平均記錄長度、UDP 載荷長度一般也較長,選擇 LSTM可以通過Sigmoid 保留更多的局部特征。
LSTM 和傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)一樣,模型結(jié)構(gòu)分為三層,分別為輸入層、輸出層和隱藏層,不同的是LSTM 有 2 個 傳 輸 狀 態(tài) Ct(cell state)和 ht(hidden state),每個門控單元包含一個Sigmoid 激活函數(shù)。
遺忘門控制模型將從一組單元中丟棄哪些信息,公式表示為:
其中,xt和 ht分別表示輸入和輸出,遺忘門讀取 ht-1和 xt,向 Ct-1輸出 0 到 1 之間的狀態(tài)值,其中 0 表示完全丟棄,1 表示完全保留。 W 和 b 分別為權(quán)值和偏置量。
輸入門 it計算哪些信息需要更新,由式(6)中tanh層生成一個向量作為更新的替代項,將這兩部分組合起來,通過式(7)對Ct的狀態(tài)值進行刷新。
式(8)中輸出門決定單元格狀態(tài) Ct的哪些部分被導(dǎo)出,通過式(9)中tanh 函數(shù)獲得對應(yīng)值,輸出最終結(jié)果。
如圖 3 所示,本文 LSTM 模型嵌入層的輸出尺寸為 16,由嵌入層提供 64 個單元組成 LSTM 層的輸入,這一層的激活函數(shù)為tanh。 以下的全連接層由64 層組成,具有 ReLU 激活函數(shù)。 下一層同樣是全連接層,具有激活函數(shù) ReLU 和 6 個單位。 最后一層是一個全連接層,有 1 個單位和 1 層激活函數(shù)。
圖3 本文 LSTM 模型
為訓(xùn)練測試模型,本文搭建的軟硬件環(huán)境為:Ubuntu64 位操作 系 統(tǒng),基 于 Python 的 TensorFlow 和PyTorch 軟件框架;Xeon Siliver 4210 CPU,主頻 2.0 GHz,128 GB 內(nèi)存,NVIDIA Tesla P100 GPU。
為準(zhǔn)確評估模型對DNS 隱蔽信道識別有效性,選擇 4 個評價參數(shù),分別為準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)和分類器精度得分(F1-score),并與 CNN、RNN、GRU 算法進行了對比。 指標(biāo)公式為:
其中,TP 表示歸類正確的目標(biāo)樣本數(shù)量,即 DNS 隱蔽信道流量被識別為異常流量;TN 為歸類正確的其他樣本數(shù)量,即良性流量被識別為正常流量;FP為識別錯誤的目標(biāo)樣本數(shù)量,即良性流量被識別為異常流量;FN 為被遺漏識別的目標(biāo)樣本數(shù)量,即DNS 隱蔽信道流量被識別為正常流量。
對本文算法與選取的3 種對比算法在相同訓(xùn)練數(shù)據(jù)集上進行10 輪訓(xùn)練,準(zhǔn)確率曲線如圖4 所示。
圖4 本文算法與其他算法訓(xùn)練過程對比
可以看出,訓(xùn)練準(zhǔn)確率隨著完整訓(xùn)練次數(shù)的增加而不斷增加,LSTM 算法較對比算法有較高的穩(wěn)定性,隨周期增加的波動幾乎可以忽略,最終的準(zhǔn)確率達到99.8%。
在評價指標(biāo)方面,表 3 列出了LSTM 算法與同類神經(jīng)網(wǎng)絡(luò)模型對比。 CNN、RNN、GRU 模型均采用與本文 LSTM 算法相同的 3 個全連接層結(jié)構(gòu),結(jié)果表明在混合了真實DNS 流量和仿真DNS 隱蔽信道流量的數(shù)據(jù)集上,LSTM 算法的4 項指標(biāo)均表現(xiàn)最好,其次為 GRU 模型。
表3 神經(jīng)網(wǎng)絡(luò)算法對比
針對不同類型的DNS 隱蔽信道識別準(zhǔn)確率如表4 所示,可以看出,本文選取的特征元素能夠很好地表征異常流量,各類型DNS 隱蔽信道流量均可被識別檢測。 且 LSTM 算法對各類 DNS 隱蔽信道流量識別的準(zhǔn)確率均高于99.7%,有較高的識別準(zhǔn)確率和廣泛的適用范圍。
表4 各類DNS 隱蔽信道識別準(zhǔn)確率對比
本文采用長短期記憶人工神經(jīng)網(wǎng)絡(luò)模型,提出了一種基于DNS 流量分析檢測隱蔽信道的算法。與以往的研究相比,本文提出的算法通過分析請求流量和響應(yīng)流量的特征,將時間戳、TTL、響應(yīng)報文負載長度等因素提取為DNS 隱蔽信道特征,在仿真流量環(huán)境中開展實驗,取得了良好的效果。 實驗結(jié)果表明,本文算法總體準(zhǔn)確率達到99.8%,對各類DNS 隱蔽信道流量識別的準(zhǔn)確率均高于99.7%,在準(zhǔn)確率、精確率等機器學(xué)習(xí)指標(biāo)中均表現(xiàn)最好,有效提高了基于流量的DNS 隱蔽信道檢測算法準(zhǔn)確度。