阿里DNS:一種不斷變化前綴域名攻擊檢測方法

1.概述

不斷變化前綴域名:是指域名的後綴不變,前綴隨機變化,例如:

aaaxbhzqegs.www.example.com.
aachbgunkyi.www.example.com.
aaazqppqiir.www.example.com.
aabkwblebrz.www.example.com.
aaaiwcdsrvf.www.example.com.

其中:www.example.com 是三級後綴,aaaxbhzqegs,aachbgunkyi,aaazqppqiir等都是 www.example.com 的緊鄰下一級前綴;example.com 是二級後綴,www是它的緊鄰下一級前綴。

另外,還有一些不斷變化中綴域名:是指域名的前綴、後綴不變,中綴隨機變化,例如:

www.aaaxbhzqegs.example.com.
www.aachbgunkyi.example.com.
www.aaazqppqiir.example.com.
www.aabkwblebrz.example.com.
www.aaaiwcdsrvf.example.com.

其中:www是前綴,example.com 是二級後綴,aaaxbhzqegs,aachbgunkyi等都是中綴,同時也是 example.com 二級後綴的緊鄰下一級前綴。

不斷變化前綴域名攻擊中,前綴字元串是隨機變化的,且數量龐大,不對它們進行遞歸請求很難判斷該域名是否存在,而遞歸能力一直是DNS系統的性能瓶頸,因此需要實時對此攻擊進行檢測,進而進行相應地防護。

2.難點

不斷變化前綴域名攻擊檢測的一些已知難點有:

  • 不斷變化的部分可能是任意級的前綴、中綴;
  • 攻擊有可能同時針對多個後綴,且每個後綴的前綴變化次數都不顯著,而它們加起來的變化次數比較顯著;
  • 泛解析干擾:有些後綴配置了泛解析,則不管其前綴如何變化,均不能被認為是攻擊;
  • 攻擊域名與正常域名屬於相同的後綴,正常域名容易被誤殺,如 example.com 是攻擊域名,而 www.example.com 是正常域名,當檢測到後綴 example.com 遭受攻擊時,容易將 www.example.com 誤殺;

3.解決方案

針對上面遇到的問題,我們提出了一種基於在離線混合學習的隨機域名攻擊檢測方案。該方案包括在線檢測與離線訓練兩個部分,如下圖所示:

圖3-1 不斷變化前綴域名攻擊檢測系統結構圖

在線檢測部分的功能是:根據離線訓練好的分類模型對實時流入的DNS查詢請求進行分類,分為疑似攻擊域名與正常域名兩類,再結合其響應結果分別統計,累計一段極短的時間後,根據閾值檢測出攻擊的後綴,並輸出檢測結果;

離線訓練部分的功能是:對一段較長時間的DNS服務日誌進行挖掘,分類訓練,得到分類模型,供在線檢測部分使用;

首先我們來看在線檢測的流程,如下圖所示:

圖3-2 在線檢測流程圖

  • 定時更新分類模型:每天定時從外部更新分類模型;
  • 旁路流入DNS查詢、響應:旁路鏡像流入DNS查詢、響應數據包;
  • 查詢、響應組合:根據五元組(源IP、源埠、目的IP、目的埠、DNS_ID)將查詢包與響應報組合起來,得到每個查詢對應的響應狀態碼(如NoError, ServFail, NxDomain等);
  • 過濾:過濾出沒有響應(超時)或響應狀態碼是ServFail、NxDomain的查詢;
  • 域名拆分組合:將查詢域名拆分成各級後綴與其緊鄰下一級前綴的組合,如 example.com 被拆分成:一級後綴與其緊鄰下一級前綴的組合:com + [example]、二級後綴與其緊鄰下一級前綴的組合:example.com + [aaaxbhzq];
  • 字元串判定:對各級後綴的緊鄰下一級前綴字元串提取特徵,根據分類模型判定其是否隨機、無意義;
  • 重複前綴判定:對於每一個後綴,維護一個集合,用於緩存出現過的前綴,重複前綴被丟棄;
  • 累計緩存:把前綴追加到對應後綴的緩存集合里,對應後綴的計數器加1;
  • 窗口判定:統計時間窗口設置為一個極短的時間(如30秒);
  • 攻擊判定:後綴計數器大於攻擊閾值T0;
  • 輸出攻擊的後綴:此時不通知防禦;
  • 防禦判定:所有攻擊後綴的計數器之和大於防禦閾值T1;
  • 通知開啟防禦:及時通知外部開啟防禦,給出攻擊後綴列表;
  • 清空緩存集合、計數器;

然後我們再來看一下離線訓練的流程,如下圖所示:

圖3-3 離線訓練流程圖

  • 日誌預處理:將DNS服務日誌處理成<查詢域名,是否攻擊>的二元組;
  • 樣本採集:隨機選擇大量(如100萬)的是攻擊的二元組作為正樣本、大量(如30萬)的不是攻擊的二元組作為負樣本;
  • 樣本劃分:所有正負樣本一起按一定的比例(如6:4)隨機劃分為訓練集和測試集;
  • 計算變化前綴所在級數L及對應的信息熵均值h:在訓練集上,遍歷域名若干級後綴,提取其緊鄰下一級前綴字元串的信息熵(見第6步中(b)信息熵),統計其均值,使得均值最大的級數即為所求的L,對應的均值記為h;
  • 信息熵均值是否大於閾值H;
  • 特徵提取並歸一化:對前綴字元串提取特徵向量,它由三個特徵組成:

1) 最長母音距(mvd):即字元串中母音之間的最長間隔,如「alibaba-inc」的最長母音距是最後的「nc」2個字元長度(字元串中的連字元『-』也當作母音處理,字元串結尾也當作有一個母音)。

母音距表徵了字元串中各音節的長度,體現了發音的節奏。正常有意義的單詞或短語的音節比較短,節奏比較均勻,以方便發出聲音,相應地,其最長母音距偏短,如「alibaba-inc」的母音距為[1,1,1,2],最長母音距為2;而無意義的隨機字元串的音節比較長,沒有節奏,相應地,其最長母音距偏長,如「aaaxbhzqegs-2」的母音距為[5,2,1],最長母音距為5;

2)信息熵(entropy):表徵字元串的隨機程度,其計算公式為:

其中, Pi為每個字母(或數字)在字元串中出現的概率。

正常有意義的單詞或短語,其字元排列遵從書寫規範,不能任意排列,隨機化程度不高,信息熵偏低,如「alibaba-inc」的信息熵為2.44;而無意義的隨機字元串的字元排列則沒有限制,隨機化程度比較高,信息熵偏高,如「aaaxbhzqegs-2」的信息熵為3.19;

3)長度(len):字元串的長度。觀察中發現,攻擊字元串的長度在一段短時間內都比較穩定,且長度比較大;而正常的域名字元串則無此規律。

圖3-4顯示了這三種特徵分別在攻擊域名、正常域名中的分布情況,可以看出,它們在攻擊域名與正常域名中的分布都具有較大差異,主要在於:在攻擊域名中,均值都偏大。

特徵歸一化採用Z-score歸一化法,其計算公式為:

其中u為樣本均值,o~為樣本標準差;

  • 訓練分類模型:在訓練集上進行模型訓練,分類模型採用線性SVM(Support Vector Machine 支持向量機),其公式為:

其中x為特徵向量(最長母音距,信息熵,長度), wT為係數向量, b為截距,如若結果大於0,則判定為正樣例(攻擊),否則判定為負樣例(非攻擊)。訓練過程即是要找到一個最合適的wT和b;另外,還需要獲取訓練集的樣本均值向量u、標準差向量o~;

  • 模型評估:在測試集上評估訓練好的SVM模型,得到總體準確率;
  • 模型準確率是否大於閾值T;
  • 輸出模型:模型包括SVM參數wT, b與歸一化參數u, o~ 。

圖3-4 最長母音距(mvd)、信息熵(entropy)、長度(len)分別在攻擊域名(positive)、正常域名(negative)中的分布情況。

從圖中可以看出,三種特徵在攻擊域名中的均值較正常域名大。


推薦閱讀:

TAG:DNS | 域名 | 網路攻擊 |