陳立國(guó),張躍冬,耿光剛,延志偉
1(中國(guó)科學(xué)院 計(jì)算機(jī)網(wǎng)絡(luò)信息中心,北京 100190)
2(中國(guó)科學(xué)院大學(xué),北京 100049)
3(中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心,北京 100190)
隨機(jī)域名是指由隨機(jī)域名算法生成的域名,在針對(duì)域名系統(tǒng)[1]發(fā)起的分布式拒絕服務(wù)攻擊中被普遍使用,隨機(jī)域名檢測(cè)是過(guò)濾拒絕服務(wù)攻擊流量的前提.隨機(jī)域名的檢測(cè)工作主要基于隨機(jī)域名的隨機(jī)性特點(diǎn)來(lái)進(jìn)行.隨機(jī)域名由隨機(jī)域名算法生成,各字符出現(xiàn)的概率相同且字符之間沒(méi)有依賴(lài)關(guān)系.基于隨機(jī)域名的隨機(jī)性特點(diǎn),現(xiàn)有的隨機(jī)域名檢測(cè)方法主要包括基于域名分布相似度的檢測(cè)方法與基于機(jī)器學(xué)習(xí)的檢測(cè)方法兩類(lèi),這兩類(lèi)方法將在第1章中詳細(xì)介紹.
隨機(jī)域名檢測(cè)是域名系統(tǒng)DDoS流量過(guò)濾、僵尸網(wǎng)絡(luò)通信檢測(cè)等域名安全任務(wù)的基礎(chǔ)工作,在檢測(cè)實(shí)時(shí)性、檢測(cè)準(zhǔn)確率等方面都有較高的要求.傳統(tǒng)的隨機(jī)域名檢測(cè)方法檢測(cè)準(zhǔn)確率較低,誤報(bào)率較高,且多數(shù)方法在流量過(guò)濾等任務(wù)中不能滿(mǎn)足實(shí)時(shí)性的需求.
近年來(lái),深度學(xué)習(xí)在圖像、語(yǔ)音、自然語(yǔ)言處理等領(lǐng)域都取得了重大突破[2,3],基于深度學(xué)習(xí)的應(yīng)用越來(lái)越多[4–6],應(yīng)用深度學(xué)習(xí)的模型解決傳統(tǒng)研究領(lǐng)域的問(wèn)題也成為了研究的熱點(diǎn).本文將GRU(Gated Recurrent Unit)型循環(huán)神經(jīng)網(wǎng)絡(luò)模型[7]應(yīng)用于隨機(jī)域名的檢測(cè)工作中,經(jīng)過(guò)算法生成數(shù)據(jù)與真實(shí)場(chǎng)景數(shù)據(jù)的實(shí)驗(yàn)驗(yàn)證,該模型相比傳統(tǒng)檢測(cè)模型擁有更好的檢測(cè)性能,且檢測(cè)過(guò)程中不需要對(duì)域名提取特征.
目前,已有的隨機(jī)域名檢測(cè)方法主要分為兩類(lèi),一類(lèi)是基于域名分布相似度的檢測(cè)方法,另一類(lèi)是基于機(jī)器學(xué)習(xí)的檢測(cè)方法.
Sandeep等[8]提出了一種基于分布相似度判定域名是否遭受隨機(jī)域名攻擊的方法.
首先,對(duì)于給定的單一域名d,該方法生成其對(duì)應(yīng)的n-gram,如式(1),其中i∈{0,1,···,len(d)?n},n≥1.len(d)為域名d包含的字符數(shù),n在該文章中取值為1,2.
然后,該方法分別統(tǒng)計(jì)正常域名與隨機(jī)域名的ngram分布.得到上述兩種分布后,文章選取了三種分布相似度的評(píng)價(jià)指標(biāo):相對(duì)熵、杰卡德距離與編輯距離.最后對(duì)每一個(gè)IP地址或權(quán)威域名計(jì)算其所對(duì)應(yīng)域名的n-gram分布分別與正常域名n-gram分布和隨機(jī)域名n-gram分布的相似度,根據(jù)相似度的大小判斷當(dāng)前IP地址或權(quán)威域名是否遭受了隨機(jī)域名攻擊.
文章中驗(yàn)證了n的不同取值以及不同分布相似度時(shí)實(shí)驗(yàn)的效果.實(shí)驗(yàn)結(jié)果顯示,當(dāng)n取1,相似度選用相對(duì)熵時(shí),達(dá)到100%檢出率,2.5%假陽(yáng)率,實(shí)驗(yàn)結(jié)果最優(yōu).
該方法優(yōu)勢(shì)是實(shí)現(xiàn)簡(jiǎn)單,僅需要對(duì)比待檢測(cè)的權(quán)威域名或IP地址對(duì)應(yīng)的域名n-gram分布與正常域名、隨機(jī)域名的分布計(jì)算相似度即可.但是單一域名由于字符數(shù)有限,字符分布不具有統(tǒng)計(jì)特性,基于分布相似度的方法難以做出類(lèi)別判斷.
基于機(jī)器學(xué)習(xí)的檢測(cè)方法將隨機(jī)域名檢測(cè)作為二分類(lèi)任務(wù)處理,通過(guò)最小化代價(jià)函數(shù)的方式提升檢測(cè)準(zhǔn)確率.這類(lèi)檢測(cè)方法由于具有檢出率高、誤報(bào)率小、可實(shí)時(shí)檢測(cè)等優(yōu)勢(shì),是近年來(lái)的研究熱點(diǎn).
Davuth等[9]提出了一種基于支持向量機(jī)的隨機(jī)域名檢測(cè)方法.該方法將域名的bi-gram作為特征,通過(guò)人工閾值的方式過(guò)濾出現(xiàn)頻率較低的bi-gram,實(shí)現(xiàn)特征選擇.文章中采用支持向量機(jī)分類(lèi)器.在第3章中,本文將該方法與基于GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行了對(duì)比實(shí)驗(yàn).
王紅凱等[10]提出了一種基于隨機(jī)森林的隨機(jī)域名檢測(cè)方法.該方法通過(guò)人工提取域名特征來(lái)構(gòu)建隨機(jī)森林模型訓(xùn)練分類(lèi),實(shí)現(xiàn)對(duì)隨機(jī)域名的檢測(cè).但人工特征的構(gòu)造過(guò)程較為繁瑣,而且由于所使用的統(tǒng)計(jì)特征過(guò)多,特征抽取過(guò)程也較為耗時(shí).
章思宇[11]提出了一種基于DNS圖挖掘的隨機(jī)域名檢測(cè)算法,該方法根據(jù)DNS查詢(xún)?nèi)罩緦⒂蛎c主機(jī)的集合構(gòu)建成圖模型,然后應(yīng)用置信傳播算法進(jìn)行聲望推斷,據(jù)此進(jìn)行隨機(jī)域名的檢測(cè).該方法不僅可以檢測(cè)出隨機(jī)域名,也可以分析出網(wǎng)絡(luò)中的控制服務(wù)器和受害主機(jī),但檢測(cè)準(zhǔn)確率較低,且檢測(cè)實(shí)時(shí)性較差.
近年來(lái),深度循環(huán)神經(jīng)網(wǎng)絡(luò)模型在眾多自然語(yǔ)言處理的任務(wù)中表現(xiàn)出色[7,12,13],由于常規(guī)域名通常也保留一定的語(yǔ)言特性[14],注冊(cè)域名中也通常包含漢語(yǔ)拼音、單詞等子串.因此,本文嘗試將神經(jīng)網(wǎng)絡(luò)模型應(yīng)用在隨機(jī)域名的檢測(cè)工作中,通過(guò)挖掘域名語(yǔ)言特性區(qū)分常規(guī)域名與隨機(jī)域名.
由于循環(huán)神經(jīng)網(wǎng)絡(luò)模型接受的輸入x為定長(zhǎng)的向量,而域名本身為字符串,因此需要引入域名向量化步驟,將字符串轉(zhuǎn)換成循環(huán)神經(jīng)網(wǎng)絡(luò)輸入.域名向量化過(guò)程首先統(tǒng)計(jì)在所有域名中出現(xiàn)的字符集合,假設(shè)該集合中字符數(shù)為n,則將域名中的每個(gè)字符編碼成長(zhǎng)度為n的one-hot向量,最后將該域名中的所有字符對(duì)應(yīng)的one-hot向量按照各個(gè)字符在域名中的順序拼接得到循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入x.
GRU型神經(jīng)網(wǎng)絡(luò)是一種循環(huán)神經(jīng)網(wǎng)絡(luò),隱層節(jié)點(diǎn)相互連接,呈現(xiàn)出循環(huán)的特性.不同的是該網(wǎng)絡(luò)隱層節(jié)點(diǎn)內(nèi)部結(jié)構(gòu)并非單一激活函數(shù),而是采用GRU結(jié)構(gòu).圖1為GRU內(nèi)部結(jié)構(gòu)示意圖,其中ht?1為t–1時(shí)刻隱藏層輸出,Xt為t時(shí)刻輸入,ht為t時(shí)刻隱藏層輸出,rt表示重置門(mén),zt表示更新門(mén),h?t表示t時(shí)刻隱層節(jié)點(diǎn)的候選值,其他元素操作如右側(cè)圖例所示,用公式描述圖1如下:
圖1 GRU內(nèi)部結(jié)構(gòu)
實(shí)驗(yàn)所采用的循環(huán)神經(jīng)網(wǎng)絡(luò)由輸入層、隱含層、全連接層和輸出層組成,其結(jié)構(gòu)如圖2所示.其中l(wèi)為域名的截?cái)嚅L(zhǎng)度,當(dāng)域名長(zhǎng)度超出l則對(duì)域名進(jìn)行截?cái)?當(dāng)域名長(zhǎng)度小于l則在域名向量后拼接零向量,直到域名向量長(zhǎng)度達(dá)到l.xt為當(dāng)前輸入域名中的第t個(gè)字符,采用one-hot編碼.ht為當(dāng)前時(shí)刻第t個(gè)字符對(duì)應(yīng)的隱含狀態(tài).drop_out為隨機(jī)丟棄層,用于防止網(wǎng)絡(luò)的過(guò)擬合[15],經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,當(dāng)隨機(jī)丟棄概率為0.5時(shí),訓(xùn)練得到的模型分類(lèi)性能最優(yōu).full_connected為全連接層,全連接層的節(jié)點(diǎn)數(shù)設(shè)置為32.Y為輸出的類(lèi)別,取值為0或1,分別表示當(dāng)前輸入是否為隨機(jī)域名.實(shí)驗(yàn)中,模型的超參數(shù)設(shè)置將在3.2節(jié)中詳細(xì)介紹.
圖2 GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)隨機(jī)域名檢測(cè)模型結(jié)構(gòu)
傳統(tǒng)方法為了提升隨機(jī)域名的檢測(cè)準(zhǔn)確率,往往會(huì)抽取一定維度的域名特征[10],統(tǒng)計(jì)當(dāng)前一段時(shí)間內(nèi)被請(qǐng)求域名的信息,當(dāng)DNS系統(tǒng)遭受DDoS攻擊后,解析請(qǐng)求量急速上升,特征的提取需要更多的計(jì)算資源,為了保證攻擊流量過(guò)濾的實(shí)時(shí)性,需要減少特征提取的時(shí)間,降低特征提取所需的算力成本.而GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)隨機(jī)域名檢測(cè)模型是一個(gè)端到端的模型,輸入為域名向量,輸出為該域名對(duì)應(yīng)的類(lèi)別.相比傳統(tǒng)方法,該模型不需要對(duì)該域名抽取統(tǒng)計(jì)特征,節(jié)省了特征抽取的算力成本和時(shí)間成本,使得模型能夠及時(shí)對(duì)當(dāng)前域名的類(lèi)別做出判斷并設(shè)置防火墻規(guī)則,從而能夠滿(mǎn)足大規(guī)模攻擊流量過(guò)濾任務(wù)的實(shí)時(shí)性需求.
相比于使用n-gram特征的方法[9],GRU型神經(jīng)網(wǎng)絡(luò)的隨機(jī)域名檢測(cè)方法檢測(cè)性能更好,準(zhǔn)確率更高,在相同的實(shí)驗(yàn)環(huán)境下,該模型擁有更低的誤報(bào)率和漏報(bào)率.具體實(shí)驗(yàn)結(jié)果將在3.3節(jié)中詳細(xì)介紹.
本文中所使用的實(shí)驗(yàn)數(shù)據(jù)包含算法生成數(shù)據(jù)與真實(shí)場(chǎng)景數(shù)據(jù)兩部分.
算法生成數(shù)據(jù)中,負(fù)類(lèi)樣本由5種著名僵尸網(wǎng)絡(luò)的隨機(jī)域名算法生成:newGOZ[16]、Ramnit[17]、Shiotob[18]、Symmni[19]、Banjori[20].負(fù)類(lèi)樣本共計(jì)50萬(wàn)條,每種隨機(jī)算法產(chǎn)生的隨機(jī)域名占比20%,且各個(gè)算法產(chǎn)生的隨機(jī)域名在訓(xùn)練集中服從均勻分布.正類(lèi)樣本為.cn在正常服務(wù)狀態(tài)下被查詢(xún)的域名經(jīng)過(guò)隨機(jī)采樣、反向查詢(xún)過(guò)濾得到的域名集合,共計(jì)50萬(wàn)條.
圖3 算法生成數(shù)據(jù)示例
真實(shí)場(chǎng)景數(shù)據(jù)來(lái)自.cn域名服務(wù)在2015年5月12日遭受的一次隨機(jī)子域名攻擊事件.負(fù)類(lèi)樣本為遭受攻擊時(shí)被攻擊域名的子域名去除已注冊(cè)子域名得到的域名集合,共計(jì)50萬(wàn)條.正類(lèi)樣本為.cn在正常服務(wù)狀態(tài)下被查詢(xún)的域名經(jīng)過(guò)隨機(jī)采樣和過(guò)濾反向查詢(xún)得到的域名集合,共計(jì)50萬(wàn)條.正負(fù)類(lèi)樣本合計(jì)100萬(wàn)條,數(shù)據(jù)格式與算法生成數(shù)據(jù)相同.
在隨機(jī)域名檢測(cè)任務(wù)中,模型的分類(lèi)性能是評(píng)價(jià)模型優(yōu)劣的首要考慮因素,實(shí)驗(yàn)的第一部分將考察模型的分類(lèi)性能.而神經(jīng)網(wǎng)絡(luò)模型通常存在容易過(guò)擬合[21]、收斂難度大等缺陷,實(shí)驗(yàn)的第二部分將會(huì)比較邏輯回歸模型與基于GRU型神經(jīng)網(wǎng)絡(luò)模型的收斂過(guò)程,驗(yàn)證.
在分類(lèi)性能實(shí)驗(yàn)中,本文分別實(shí)現(xiàn)了基于邏輯回歸與基于支持向量機(jī)的隨機(jī)域名檢測(cè)模型,并分別使用算法生成數(shù)據(jù)和真實(shí)場(chǎng)景數(shù)據(jù)訓(xùn)練、測(cè)試兩種模型.在實(shí)驗(yàn)中,訓(xùn)練集占80%,驗(yàn)證集占10%,測(cè)試集占10%.使用5種評(píng)估指標(biāo)來(lái)評(píng)估模型效果,評(píng)估結(jié)果在3.3小節(jié)中詳細(xì)描述.
在收斂過(guò)程實(shí)驗(yàn)中,本文將對(duì)比GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)檢測(cè)模型與基于邏輯回歸的檢測(cè)模型在每輪迭代過(guò)程中的AUC,比較兩種模型的收斂過(guò)程,為了更明顯的效果對(duì)比,兩種模型的學(xué)習(xí)率都調(diào)整為分類(lèi)性能實(shí)驗(yàn)的0.2倍.
GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)檢測(cè)模型的主要超參數(shù)包含:隱層節(jié)點(diǎn)個(gè)數(shù)l,隨機(jī)丟棄概率p_drop,全連接層節(jié)點(diǎn)個(gè)數(shù)m,學(xué)習(xí)率a,激活函數(shù)f,學(xué)習(xí)算法la,損失函數(shù)loss等.基于邏輯回歸的檢測(cè)模型主要超參數(shù)包含:學(xué)習(xí)率a,正則項(xiàng)penalty,正則化強(qiáng)度C.基于支持向量機(jī)的n-gram檢測(cè)模型主要超參數(shù)有:核函數(shù)kernel,懲罰因子C.兩次實(shí)驗(yàn)的超參數(shù)如表1所示.
表1 各模型超參數(shù)設(shè)置
本文提出和實(shí)現(xiàn)了基于GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)的隨機(jī)域名檢測(cè)模型,為了對(duì)比傳統(tǒng)模型的檢測(cè)性能,分別實(shí)現(xiàn)了基于n-gram特征的邏輯回歸、支持向量機(jī)隨機(jī)域名檢測(cè)模型,以上模型的分類(lèi)性能在算法生成數(shù)據(jù)上的表現(xiàn)如表2所示,在真實(shí)數(shù)據(jù)上的分類(lèi)性能如表3所示.根據(jù)實(shí)驗(yàn)可以得出,基于bi-gram特征的模型分類(lèi)性能普遍優(yōu)于基于uni-gram特征的模型,支持向量機(jī)模型普遍優(yōu)于邏輯回歸,而GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)模型在各項(xiàng)分類(lèi)性能中都表現(xiàn)優(yōu)異,領(lǐng)先前兩者.
表2 各模型在算法生成數(shù)據(jù)上的分類(lèi)性能
表3 各模型在真實(shí)場(chǎng)景數(shù)據(jù)上的分類(lèi)性能
收斂過(guò)程實(shí)驗(yàn)結(jié)果如圖4所示,橫軸為模型迭代次數(shù),縱軸為算法生成數(shù)據(jù)上的每一輪迭代后各模型的AUC.由圖中可以看出,基于GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)的檢測(cè)模型收斂速度與邏輯回歸模型相當(dāng)且收斂過(guò)程較為平穩(wěn).
圖4 GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)檢測(cè)模型與邏輯回歸檢測(cè)模型收斂過(guò)程比較
本文的主要工作是將GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)應(yīng)用到隨機(jī)域名的檢測(cè)工作中,提出和實(shí)現(xiàn)了基于GRU型循環(huán)神經(jīng)網(wǎng)絡(luò)的隨機(jī)域名檢測(cè)方法,并將該方法與傳統(tǒng)檢測(cè)方法進(jìn)行對(duì)比分析.經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,該模型在算法生成數(shù)據(jù)和真實(shí)場(chǎng)景數(shù)據(jù)上都相比傳統(tǒng)方法表現(xiàn)出色,模型收斂速度快,收斂過(guò)程平穩(wěn).但目前該模型的檢測(cè)對(duì)象僅限于隨機(jī)域名,對(duì)于可能包含語(yǔ)言特性的惡意域名檢測(cè)效果尚未得到驗(yàn)證.在接下來(lái)的工作中,將研究如何將現(xiàn)有檢測(cè)模型融入注冊(cè)、解析等非語(yǔ)言本身的特征,使得融合后的模型能夠應(yīng)對(duì)更加復(fù)雜的應(yīng)用場(chǎng)景.