■ 甘肅省公安廳網(wǎng)絡(luò)安全保衛(wèi)總隊(duì) 張生順
編者按: 本文提出了一種基于堆疊自編碼器的惡意域名檢測(cè)模型,通過(guò)域名生成算法(DGA)生成C&C域名作為惡意域名集合,最后再將堆疊自編碼器和識(shí)別分類的功能結(jié)合起來(lái)進(jìn)行測(cè)試,檢測(cè)精度達(dá)到97.3%。
惡意域名網(wǎng)站給網(wǎng)絡(luò)用戶和企業(yè)帶來(lái)巨大的財(cái)產(chǎn)損失和安全威脅,而且由于速變域名和域名生成算法(DGA)技術(shù)的不斷發(fā)展,惡意域名更加難以被檢測(cè)識(shí)別。最初檢測(cè)方法是利用域名黑名單匹配域名字符串,并使用高匹配來(lái)阻止域名,但黑名單需要不斷更新,更新速度可能較慢,提高檢測(cè)精度已經(jīng)成為現(xiàn)下維護(hù)網(wǎng)絡(luò)安全的主要任務(wù)。
目前國(guó)內(nèi)外主要基于統(tǒng)計(jì)和機(jī)器學(xué)習(xí)兩個(gè)方面來(lái)對(duì)惡意域名進(jìn)行檢測(cè)。例如,2007年 Honeynet實(shí) 驗(yàn)組提出了速變域名的概念。Passerini等人提取了域名的TTL值等一系列特征值來(lái)分析檢測(cè)惡意域名。Notos系統(tǒng)使用字符串統(tǒng)計(jì)特征信息和域名歷史記錄來(lái)確定是否是惡意域名。基于機(jī)器學(xué)習(xí)的方法主要通過(guò)對(duì)惡意域名大數(shù)據(jù)的分析提取特征值,得出一套檢測(cè)規(guī)則用于分類。FluxBuster系統(tǒng)第一次將聚類算法應(yīng)用于速變域名的檢測(cè)。國(guó)內(nèi)有利用支持向量機(jī)和神經(jīng)網(wǎng)絡(luò)去檢測(cè)惡意域名,或通過(guò)隨機(jī)森林算法完成速變域名檢測(cè)模型的構(gòu)建。
圖1 含兩個(gè)隱藏層的堆疊自編碼器
自編碼器是一種無(wú)監(jiān)督學(xué)習(xí)算法,包括輸入層、隱藏層、輸出層。自編碼器是一種理想狀態(tài)下輸出和輸入相同的特殊神經(jīng)網(wǎng)絡(luò)算法,輸出向量是對(duì)輸入向量的復(fù)現(xiàn)。整個(gè)輸入層和隱藏層稱為編碼器,輸入向量映射到具有不同隱藏層維度的向量。整個(gè)隱藏層和輸出層稱為解碼器,隱藏層的向量映射到輸出向量。隱藏層向量可以復(fù)現(xiàn)輸入向量,稱之為特征表示向量。自編碼器的主要功能就是生成輸入數(shù)據(jù)的主要特征表示向量。
圖2 預(yù)訓(xùn)練含三個(gè)隱藏層的堆疊自編碼器圖
圖3 特征工程的一般流程
堆疊自編碼器是由兩個(gè)或兩個(gè)以上的單個(gè)自編碼器組合而成的,實(shí)則就是增加了隱藏層的數(shù)量,經(jīng)過(guò)貪婪算法預(yù)訓(xùn)練和多層非線性網(wǎng)絡(luò),最后從復(fù)雜高維的輸入數(shù)據(jù)中學(xué)習(xí)到不同維度和層次的抽象特征向量。堆疊自編碼器中的每一個(gè)隱藏層都是輸入特征值的另一種表示,并且降低了輸入數(shù)據(jù)的維數(shù),具有提取輸入特征值的強(qiáng)大學(xué)習(xí)能力。如圖1所示。
整個(gè)堆疊自編碼器的訓(xùn)練過(guò)程包括兩個(gè)步驟:第一步是預(yù)訓(xùn)練,通過(guò)無(wú)監(jiān)督方式去訓(xùn)練單個(gè)自編碼器,每當(dāng)上一層訓(xùn)練完時(shí),輸出被當(dāng)做下一層的輸入,再繼續(xù)訓(xùn)練,直到訓(xùn)練完整個(gè)隱含層數(shù)目,最后輸出。假設(shè)有三個(gè)隱藏層的堆疊自編碼器,x表示輸入要素向量,hi表示每個(gè)隱藏層的表示向量,x",h1’和h2’表示單個(gè)自編碼器重建的輸出向量,w和wT都是權(quán)重矩陣。預(yù)訓(xùn)練的具體步驟如下,如圖2所示。
(1)用無(wú)監(jiān)督訓(xùn)練的方式訓(xùn)練堆疊自編碼器的第一隱藏層;
(2)上一個(gè)隱藏層訓(xùn)練完成的輸出被視為下一個(gè)隱藏層的輸入,再以無(wú)監(jiān)督方式進(jìn)行訓(xùn)練;
(3)重復(fù)執(zhí)行步驟(2),直到所有的隱藏層都訓(xùn)練結(jié)束。
第二步是微調(diào),是在預(yù)訓(xùn)練結(jié)束后,再訓(xùn)練整個(gè)堆疊自編碼器,并且利用誤差反向傳播調(diào)整整個(gè)系統(tǒng)的參數(shù),使得權(quán)值和偏置值都達(dá)到最優(yōu)。
1.數(shù)據(jù)收集
本文提出了一種基于堆疊自編碼器的惡意域名檢測(cè)模型,使用的惡意域名數(shù)據(jù)集來(lái)源于域名生成算法(DGA)生成的C&C域名。通過(guò)使用一個(gè)私有的字符串,每隔一定時(shí)間生成一系列隨機(jī)字符串用作域名,再?gòu)闹须S機(jī)取出一些作為C&C域名。數(shù)據(jù)集中的合法域名來(lái)自Alexa網(wǎng)站,可認(rèn)為其中排名靠前的域名為合法域名。判斷是否為惡意域名是一個(gè)二分類問(wèn)題,數(shù)據(jù)集一共25萬(wàn)條數(shù)據(jù),其中正例是惡意域名,共使用DGA生成15萬(wàn)條。反例是正常的域名,共收集到近10萬(wàn)條。
2.特征工程
特征工程是機(jī)器學(xué)習(xí)過(guò)程中至關(guān)重要的一步,想要提高預(yù)測(cè)模型的精確度,不僅需要選擇優(yōu)化的算法,更要獲得好的訓(xùn)練數(shù)據(jù),盡可能從原始數(shù)據(jù)中挖掘更多有用的信息。從給定數(shù)據(jù)中挑選一組最具有代表性,有統(tǒng)計(jì)意義的特征子集,是特征工程的關(guān)鍵任務(wù)。特征工程的一般流程如圖3所示。
特征工程需要經(jīng)過(guò)循環(huán)往復(fù)的挑選檢驗(yàn),對(duì)選擇的特征用分類算法檢驗(yàn)并評(píng)價(jià)結(jié)果,假如結(jié)果達(dá)不到預(yù)想效果,應(yīng)舍棄并重新選擇特征。本次實(shí)驗(yàn)挑選了根域名,域名各個(gè)字符出現(xiàn)的隨機(jī)性,域名字符長(zhǎng)度,連續(xù)單字符、雙字符、三字符出現(xiàn)的頻率的平均排名,域名的連續(xù)分散性等17個(gè)特征值來(lái)描述域名信息。并歸一化特征值,獲得最終的數(shù)據(jù)集。
表1 分類指標(biāo)
表2 分類結(jié)果
圖4 ROC曲線圖
本文中基于堆疊自編碼器的惡意域名檢測(cè)模型是通過(guò)MATLAB R2016a平臺(tái)進(jìn)行實(shí)現(xiàn),將25萬(wàn)條域名數(shù)據(jù)集分為20萬(wàn)條域名訓(xùn)練集,剩下的5萬(wàn)條域名作為測(cè)試集。
1.評(píng)價(jià)指標(biāo)
判斷是否為惡意域名是一個(gè)二分類問(wèn)題,通常采用精確率、召回率、誤判率和準(zhǔn)確率四個(gè)指標(biāo)來(lái)衡量。本文中惡意域名是正例,用“1”表示,合法域名是反例,用“0”表示。分類結(jié)果如表1所示。
TP表示被檢測(cè)為惡意域名的惡意域名數(shù)量,F(xiàn)P表示被檢測(cè)為惡意域名的合法域名數(shù)量,TN表示被檢測(cè)為合法域名的合法域名數(shù)量,F(xiàn)N表示被檢測(cè)為合法域名的惡意域名數(shù)量,N=TP+FP+FN+TN表示測(cè)試集總的域名個(gè)數(shù)。
(1)精確率 :TP/(TP+FP),表示被檢測(cè)為惡意域名的惡意域名數(shù)占總被檢測(cè)為惡意域名數(shù)的比率。
(2)召回率 :TP/(TP+FN),表示惡意域名被檢測(cè)為惡意域名的個(gè)數(shù)占實(shí)際總惡意域名個(gè)數(shù)的比率。
(3)誤判率 :FP/(FP+TN),表示被檢測(cè)為惡意域名的合法域名數(shù)與合法域名總數(shù)的比率。
(4)準(zhǔn)確率:(TP+TN)/N,表示檢測(cè)到的正確域名數(shù)量與測(cè)試集域名總數(shù)的比率。
在計(jì)算實(shí)驗(yàn)結(jié)果的數(shù)據(jù)之后,獲得如表2所示的4個(gè)評(píng)價(jià)指標(biāo)的值。
2.ROC與AUC
ROC曲線是橫坐標(biāo)上的假陽(yáng)性率和縱坐標(biāo)上的召回率。根據(jù)定義,誤判率越小,召回率越大,模型的分類效果越好。故ROC曲線越靠近坐標(biāo)系左上方,模型的分類效果越好。本次實(shí)驗(yàn)的ROC曲線如圖4所示。
AUC是指ROC曲線以下的面積。AUC值介于0到1之間,當(dāng)模型的AUC值越大,分類效果更好,模型更合適。實(shí)驗(yàn)的AUC值為0.9992,接近于 1,表示本文提出的基于堆疊自編碼器的惡意域名檢測(cè)模型分類效果較好,檢測(cè)精確度較高。
本文基于堆疊自編碼器的惡意域名檢測(cè)模型,挖掘了域名信息的各項(xiàng)特征,利用堆疊自編碼器重構(gòu)特征值,最后用分類器檢測(cè)。實(shí)驗(yàn)結(jié)果表明,該模型能夠有效識(shí)別出惡意域名,檢測(cè)精度高達(dá)97.3%,有較好的分類效果,提高了惡意域名的檢測(cè)效率。