林 英 李元培 潘梓文
(云南大學軟件學院 云南 昆明 650500)
隨著計算機與網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,人們的生活越發(fā)依賴電子設(shè)備帶來的便利,但與之伴隨的計算機安全問題也越發(fā)尖銳。根據(jù)2018年Windows平臺漏洞數(shù)據(jù)統(tǒng)計,Windows主機系統(tǒng)漏洞提交量總體呈逐年上升趨勢,并且2018年相較之前三年同比上升最高超過40%[1],針對主機漏洞發(fā)起的入侵層出不窮。如何對入侵進行有效檢測,成為了網(wǎng)絡(luò)安全研究的重點之一。一般來說,根據(jù)檢測數(shù)據(jù)的來源,入侵檢測可以分為基于網(wǎng)絡(luò)的入侵檢測及基于主機的入侵檢測。基于網(wǎng)絡(luò)的入侵檢測通過使用原始的IP數(shù)據(jù)包作為數(shù)據(jù)源,檢測是否存在入侵。基于主機的入侵檢測則一般通過檢測系統(tǒng)、事件、系統(tǒng)日志等方式來發(fā)現(xiàn)入侵。
隨著機器學習技術(shù)在各個研究領(lǐng)域的應(yīng)用,基于機器學習的入侵檢測模型也逐漸成為目前的研究趨勢[2-4]。然而,諸如貝葉斯算法、決策樹等傳統(tǒng)的機器學習模型與深度學習模型相比,在特征不明顯或內(nèi)部約束較復雜的數(shù)據(jù)處理及特征關(guān)聯(lián)等方面的表現(xiàn)有所欠缺[5],因此基于深度學習模型來進行入侵檢測成為了研究熱點之一。如Javaid等[6]提出一種基于深度學習的自學習技術(shù),從未標記的數(shù)據(jù)中學習良好的特征表示,再進行入侵分類。Yin等[7]使用遞歸神經(jīng)網(wǎng)絡(luò)進行入侵檢測,提高檢測的準確性。Qu等[8]提出基于深度置信網(wǎng)絡(luò)的入侵檢測模型。Shone等[9]提出基于無監(jiān)督特征學習的非對稱深度自動編碼器(Nonsymmetric Deep AutoEncoder,NDAE)。可以看出,目前基于深度學習的入侵檢測系統(tǒng)主要側(cè)重于高維數(shù)據(jù)特征提取的自動化、高維數(shù)據(jù)特征降維,以及提高樣本識別能力等方面,而且大部分研究均使用NSL-KDD[10-11]作為其訓練及測試的數(shù)據(jù)集。
雖然基于深度學習的入侵檢測能夠有效檢測惡意軟件、惡意行為、惡意代碼等,但仍然存在如下局限[12]:1) 訓練過程中攻擊樣本遠遠少于正常樣本,導致檢測模型失衡,無法正確檢測出惡意攻擊;2) 惡意攻擊技術(shù)的發(fā)展,使得攻擊者的攻擊手段也在不斷改變, 通過已知的入侵知識庫進行學習將導致模型無法檢測未知的攻擊數(shù)據(jù)。因此研究者們引入生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks, GAN)[13]生成可使用的攻擊數(shù)據(jù), 增強訓練數(shù)據(jù)集, 達到提升檢測模型性能的目的。
2014年,Goodfellow根據(jù)博弈的思想提出一種可在一定程度上自我演化的模型GAN,該模型目前在圖像分類與樣本生成等方面得到了成功且廣泛的應(yīng)用[14-15],主要用于解決訓練不穩(wěn)定、模式崩潰、樣本生成等問題[16]。已有研究通過GAN網(wǎng)絡(luò)對惡意代碼庫進行樣本擴展,解決入侵手段進化導致攻擊樣本老舊的問題[17]。一些基于GAN的檢測模型也相繼提出,如t-GAN[18]用于檢測惡意代碼,t-DCGAN[19]用以提升t-GAN模型訓練過程的穩(wěn)定性,Bot-GAN[20]用于檢測僵尸網(wǎng)絡(luò),以及CF-GAN[21]用于檢測在線支付欺詐。
本文從受保護的設(shè)備本身的角度,提出基于主機特征的入侵風險識別框架,旨在建模主機設(shè)備特征以及是否曾遭受入侵,并在此基礎(chǔ)上基于GAN設(shè)計并實現(xiàn)了風險識別網(wǎng)絡(luò)TR-GAN (Threaten Recognition-GAN)。該模型可以對主機當前遭受入侵的風險程度進行評估,且評估的結(jié)果可以在一定程度上作為系統(tǒng)安全管理員部署安全策略的參考。
GAN模型主要分為生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)兩個模塊,生成網(wǎng)絡(luò)根據(jù)訓練集的學習并加入隨機噪聲生成新的樣本,判別網(wǎng)絡(luò)對輸入的樣本判斷其標簽。訓練的目的是為了最小化兩個子網(wǎng)絡(luò)的損失函數(shù),其模型目標函數(shù)如下:
Ez~Px(z)[log(1-D(G(z)))]
(1)
式中:x~Pdata(x)表示真實數(shù)據(jù)x服從分布Pdata(x);z~Pz(z)表示生成器的輸入z服從某一分布Pz(z);生成器通過學習x的分布,使生成器的輸出G(z)服從Pdata(x)來達到誤導判別器的目的;D(x)表示判別器對真實數(shù)據(jù)來源的估計;D(G(z))表示判別器對生成器所生成的數(shù)據(jù)來源的估計。
AC-GAN[22]、LS-GAN[23]是GAN的變形,在AC-GAN中,每個被生成器產(chǎn)生的樣本都附帶相應(yīng)的類別標簽,判別器不僅給出了當前樣本來源的概率分布,還對樣本所屬的標簽進行了估計。其中:Ls代表輸入數(shù)據(jù)的真實來源,即對被判定為正確類別的樣本集合對其是否來自真樣本集合進行估計;Lc代表輸入數(shù)據(jù)的正確標簽。生成器及判別器都被訓練為最大化目標函數(shù)Ls+Lc。AC-GAN與GAN相比訓練效果較好,但仍采用基于最大似然估計的方法,默認總體上的各個樣本獨立且同分布,所以當樣本屬性間有較強內(nèi)在關(guān)聯(lián)性或異常值與樣本數(shù)據(jù)存在系統(tǒng)相關(guān)性時,參數(shù)更新過程中可能出現(xiàn)梯度消失的問題。
Ls=E[logP(S=real|Xreal)]+E(logP(S=fake|Xfake)]
(2)
Lc=E[logP(C=c|Xreal)]+E[logP(C=c|Xfake)]
(3)
式中:S=real表示判別器判定該樣本來自真實數(shù)據(jù);S=fake表示判別器判定該樣本是由生成器生成的數(shù)據(jù);C表示判別器對該樣本標簽的預測值;c表示該樣本標簽的實際值;Xreal表示該樣本來自真實數(shù)據(jù);Xfake表示該樣本是由生成器生成的樣本。LS-GAN中的目標函數(shù)如式(4)所示,以最小二乘法計算預測樣本標簽與實際標簽間的平均歐氏距離。
(4)
LS-GAN中的目標函數(shù)可在一定程度上規(guī)避梯度消失的情況,但其生成器需要較多輪次的訓練才能達到穩(wěn)定。本文基于AC-GAN與LS-GAN,設(shè)計并實現(xiàn)了名為風險識別網(wǎng)絡(luò)的變體架構(gòu)TR-GAN (Threaten Recognition-GAN),在滿足識別率和魯棒性要求的同時,其訓練效率更高。
TR-GAN可以輔助系統(tǒng)管理員對主機遭受攻擊的風險進行識別,從而便于其采取相應(yīng)的預防措施以及設(shè)置合適的防御等級等安全策略。其主要由以下2個模塊構(gòu)成:
1) 基于主機特征的風險識別模塊。識別模塊實現(xiàn)對主機遭受攻擊風險的預測。
2) 風險樣本生成模塊。風險樣本是指使用真實樣本訓練的生成網(wǎng)絡(luò)所生成的,并可以被風險識別模塊判定為被攻擊風險較大的樣本。本文使用9×9的高斯噪聲作為噪聲輸入,利用生成器構(gòu)建新的主機特征數(shù)據(jù)。
由于在實際應(yīng)用中,存在模型因?qū)δ承傩匀≈得舾谢虿糠謽颖緮?shù)據(jù)不服從獨立同分布導致目標函數(shù)抖動而出現(xiàn)梯度偏移或梯度消失的問題。本文基于AC-GAN和LS-GAN中的模型優(yōu)化方法,設(shè)計了如式(5)所示的目標函數(shù)L,用于降低在數(shù)據(jù)的非凸區(qū)間上因數(shù)據(jù)不一致或噪聲在進行梯度下降優(yōu)化過程中由于單一判據(jù)導致?lián)p失函數(shù)偏離實際損失,從而計算出的梯度與實際梯度不符。
L=Ls+L2
(5)
式(5)將Ls、L2求和以作為共同判據(jù),式(6)為式(2)中的集合,表示被正確識別的樣本集合,其中:X為標簽,0表示未受攻擊,1表示曾受攻擊;Threaten表示模型將該主機估計為易受攻擊;Safe表示模型將該主機估計為不易受攻擊。
S=(Threaten|X=1)∪ (Safe|X=0)
(6)
本節(jié)根據(jù)以上架構(gòu)將已經(jīng)預處理好的數(shù)據(jù)樣本作為模型輸入,對訓練集中的數(shù)據(jù)進行風險識別。使用訓練后的TR-GAN的判別器部分作為最終的風險評估模型,生成器生成的樣本作為系統(tǒng)安全管理員設(shè)置安全策略的參考。
主機模型需要采集能夠影響主機安全性的參數(shù),實現(xiàn)對目標主機潛在信息的發(fā)掘和安全性的判斷,可以針對如下設(shè)備參數(shù)進行參數(shù)采集和規(guī)則的建立,如表1所示。

表1 設(shè)備參數(shù)選擇及取值規(guī)則
本文從設(shè)備硬件、操作系統(tǒng)兩方面選取對主機安全具有決定性的關(guān)鍵特征[24-25]用于建立主機特征。根據(jù)上述規(guī)則,主機安全特征可以由以下向量描述:
feature=[Census_ChassisTypeNameOSEditionCensus_OSVersionCensus_PrimaryDiskTypeEngineVersionSmartScreenIsFwOsBuildCensus_IsTouchEnabled…]
(7)
本文使用的數(shù)據(jù)集來源于數(shù)據(jù)挖掘網(wǎng)站Kaggle。訓練集共包含約4.46×107條遭受攻擊的主機樣本和4.45×107條未遭受攻擊的主機樣本[26]。
本文基于以下規(guī)則對數(shù)據(jù)進行預處理:
1) 刪去缺失比例超過80%或單一值比例超過85%的屬性。
2) 取值種類超過10 000個的非連續(xù)型數(shù)據(jù),按K-means規(guī)則進行離散化,使其取值種類不多于200個。
3) 數(shù)據(jù)缺失較少的屬性隨機填充已有值,且滿足填充前后數(shù)據(jù)分布不變。
4) 對非連續(xù)型數(shù)據(jù)按獨熱編碼(One-Hot Encoding)方式重編碼。
5) 因某些屬性的實際最值未必會出現(xiàn)在訓練集中,故對連續(xù)型數(shù)據(jù)按式(8)規(guī)則進行規(guī)范化。
(8)

部分轉(zhuǎn)換后的屬性前后對比如表2所示,僅列出處理后的十個屬性對比。

表2 預處理前后屬性類型對比(部分)
將每條數(shù)據(jù)記錄按算法1中規(guī)則映射為位圖,以滿足模型的輸入格式要求。
算法1數(shù)據(jù)-位圖轉(zhuǎn)化算法
輸入:經(jīng)預處理后的數(shù)據(jù)集SET1。
輸出:位圖數(shù)組集合BMPSET。
1) PadArray(SET1)
//將每條實例數(shù)組填充至N×N

3) WHILE(S>0) DO
4) Feature[S-1]=(Feature[S-1]/MAXS-1-MINS-1)
//對屬性取值歸一化
5)S=S-1
6) END WHILE
7) WHILE(i 8) FOR EACHm 9) BMP[i][m]=Feature[i*N+m] //將屬性取值填入位圖數(shù)組 10)i=i+1 11) END WHILE 12) RETURN BMPSET 本文隨機選用訓練集的6×107條實際主機樣本作為訓練數(shù)據(jù),1.5×107條實際主機樣本作為測試用數(shù)據(jù)。在每輪迭代之后對當前訓練結(jié)果進行測試,并把該判別器的表現(xiàn)和相同參數(shù)下的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network)、LS-GAN、AC-GAN得到的結(jié)果進行對比,如圖1-圖3所示。 圖1 TR-GAN與AC-GAN模型損失函數(shù)對比 圖2 TR-GAN與LS-GAN模型損失函數(shù)對比 圖3 TR-GAN與CNN、LS-GAN、AC-GAN的逐批次準確率對比 TR-GAN與AC-GAN模型損失函數(shù)曲線如圖1所示。對模型中的生成器而言,TR-GAN中生成器的損失函數(shù)的絕對值較高但收斂更穩(wěn)定,受噪聲影響導致的梯度更新時的方向偏移更小。 TR-GAN與LS-GAN模型損失函數(shù)曲線如圖2所示。對模型中的生成器而言,TR-GAN中生成器和判別器損失函數(shù)二者的差值相比于LS-GAN中更小,模型損失函數(shù)收斂更快。且在3 000輪以內(nèi),TR-GAN的生成器表現(xiàn)更好。 使用TR-GAN中判別器與相同參數(shù)下卷積的神經(jīng)網(wǎng)絡(luò)、AC-GAN的判別器、LS-GAN的判別器得到的測試結(jié)果進行對比。從圖3可以看出,卷積神經(jīng)網(wǎng)絡(luò)識別準確率較低,僅約70%,與LS-GAN、AC-GAN相比,TR-GAN判別器的識別準確率更為穩(wěn)定。這是由于TR-GAN的目標函數(shù)中穩(wěn)定了單一損失函數(shù)在其不適宜的數(shù)據(jù)分布函數(shù)上的失效程度,穩(wěn)定判別器在對模型參數(shù)進行梯度更新時選擇的方向?qū)?shù)。 故當有較好計算條件且需要較好模型魯棒性時或當計算資源有限并且需要較高的識別準確率時,更適用TR-GAN。 本文方法與其他相關(guān)文獻方法的綜合比較結(jié)果如表3所示。 表3 本文方法與其他相關(guān)方法綜合比較 1) 在模型的驗證方面,文獻[27]和文獻[31]均只提出了模型概念,并未使用實際數(shù)據(jù)驗證,而本文則依據(jù)實際數(shù)據(jù)對模型進行驗證。 2) 在數(shù)據(jù)規(guī)模上,文獻[28]和文獻[29]使用的數(shù)據(jù)集數(shù)據(jù)規(guī)模較小,本文使用了較大規(guī)模的數(shù)據(jù),有較好的魯棒性和泛化能力。 3) 在模型準確率方面,本文模型的識別效果相比于文獻[30]更準確。 為驗證TR-GAN生成器的表現(xiàn),首先對比其生成器與AC-GAN、DC-GAN、LS-GAN在相同訓練輪次下生成手寫數(shù)字的效果,如圖4和圖5所示。 圖4 訓練輪次為600輪時手寫數(shù)字生成情況 圖5 訓練輪次為1 000輪時手寫數(shù)字的生成情況 各模型生成器手寫數(shù)字生成情況如表4所示。 表4 規(guī)定訓練輪次下各模型生成器生成手寫數(shù)字效果 圖4直觀顯示出TR-GAN通過較少的輪次訓練,生成器就可以生成較為清楚的手寫數(shù)字,相比其他三種神經(jīng)網(wǎng)絡(luò),模型目標函數(shù)收斂更快。圖5中在1 000輪次訓練下,AC-GAN模型的生成器的手寫數(shù)字生成效果才與TR-GAN相似,而LS-GAN和DC-GAN生成的手寫數(shù)字仍處于較為模糊的狀態(tài)。 通過以上對比得出,TR-GAN的生成器具有更高的樣本生成效率,因此選用TR-GAN進行訓練并生成主機樣本相對于其他生成網(wǎng)絡(luò)模型具有更高的效率。 同時,為驗證生成樣本作為系統(tǒng)安全管理員部署安全措施參考依據(jù)的可行性,本文從測試數(shù)據(jù)及訓練后的生成樣本中隨機抽取一條標簽為1的樣本作比照分析。對每個樣本屬性填充并歸一化后映射為灰度圖,如圖6所示。 圖6 生成樣本參考性比較 圖6中,當?shù)啍?shù)達到一定次數(shù)時,由生成器生成的樣本表現(xiàn)出了與原始樣本相同的特征。生成器損失函數(shù)收斂后所產(chǎn)生的生成樣本與原始樣本的特征具有較大的相似性,并且在判別器中有相同的判別標簽。再將該生成樣本按照文中設(shè)置的規(guī)則重新轉(zhuǎn)化回數(shù)據(jù)記錄即可作為系統(tǒng)安全管理員部署安全規(guī)則的參考。 本文設(shè)計并實現(xiàn)TR-GAN系統(tǒng)用以輔助系統(tǒng)管理員對主機遭受攻擊的風險進行識別,從而便于其采取相應(yīng)的預防措施以及設(shè)置合適的防御等級等安全策略。并且通過主機特征模型的建立為入侵風險監(jiān)測提供了新的思路。值得注意的是,本文模型可以識別出主機是否存在受攻擊的風險,但對于具體受攻擊的時間方面并沒有相應(yīng)的算法支持,下一步的研究可以圍繞如何對主機受攻擊的時間進行預測展開。2.4 模型判別器有效性測試




2.5 模型生成器參考性評估




3 結(jié) 語