席一帆 汪 洋 張 鈺
(武漢郵電科學(xué)研究院 武漢 430074) (南京烽火星空通信發(fā)展有限公司 南京 210019)
計算機網(wǎng)絡(luò)面臨著嚴重的安全威脅,其中很大一部分來自于僵尸網(wǎng)絡(luò).僵尸網(wǎng)絡(luò)是一組被稱為機器人(bot)的受攻擊計算機[1],網(wǎng)絡(luò)犯罪分子可以通過命令和控制(C&C)服務(wù)器[2]來對僵尸網(wǎng)絡(luò)進行遠程控制.通過命令和控制服務(wù)器操作這些機器人來執(zhí)行惡意的網(wǎng)絡(luò)活動,例如進行大規(guī)模網(wǎng)絡(luò)釣魚,將病毒軟件傳播到其他終端,繼而竊取所需要的機密信息[3-4].
在早期的僵尸網(wǎng)絡(luò)中,網(wǎng)絡(luò)犯罪分子通常會把命令和控制服務(wù)器的域名或者IP地址硬編碼到惡意程序中[5],因此安全人員能夠通過逆向惡意程序得到命令和控制服務(wù)器的域名或者IP,從而預(yù)先建立黑名單來檢測僵尸網(wǎng)絡(luò)[4,6].但隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,許多僵尸網(wǎng)絡(luò)都通過域名生成算法(domain generation algorithm, DGA)動態(tài)生成域名來躲避檢測[7-9].
DGA是一種基于Fast-flux技術(shù)的機制,F(xiàn)ast-flux技術(shù)是指不斷改變域名和IP地址映射關(guān)系的一種技術(shù)[8],這也意味著在短時間內(nèi)查詢使用Fast-flux技術(shù)部署的域名會得到不同的結(jié)果.僵尸網(wǎng)絡(luò)利用DGA機制能夠頻繁更改命令和控制服務(wù)器的域名[10],使得黑名單的更新速度很難與惡意域名的產(chǎn)生速度同步,以此來隱藏從機器人到命令和控制服務(wù)器的回調(diào)通信.具體來說,機器人使用DGA動態(tài)生成域名,并嘗試為每個域名進行域名解析,最終返回正確響應(yīng)的域名將被視為命令和控制服務(wù)器.
部分早期相關(guān)研究關(guān)注的是檢測DGA機器人與命令和控制服務(wù)器通信過程中,良性域名和惡意域名字符串的可識別差異[11-12].例如,Truong等人[13]提出了一種使用帶有監(jiān)督學(xué)習(xí)的雙元模型學(xué)習(xí)和預(yù)測域名字符模式的方法.Anderson等人[14]則在此基礎(chǔ)上進行了改進,引入帶有長短期記憶(LSTM)網(wǎng)絡(luò)的字符級建模.該方法基于一項來自觀察經(jīng)驗的假設(shè):良性域名的字符串通常由能夠反映注冊者意圖的單詞或字符組成[15],例如機構(gòu)名、產(chǎn)品名或提供的服務(wù)內(nèi)容等;相應(yīng)地,為了避免與已注冊域名產(chǎn)生沖突,惡意域名通常會選用大量無關(guān)字符進行隨機組合[16].為了躲避檢測,一些僵尸網(wǎng)絡(luò)家族開始采用字典型惡意域名進行通信[17],字典型惡意域名即基于字典的DGA算法所生成的惡意域名.該類DGA算法從字典中選取單詞來動態(tài)生成域名,這種方式產(chǎn)生的域名與人工注冊的正常域名看起來非常相似,使得傳統(tǒng)的基于字符級特征進行建模的檢測方法逐漸失效.目前,學(xué)術(shù)界針對字典型惡意域名的檢測方法仍集中于深度學(xué)習(xí)網(wǎng)絡(luò),例如Highnam等人[18]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)和長短期記憶(LSTM)網(wǎng)絡(luò)并行使用的字典型DGA檢測方法,該類方法不能充分發(fā)掘字典型惡意域名的詞間關(guān)系.此外,Chowdhury等人[19]提出將圖特征應(yīng)用于基于行為的DGA檢測的思想,圖特征能有效表征良性域名與惡意域名在單詞級別上的差異.
為了提高對字典型DGA生成的惡意域名的檢測水平,本文引入有權(quán)無向圖描述惡意域名的單詞構(gòu)成,通過度中心性指標量化單詞級別特征,提出了一種基于詞間關(guān)系的DGA惡意域名檢測方法.
在當前防范僵尸網(wǎng)絡(luò)的研究中,研究人員之所以將注意力更多地放在針對其DGA域名的檢測上,是因為域名解析是一種未加密的交互,并且總是發(fā)生在DGA機器人的回調(diào)之前.表1示出部分基于字典的DGA生成的域名實例:
表1 部分基于字典的DGA家族
由于DGA合成的域名與人工創(chuàng)建的域名在單詞組合頻率上存在差異[20],我們提出了一種識別惡意域名的方法,通過分析每個域名中組成字符串單詞之間的關(guān)系來識別惡意域名.該方法基于2點主要思想:1)利用圖論中的通用概念來描述構(gòu)成域名單詞的詞間關(guān)系;2)使用度中心性來量化域名中每個單詞的特征,該指標表征了良性和惡意域名之間的區(qū)別.最后,我們將基于該指標構(gòu)成的特征向量應(yīng)用于機器學(xué)習(xí)算法,從而得到檢測DGA惡意域名的模型.
圖1展示了該檢測方法的流程,大致分為3步:1)對輸入的域名進行分詞;2)利用得到的詞組構(gòu)建詞圖并處理為特征向量;3)訓(xùn)練并測試模型.其中,真實域名是指用來驗證模型的域名集合,良性域名是指構(gòu)成基礎(chǔ)詞圖的域名集合,訓(xùn)練域名是指由惡意域名構(gòu)成的域名集合.本文使用Wordninja庫[21]作為域名分詞工具,在下面的3個小節(jié)中,將對域名數(shù)據(jù)的表現(xiàn)形式、詞圖的構(gòu)建方式與特征向量獲取方法作詳細介紹.
我們用x∈Xi(i∈0,1,…,n)表示由相同類型的域名組成的數(shù)據(jù)集,其中數(shù)據(jù)集X0包含的都是良性域名,其余n個數(shù)據(jù)集X1,…,Xn包含所屬于n個不同DGA家族的惡意域名.并且,數(shù)據(jù)集中的域名將被去除域名前綴與頂級域名后綴,僅保留域名中有意義的部分.例如,域名www.sicris.cn將被轉(zhuǎn)化為sicris,再對其進行分詞處理.
該步驟使用單詞圖表示訓(xùn)練數(shù)據(jù)集Xi中與域字符串對應(yīng)的詞組Wi之間的關(guān)系.詞圖Gi是一個帶有頂點集和邊集的有權(quán)無向圖.每個頂點分別對應(yīng)集合Wi中的每個單詞;每條邊的權(quán)值表示集合Wi中單詞兩兩之間共現(xiàn)的頻率,共現(xiàn)是指單詞屬于同一個詞組.注意,具有相似字符串的單詞共享同一個頂點,相似在這里是指忽略大小寫與單復(fù)數(shù).我們使用度中心性來量化每一個單詞在詞圖中的關(guān)系.
圖2示出一個使用由3個詞組組成的集合所構(gòu)成的詞圖示例,該集合為[{our,approach,amazing}{our,experiments,well}{this,experiment,well}].由于experiment與experiments這2個單詞是相似的,因此它們共享同一個頂點.此外,我們以Gi:j來表示詞圖Gi結(jié)合詞圖Gj所構(gòu)建的一個新詞圖,其中Gi與Gj是由詞組Wi與詞組Wj所對應(yīng)創(chuàng)建的詞圖.
動態(tài)生成的惡意域名與人為生成的良性域名在單詞共同出現(xiàn)的頻率上表現(xiàn)出明顯的差異.能最有效地闡明這些區(qū)別的是那些在詞圖中扮演中心角色的單詞.為此,本文使用下列公式來描述任意一詞組ω的詞間關(guān)系,ω包括單詞ω1,…,ωj,…,ωn:
其中,|ωj|表示單詞ωj的長度;M0:i(ωj)和M0(ωj)是推導(dǎo)單詞ωj在詞圖G0和詞圖G0:i的度中心性函數(shù).因此,該值表示詞組ω在由良性數(shù)據(jù)集X0所構(gòu)建的詞圖G0中時與在由惡意數(shù)據(jù)集Xi結(jié)合良性數(shù)據(jù)集X0所構(gòu)建的詞圖G0:i中時詞組度中心性的變化.
該步驟首先從訓(xùn)練數(shù)據(jù)集中的域中計算特征向量.根據(jù)1.2節(jié)定義的詞圖中的重要值,由詞組ω組成的域名特征向量由下式給出:
ω=(V1(ω),…,Vi(ω),…Vn(ω)).
然后,我們將這些特征向量應(yīng)用于機器學(xué)習(xí)算法以構(gòu)建訓(xùn)練模型.由于支持向量機(SVM)優(yōu)異的識別性能,我們采用支持向量機作為機器學(xué)習(xí)算法.這一步的輸出是模型對未知輸入域名進行分割,計算特征向量,并應(yīng)用訓(xùn)練模型得到關(guān)于未知輸入域名良性與惡意性質(zhì)的整體識別結(jié)果.
本節(jié)給出了用于評估所提方法有效性的實驗.評估的重心主要聚焦于2個方面:1)模型對良性域名和字典型DGA惡意域名二分類的Accuracy值、Recall值與F1值;2)模型針對4個選定的基于字典的DGA家族各自的F1值.實驗設(shè)計與實驗結(jié)果在2.1節(jié)和2.2節(jié)中詳細介紹.
表2示出實驗中使用的良性域名和惡意域名的數(shù)據(jù)集.7個惡意域名數(shù)據(jù)集來自FKIE主導(dǎo)的DGArchive項目[22],從中挑選了4個基于字典的DGA家族以及3個非基于字典的DGA家族.另外基于大訪問量網(wǎng)站不可能是DGA惡意域名的先驗假設(shè),良性域名數(shù)據(jù)集選用了在Alexa上排名前30萬的站點域名.實驗中,我們將選擇Alexa作為良性域名樣本,Gozi,Nymaim2,Pizd,Suppobox這4個基于字典的DGA家族作為惡意域名樣本,后3個惡意域名數(shù)據(jù)集為非基于字典型DGA家族,目的是增加詞圖的大小與多樣性,以及提高特征向量維度.在選中的5個數(shù)據(jù)集中,我們隨機抽取20%的數(shù)據(jù)作為測試數(shù)據(jù)集,其余數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,并對良性域名和惡意域名進行5倍交叉驗證.
表2 數(shù)據(jù)集中良性域名與惡意域名數(shù)量
為了證明本文方法的有效性,通過字符統(tǒng)計特征的檢測方法與基于2-gram模型的檢測方法進行對照.在對照實驗中,我們使用了與本文方法相同的數(shù)據(jù)集以控制實驗環(huán)境.
我們使用3個常用的指標來描述模型對良性域名和惡意域名的識別能力,分別是Accuracy,Recall與F1值. Accuracy是正確預(yù)測的樣本數(shù)量與需要預(yù)測的樣本總數(shù)的比值,Recall是正確預(yù)測的惡意域名數(shù)量與實際惡意域總數(shù)的比值,F(xiàn)1值是Precision與Recall的調(diào)和平均值,Precision指模型預(yù)測為正的樣本中實際也為正的樣本占被預(yù)測為正的樣本的比例.
1) 針對4個DGA家族二分類檢測能力
實驗首先使用4個惡意域名數(shù)據(jù)集將本文方法與另外2組對照方法進行二分類實驗,實驗結(jié)果如表3所示:
表3 模型二分類檢測4個DGA家族實驗結(jié)果
實驗結(jié)果表明:基于詞間關(guān)系的檢測模型在各個指標上都優(yōu)于對照組模型.在F1值值上,詞間關(guān)系模型比字符統(tǒng)計特征模型高出3.45%,比2-gram模型高出2.84%.
2) 針對每個家族的F1值
實驗使用1)中訓(xùn)練得到的模型,分別對4個DGA家族進行檢測,統(tǒng)計檢測結(jié)果的F1值如表4所示:
表4 每個家族實驗結(jié)果的F1值
實驗結(jié)果表明:詞間關(guān)系模型在大部分數(shù)據(jù)集上都表現(xiàn)出優(yōu)于對照組模型的性能指標,在針對Suppobox家族的檢測上,詞間關(guān)系模型的F1值達到98.25%,相較于字符統(tǒng)計特征模型提高了8.06%,相較于2-gram模型提高了5.07%.但在針對Gozi家族的檢測上,基于詞間關(guān)系的檢測方法F1值卻僅為91.64%,低于字符統(tǒng)計特征模型2.91%,低于2-gram模型1.73%.經(jīng)過分析,原因是Gozi家族的域名生成字典來源于從指定網(wǎng)頁實時摘取的單詞,該方法會出現(xiàn)從網(wǎng)頁摘取的單詞并非完整的情況,進而使得生成的DGA域名不具有自然語言的意義,再通過詞間關(guān)系模型對其進行檢測將得到較差的性能指標.
上述實驗表明:在檢測性能上基于詞間關(guān)系的檢測方法在各項指標都明顯優(yōu)于對照組方法.在進行4個DGA家族的二分類實驗時,基于詞間關(guān)系的檢測方法F1值為96.48%,相較于基于字符統(tǒng)計特征的方法提升了3.45%,相較于基于2-gram的檢測方法提升了2.84%.可以看出,本文方法在面對典型的字典型DGA域名時優(yōu)于傳統(tǒng)檢測方法,但對于字符熵較高的DGA域名的檢測性能相對傳統(tǒng)檢測方法較差.
本文提出一種基于惡意域名詞間關(guān)系的字典型DGA檢測方法,該方法首先利用分詞工具將域名分割成為表征域名組成的單詞詞組,進而利用有權(quán)無向圖構(gòu)建該詞組所對應(yīng)的詞圖,并通過詞組中所包含單詞在詞圖中度中心性的變化來描述良性域名與惡意域名的差異.實驗結(jié)果表明,基于惡意域名詞間關(guān)系的檢測方法在針對字典型DGA域名時檢測效果優(yōu)于其他模型,但在針對字符串熵值較高的DGA域名的檢測中還有一定的優(yōu)化空間.在接下來的研究中,將探索一種更為準確的表征單詞在詞圖中關(guān)系的量化方式,并嘗試引入深度學(xué)習(xí)技術(shù),以進一步提高模型的檢測性能.