張千帆,郭曉軍,周鵬舉
(西藏民族大學(xué) 信息工程學(xué)院,陜西 咸陽 712000)
近日,騰訊安全應(yīng)急響應(yīng)中心報(bào)道了一款專門針對容器虛擬化服務(wù)的僵尸網(wǎng)絡(luò):BORG僵尸網(wǎng)絡(luò),證實(shí)該攻擊者在入侵內(nèi)網(wǎng)后開始對內(nèi)網(wǎng)中其他機(jī)器進(jìn)行探測和入侵,并批量控制這些機(jī)器[1]。由此可見,未來僵尸網(wǎng)絡(luò)的研究與檢測工作仍然嚴(yán)峻。僵尸網(wǎng)絡(luò)作為一個高度可控的網(wǎng)絡(luò)攻擊平臺已對互聯(lián)網(wǎng)安全造成了極大的威脅[2]。
現(xiàn)有研究表明,使用DGA算法已成為僵尸網(wǎng)絡(luò)逃避檢測的主流方法之一,如Cryptolocker[3]、Hesperbot[4]、Ramnit[5]等。目前針對DGA域名的識別方法有:逆向工程技術(shù)[6-8],即根據(jù)DGA表征或DNS行為找到DGA背后的家族和變種。Yadav S.等人[9]則通過測量了同一IP下域名的K-L距離、編輯距離和Jaccard系數(shù),根據(jù)差異構(gòu)建分類器,提出了基于域名距離度量的檢測方法。Zhao H等人[10]利用N-Gram模型,將二級域名和三級域名字符串的長度分成3、4、5、6和7,根據(jù)域名權(quán)重和閾值進(jìn)行判斷。Zhang Y等人[11]結(jié)合CNN和BLSTM的混合深度神經(jīng)網(wǎng)絡(luò)來提取域名的語義特征和上下文依賴特征。Hao S等人[12]分析合法域名與惡意域名注冊時(shí)3大類共22種行為特征,根據(jù)CPM(凸多面體機(jī))算法學(xué)習(xí)后進(jìn)行檢測,對是否存在惡意域名進(jìn)行預(yù)判。Vissers T等人[13]對10 000個域名服務(wù)器域的配置問題和硬件錯誤進(jìn)行分析,找出了現(xiàn)有濫用和脆弱的域名服務(wù)器。
但上述方法大多數(shù)是面向DGA算法所產(chǎn)生明文形式流量的檢測方法,僵尸網(wǎng)絡(luò)控制者為逃避檢測,極有可能對DGA算法產(chǎn)生的流量進(jìn)行加密傳輸,例如使用DoH加密協(xié)議[14]。因此,該文利用doh-proxy代理方式[15],將DGA算法產(chǎn)生的流量進(jìn)行加密傳輸,并分析DoH網(wǎng)絡(luò)中請求傳輸特征和加密DGA流量特征,最終根據(jù)DoH流量數(shù)據(jù)包的長度和時(shí)序信息等特征進(jìn)行識別。由此構(gòu)建基于KNN算法的加密DGA流量識別方法DGA-DoH(DGA identification method based on DoH traffic)。
首先,闡述了DoH加密協(xié)議工作機(jī)制,驗(yàn)證了DGA流量利用DoH協(xié)議建立命令控制服務(wù)傳輸?shù)目赡苄圆⒃敿?xì)描述了DoH網(wǎng)絡(luò)中惡意流量與正常流量的差異性;其次,主要結(jié)合特征工程和KNN機(jī)器學(xué)習(xí)算法設(shè)計(jì)了一種在DoH網(wǎng)絡(luò)中識別DGA流量的分類模型;再次,利用實(shí)驗(yàn)驗(yàn)證了模型的識別能力并通過比較不同模型參數(shù),優(yōu)化了模型的檢測率,增加了模型的泛化能力;最后,對全文內(nèi)容進(jìn)行總結(jié)。
DoH加密協(xié)議是一種通過HTTPS運(yùn)行加密DNS的方法,DNS交互信息采用Base32/Base64等編碼方式進(jìn)行傳輸,這種協(xié)議可以在其他加密機(jī)制可能被阻止時(shí)自由地穿越防火墻[16]。DoH網(wǎng)絡(luò)數(shù)據(jù)查詢流程見圖1,工作站通過TLS/TCP 443端口將數(shù)據(jù)傳送給內(nèi)部Web代理服務(wù)器,Web代理服務(wù)器接受數(shù)據(jù)并通過防火墻傳輸給公共DoH服務(wù)器,公共DoH服務(wù)器通過TCP 443端口返回應(yīng)答,同時(shí)公共DoH服務(wù)器受域名的權(quán)威名稱服務(wù)器組件UDP 53端口監(jiān)聽。
圖1 DoH網(wǎng)絡(luò)數(shù)據(jù)請求流程
該文采用doh-proxy代理方式[15],創(chuàng)建DoH網(wǎng)絡(luò)環(huán)境。在HTTPS網(wǎng)絡(luò)中發(fā)送Web請求后,用Wireshark軟件抓取底層網(wǎng)關(guān)流量,結(jié)果如圖2所示;同理用Wireshark軟件記錄DoH網(wǎng)絡(luò)中數(shù)據(jù)請求過程,結(jié)果如圖3所示。結(jié)果對比可得到,在圖2基于HTTPS的Web請求過程中包含圖中方框中的DNS報(bào)文解析過程,而圖3中的DoH網(wǎng)絡(luò)數(shù)據(jù)請求過程中因DoH協(xié)議加密傳輸?shù)奶匦?,傳輸過程中不再包含DNS報(bào)文解析過程。
圖2 基于HTTPS的Web請求過程
圖3 DoH數(shù)據(jù)請求過程
這種數(shù)據(jù)傳輸方式無疑為DGA流量逃脫檢測提供了便利?,F(xiàn)有加密傳輸工具所采用的編碼方式各有異同,考慮DoH協(xié)議對數(shù)據(jù)編碼方式及加密特性,對數(shù)據(jù)包解密后分析難度較大,同時(shí)為了保護(hù)數(shù)據(jù)包的完整性及用戶的隱私性,該文不采用解密流量的方法[17]識別加密的DGA流量。
經(jīng)分析建立命令控制服務(wù)所產(chǎn)生的HTTP報(bào)文內(nèi)容、HTTP流量及對應(yīng)的TCP流量等信息后,該文將根據(jù)DoH流量數(shù)據(jù)包的長度和時(shí)序信息等特征識別加密的DGA流量。
由于網(wǎng)絡(luò)流特征分布會隨時(shí)間和網(wǎng)絡(luò)變化而變化,單一特征選擇方法在給定數(shù)據(jù)集獲得的特征子集無法在未來長時(shí)間維持穩(wěn)定的分類精度[18]。因此,在已得到加密流量數(shù)據(jù)包中對所有流量進(jìn)行分析。經(jīng)分析與研究流量數(shù)據(jù)包中高維數(shù)據(jù)后,為減少建立與優(yōu)化模型的時(shí)間等成本,僅選擇表1中的三個最優(yōu)特征子集,包括Init_win_bytes(C->S)7th packet、Init_win_bytes(S->C)7th packet、Data_xmit_time,真實(shí)域名流量和DGA流量在該特征子集中存在明顯差異。
表1 數(shù)據(jù)集的特征子集
從已收集的真實(shí)域名集與DGA域名集生成的流量數(shù)據(jù)包中各隨機(jī)選取200個數(shù)據(jù)包,特征對比結(jié)果如圖4所示。
圖4(a)表示F1特征對比,DGA流量域名因有隨機(jī)性、名稱長度較長等特征,客戶端發(fā)送給服務(wù)器端的第七個包的數(shù)據(jù)包的大小明顯大于良性流量。圖4(b)表示F2特征對比,因DGA算法生成的域名多數(shù)為無效域名,服務(wù)器難以解析,所以服務(wù)器端返回的第七個包的數(shù)據(jù)包大小明顯小于良性流量數(shù)據(jù)包[19]。圖4(c)表示F3特征對比,DGA流量查詢時(shí)間明顯長于良性流量查詢時(shí)間。
(a) F1:Init_win_bytes(C->S)7th packet (b)F2:Init_win_bytes(S->C)7th packet (c)F3:Data_xmit_time
該文從初始pacpng數(shù)據(jù)包等高維數(shù)據(jù)中選擇包含數(shù)據(jù)包長度、傳輸時(shí)間等最優(yōu)特征子集,提高了分類模型的魯棒性,減少了模型的生成和分類時(shí)間等成本,從而生成的模型具有更高分類效率和泛化能力。
目前,基于DGA域名的檢測方法已趨于成熟,但這些方法無法識別加密后流量,因此該文提出基于KNN模型的DGA-DoH識別方法,分類框圖如圖5所示,由DoH流量收集、特征分析、KNN分類器部分組成。通過特征工程和機(jī)器學(xué)習(xí)緊密結(jié)合的辦法解決加密惡意流量分類中的分析與檢測精度不足的問題。
圖5 DGA-DoH流量分類框圖
(1)DoH流量收集。該文采用了doh-proxy代理[15],用于實(shí)現(xiàn)通過HTTP發(fā)送DNS查詢并獲得DNS響應(yīng)時(shí)使用HTTPS的URI[14]。對已收集的所有域名進(jìn)行查詢,得到域名數(shù)據(jù)集中每個域名在DoH網(wǎng)絡(luò)中的流量,生成DoH數(shù)據(jù)集,并做好篩選標(biāo)注及分類。為保證實(shí)驗(yàn)數(shù)據(jù)真實(shí)性,隨機(jī)選擇部分?jǐn)?shù)據(jù)為實(shí)驗(yàn)數(shù)據(jù)。
(2)特征工程。觀察和分析命令控制服務(wù)傳輸過程所產(chǎn)生的HTTP報(bào)文內(nèi)容、HTTP流量及對應(yīng)的TCP流量后,根據(jù)圖4中惡意流量與真實(shí)域名流量特征分析對比結(jié)果,該文選取DoH數(shù)據(jù)集中數(shù)據(jù)包的長度和時(shí)序信息等特征數(shù)據(jù)。
(3)訓(xùn)練模型。選取數(shù)據(jù)集中90%數(shù)據(jù)包為訓(xùn)練集,并根據(jù)提取特征進(jìn)行訓(xùn)練。
(4)KNN分類器。選取數(shù)據(jù)集中剩余10%的數(shù)據(jù)包為分類對象,對生成的分類器進(jìn)行驗(yàn)證。
(5)模型評估。對完成分類的數(shù)據(jù)包進(jìn)行檢測,調(diào)整分類模型的參數(shù),得到最優(yōu)分類模型。
該文通過doh-proxy代理方式搭建DoH網(wǎng)絡(luò)[15],流量傳遞方式如圖6所示。DoH網(wǎng)絡(luò)中主要包括DoH客戶端、Web服務(wù)器、DoH中轉(zhuǎn)服務(wù)器、DoH服務(wù)器等部件。該文通過在不同主機(jī)分別安裝DoH客戶端和DoH中轉(zhuǎn)服務(wù)器,在查詢過程中使用Wireshark軟件從客戶端網(wǎng)關(guān)監(jiān)測。DoH流量采用加密方式進(jìn)行傳輸,因此根據(jù)DoH中轉(zhuǎn)服務(wù)器IP地址對流量進(jìn)行過濾,抓取客戶端與中轉(zhuǎn)服務(wù)器端之間的流量數(shù)據(jù)。
圖6 DoH網(wǎng)絡(luò)流量傳輸
將截取的流量數(shù)據(jù)進(jìn)行保存,并使用Wireshark的命令行版本及Linux命令行等工具對生成的pcapng文件進(jìn)行解析,提取數(shù)據(jù)包中源IP、目標(biāo)IP、數(shù)據(jù)包長度及傳輸時(shí)間等特征信息,獲得所需的DGA-DoH數(shù)據(jù)包。
基于以上方法,保證了抓取數(shù)據(jù)是完成了DoH請求所產(chǎn)生的完整流量,增加了實(shí)驗(yàn)數(shù)據(jù)的真實(shí)性,有效降低了因噪聲帶來的實(shí)驗(yàn)誤差。
2.3.1 數(shù)據(jù)預(yù)處理
選取表1中數(shù)據(jù)集的特征子集作為本次實(shí)驗(yàn)的數(shù)據(jù)集。將真實(shí)域名流量和DGA域名流量分類整理。對DGA-DoH流量識別,采用KNN算法對加密流量進(jìn)行分類,對數(shù)據(jù)集中流量標(biāo)簽進(jìn)行二值化處理,處理后標(biāo)簽只有0和1兩種標(biāo)簽類型[20]。待處理的數(shù)據(jù)格式調(diào)整為分類器輸入格式,并將數(shù)據(jù)分成特征向量和對應(yīng)的分類標(biāo)簽向量兩部分。
根據(jù)圖4部分特征數(shù)值對比可知,表1中F1、F2、F3三種特征的權(quán)重沒有較大差異。因此該文采用數(shù)值歸一化方法將任意取值范圍的特征值歸一化的相關(guān)公式為:
其中,Min和Max分別是數(shù)據(jù)集中的最小特征值和最大特征值。
數(shù)據(jù)處理后的格式如表2所示。
表2 數(shù)據(jù)歸一化后的格式
2.3.2 KNN分類器
在訓(xùn)練集中,將數(shù)據(jù)標(biāo)記成DGA流量或真實(shí)域名流量,輸入測試集中未知流量后,將測試數(shù)據(jù)與訓(xùn)練數(shù)據(jù)集中對應(yīng)的特征數(shù)據(jù)進(jìn)行比較,提取訓(xùn)練樣本集中最相似數(shù)據(jù)的分類標(biāo)簽,作為未知流量的分類[21]。
隨機(jī)選取數(shù)據(jù)集中90%的數(shù)據(jù)為訓(xùn)練數(shù)據(jù)集,根據(jù)歐氏距離公式在二維實(shí)數(shù)向量空間中計(jì)算當(dāng)前點(diǎn)與已知類別點(diǎn)之間的距離。
將當(dāng)前點(diǎn)與已知類別點(diǎn)的距離按從小到大排列,選取前K個點(diǎn)的類別,計(jì)算類別次數(shù),返回次數(shù)最多的類別為當(dāng)前點(diǎn)的類別。
實(shí)驗(yàn)數(shù)據(jù)為DoH流量數(shù)據(jù)包,為保證含有更多種類的DGA家族,提高分類模型驗(yàn)證效果,DGA域名集利用Python實(shí)現(xiàn)的DGA生成算法[22];由于DGA域名通常具有生存周期低、訪問量低等特點(diǎn),難以在Alexa網(wǎng)站排名中處于Top位,因此真實(shí)域名采用的是Alexa前100萬條域名[23]。將已收集的域名經(jīng)查詢、處理、解析后得到實(shí)驗(yàn)所需DoH流量數(shù)據(jù)集。表3包括DoH流量數(shù)據(jù)集中的域名種類、數(shù)據(jù)包數(shù)量等信息,數(shù)據(jù)集的90% DoH流量用于訓(xùn)練模型,剩余10% DoH流量用于測試生成的分類器。
表3 數(shù)據(jù)集
該文基于doh-proxy[15]工具構(gòu)建DoH網(wǎng)絡(luò)環(huán)境,提取數(shù)據(jù)包特征后生成DGA-DoH數(shù)據(jù)包。將已收集的數(shù)據(jù)包分類標(biāo)注后,采用Python語言編寫KNN分類模型,具體實(shí)驗(yàn)環(huán)境如表4所示。
表4 實(shí)驗(yàn)環(huán)境
為了評估模型的準(zhǔn)確率,該文參考了模型的交叉熵,交叉熵用于度量某一域名真實(shí)標(biāo)簽與模型分類后標(biāo)簽分布間的差異性信息,已知交叉熵越大,模型分類結(jié)果與真實(shí)標(biāo)簽越接近。隨機(jī)選擇數(shù)據(jù)集中90%數(shù)據(jù)作為訓(xùn)練樣本來訓(xùn)練分類器,使用剩下的10%數(shù)據(jù)為實(shí)驗(yàn)的測試數(shù)據(jù),檢測分類器的準(zhǔn)確率。
已知目前檢測DGA流量的方法對DGA-DoH模型不具有參考價(jià)值,因此該文僅對比當(dāng)前模型的檢測精度,選取最優(yōu)模型。為了優(yōu)化模型,比較不同K值時(shí)模型的準(zhǔn)確率和交叉熵,結(jié)果如表5所示。由表5可知,隨K值的增加,模型的準(zhǔn)確率及交叉熵呈遞減趨勢。因此選取與當(dāng)前點(diǎn)距離較近的前2個點(diǎn)的類別(即K值為2),返回較多點(diǎn)的類別為未知流量的類別,此時(shí)分類器的準(zhǔn)確率為79%,最大交叉熵為9.047。
表5 模型的交叉熵與準(zhǔn)確率
該文圍繞僵尸網(wǎng)絡(luò)在新型DoH協(xié)議中工作機(jī)制的問題,對其構(gòu)建方式及檢測技術(shù)進(jìn)行了相關(guān)研究,觀察和分析了命令控制服務(wù)傳輸過程所產(chǎn)生的HTTP報(bào)文內(nèi)容、HTTP流量及對應(yīng)的TCP流量,提取相應(yīng)的特征,利用KNN算法對訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí)后創(chuàng)建分類器并采用驗(yàn)證數(shù)據(jù)進(jìn)行驗(yàn)證。
通過實(shí)驗(yàn)分析總結(jié)了DoH協(xié)議中DGA流量特征,在未來的工作中,會繼續(xù)觀察DNSCrypt、DoT等DNS加密協(xié)議中惡意流量特征,提高檢測精度,為DoH、DoT等加密DNS協(xié)議網(wǎng)絡(luò)安全提供更多的保障。