?

基于生成對抗網絡的惡意域名訓練數據生成方法

2024-01-06 08:26劉偉山馬旭琦吳子琰
蘭州理工大學學報 2023年6期
關鍵詞:域名字符檢測器

劉偉山, 馬旭琦, 汪 航, 吳子琰

(1. 國家計算機網絡應急技術處理協調中心 甘肅分中心, 甘肅 蘭州 730000; 2. 蘭州理工大學 機電工程學院, 甘肅 蘭州 730050; 3. 蘭州大學 信息科學與工程學院, 甘肅 蘭州 730000)

在互聯網產業蓬勃發展的同時,網絡詐騙、DDoS攻擊、勒索軟件、計算機惡意程序感染等各類網絡安全事件層出不窮.據國家計算機網絡應急技術處理協調中心(CNCERT/CC)監測顯示[1],2020年我國境內木馬或僵尸程序控制服務器IP地址數量為12 810個,境內木馬或僵尸程序受控主機IP地址數量為5 338 246個,由此構成的僵尸網絡已經成為當前網絡安全領域的巨大威脅.

僵尸網絡[2]廣泛采用域名生成算法[3]生成大量的隨機域名來躲避安全檢測,惡意域名的準確檢測和識別成為當前網絡安全管理的重要課題.基于神經網絡的深度學習算法在惡意域名檢測方面表現優異.Woodbridge等[4]首次利用長短期記憶網絡[5]構建DGA(domain generation algorithm)域名檢測器,并在檢測準確率、召回率等方面相較于傳統機器學習模型有著明顯優勢.Yu等[6]對利用不同的卷積神經網絡訓練出的DGA域名檢測器檢測準確率高達90%以上.袁辰等[7]提出一種DGA域名訓練數據的生成模型,該模型結合了生成對抗網絡的思想,直接將數據輸入GAN(generative adversarial network)原始模型進行學習訓練,保持了數據的真實特性.Anderson等[8]將自編碼器融入生成對抗網絡,提出一種DGA生成模型和檢測模型(Deep DGA),通過多次迭代訓練生成對抗網絡后,生成器可以模擬出特征類似的真實DGA域名,使采用隨機森林算法的DGA檢測器的性能明顯降低.

現有的DGA檢測器均是基于公開的DGA域名數據集進行訓練構建,缺乏最新的豐富的DGA域名訓練樣本數據,導致檢測模型更新周期過長、過慢,檢測的實效性、快速性不強,對未知的DGA域名檢測效率不高.本文利用真實域名數據訓練出一個自編碼器,并將自編碼器的編碼網絡和解碼網絡分別用作GAN網絡的判別器與生成器,從而構建出一個基于GAN的DGA序列生成器.與袁辰等[7-8]提出模型的不同之處在于:

1) 通過預訓練自編碼器并將其應用于GAN網絡最大程度地學習到了真實域名的潛在特性;

2) 在自編碼器結構中除了設計卷積層來提取域名的n-gram信息外,還引入LSTM網絡層以更好地捕獲域名字符間的潛在特征[9],從而生成長度可變的字符序列;

3) 采用基于最大均值差異(maximum mean discrepancy,MMD)的兩樣本檢驗方法來驗證生成器的輸出樣本與真實的Alexa域名樣本來自相同的分布,保證生成模型和生成數據的有效性;

4) 將生成數據在基于LSTM網絡的DGA域名檢測器上進行驗證,發現其能夠有效降低檢測模型的效率,而后進一步通過生成數據對域名檢測器進行訓練后,模型器性能明顯提升.

1 相關理論

1.1 自編碼器

自編碼器(auto encoder,AE)通常被視為無監督學習網絡[10],常用于幫助數據分類、可視化和存儲,其核心作用是對輸入序列進行壓縮降維,之后再進行重建恢復.一個典型的自編碼器包括編碼器和解碼器兩個部分,其中編碼器通過一系列預先設計的神經網絡結構將輸入序列編碼為相應的低維向量,稱為編碼過程;編碼后的數據通過解碼器中的隱藏層來重建輸入數據,即為解碼過程.通過定義合適的損失函數,選擇恰當的網絡模型加以訓練,可以近乎完美地重建輸入序列,從而實現編碼器輸出的低維向量完整地表達原始序列內在特征的功能.

1.2 生成對抗網絡

Goodfellow等[11]在2014年提出的生成對抗網絡(GAN)是一種無監督式深度學習模型[12],其原理主要是通過兩個神經網絡相互博弈的方式來學習樣本特征,從而根據原有數據集生成以假亂真的新數據[13].生成對抗網絡包含兩個獨立的神經網絡——生成網絡G和判別網絡D,D負責判別輸入其中的數據是來自G產生的虛假數據還是真實數據;而G則不斷提升自己的造假能力,只為生成能夠成功欺騙D的對抗樣本;雙方在對抗過程中采取交替迭代的方法不斷優化自身網絡,從而形成一種對抗,最終達到平衡.

2 DGA域名生成模型設計

2.1 域名自編碼器

一般的域名編/解碼器常通過建立單個域名字符到數字編碼的一一映射來實現,如袁辰等[7,14]將域名字符轉換為基于 ASCII碼的編碼方式實現向量映射及逆映射.

為了更好地捕獲域名字符間的潛在關系,并對長域名進行壓縮表示,本文設計的自編碼器編碼網絡主要由3個平行的卷積網絡和1個LSTM網絡級聯組成,3個平行的卷積層各自有100個濾波核,卷積核尺寸分別為2、3、4,對應捕獲域名數據字符間的n-gram信息,LSTM網絡用于挖掘和表示變長域名序列的潛在特征,從而實現可變長序列的生成.具體來說,首先將Alexa域名進行序列標記(Tokenization),之后進行獨熱編碼(One-hot),再將編碼后的序列輸入到級聯的卷積層,之后將級聯卷積層的輸出并列拼接后送入到另一個卷積層,最后通過展平層將輸入序列平展成一個1維的矢量,作為編碼器的輸出.該輸出表達了原序列數據經過編碼器壓縮提取后的核心信息.編碼器的輸出作為解碼器的輸入,首先通過重構層將一維的輸入序列重組成一個二維矩陣,然后將二維矩陣輸入到與編碼器結構類似的級聯卷積層,之后將級聯卷積層的輸出并列拼接后送入輸出卷積層,輸出卷積層的有37個卷積核,卷積核的個數對應域名序列化字典的長度,激活函數為Softmax.Softmax激活函數的輸出表示了域名的每個字符在標記字典上的概率分布.自編碼器網絡結構如圖1所示.

2.2 生成對抗網絡結構設計

2.1節設計的編碼器實現了復雜域名字符序列在低維特征空間中的壓縮表示,解碼器則可以將該壓縮表示還原成原始域名.基于此,將解碼器用于構造GAN網絡生成器,將編碼器用于GAN網絡判別器,從而設計一個新的域名生成網絡模型.其中GAN模型生成器將被訓練用于產生與Alexa Top 100萬數據盡可能相似的域名,而判別器則盡可能地識別出輸入的域名數據是由生成網絡產生的還是從真實數據集采樣而來的.圖2為生成對抗網絡結構圖.

圖1 域名自編碼器碼器結構圖Fig.1 Domain name autoencoder architecture

圖2 生成對抗網絡結構圖Fig.2 GAN architectures

生成器的網絡結構由一個全連接層與解碼器構成.首先使用隨機噪聲發生器產生在[-1,1]上均勻分布的噪聲,之后通過全連接層完成隨機噪聲的線性變換,使其維度與編碼器的輸出維度一致,最后通過ReLU函數激活后送入預先訓練好的解碼器,得到輸出域名的標記采樣.直觀上,全連接層學習了從均勻分布的噪聲空間到低維編碼特征空間映射,而該低維空間正是編碼器用來學習生成真實域名的特征空間.為了保證解碼器的輸出就是生成的域名數據,本文在訓練生成器時凍結解碼器的參數值,生成器的結構如圖3所示.

圖3 生成對抗網絡生成器結構圖Fig.3 Generator architecture of GAN

判別器的結構與生成器類似,由編碼器和一個全連接網絡構成.預先訓練好的編碼器作為判別網絡接收真實的Alexa域名或者生成器生成的假域名序列,之后將其輸出經過全連接層變換為低維數據,最后通過Sigmoid函數激活后輸出.在訓練判別器網絡時同樣把預訓練好的編碼器的權重參數凍結之后再進行訓練.判別器的結構如圖4所示.

圖4 生成對抗網絡判別器結構圖

2.3 生成對抗網絡模型的訓練

本文在采用標簽光滑、改進損失更新等策略來提升模型訓練的穩定性之外,特別考慮了借助統計中兩樣本檢驗的思想來指導模型的訓練進程.一些實驗中,常通過觀察訓練損失變化、肉眼判別域名相似度、繪制生成樣本的直方圖等手段來判別生成網絡的訓練質量,但這些操作很難給出明確的指標來判定GAN網絡的訓練質量.本文考慮在GAN模型訓練的中間過程中,通過引入MMD檢驗來判別當前生成網絡的輸出樣本是否與真實的Alexa域名樣本來自相同的分布,即進行雙樣本檢驗.Gretton等[15]給出了MMD在雙樣本檢驗中的應用,其基本假設是:對于兩個分布p和q,給定所有以分布生成的樣本空間為輸入的函數族F,若p、q對應生成的樣本x和y在F中每個函數f上像的均值都相等,則可認為這兩個分布相同.MMD具體定義如下:

其中:F通常取為希爾伯特空間中的單位球,實際操作時借助預先設定的核函數,如高斯核函數來表示.

實驗中,若MMD檢驗通過,則說明生成樣本的質量較好,從統計檢驗的角度已無法區分其與真實域名的差別,此時可停止訓練.

3 實驗與分析

3.1 實驗環境與數據集

本文實驗主要使用PyTorch深度學習框架,具體實驗環境配置如表1所列.

表1 實驗環境具體配置

本文實驗所使用的數據集由兩部分組成.第一部分從Alexa網站獲取的排名前100萬真實Web站點的域名,這部分數據作為模型的訓練數據.第二部分是來自360安全實驗室的現有DGA域名數據集,此部分用來對比實驗.在實驗之前,對使用的數據進行數據預處理,將所有域名的一級域名和二級域名(如.com、.net、.org等)剔除,只保留主機域名進行模型訓練.

3.2 實驗設計

3.2.1訓練自編碼器

在對GAN模型進行訓練之前,需要對自編碼器預訓練.該步驟的必要性在于,若不用Alexa域名對自編碼器進行預訓練,后續GAN網絡的訓練會高度不穩定,且很難收斂.具體的實驗步驟如下所述.

1) 抽取10萬條Alexa數據,隨機打亂后按照80/20的百分比劃分成訓練集和測試集;嘗試不同的數據批大小(64,128,256等),最后綜合考慮訓練效率與模型表現,選擇最優數據批大小為64.

2) 對自編碼器中設計的LSTM網絡的隱藏神經元個數嘗試不同的取值(5,10,50,100等)進行消融實驗對比,根據自編碼器訓練時間和后續用于GAN網絡的表現,選擇LSTM網絡隱藏神經元個數為10.

3) 用交叉熵[16]作為訓練的損失函數,即度量解碼器Softmax輸出的損失大小.

4) 初始學習率設置為0.000 1,后續隨著損失的變小,學習率也隨之減小,由此得到更好、更穩定的訓練結果.

5) 訓練中采用自適應矩估計(Adam)優化算法來更新自編碼器網絡的權重,同時設置權重衰減率為0.8,即借助L2正則防止訓練出現過擬合.

實驗發現,僅通過不到10個訓練周期,自編碼器就能近似無損地恢復輸入的Alexa域名.經過計算,測試集上的均方誤差(mean square error,MSE)約為3.234×10-5.這表明設計的自編碼器結構可以完整地捕獲復雜正常域名中的幾乎全部信息,并給出相應的低維向量表示.圖5為訓練過程中自編碼器損失值的變化過程, 其中橫軸表示訓練的周期,縱軸表示模型在測試集上的損失.可以明顯看出,隨著訓練次數增加,自編碼器損失值逐漸降低并保持穩定,網絡參數已非常穩定.

圖5 自編碼器訓練損失圖Fig.5 Autoencoder training loss

3.2.2GAN生成對抗模型的訓練與檢驗

在該階段,訓練好的自編碼器將被拆分為編碼器和解碼器,并分別嵌入到GAN網絡的判別網絡和生成網絡中.對于GAN的訓練過程詳述如下.

1) 選取兩部分數據作為訓練數據,一部分是劃分后的Alexa真實域名,另一部分是隨機抽取的、服從均勻分布的噪聲向量(其維數設置為8)通過生成網絡后產生的樣本.兩部分樣本各自采用5萬條,其中Alexa域名被用作正樣本,生成域名被用作負樣本,用于判別網絡的訓練;此外,再將5萬條生成域名當作正樣本,用于生成網絡的同步訓練.

2) 嘗試不同的批數據大小(64,128,256等)進行消融對比實驗,根據GAN網絡訓練效率和穩定性,選擇最優數據批大小為128,訓練周期設為50.

3) 判別器使用交叉熵作為損失函數.

4) 實驗中設置負樣本的標簽為0,同時對正樣本的標簽進行光滑處理,即從1隨機變換到0.8~1.0的小數,來提升訓練的穩定性.

5) 考慮到實驗中判別器比生成器的收斂速度要快很多,在反向傳播更新網絡參數時,本文選取較強的Adam優化器來訓練生成網絡,同時采用較為樸素的動量隨機梯度下降(stochastic gradient descent,SGD)優化器訓練判別器,學習率分別設置為0.000 001與0.000 000 1,同時使用權重衰減來減少訓練的過擬合.

6) 在訓練過程中一些損失較小的周期間隔,對訓練好的GAN網絡中的生成器所生成的序列進行MMD兩樣本檢驗,由此決定是否進行訓練早停(early stopping),完成GAN網絡的訓練.

對MMD兩樣本檢驗的過程做更進一步的詳細說明,注意到此處待檢驗的問題為

H0∶P真實域名=P生成域名

其中:P真實域名和P生成域名分別表示真實域名與GAN網絡生成域名的概率分布.實驗中,通過計算MMD檢驗統計量,并進行Bootstrap抽樣,可以估計出檢驗的p值(p-value),p值越小,表明拒絕原假設的把握越大.表2列出了在一些選定的訓練周期,基于相應的生成樣本計算出的p值.可以看出,在訓練初期,盡管生成的樣本看起來與Alexa域名接近,但對應檢驗的p值很小,顯然生成網絡輸出的域名與真實域名仍有差異;但在訓練后期,p值增大,若選取顯著性水平為0.05,已無法拒絕原假設,表明從統計檢驗的角度,已無法區分生成樣本和Alexa樣本是否來自不同的分布,這保證了生成樣本的質量.總結來說,GAN網絡的訓練經過85個周期的反向傳播更新,最終得到收斂.

表2 生成模型MMD兩樣本檢驗 p值

3.3 實驗結果分析

使用3.2實驗中訓練完成的GAN模型中的生成器生成20萬條數據并將其去重后作為實驗結果分析的驗證數據集,分別從生成序列展示、生成序列字符頻率分布、生成序列長度統計及其在DGA檢測器的表現進行對比分析.

1) 生成對抗網絡生成序列結果

表3為Alexa真實域名、真實的DGA域名與使用對抗生成網絡生成的字符序列數據.通過觀察發現,生成序列長度可變,字符序列表示已經與真實DGA域名較為近似,可以作為域名使用.

表3 Alexa域名、真實DGA域名與生成序列對比

2) 生成序列與真實域名長度分布圖

DGA域名檢測器通常會將序列的長度特征作為判斷該序列是否為Alexa域名或DGA域名的特征,所以如果生成序列在長度特征上與Alexa真實域名保持相似,則更有可能躲避DGA域名檢測器的檢測.圖6所示為Alexa真實域名與生成序列的長度分布圖,圖中橫坐標表示域名序列長度,縱坐標為不同長度的域名數量所占比率.由圖6可以看出,生成序列與真實域名在長度分布上非常接近,這一特性可以有效躲避一些以域名長度作為檢測特征的DGA域名檢測器,降低生成序列被發現的概率.

此處需要說明的是,通過對真實域名數據的統計特性進行分析,可以得出大部分正常域名的長度在20個字符以內,所以本文在訓練模型時選擇長度為20個字符的Alexa真實域名作為訓練數據,生成的序列長度也是在20個字符以內.

3) 生成序列與真實域名長度分布圖

同序列長度一樣,序列的字符頻率分布特征同樣是DGA域名檢測器判別真實域名與DGA域名的重要因素,如果生成序列的字符頻率分布特征能夠與Alexa真實域名盡可能相似,則有很大可能降低被發現率.圖7為Alexa真實域名與生成序列的字符頻率分布圖,圖中橫坐標表示域名序列中的各個字符,縱坐標表示各個字符在所有域名序列中所占比率.由圖7可以看出,生成序列與Alexa域名字符頻率分布十分相似,躲避DGA域名檢測器的概率較大.

圖6 生成序列長度分布圖Fig.6 Generated domain lengths distributions

圖7 字符頻率分布圖Fig.7 Unigram character distributions of Alexa top 1M and generated domains

4) DGA域名檢測器驗證結果

本文使用基于LSTM網絡構建的DGA域名檢測器對生成數據進行驗證測試,表4為測試結果,具體測試過程如下:

a) 使用真實Alexa域名數據和DGA數據對基于LSTM網絡的DGA域名檢測器進行訓練,之后使用真實的DGA數據作為驗證集,發現模型的準確率和召回率均在91%以上;

表4 DGA域名檢測器測試結果

b) 將本文生成的序列20萬條數據去重后按照1∶9的比例進行劃分,其中第一部分數據首先拿來作為驗證集,與真實域名數據混合后輸入a)中訓練好的DGA域名檢測器中進行驗證,發現模型在生成數據上的準確率和召回率均大幅下降,檢測性能明顯降低,說明生成序列在對抗DGA域名檢測器方面取得良好的效果,有很大的概率能夠躲避模型的檢測;

c) 將生成序列的第二部分數據,即生成數據的90%作為訓練集和測試集,對DGA域名檢測器進行訓練;

d) 將b)中準備好的驗證集在c)中訓練好的模型上進行驗證,可以看到使用生成數據訓練過后,模型發現生成序列的性能又有了提升,幾乎回到了之前的水平.

通過對生成序列在字符序列表示、序列長度、字符頻率分布的對比,以及使用生成序列在基于LSTM的DGA域名檢測器進行檢測和加強訓練,對生成序列進行多方位的對比和驗證,各項結果充分說明生成序列既具有真實域名的特性,又具備對抗現有DGA域名檢測器的特性,使用其不僅可以有效解決模型訓練數據不足的問題,又可以提升模型在對抗型惡意域名數據上的魯棒性,達到了本文的目的.

4 結語

惡意域名數據集采集是訓練DGA域名檢測器工作中非常重要的一環.本文嘗試將自編碼器和生成對抗網絡結合應用,生成惡意DGA域名序列,豐富惡意域名數據集,從而提升了檢測模型的性能,并通過實驗驗證了此方法的可行性.

下一步工作將結合現有的深度學習技術繼續改進域名特征提取算法,以期進一步提升生成域名的種類與質量,并評估生成模型的性能.

猜你喜歡
域名字符檢測器
尋找更強的字符映射管理器
字符代表幾
一種USB接口字符液晶控制器設計
Combosquatting域名搶注的測量研究
消失的殖民村莊和神秘字符
如何購買WordPress網站域名及綁定域名
車道微波車輛檢測器的應用
一種霧霾檢測器的研究與設計
騰訊八百萬美元收購域名
一體化火焰檢測器常見故障分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合