王中華 徐 杰 韓 健 臧天寧
1(國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心 北京 100029) 2(中國工業(yè)互聯(lián)網(wǎng)研究院 北京 100102) 3(中國科學(xué)院信息工程研究所 北京 100093)
互聯(lián)網(wǎng)的發(fā)展給人們帶來便利的同時,也存在著一些安全風(fēng)險,如釣魚網(wǎng)站、垃圾郵件等,其中僵尸網(wǎng)絡(luò)的威脅尤為巨大.隨著區(qū)塊鏈技術(shù)的普及和應(yīng)用,區(qū)塊鏈域名系統(tǒng)(blockchain domain name system, BDNS)應(yīng)運而生并逐漸被廣泛采用,一些僵尸網(wǎng)絡(luò)開始采用區(qū)塊鏈域名(blockchain domain name, BDN)來托管命令控制服務(wù)器(command and control server, C&C Server),進(jìn)而實施惡意活動.
2021年,微軟的數(shù)字防御報告顯示[1],近幾年BDN因為其匿名性和抗審查性等特點,已經(jīng)被廣泛應(yīng)用到僵尸網(wǎng)絡(luò)中.Necurs僵尸網(wǎng)絡(luò)家族根據(jù)域名生成算法(domain generation algorithm, DGA)生成“.bit”頂級域(top level domain, TLD)的域名;銀行木馬Trickbot僵尸網(wǎng)絡(luò)家族和Bazarloader采用“.bazar”TLD生成DGA域名[1];Mirai僵尸網(wǎng)絡(luò)的變種Fbot蠕蟲[2]采用“.lib”TLD生成惡意域名.利用BDN從事惡意活動,可以躲避傳統(tǒng)惡意域名檢測方法的檢測,這為僵尸網(wǎng)絡(luò)實施惡意活動提供了新的方式,給網(wǎng)絡(luò)安全帶來新的威脅.
本文針對現(xiàn)有方法的局限性,深入刻畫僵尸網(wǎng)絡(luò)的特征,并著重分析了惡意BDN的流量行為以及資源記錄,共提取出24個特征,采用卷積神經(jīng)網(wǎng)絡(luò)算法檢測惡意BDN.實驗結(jié)果顯示,與現(xiàn)有的方法相比,本文方法具有更好的檢測結(jié)果,并且能夠發(fā)現(xiàn)新出現(xiàn)的惡意BDN.本文的主要貢獻(xiàn)如下:
1) 提出了一種新型的惡意區(qū)塊鏈域名檢測方法,該方法采用卷積神經(jīng)網(wǎng)絡(luò)對域名特征進(jìn)行轉(zhuǎn)換,從多角度描述域名特征,進(jìn)而檢測惡意區(qū)塊鏈域名;
2) 通過深入分析僵尸網(wǎng)絡(luò)的特點,挖掘惡意區(qū)塊鏈域名的流行行為以及靜態(tài)特征,從3個角度提取域名的24個統(tǒng)計特征.
3) 在測試流量構(gòu)建的數(shù)據(jù)集上進(jìn)行實驗,結(jié)果顯示,本文方法的F1_Score為0.988 3,AUC為0.989 6.驗證了本文方法效果更好,并且能夠發(fā)現(xiàn)更多的未知惡意域名.
惡意域名是指被用于惡意活動的域名. 以僵尸網(wǎng)絡(luò)為例,僵尸網(wǎng)絡(luò)由互聯(lián)網(wǎng)中受到黑客集中控制的若干臺計算機組成,這些計算機往往被黑客用來發(fā)起大規(guī)模的網(wǎng)絡(luò)攻擊,同時這些計算機所保存的信息,譬如密碼等私人信息也都可被黑客隨意獲取.僵尸網(wǎng)絡(luò)中的計算機也被稱為“肉雞”,“肉雞”通過域名解析定位到C&C服務(wù)器的IP,由C&C服務(wù)器向這些“肉雞”發(fā)送命令,進(jìn)而“肉雞”執(zhí)行操作.由此可見,域名在計算機通信過程中發(fā)揮著重要作用.
區(qū)塊鏈域名本質(zhì)上也是域名,所以基于區(qū)塊鏈域名的僵尸網(wǎng)絡(luò)在行為上和基于傳統(tǒng)域名的僵尸網(wǎng)絡(luò)類似.因此,下面從傳統(tǒng)惡意域名和惡意BDN 2方面回顧研究現(xiàn)狀.
1.2.1 傳統(tǒng)惡意域名
針對傳統(tǒng)惡意域名方面,研究人員進(jìn)行了大量研究.一些研究專注于惡意域名產(chǎn)生的錯誤信息,如NXDomain,一些研究則將重點放在流量行為上面,還有一些研究著重分析域名字符串等信息.
通常情況下,對DGA域名的DNS請求通常會導(dǎo)致產(chǎn)生不存在域名(non-existent domain, NXDomain)響應(yīng),并且同一個DGA算法生成的域名會產(chǎn)生相似的不存在域名響應(yīng).Antonakakis等人[3]通過分析NXDomain信息,利用聚類和分類算法檢測惡意域名.Zhang等人[4]通過分析HTTP日志,發(fā)現(xiàn)了基于錯誤源模式、錯誤生成模式和錯誤恢復(fù)模式的惡意活動,根據(jù)HTTP失敗以及成功請求流量實現(xiàn)了惡意域名自動檢測系統(tǒng).谷勇浩等人[5]通過提取域名響應(yīng)時間和域名響應(yīng)包大小檢測惡意域名,降低了CDN域名的誤報率,提升了檢測效果.席一帆等人[6]通過構(gòu)建詞圖檢測惡意DGA域名,達(dá)到了較好的檢測效果.Shi等人[7]基于域名自身的特征,如長度、注冊時間等,利用神經(jīng)網(wǎng)絡(luò)檢測惡意域名.
上述方法提取whois等區(qū)塊鏈域名沒有的特征,并且沒有挖掘區(qū)塊鏈域名的特征.因此不適用于惡意區(qū)塊鏈域名的檢測.
1.2.2 惡意BDN
目前針對惡意BDN的檢測工作比較少.Patsakis等人[8]認(rèn)為BDNS為僵尸網(wǎng)絡(luò)提供了一種更安全隱蔽的方法與C&C服務(wù)器通信,僅討論了BDNS所來帶來的威脅,并沒有給出具體的檢測方法.Huang等人[9]通過分析DNS流量行為檢測惡意BDN,但良性樣本數(shù)量較小,且特征容易被偽造,具有一定的局限性.Fran等人[10]將區(qū)塊鏈錢包、域名以及解析IP進(jìn)行關(guān)聯(lián)來推斷惡意域名,但是該方法需要大量歷史信息,并且難以發(fā)現(xiàn)新出現(xiàn)的惡意域名.
域名系統(tǒng)(domain name system, DNS)是互聯(lián)網(wǎng)的一項基礎(chǔ)服務(wù),作為將域名和IP地址相互映射的數(shù)據(jù)庫,可以使用戶很方便地訪問互聯(lián)網(wǎng)[11-12].域名系統(tǒng)因其設(shè)計理念等歷史原因,存在一定的安全風(fēng)險,如單點故障、分布式拒絕服務(wù)攻擊等.隨著區(qū)塊鏈技術(shù)的成熟,一些公司將區(qū)塊鏈技術(shù)應(yīng)用于域名解析,建立了去中心化的BDNS.現(xiàn)在有很多種BDNS,各自的TLD[13-15]如表1所示,這類域名和互聯(lián)網(wǎng)名稱與數(shù)字地址分配(Internet corporation for assigned names and numbers, ICANN)授權(quán)的TLD不同,只能被BDNS服務(wù)器解析.
表1 常見的BDNS及其TLD
BDNS提供了和傳統(tǒng)DNS相同種類的資源記錄,但不提供與用戶隱私相關(guān)的信息,如whois信息.和DNS不同,BDNS在區(qū)塊上存儲域名的資源記錄,并且保留多個備份.因此BDNS的域名解析過程不會分層,用戶請求任意一個備份均可直接獲得權(quán)威響應(yīng),如圖1所示:
圖1 區(qū)塊鏈域名解析過程
同時,對BDN的每次相關(guān)更新都會被記錄到區(qū)塊中,比如修改A記錄.區(qū)塊鏈技術(shù)保證只有域名所有者可以修改該域名的資源記錄.因此,BDN具有匿名性和抗審查性等特點,克服了傳統(tǒng)DNS的缺點,但也為黑客提供了可靠方法來托管C&C服務(wù)器.
1.4.1 機器學(xué)習(xí)
本文采用的機器學(xué)習(xí)方法是隨機森林、支持向量機和神經(jīng)網(wǎng)絡(luò).
1) 隨機森林(random forests, RF)屬于集成學(xué)習(xí)的一種組合分類算法[16].該算法采用抽樣法從數(shù)據(jù)集中抽取多個樣本訓(xùn)練決策樹,然后將這些決策樹的結(jié)果組合在一起,通過投票或取平均值得出最終的分類或預(yù)測結(jié)果,使得整體模型的結(jié)果具有較高的精確度和泛化性能.
2) 支持向量機(support vector machine, SVM)是定義在特征空間上的間隔最大的線性分類器[17].該方法通過將輸入向量映射到一個高維特征空間,在此空間中構(gòu)造最優(yōu)分類超平面,從而使正例和反例樣本之間的分離界限達(dá)到最大,使其泛化性能達(dá)到最優(yōu).
3) 神經(jīng)網(wǎng)絡(luò)(neural network, NN)源于感知機模型,由大量的人工神經(jīng)元連接進(jìn)行計算,能夠在外界信息的基礎(chǔ)上通過反向傳播改變自身參數(shù),是一種自適應(yīng)模型[18].多層隱藏層以及激活函數(shù)的多樣性使得網(wǎng)絡(luò)具有較強的表達(dá)能力,輸出層的多個神經(jīng)元使得網(wǎng)絡(luò)可以靈活地應(yīng)用于分類、回歸、降維和聚類等任務(wù).
1.4.2 深度學(xué)習(xí)
本文采用的深度學(xué)習(xí)方法是卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN).CNN以神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),除了輸入層和輸出層之外,由卷積層、池化層和全連接層組成[19].
1) 卷積層:卷積層的作用是對上一層的輸出提取更高層次的特征.每個卷積層由若干個卷積單元組成,卷積層中每個節(jié)點的輸入都是上一層卷積核局部區(qū)域的計算結(jié)果,卷積核的尺寸可根據(jù)特征以及目標(biāo)任務(wù)來自定義.
2) 池化層:池化層的作用是對上一層的輸出進(jìn)行壓縮.該層將輸入的特征圖劃分為若干個矩形區(qū)域.一方面通過對子區(qū)域進(jìn)行計算,使特征圖變小,進(jìn)行特征壓縮;另一方面利用池化層,參數(shù)的數(shù)量和模型的計算量也會大大減少.常用的池化方法主要有均值池化和最大池化2種.
3) 全連接層:全連接層的作用是依據(jù)特征向量進(jìn)行分類,是連接在網(wǎng)絡(luò)最后的分類器.和神經(jīng)網(wǎng)絡(luò)類似,通過前向和反向傳播調(diào)整網(wǎng)絡(luò)參數(shù)訓(xùn)練模型.
總體來說,CNN通過對輸入層的特征進(jìn)行卷積和池化操作,得到新的特征,最后將新特征輸入到全連接層中,輸出分類任務(wù)的結(jié)果.
1.4.3 評估指標(biāo)
為了綜合評估,本文采用機器學(xué)習(xí)中常見的指標(biāo)來評估模型,如表2所示.其中F1_Score是最常使用的指標(biāo),可以較為綜合地評價模型的效果.AUC是ROC曲線下的面積,適用于評估非平衡數(shù)據(jù)集的情況.
表2 評估指標(biāo)及其描述
為了識別惡意BDN,本文提出了一種新型檢測方法.該方法從多角度分析惡意區(qū)塊鏈域名與良性域名之間的不同,共提取出24個特征,最后采用卷積神經(jīng)網(wǎng)絡(luò)算法檢測惡意BDN.
本文通過分析域名的流量行為以及自身信息,提取出時間序列特征、資源記錄特征和字符統(tǒng)計特征3類特征區(qū)分惡意BDN和良性域名,如表3所示:
表3 特征描述
1) 時間序列特征:惡意BDN和良性域名在用戶訪問方面存在一定的差異.惡意BDN主要由僵尸網(wǎng)絡(luò)使用.當(dāng)僵尸網(wǎng)絡(luò)處于活躍狀態(tài)時,大規(guī)模的“肉雞”會發(fā)起DNS域名請求定位C&C服務(wù)器,此時惡意BDN的DNS請求頻率會急劇增加.另外如果域名由DGA生成,由此會產(chǎn)生大量的NXDomain響應(yīng).而僵尸網(wǎng)絡(luò)在非活躍狀態(tài)時,“肉雞”和C&C服務(wù)器之間的通信較少,因此惡意BDN的DNS請求及其相關(guān)流量也較少.良性域名則是給各類用戶使用的,其DNS請求頻率在任何時候都是比較穩(wěn)定的.因此,惡意BDN和良性域名的DNS請求頻率方面存在一定的差異,為了量化這種差異,考慮同一個域名相鄰DNS請求包之間的時間間隔(TimeDiff)以及每分鐘DNS請求包的數(shù)量(PktNumPerMin)2種特征.為了綜合表征該特征的分布,分別提取其最小值(Min)、第一四分位數(shù)(Q1)、中位數(shù)(Media)、第三四分位數(shù)(Q3)、最大值(Max)、標(biāo)準(zhǔn)差(Std).同時,針對域名請求的用戶差異,提取訪問域名的IP數(shù)量特征,即UniqueIP.
2) 資源記錄特征:良性域名和惡意BDN在資源記錄方面存在一定的差異.良性域名因為其業(yè)務(wù)繁多,并且用戶較為廣泛,為了更好地提供服務(wù),往往設(shè)置較多的資源記錄;而惡意BDN,為了避免過多地暴露自己,則會設(shè)置較少數(shù)量的資源記錄.在眾多種類的資源記錄中,域名解析主要使用的是A記錄和NS記錄,因此提取A記錄(A_Record_Num)和NS記錄(NS_Record_Num)數(shù)量特征.另外,良性域名為了更好地提供服務(wù),業(yè)務(wù)更新較快,其A記錄的生存時間(time to live, TTL)則相對較??;為了和C&C服務(wù)器保持連接以減少DNS請求次數(shù),惡意BDN的TTL一般設(shè)置得較長;因此提取域名A記錄的TTL.因為TTL值可能被代理服務(wù)器修改,因此提取DNS響應(yīng)包中其最小值(Min)、第一四分位數(shù)(Q1)、中位數(shù)(Median)、第三四分位數(shù)(Q3)、最大值(Max)、標(biāo)準(zhǔn)差(Std).
3) 字符統(tǒng)計特征:惡意BDN和良性域名在字符組成方面存在一定的差異.通過對數(shù)據(jù)集分析,發(fā)現(xiàn)有相當(dāng)一部分惡意BDN是人類不可讀的[20],而良性域名則是有意義的單詞或者簡稱.另外,二者在字符長度上也有較大的差異.對此,本文提取出域名的長度(Domain_Length)、域名的信息熵(Domain_Entropy)以及元音字母比例(Domain_VowelRatio)3個特征量化上述性質(zhì).
CNN主要適用于計算機視覺領(lǐng)域.目前已有相關(guān)工作將其應(yīng)用到網(wǎng)絡(luò)流量分類,且取得了較好的效果,因此本文應(yīng)用CNN檢測惡意區(qū)塊鏈域名.
從本質(zhì)上說,CNN是從不同角度提取圖片中相鄰位置像素的關(guān)聯(lián),即從不同維度提取圖片的特征,對特征降維進(jìn)行分類.因此,本文將域名的每個特征作為圖片中的1個像素點,將域名表示成1張圖片,從而檢測惡意BDN.本文共提取出24個特征,有若干個特征是屬于同類的,可將特征分為4大類,排列成4×6維的圖像,如圖2所示.為了避免特征輸入位置帶來的差異,本文在不同的卷積層中設(shè)置了不提供維度的卷積核.同時,為了避免數(shù)據(jù)轉(zhuǎn)換造成的信息丟失,本文并不將特征值映射到灰度像素的范圍,保留最原始的特征取值.因此,最終將惡意BDN的檢測任務(wù)轉(zhuǎn)換為采用CNN的圖片分類任務(wù).
圖2 特征輸入映射
CNN模型共分為6層,如圖3所示.包括輸入層、3層卷積層、全連接層、輸出層.3層卷積層從不同維度挖掘特征之間的關(guān)聯(lián),由于維度較小,所以不采用池化層降維壓縮數(shù)據(jù).具體描述如下:
1) 輸入層.維度為4×6個神經(jīng)元,表示24個特征,輸入到第1卷積層中.
2) 第1卷積層.該卷積層用于挖掘同類特征之間的關(guān)聯(lián).卷積核的維度為1×2,步長均為1,采用非填充模式并使用ReLU激活函數(shù)進(jìn)行非線性轉(zhuǎn)換.該層采取32個卷積核,最終生成32個4×5的平面.
3) 第2卷積層.該卷積層用于挖掘不同類特征之間的關(guān)聯(lián).卷積核的維度為2×1,步長均為1,采用填充模式并使用ReLU激活函數(shù)進(jìn)行非線性轉(zhuǎn)換.該層采取32個卷積核,最終生成1 024個5×5的平面.
4) 第3卷積層.該卷積層用于挖掘所有特征之間的關(guān)聯(lián).卷積核的維度為2×2,步長均為1,采用非填充模式并使用ReLU激活函數(shù)進(jìn)行非線性轉(zhuǎn)換.該層采取1個卷積核,最終生成1 024個4×4的平面.
5) 全連接層.全連接層是3層神經(jīng)網(wǎng)絡(luò),作用是綜合利用卷積后的所有特征,經(jīng)過非線性變換得到分類結(jié)果,輸出到輸出層.3層的神經(jīng)元數(shù)量分別是1 024,512,64.
6) 輸出層.輸出層為2個神經(jīng)元,表示域名的良性和惡意2個類別.
圖3 CNN模型
為了驗證本文方法的有效性,本節(jié)進(jìn)行實驗評估.首先構(gòu)造數(shù)據(jù)集,經(jīng)過交叉驗證訓(xùn)練模型,在測試集上驗證本文方法的可行性;然后與現(xiàn)有的檢測方法從多方面比較,驗證本文方法具有更好的性能.
在實驗網(wǎng)絡(luò)節(jié)點收集了為期7天的DNS測試流量,原始數(shù)據(jù)量為25 GB,并進(jìn)行了脫敏處理.本文認(rèn)為2級域名在Alexa[21]排名前50 000以內(nèi)的域名為良性域名.對于惡意BDN,滿足下列條件之一則被認(rèn)為是惡意的:
1) 域名出現(xiàn)在360DGA[22]名單中;
2) VirusTotal檢測到的域名[23].
另外,無論是良性域名還是惡意域名都會被一些用戶訪問,因此將DNS請求次數(shù)小于10的域名過濾掉.對于沒有標(biāo)記的BDN,將它們作為后續(xù)評估模型的對比數(shù)據(jù)集Dunknown.
提取域名的統(tǒng)計特征:對于時間序列特征,提取域名在7天之內(nèi)所有的DNS請求包,時間從域名的第1個請求包開始,到最后1個請求包結(jié)束,計算其特征.對于資源記錄特征中的TTL值,提取域名在7天之內(nèi)的所有DNS響應(yīng)包,統(tǒng)計A記錄中的TTL特征;對于資源記錄特征,因為代理服務(wù)器存在的緣故,DNS響應(yīng)包中的內(nèi)容可能和其權(quán)威服務(wù)器不同步. 提取其權(quán)威的DNS響應(yīng)包,統(tǒng)計其資源記錄特征.對于字符統(tǒng)計特征,去掉域名的TLD,并計算其剩余字符串的長度、信息熵以及元音字母比例3個特征.
最后,隨機將標(biāo)記后的數(shù)據(jù)劃分為訓(xùn)練集(80%)和測試集(20%).整理后的數(shù)據(jù)集如表4所示:
表4 數(shù)據(jù)集
本文利用Scikit-Learn[24]和深度學(xué)習(xí)框架PyTorch[25]實現(xiàn)隨機森林、支持向量機、神經(jīng)網(wǎng)絡(luò)以及卷積神經(jīng)網(wǎng)絡(luò)模型,模型的參數(shù)均采用默認(rèn)值.由于正負(fù)樣本數(shù)據(jù)集的數(shù)量差距較大,因此在訓(xùn)練時,隨機抽取1萬個良性域名作為負(fù)樣本,采用10折交叉驗證在訓(xùn)練集上訓(xùn)練分類模型.
4個模型在驗證集上的AUC如圖4所示,從圖4中可以看出,CNN分類器要優(yōu)于其他分類器,AUC達(dá)到了0.983 8.
圖4 不同模型在驗證集上的AUC結(jié)果
從結(jié)果來看,非線性模型更適合本問題,并且在每輪的交叉驗證中,惡意樣本約占比6.7%,表明卷積神經(jīng)網(wǎng)絡(luò)、隨機森林、神經(jīng)網(wǎng)絡(luò)更適合處理不平衡數(shù)據(jù)集.因此本文選擇CNN作為檢測模型.
將CNN檢測模型應(yīng)用到測試數(shù)據(jù)集上,其AUC達(dá)到了0.989 6,F(xiàn)1_Score為0.988 3,進(jìn)一步驗證了本文模型可較為準(zhǔn)確地檢測惡意BDN,達(dá)到了較好的效果.
本文與Leopard[9]方法進(jìn)行對比.為了對比二者的優(yōu)劣,在檢測結(jié)果和發(fā)現(xiàn)未知惡意域名2方面進(jìn)行測試.
3.4.1 檢測結(jié)果
分別在Leopard和本文構(gòu)建的數(shù)據(jù)集上進(jìn)行測試,隨機劃分訓(xùn)練集(80%)和測試集(20%).測試集上的結(jié)果如表5所示:
表5 2種方法在不同數(shù)據(jù)集上的F1_Score
可以看出,CNN檢測模型在2個數(shù)據(jù)集上的F1_Score均比Leopard高.表明本文方法比Leopard的檢測效果更好,并且其檢測的良性域名范圍更大.這也證實了本文方法可以有效挖掘單個域名的不同特征之間的關(guān)聯(lián),并且通過四分位點等特征,能夠準(zhǔn)確區(qū)分良性和惡意域名,降低了域名因被偽造單個特征而檢測失敗的概率,從而提升了檢測效果.
3.4.2 發(fā)現(xiàn)未知惡意域名
為了驗證模型的泛化能力,用Dunknown來對比2個模型,該數(shù)據(jù)集中包含了新出現(xiàn)的域名.我們認(rèn)為滿足以下條件的域名是惡意的:
1) BDN的歷史解析IP曾經(jīng)是惡意的;
2) BDN的訪問IP是被惡意軟件感染的.
針對Leopard的Dunknown,本文方法識別出該數(shù)據(jù)集中全部的惡意BDN;針對本文的Dunknown,識別出72個惡意BDN,而Leopard僅識別出51個惡意BDN.表明本文方法能更高效地發(fā)現(xiàn)新的惡意BDN.相較于Leopard,本文方法通過提取特征并對特征進(jìn)行關(guān)聯(lián),能夠更加準(zhǔn)確地表征同一類域名,增強了模型的泛化能力.
通過分析BDNS的解析流程,研究了惡意BDN的工作機制,提出基于CNN的惡意BDN檢測方法,實現(xiàn)了對惡意BDN的有效檢測.該方法通過提取域名的時間序列特征、資源記錄以及字符統(tǒng)計特征,將特征向量輸入到CNN中實現(xiàn)了惡意BDN的檢測.本文方法體現(xiàn)了CNN在該任務(wù)上的優(yōu)良性能,突破了現(xiàn)有檢測惡意BDN方案的局限性.
本文認(rèn)為,惡意BDN的特征提取可分為2方面: 一方面是靜態(tài)特征; 另一方面是行為特征.靜態(tài)特征是其自身的屬性,如資源記錄、域名字符信息等;行為特征分為非活躍狀態(tài)行為和活躍狀態(tài)行為.
另外,本文方法存在一定的局限,只考慮了基于區(qū)塊鏈域名的惡意行為特點以及惡意區(qū)塊鏈域名的自身信息,并沒有考慮區(qū)塊鏈特征,如錢包、域名注冊區(qū)塊等.后續(xù)將進(jìn)一步在此基礎(chǔ)上進(jìn)行研究.