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

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

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

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




2.5 模型生成器參考性評估




3 結 語