阿里DNS:一種不斷變化前綴域名攻擊檢測(cè)方法
時(shí)間:2023-02-12 16:54:01 | 來源:建站知識(shí)
時(shí)間:2023-02-12 16:54:01 來源:建站知識(shí)
1.概述
不斷變化前綴域名:是指域名的后綴不變,前綴隨機(jī)變化,例如:
aaaxbhzqegs.www.example.com. aachbgunkyi.www.example.com. aaazqppqiir.www.example.com. aabkwblebrz.www.example.com. aaaiwcdsrvf.www.example.com.
其中:www.example.com 是三級(jí)后綴,aaaxbhzqegs,aachbgunkyi,aaazqppqiir等都是 www.example.com 的緊鄰下一級(jí)前綴;example.com 是二級(jí)后綴,www是它的緊鄰下一級(jí)前綴。
另外,還有一些不斷變化中綴域名:是指域名的前綴、后綴不變,中綴隨機(jī)變化,例如:
www.aaaxbhzqegs.example.com. www.aachbgunkyi.example.com. www.aaazqppqiir.example.com. www.aabkwblebrz.example.com. www.aaaiwcdsrvf.example.com.
其中:www是前綴,example.com 是二級(jí)后綴,aaaxbhzqegs,aachbgunkyi等都是中綴,同時(shí)也是 example.com 二級(jí)后綴的緊鄰下一級(jí)前綴。
不斷變化前綴域名攻擊中,前綴字符串是隨機(jī)變化的,且數(shù)量龐大,不對(duì)它們進(jìn)行遞歸請(qǐng)求很難判斷該域名是否存在,而遞歸能力一直是DNS系統(tǒng)的性能瓶頸,因此需要實(shí)時(shí)對(duì)此攻擊進(jìn)行檢測(cè),進(jìn)而進(jìn)行相應(yīng)地防護(hù)。
2.難點(diǎn)
不斷變化前綴域名攻擊檢測(cè)的一些已知難點(diǎn)有:
- 不斷變化的部分可能是任意級(jí)的前綴、中綴;
- 攻擊有可能同時(shí)針對(duì)多個(gè)后綴,且每個(gè)后綴的前綴變化次數(shù)都不顯著,而它們加起來的變化次數(shù)比較顯著;
- 泛解析干擾:有些后綴配置了泛解析,則不管其前綴如何變化,均不能被認(rèn)為是攻擊;
- 攻擊域名與正常域名屬于相同的后綴,正常域名容易被誤殺,如 example.com 是攻擊域名,而 www.example.com 是正常域名,當(dāng)檢測(cè)到后綴 example.com 遭受攻擊時(shí),容易將 www.example.com 誤殺;
3.解決方案
針對(duì)上面遇到的問題,我們提出了一種基于在離線混合學(xué)習(xí)的隨機(jī)域名攻擊檢測(cè)方案。該方案包括在線檢測(cè)與離線訓(xùn)練兩個(gè)部分,如下圖所示:
圖3-1 不斷變化前綴域名攻擊檢測(cè)系統(tǒng)結(jié)構(gòu)圖在線檢測(cè)部分的功能是:根據(jù)離線訓(xùn)練好的分類模型對(duì)實(shí)時(shí)流入的DNS查詢請(qǐng)求進(jìn)行分類,分為疑似攻擊域名與正常域名兩類,再結(jié)合其響應(yīng)結(jié)果分別統(tǒng)計(jì),累計(jì)一段極短的時(shí)間后,根據(jù)閾值檢測(cè)出攻擊的后綴,并輸出檢測(cè)結(jié)果;
離線訓(xùn)練部分的功能是:對(duì)一段較長(zhǎng)時(shí)間的DNS服務(wù)日志進(jìn)行挖掘,分類訓(xùn)練,得到分類模型,供在線檢測(cè)部分使用;
首先我們來看在線檢測(cè)的流程,如下圖所示:圖3-2 在線檢測(cè)流程圖- 定時(shí)更新分類模型:每天定時(shí)從外部更新分類模型;
- 旁路流入DNS查詢、響應(yīng):旁路鏡像流入DNS查詢、響應(yīng)數(shù)據(jù)包;
- 查詢、響應(yīng)組合:根據(jù)五元組(源IP、源端口、目的IP、目的端口、DNS_ID)將查詢包與響應(yīng)報(bào)組合起來,得到每個(gè)查詢對(duì)應(yīng)的響應(yīng)狀態(tài)碼(如NoError, ServFail, NxDomain等);
- 過濾:過濾出沒有響應(yīng)(超時(shí))或響應(yīng)狀態(tài)碼是ServFail、NxDomain的查詢;
- 域名拆分組合:將查詢域名拆分成各級(jí)后綴與其緊鄰下一級(jí)前綴的組合,如 example.com 被拆分成:一級(jí)后綴與其緊鄰下一級(jí)前綴的組合:com + [example]、二級(jí)后綴與其緊鄰下一級(jí)前綴的組合:example.com + [aaaxbhzq];
- 字符串判定:對(duì)各級(jí)后綴的緊鄰下一級(jí)前綴字符串提取特征,根據(jù)分類模型判定其是否隨機(jī)、無意義;
- 重復(fù)前綴判定:對(duì)于每一個(gè)后綴,維護(hù)一個(gè)集合,用于緩存出現(xiàn)過的前綴,重復(fù)前綴被丟棄;
- 累計(jì)緩存:把前綴追加到對(duì)應(yīng)后綴的緩存集合里,對(duì)應(yīng)后綴的計(jì)數(shù)器加1;
- 窗口判定:統(tǒng)計(jì)時(shí)間窗口設(shè)置為一個(gè)極短的時(shí)間(如30秒);
- 攻擊判定:后綴計(jì)數(shù)器大于攻擊閾值T0;
- 輸出攻擊的后綴:此時(shí)不通知防御;
- 防御判定:所有攻擊后綴的計(jì)數(shù)器之和大于防御閾值T1;
- 通知開啟防御:及時(shí)通知外部開啟防御,給出攻擊后綴列表;
- 清空緩存集合、計(jì)數(shù)器;
然后我們?cè)賮砜匆幌码x線訓(xùn)練的流程,如下圖所示:
圖3-3 離線訓(xùn)練流程圖- 日志預(yù)處理:將DNS服務(wù)日志處理成<查詢域名,是否攻擊>的二元組;
- 樣本采集:隨機(jī)選擇大量(如100萬)的是攻擊的二元組作為正樣本、大量(如30萬)的不是攻擊的二元組作為負(fù)樣本;
- 樣本劃分:所有正負(fù)樣本一起按一定的比例(如6:4)隨機(jī)劃分為訓(xùn)練集和測(cè)試集;
- 計(jì)算變化前綴所在級(jí)數(shù)L及對(duì)應(yīng)的信息熵均值h:在訓(xùn)練集上,遍歷域名若干級(jí)后綴,提取其緊鄰下一級(jí)前綴字符串的信息熵(見第6步中(b)信息熵),統(tǒng)計(jì)其均值,使得均值最大的級(jí)數(shù)即為所求的L,對(duì)應(yīng)的均值記為h;
- 信息熵均值是否大于閾值H;
- 特征提取并歸一化:對(duì)前綴字符串提取特征向量,它由三個(gè)特征組成:
1) 最長(zhǎng)元音距(mvd):即字符串中元音之間的最長(zhǎng)間隔,如“alibaba-inc”的最長(zhǎng)元音距是最后的“nc”2個(gè)字符長(zhǎng)度(字符串中的連字符‘-’也當(dāng)作元音處理,字符串結(jié)尾也當(dāng)作有一個(gè)元音)。
元音距表征了字符串中各音節(jié)的長(zhǎng)度,體現(xiàn)了發(fā)音的節(jié)奏。正常有意義的單詞或短語(yǔ)的音節(jié)比較短,節(jié)奏比較均勻,以方便發(fā)出聲音,相應(yīng)地,其最長(zhǎng)元音距偏短,如“alibaba-inc”的元音距為[1,1,1,2],最長(zhǎng)元音距為2;而無意義的隨機(jī)字符串的音節(jié)比較長(zhǎng),沒有節(jié)奏,相應(yīng)地,其最長(zhǎng)元音距偏長(zhǎng),如“aaaxbhzqegs-2”的元音距為[5,2,1],最長(zhǎng)元音距為5;
2)信息熵(entropy):表征字符串的隨機(jī)程度,其計(jì)算公式為:
其中, Pi為每個(gè)字母(或數(shù)字)在字符串中出現(xiàn)的概率。
正常有意義的單詞或短語(yǔ),其字符排列遵從書寫規(guī)范,不能任意排列,隨機(jī)化程度不高,信息熵偏低,如“alibaba-inc”的信息熵為2.44;而無意義的隨機(jī)字符串的字符排列則沒有限制,隨機(jī)化程度比較高,信息熵偏高,如“aaaxbhzqegs-2”的信息熵為3.19;
3)長(zhǎng)度(len):字符串的長(zhǎng)度。觀察中發(fā)現(xiàn),攻擊字符串的長(zhǎng)度在一段短時(shí)間內(nèi)都比較穩(wěn)定,且長(zhǎng)度比較大;而正常的域名字符串則無此規(guī)律。
圖3-4顯示了這三種特征分別在攻擊域名、正常域名中的分布情況,可以看出,它們?cè)诠粲蛎c正常域名中的分布都具有較大差異,主要在于:在攻擊域名中,均值都偏大。
特征歸一化采用Z-score歸一化法,其計(jì)算公式為:
其中u為樣本均值,o~為樣本標(biāo)準(zhǔn)差;
- 訓(xùn)練分類模型:在訓(xùn)練集上進(jìn)行模型訓(xùn)練,分類模型采用線性SVM(Support Vector Machine 支持向量機(jī)),其公式為:
其中x為特征向量(最長(zhǎng)元音距,信息熵,長(zhǎng)度), wT為系數(shù)向量, b為截距,
如若結(jié)果大于0,則判定為正樣例(攻擊),否則判定為負(fù)樣例(非攻擊)。訓(xùn)練過程即是要找到一個(gè)最合適的wT和b;另外,還需要獲取訓(xùn)練集的樣本均值向量u、標(biāo)準(zhǔn)差向量o~;
- 模型評(píng)估:在測(cè)試集上評(píng)估訓(xùn)練好的SVM模型,得到總體準(zhǔn)確率;
- 模型準(zhǔn)確率是否大于閾值T;
- 輸出模型:模型包括SVM參數(shù)wT, b與歸一化參數(shù)u, o~ 。
圖3-4 最長(zhǎng)元音距(mvd)、信息熵(entropy)、長(zhǎng)度(len)分別在攻擊域名(positive)、正常域名(negative)中的分布情況。從圖中可以看出,三種特征在攻擊域名中的均值較正常域名大。