馬棟林,張澍寰,趙 宏
蘭州理工大學 計算機與通信學院,蘭州 730050
域名系統(domain name system,DNS)作為互聯網的一項基礎服務,提供域名和IP地址之間的相互轉換。此外,DNS還作為信任的憑據,為郵件服務器和證書時域控制權提供驗證服務。由于DNS應用廣泛,且自身缺乏安全檢測機制,因此成為惡意域名主要的攻擊對象。
惡意域名攻擊常伴隨郵件發送、短信和網頁點擊等內容中,通過使用一些迷惑性的文字和圖片來引誘用戶點擊,也可能以某種形式存在于軟件代碼中,伴隨軟件的運行對某一服務器發起大規模訪問,導致服務器宕機,影響合法域名的正常訪問。利用惡意域名檢測技術,及時發現網絡中出現的惡意域名并進行攔截,可以有效防范惡意域名的攻擊。
根據國家互聯網應急中心(National Internet Emergency Center,CNCERT)2020年第51期《網絡安全信息與動態周報》顯示[1],該周內因惡意域名攻擊導致境內感染網絡病毒的主機數量達75.8萬個,境內被篡改網站數量達4 327個,被植入后門的網站數量達839個,境內網站的仿冒頁面數量達4 374個,可見由惡意域名引起的網絡安全形勢不容樂觀。
在眾多惡意域名攻擊中,僵尸網絡攻擊[2]所產生的負面作用尤為巨大。目前,僵尸網絡的控制者大部分使用DGA(domain generation algorithm)算法來生成域名,從而逃避黑名單的檢測。國內外的研究者如Mao等[3]提出了一種針對DGA的惡意域名檢測算法,應用機器學習方法提取特征集,構建DGA檢測模型。Can等[4]將域名數據模糊化為Neutorsophic集,來減少良性域名的誤檢。Sivaguru等[5]提取域名的邊界信息特征,與域名進行內聯,構造深度學習框架,并使用隨機森林算法進行分類。殷聰賢[6]利用隨機森林算法構建了基于DNS行為特征的惡意域名檢測模型。該算法因使用的特征過多,導致時間開銷較大,此外,該模型對訓練數據要求極高,若存在干擾數據,隨機森林模型會出現過擬合現象,導致檢測準確率不穩定。Zhao等[7]提出了一種基于詞法分析和特征量化的惡意域名檢測算法。該算法首先根據待測域名和黑名單上域名之間的編輯距離,將待測域名劃分為明確惡意或潛在惡意;然后利用N-gram計算潛在惡意域名的信譽值,根據信譽值判斷潛在惡意域名的惡意性,通過在公開數據上驗證了該方法的有效性。
此外,域名變換技術Fast-Flux和Domain-Flux也常用來隱藏復雜代理網絡背后的惡意服務器,使得惡意域名的狀態處于不斷變化中。如Truong等[8]提出了一種基于被動DNS流量跟蹤分析的惡意域名檢測方法,通過提取十個URL關鍵特征,并利用機器學習算法來建立分類器。崔甲等[9]結合黑/白域名過濾器、DNS記錄解析器以及基于特征分類的檢測引擎等三種域名檢測技術,構建了新型惡意域名檢測框架,具有較好的完備性。
在域名生成和變換算法的基礎上,Fu等[10]提出了一種隱身域名生成算法SDGA(stealthy domain generation algorithm),與傳統的基于字符的DGA惡意域名檢測算法相比,該算法的隱蔽性更強,更難實時捕獲訪問日志記錄。Yang等[11]利用SDGA域名的特征層特征,提出了一種異構深度神經網絡框架。采用改進的多尺度卷積核并行CNN結構,從域名中提取多尺度局部特征,并加入基于自注意力機制的雙向LSTM網絡架構,提取帶有注意力機制的雙向全局特征。楊路輝等[12]針對SDGA生成的域名難以檢測問題,在現有卷積神經網絡模型的基礎上,增加了提取更深層字符級特征的卷積分支,同時提取惡意域名的淺層和深層字符級特征并融合,提高對復雜樣本的檢測準確率。
以上惡意域名檢測方法各有優勢,相比而言,使用機器學習方法檢測時,若提取的特征過多,則時間開銷較大,若提取的特征較少,則不具備代表性,準確率不高;基于深度神經網絡的檢測方法準確率較高,但耗時較長,實時性不強;通過建立黑名單過濾器的檢測方法耗時較短,準確率也較高,但容易被攻擊者所規避,普適性不強。
綜上,基于目前惡意域名檢測算法中存在的實時性不強、準確性不高等問題,本文提出一種基于Rf-C5的惡意域名檢測算法。首先,通過使用改進的Relief特征選擇算法解決了字符特征數量過多造成計算開銷大、運行時間長的問題;其次,通過C5.0決策樹分類器,降低分類的復雜度,在保證檢測準確率的基礎上降低檢測的時間開銷。
圖1給出了本文算法的檢測流程。首先,收集與整理國內外合法域名與惡意域名公開數據集,并進行預處理;然后,整合當前已有特征,并在此基礎上增加了域名的全局URL構詞特征種類,將其作為特征選擇層的輸入;其次,在特征選擇層中使用改進的Relief算法計算全局特征的權重,并輸出關鍵特征集,作為分類層的輸入;最后,在分類層中使用C5.0決策樹進行二分類,實現合法域名與惡意域名的檢測。

圖1 算法流程Fig.1 Algorithm flow
在Alexa、Malware Domain List等知名網站上收集與整理合法域名與惡意域名,構造合法域名與惡意域名數據集。此外,為降低噪聲數據對檢測準確率和實時性的影響,將http、www等字符串進行剔除。
本文特征提取在文獻[13-18]等的研究基礎上,豐富了特征類別。具體分為字符特征、域名特征、訪問特征、TTL(time to live)特征、解析特征和IP地址集特征六個大類。如表1所示。

表1 全局特征說明與編號Table 1 Description and numbering of global features
整合了15個字符特征(Q1~Q15)。由于DNS的主要功能是為用戶提供可讀且易于記憶的名稱,字符特性如隨機性、字母個數和數字個數等與惡意行為緊密關聯。域名字符的隨機性通過字符的熵來計算,如式(1)所示:

其中,d為待測域名,X i為d中的某一個字符,P(X i)為該字符出現的概率。
整合了6個域名特征(Q16~Q21)。一般正常域名的長度、隨機性、子域名個數等都較為規范,頂級域名也較為常見,比如.cn和.com等。而惡意域名較為混亂和隨意。
整合了4個時間特征(Q22~Q25)。通過分析域名在時間序列上的查詢點,可以發現惡意行為的特征。設置每日為一個觀測窗口,統計域名在一日之內的狀態變化規律。惡意域名一般不會持續保持活躍,查詢次數變化范圍較大。
整合了6個TTL特征(Q26~Q31)。TTL值被用來設定域名響應記錄的最長緩存時間。惡意網絡會產生頻繁的TTL變化,其管理者通過設置不同的TTL值為僵尸節點分配資源,表現出更加分散的特點。
整合了5個解析特征(Q32~Q36)。攻擊者所使用的IP地址隨機性比較高,會將惡意域名解析到不同國家、不同地區的主機上,IP地址也會在多個不同的域名間共享來躲避封堵。
整合了4個IP地址集特征(Q37~Q40)。一般請求惡意域名的源IP地址集較小,而共享同一IP的惡意域名集較大。通過計算IP地址的16 bit前綴的熵來表示IP地址集的分散程度,如式(2)所示:

其中,p(x)=count(x)/|I|,I表示IP地址集,p(x)為IP地址的16 bit前綴x在I中所占的比例,熵越大,IP地址越分散。
本文總結與分析了大量的URL構詞特征,但實際該類特征中只有一部分是對分類有效的特征,如果使用全部的特征訓練,可能會導致以下問題:
(1)特征數量過多導致特征向量維度過高、容易出現模型過擬合;
(2)特征數量過多導致模型訓練過程緩慢,影響檢測實時性。
因此,本文采用改進的Relief算法來對全局特征進行權重排序,根據排序結果選擇最佳分類特征,刪除冗余特征對于檢測結果的影響。同時,選擇主流特征選擇算法Filter相關系數法和Wrapper遞歸特征消除法進行對比實驗,驗證Relief算法的有效性。
1.3.1 Filter相關系數法
Filter按照特征與標簽的相關性進行評分,并根據動態閾值判別法來選擇所需的特征。本文借助機器學習算法中的sk-learn模塊,使用feature_selection庫的SelectKBest類構建Filter相關系數模型,代碼如下所示:
SelectKBest(lambda X,Y:array(map(lambda x:pearsonr(x,Y),X.T)).T,k=20).fit_transform(iris.data,iris.target)
該模型的輸入為40維特征矩陣和標簽值,輸出為包含了特征和皮爾遜相關系數(P值)的數組。取10次實驗的平均P值作為特征的排名依據,由于20位以后的特征P值較低,對檢測結果影響較小,本文設定參數k=20,P值排名最高的20個特征如表2所示。

表2 Filter關鍵特征組合Table 2 Filter key features combination
1.3.2 Wrapper遞歸特征消除法
遞歸消除特征法通過使用一個基模型來進行多輪訓練,每輪訓練后,消除若干權值系數的特征;然后,再次基于新的特征集進行下一輪訓練。本文通過借助機器學習算法中的sk-learn模塊,使用feature_selection庫的RFE類構建Wrapper遞歸特征消除法模型,代碼如下所示:
RFE(estimator=LogisticRegression(),n_features_to_select=20).fit_transform(iris.data,iris.target)
該模型的輸入為40維特征矩陣和標簽值,輸出為選擇的關鍵特征集。基模型采用Logistic Regression邏輯回歸函數,為使對比實驗結果更加準確可靠,本文設定參數n_features_to_select=20,將所選擇的特征個數與Filter關鍵特征組合保持一致,取10次實驗的平均值作為檢測結果。輸出如表3所示。
會上,山東省化肥與煤化工協會顧問楊春升分析了山東省化肥與煤化工行業在當前時期的實際情況,以及今后一個時期的行業發展特點,指出山東省的整體發展和盈利狀況較好,并提出行業間要保持這種良好的溝通傳統,為高層決策和企業發展提供強有力的借鑒和支持。

表3 Wrapper關鍵特征組合Table 3 Wrapper key features combination
1.3.3 改進的Relief算法
Relief算法根據各特征與標簽的相關性計算權重,移除權重小于設定閾值的特征。由于其簡潔的算法和優秀的特征選擇能力被廣泛應用,偽代碼如下:

其中,參數為數據集E,抽樣次數m,特征權重閾值T,特征權重向量S,樣本點H,正樣本集合中距離H最近的樣本X+,負樣本集和中距離H最近的樣本X-,特征總個數N=40。
由于Relief算法的運行時間由抽樣次數m和輸入的特征個數N決定,計算某一個樣本點的最近鄰樣本需要全部的訓練空間,所以存儲率較高且運算時間較長。為了解決此問題,本文在Relief算法的基礎上進行改進,將原始訓練集劃分為若干個小訓練集,分別計算每個小訓練集內的特征權重,減小訓練空間大小,降低硬件存儲率,最后將計算出權重的特征合并,輸出關鍵特征集T。
根據提取的40維全局特征的天然屬性,將其分為6個小訓練集,作為改進的Relief算法的輸入,流程如圖2所示。

圖2 改進的Relief算法Fig.2 Improved Relief algorithm
由圖2可以看出,改進的Relief算法與原算法的區別在于將數據集分割之后同時并行處理,極大地縮短了運算時間。
取10次實驗的平均權重值作為檢測結果,為了使輸出更加直觀便于比較,將排名最高的特征權重值歸化為1,其他特征權重值等比例轉化。由于后20位特征權重值較低,與結果的關聯性不強,同樣取權重值排名前20位的特征作為關鍵特征,如表4所示。

表4 改進的Relief關鍵特征組合Table 4 Improved Relief key features combination

如果某屬性變量T,有n個分類,則屬性變量T引入后的條件熵定義為式(4):

隨著決策樹的生長,越深層處的節點所體現的數據特征就越個性化,會出現過擬合現象,所以需要修剪決策樹,采用Post-Pruning法從葉節點向上逐層剪枝。一般決策樹會使用測試數據進行檢驗,但C5.0分類器使用了統計的置信區間的估計方法,直接在訓練數據中估計誤差。在執行效率和內存使用方面進行了改進,采用Boosting方式提高模型準確率,計算速度較快,占用的內存資源較少。
實驗的數據集包括合法域名和惡意域名兩部分。從Alexa網站排名中選取前60 000條域名作為合法域名集,從DGA Domain List、Malware Domain List和360等知名惡意域名網站上收集并整理60 000條惡意域名作為惡意域名集,保證了惡意域名種類的完整性和全面性。將合法域名集與惡意域名集進行合并,共120 000條,選取其中80 000條作為模型的訓練數據,40 000條作為測試數據。
實驗環境如表5所示。

表5 實驗環境Table 5 Experimental environment
使用召回率(recall)、準確率(accuracy rate,AR)、漏報率(false negative rate,FNR)、誤報率(false positive rate,FPR)、精確率(precision rate,PR)和AUC(area under curve)[19]來評估本文提出的Rf-C5模型在惡意域名檢測時的性能。評價指標均基于實驗結果的混淆矩陣計算。
分別使用Filter相關系數法、Wrapper遞歸特征消除法和改進的Relief算法對提取的40維全局URL特征(Q1~Q40)進行選擇,得到不同的三組特征組合,如表2~表4所示。將其分別作為支持向量機(support vector machine,SVM)、K最近鄰算法(K-nearest neighbor,KNN)、隨機森林(random forest,RF)、C4.5和C5.0五個分類器的輸入,交叉驗證模型檢測效果。圖3~圖5分別是三種特征選擇算法的關鍵特征組合在不同分類器上的檢測結果。

圖3 Filter特征組合檢測結果Fig.3 Filter feature combination detection results

圖4 Wrapper特征組合檢測結果Fig.4 Wrapper feature combination detection results
由圖3~圖5可以明顯地看出,經過改進的Relief算法選擇出的特征組合,對惡意域名的檢測效果在召回率(Recall)、精確率(Precision)和AUC值三個方面都強于Filter相關系數法和Wrapper遞歸特征消除法,即改進的Relief算法對關鍵特征的選擇更準確,能夠更好地提取出與標簽關聯度更高的特征。

圖5 改進的Relief特征組合檢測結果Fig.5 Improved Relief feature combination detection results
將改進的Relief算法與SVM、KNN、RF、樸素貝葉斯(Naive Bayesian,NB)、線性回歸(linear regression,LiR)、邏輯回歸(logistic regression,LoR)以及C5.0共七種分類器分別結合,構建Rf-SVM、Rf-KNN、Rf-RF、Rf-NB、Rf-LiR、Rf-LoR和Rf-C5模型,測試不同分類器與改進的Relief算法結合之后在域名分類上的效果。
各模型的輸入端是提取的40維全局URL特征,首先通過改進的Relief特征選擇層計算,輸出關鍵特征集,然后作為分類層的輸入,使用分類器進行二元分類。
以AR、PR、FNR、FPR四項指標深入具體對比七種模型的檢測性能,如表6所示。

表6 七種模型的檢測性能對比Table 6 Comparison of detection performance of seven models %
由表6可以看出,使用C5.0分類器與改進的Relief算法相結合,在各項指標下均可以達到良好的效果。其中,在準確率方面,C5.0相比SVM、KNN、NB和LiR優勢明顯;在精確率方面,C5.0相比NB、LiR和RF優勢明顯;在漏報率方面,C5.0相比NB、SVM、LiR和RF優勢明顯;在誤報率方面,C5.0相比RF和KNN優勢明顯。
為了驗證Rf-C5惡意域名檢測模型的綜合性能,在相同的實驗環境下分別構造目前國內外主流的各類惡意域名檢測模型。分別為文獻[20]基于語義表示和深度學習的惡意域名檢測模型、文獻[21]基于N-grams和隨機森林的惡意域名檢測模型、文獻[22]基于優化支持向量機的惡意域名檢測模型、文獻[23]基于卷積神經網絡CNN的惡意域名檢測模型。使用相同的數據集,與本文惡意域名檢測模型進行性能比較,具體結果如表7所示。

表7 五種算法性能比較Table 7 Performance comparison of five algorithms
由表7可以看出,本文提出的惡意域名檢測算法模型Rf-C5相較于主流神經網絡和機器學習的檢測方法,在運算時間和準確率方面都有顯著的提升。
在運算時間方面,由于改進的Relief算法將原始數據集劃分為若干個小訓練集,減小了訓練集的計算空間,降低了存儲率,提升了運算速度;同時,C5.0分類器使用統計的置信區間的估計方法,直接在訓練數據中估計誤差,占用的內存資源較少,與隨機森林、支持向量機等分類器相比,極大地減少了運算時間。
在準確率方面,由于Rf-C5模型在對域名分類之前先對特征進行了排序選擇,刪除了無用特征,降低了過擬合;再者,C5.0決策樹分類器采用信息增益率來確定最佳分組變量和最佳分割點,通過Boosting方式提高模型準確率,相較于其他分類算法效果更好。從結果來看,準確率略高于文獻[22],提高了1.58個百分點,優于文獻[20]、文獻[21]和文獻[23],分別提高了3.9、4.17和4.91個百分點,具有更高的準確性和更好的實時性。
針對目前惡意域名檢測算法分類模型計算復雜度較大等問題,構造了一種Rf-C5惡意域名檢測算法模型。通過對全局特征進行選擇,刪除了冗余信息;通過與傳統的各分類器模型對比,證明了C5.0分類器在檢測準確率上的優勢;進一步在相同的實驗環境內,通過與各類主流惡意域名檢測模型進行對比,證明了本文Rf-C5模型的優良綜合性能。在未來的工作里,計劃加入多標簽分類,可以將良性域名和惡意域名根據內容或功能進一步細分,為用戶提供更多有用的信息,提高網絡安全。