明 澤,宋文愛,單 純,王振宇,危勝軍
(1. 中北大學(xué) 軟件學(xué)院,山西 太原 030051; 2. 北京理工大學(xué) 計算機學(xué)院,北京 100081)
隨著計算機網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)安全風(fēng)險成為了不法分子盜取用戶信息的主要途徑之一. 這些威脅可以來自于各個方面,包括惡意登陸、 惡意軟件、 網(wǎng)絡(luò)釣魚、 端口掃描等. 惡意攻擊使得未經(jīng)授權(quán)的攻擊者對目標(biāo)計算機進行訪問,從而造成進一步的破壞,如竊取機密、 知識產(chǎn)權(quán)以及其它商業(yè)敏感信息. 其中,高級可持續(xù)威脅攻擊(Advanced Persistent Threat, APT)是最常見的網(wǎng)絡(luò)攻擊之一,它是一種隱秘的攻擊,能夠?qū)Ω鞣N組織和企業(yè)造成重大破壞. 例如,2010年的極光攻擊(Google Aurora)是一個非常著名的APT攻擊,谷歌的一名雇員點擊即時消息中的一條惡意鏈接,引發(fā)一系列事件,導(dǎo)致谷歌和其他大概 20家公司的系統(tǒng)數(shù)據(jù)被竊??; 針對伊朗關(guān)鍵基礎(chǔ)設(shè)施的臭名昭著的Stuxnet[1]摧毀了伊朗的核項目. 根據(jù)卡巴斯基實驗室[2]的研究,一個名為Carbanak的后門項目,給一家金融機構(gòu)造成了累計10億美元的損失. 此外,8000多萬社會安全號碼被從Anthem(一家大型醫(yī)療保險公司)抽走,直到9個月后才被發(fā)現(xiàn). 在這次攻擊中,Mivast惡意軟件[3]偽裝成一個VPN軟件,為攻擊者提供了一個后門.
在實際應(yīng)用中,網(wǎng)絡(luò)管理員的任務(wù)就是篩選來自計算機的海量用戶日志,以評估潛在的安全風(fēng)險. 但是,即使是規(guī)模適中的網(wǎng)絡(luò),其數(shù)據(jù)量也會迅速增長,超出個人或團隊的檢測能力,從而導(dǎo)致響應(yīng)延遲. 為了降低網(wǎng)絡(luò)安全風(fēng)險,以便網(wǎng)絡(luò)管理員能夠快速發(fā)現(xiàn)計算機網(wǎng)絡(luò)上潛在的惡意登錄活動,出現(xiàn)了網(wǎng)絡(luò)異常檢測與機器學(xué)習(xí)的跨領(lǐng)域研究,網(wǎng)絡(luò)安全攻擊和惡意行為的自動化檢測已經(jīng)成為了目前研究的主流. 大多數(shù)安全系統(tǒng)在互聯(lián)網(wǎng)和內(nèi)部網(wǎng)之間保持一個強大的邊界,因此,攻擊者不能夠訪問網(wǎng)絡(luò)安全功能(如防火墻、 入侵預(yù)防系統(tǒng)等)后的主機,攻擊者也很難駐留在內(nèi)部網(wǎng)中對受保護的計算機發(fā)起攻擊. 橫向移動(Lateral Movement, LM)就是攻擊者使用不同的攻擊技術(shù)(例如,網(wǎng)絡(luò)釣魚、 偽裝、 誘餌等)來欺騙內(nèi)部人員執(zhí)行惡意代碼或交出網(wǎng)絡(luò)證書,使得攻擊者能夠訪問受害者的計算機,并通過其內(nèi)部漏洞逐步探索有價值的信息.
目前,機器學(xué)習(xí)的方法已經(jīng)廣泛應(yīng)用于網(wǎng)絡(luò)安全中,Heard等[4]利用貝葉斯網(wǎng)絡(luò)來檢測計算機網(wǎng)絡(luò)上的異常,該方法通過源計算機和目標(biāo)計算機構(gòu)建二部圖,用來檢測最有可能與源計算機相連接的目標(biāo)計算機,并對所有源計算機進行異常排序. Kent等[5]提出了一種基于二部圖的用戶行為分析方法,利用二部圖分析用戶行為特征以此作為入侵檢測的依據(jù). Turcotte等[6]提出了一種基于概率的異常檢測推薦系統(tǒng)算法,該方法使用泊松因數(shù)分解用戶運行的進程以進行異常檢測. 劉敬等[7]采用無監(jiān)督的方式建立了基于支持向量機模型,利用主動學(xué)習(xí)找出有較高價值的樣本并人工進行標(biāo)記,最后使用半監(jiān)督的方法對模型進行擴展. 在機器學(xué)習(xí)的相關(guān)工作中,對異常身份驗證連接的建模只考慮了日志事件中的部分可用信息,且隨著網(wǎng)絡(luò)日志中用戶與操作的信息不斷增加,該方法在網(wǎng)絡(luò)異常檢測方面的特征提取能力也不斷降低.
由于網(wǎng)絡(luò)安全中數(shù)據(jù)的冗雜和數(shù)據(jù)量大的特點十分適合進行深度學(xué)習(xí)及其分析計算,因此,基于深度學(xué)習(xí)的方法在近年來也經(jīng)常用于網(wǎng)絡(luò)異常檢測中. Ussath等分析了22種不同的APT報告,總結(jié)了不同APT活動使用的相應(yīng)技術(shù)[8]; 還設(shè)計了用戶行為的模擬系統(tǒng)來生成Windows平臺的用戶活動日志,并使用前饋神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)來識別日志中的惡意事件[9]; 但是,其所使用的數(shù)據(jù)集是基于假設(shè)而構(gòu)建的,比如將用戶的經(jīng)緯度作為檢測的特征,這在大多數(shù)情況下是不符合實際情況的. Siadati等[10]設(shè)計了一種用于異常檢測系統(tǒng)的登錄模式,提出了一種新模式的挖掘算法,而且可用于擴展大數(shù)據(jù)集; 該系統(tǒng)由精確匹配和模式匹配兩部分分類器組成,由于精確匹配分類器容易出現(xiàn)過擬合,因此,使用模式匹配分類器進行補償以避免過擬合. TIM等[11]分析了LANL兩個數(shù)據(jù)集的優(yōu)缺點,并且依靠RDP協(xié)議以及RDP登錄會話將兩個數(shù)據(jù)集合并,將LANL2015數(shù)據(jù)集中的惡意數(shù)據(jù)合并到LANL2017數(shù)據(jù)集中,同時使用無監(jiān)督學(xué)習(xí)方法檢測合并數(shù)據(jù)后的惡意RDP會話事件,但該方法只能檢測基于RDP的會話事件,并不適用于所有的登錄事件,數(shù)據(jù)集也是構(gòu)造的并不是真實數(shù)據(jù)集. Kaiafas等[12]提出了一種提取特征的方法,測試了多個異常檢測模型的效果并取得了不錯的假陽性率,但是,作者沒有使用任何惡意數(shù)據(jù),全部采用良性數(shù)據(jù)進行訓(xùn)練.
由上述可知,絕大部分惡意登錄攻擊檢測所使用的數(shù)據(jù)集都是基于假設(shè)構(gòu)造而成的,檢測的方法也沒有考慮到攻擊的時序性. 對于時序性特征,絕大部分研究使用的模型都是普通的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN),其最大的優(yōu)勢就是保證數(shù)據(jù)的連續(xù)性,使用戶操作日志中的數(shù)據(jù)前后連續(xù). 雖然理論上RNN可以解決一切長時間序列的問題,但是,RNN經(jīng)常在網(wǎng)絡(luò)中出現(xiàn)梯度爆炸、 梯度消失和對長時間序列不再學(xué)習(xí)的問題. 為了解決這些問題,本文使用了長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)[13],它是一種循環(huán)神經(jīng)網(wǎng)絡(luò)的變體.
對于惡意登錄攻擊檢測的時序性特征和數(shù)據(jù)集問題,本文使用了LSTM加上注意力機制的方法,更加關(guān)注操作正常的特征信息,而對無效信息進行抑制. 同時,本文模型可以直接作用于原始日志,而不是人工構(gòu)造的基于特定領(lǐng)域假設(shè)的數(shù)據(jù)集. 這樣可以極大地減少處理日志的時間,并使其與特定的網(wǎng)絡(luò)或日志源配置無關(guān). 本文使用公開的洛斯阿拉莫斯國家實驗室網(wǎng)絡(luò)(Los Alamos National Laboratory,LANL)安全數(shù)據(jù)集對模型進行訓(xùn)練,該數(shù)據(jù)集是在一個公司內(nèi)收集到的真實數(shù)據(jù)集,其中包含RedTeam網(wǎng)絡(luò)攻擊的真實數(shù)據(jù).
圖1 給出了用戶惡意登錄檢測算法的研究框架. 首先,對用戶操作日志進行預(yù)處理,該模塊使用兩種編碼方式構(gòu)建日志字典,并基于日志字典將用戶操作日志形成單個序列; 接著,對每個日志序列進行向量化表示; 進而,利用長短期記憶網(wǎng)絡(luò)模型學(xué)習(xí)用戶操作特征信息; 然后,通過注意力機制篩選行為特征信息,同時過濾冗余操作,得到用戶操作評分; 最后,通過閾值判斷用戶操作是否異常,若評分高于閾值,則認(rèn)為用戶操作異常,模型判斷為惡意登錄,并反饋給技術(shù)人員進行后續(xù)處理.
圖1 研究框架
日志格式復(fù)雜多樣,本文為了可以處理任意格式的日志樣本,使用了兩種編碼方式:word-level編碼和char-level編碼[14].
對于word-level的編碼方法,本文假設(shè)使用的日志可由已知的分隔符進行分割,例如:空格或者逗號. 分割后的日志是不同單詞的組合,日志的每一個字段對應(yīng)一個或者幾個單詞, 本文提取其所有單詞形成一個詞匯庫. 同時,隨著日志的不斷增加,可能會出現(xiàn)單詞表中沒有出現(xiàn)過的單詞. 所以,本文加入了〈oov〉(Out-of-vocabulary)[15]標(biāo)記來處理這些單詞,在模型評估時,如果出現(xiàn)詞匯庫中沒有的單詞則其會被定義為〈oov〉. 由于在現(xiàn)實環(huán)境中,日志中出現(xiàn)的單詞會不斷增加,所以,需要對詞匯表進行不斷的更新,可以使用單詞頻率的統(tǒng)計信息對在詞匯表中出現(xiàn)頻率較高的單詞進行更新. 為了簡單起見,本文假設(shè)有一個固定的訓(xùn)練集,于是詞匯表也是固定的.
Char-level編碼的提出就是為了避免詞匯表不固定而需要不斷更新詞匯表的問題. 在這種情況下,原始的詞匯表就是可打印的ASCII字符的字母表,通過它能夠表示任何日志,同時與網(wǎng)絡(luò)、 日志源或日志字段無關(guān),從而繞過了詞匯不存在于單詞表的情況.
日志編碼可以看作是一種長文本序列,為了準(zhǔn)確獲取單一序列中含有的用戶歷史操作信息,本文引入LSTM模型,該模型通過引入門結(jié)構(gòu)來決定在訓(xùn)練期間需要保留或遺忘的信息,因而該模型適合處理長文本序列. LSTM由輸入門it,輸出門ot和遺忘門ft以及記憶單元ct組成. 其中,遺忘門用來控制歷史信息,輸入門用來控制當(dāng)前信息,輸出門用來確定下一個隱藏層狀態(tài),記憶單元用來保存歷史信息. LSTM的工作流程由以下公式表征:
it=sigmoid(Wi*[ht-1,xt]+bi),
(1)
ft=sigmoid(Wf*[ht-1,xt]+bf) ,
(2)
ot=sigmoid(Wo*[ht-1,xt]+bo),
(3)
ct=ft*ct-1+it*tanh(Wc*[ht-1,xt]+bc),
(4)
ht=ot*tanh(ct),
(5)
式中:sigmoid和tanh函數(shù)為激活函數(shù);xt表示t時刻的輸入;ht表示隱藏層單元;Wi,Wf,Wo,Wc和bi,bf,bo,bc分別表示對應(yīng)的權(quán)重矩陣和偏置.
用戶日志中包含了大量的冗余操作,為了更好地捕獲用戶日志流中 “正?!辈僮鞯奶卣鳎疚脑贚STM模型的基礎(chǔ)上引入注意力機制[16]. 注意力機制對用戶日志中重要的特征信息賦予較高的權(quán)重,對用戶日志中“無意義”操作賦予較小的權(quán)重,這有助于提高模型識別異常操作的準(zhǔn)確率. 根據(jù)編碼后得到的詞向量D={Xi,Xi+1,…,Xi+n,xn},xn為前n個向量的疊加后的平均值,以LSTM輸出門最后的輸出為例,將xn導(dǎo)入到LSTM模型中,得到輸出特征值Sn,則第t個向量對n個向量的注意力概率αnt計算公式為
Snt=Ua*tanh (Ub*Sn+Uc*St+b),
(6)
(7)
式中:Ua、Ub和Uc表示注意力機制的權(quán)值矩陣;b表示注意力機制的偏置向量.
用戶操作評分結(jié)構(gòu)如圖2 所示,具體實現(xiàn)步驟如下:
1) 對訓(xùn)練樣本D={xi,xi+1,…,xi+n}中的字符串進行編碼,將其轉(zhuǎn)化為可處理的編碼,即
xi→δxiα.
(8)
圖2 用戶行為評分結(jié)構(gòu)圖
2) 為每個特征的編碼層搭建一層嵌入層,該層輸出為
Xi=∑αwαβδxiα=wxiβ.
(9)
3) 將輸出Xi送入LSTM網(wǎng)絡(luò)中進行訓(xùn)練,然后將LSTM的輸出和注意機制進行加權(quán)輸出.
4) 最后,經(jīng)過SoftMax激活函數(shù)處理后得到該用戶的操作評分結(jié)果.
數(shù)據(jù)集在基于深度學(xué)習(xí)的模型訓(xùn)練中起著至關(guān)重要的作用,但是,代表著真實用戶操作的Windows日志數(shù)據(jù)集是極其稀少的. 建立在真實用戶操作的公開數(shù)據(jù)集,例如,CIC-IDS-2017[17]和LANL2017[18],雖然對基于深度學(xué)習(xí)的惡意登錄檢測研究有一定的幫助,但是,由于CIC-IDS-2017數(shù)據(jù)集對敏感信息(如:用戶名、 IP地址、 主機名等)進行了規(guī)避處理,而LANL2017缺少惡意事件,因此,模型在惡意登錄檢測的實際應(yīng)用中準(zhǔn)確率較低.
為了克服這些限制,研究人員通過模擬正常用戶和攻擊者的行為來生成綜合數(shù)據(jù)集. 然而,使用這種方法生成的數(shù)據(jù)集完全基于假設(shè),可能無法描述真實的用戶行為. 因此,為了保留用戶行為的真實性,本文使用了來自洛斯阿拉莫斯國家實驗室建立的真實數(shù)據(jù)集:Comprehensive,Multi-Source Cyber-Security Events[19]. 該數(shù)據(jù)集是從LANL內(nèi)部計算機網(wǎng)絡(luò)中收集的日志信息. 數(shù)據(jù)集包括12 425個用戶、 17 684臺計算機和62 974個進程且提供了總計1 648 275 307個事件. 數(shù)據(jù)集分為五個不同的日志,即身份驗證事件日志、 進程事件日志、 網(wǎng)絡(luò)流事件日志、 DNS查找事件日志以及RedTeam活動日志. 其中,惡意登錄行為由RedTeam活動日志所記錄.
數(shù)據(jù)集以日志的形式記錄了LANL內(nèi)部網(wǎng)絡(luò)中58 d的網(wǎng)絡(luò)活動. 本文僅使用帶有身份驗證日志的惡意登錄攻擊部分,RedTeam活動日志用于評估模型,其字段名以及對應(yīng)的例子例如表1 所示.
表1 字段名與對應(yīng)例子
本文將惡意登錄事件定義為正例樣本,并使用各種性能度量來評估不同的深度學(xué)習(xí)技術(shù). 混淆矩陣作為評估模型的指標(biāo),也是本文采用的指標(biāo)的基礎(chǔ),通過混淆矩陣計算出4個基礎(chǔ)指標(biāo). 真正類(True Positive, TP)代表被正確分類的正例數(shù)量; 假負(fù)類(False Negative, FN)代表將正例錯分為負(fù)例的數(shù)量; 假正類(False Positive, FP)代表將負(fù)例錯分為正例的數(shù)量; 真負(fù)類(True Negative, TN)代表正確分類的負(fù)例數(shù)量. 混淆矩陣如表2 所示.
表2 混淆矩陣
在計算完混淆矩陣的基礎(chǔ)指標(biāo)后,就可以獲得本文所需要的四種基礎(chǔ)指標(biāo):精準(zhǔn)率、 召回率、 F1-Score和準(zhǔn)確率. 計算公式為
(10)
(11)
(12)
(13)
式中:Acc代表模型的準(zhǔn)確率;P代表模型預(yù)測為正例的樣本中實際為正例的比例;R代表真實值為正例中預(yù)測正確的比例;F1-Score是綜合P和R兩個指標(biāo)所產(chǎn)生的值.F1-Score 的范圍是[0,1],1代表模型性能最好,0代表性能最差.
為了驗證本文所提方法的有效性,本文設(shè)置了以下對比試驗:邏輯回歸算法(Logistic Regression,LR)、 決策樹(Decision Tree,DT)、 隨機森林(Random Forest,RF)、 前饋神經(jīng)網(wǎng)絡(luò)(Feed-Forward Neural Network,F(xiàn)FNN), RNN, LSTM以及LSTM+Attention.
本文使用L1正則化以及隨機梯度下降算法的邏輯回歸算法來捕捉變量之間的關(guān)系. 決策樹算法使用的最大深度為3層,由于樣本量過大將criterion設(shè)為entropy, splitter設(shè)為random. FFNN使用的是3層結(jié)構(gòu),包含了兩個隱藏層. FFNN, RNN, LSTM以及LSTM+attention算法中,實驗迭代次數(shù)epoch設(shè)置為500,為了防止過擬合,dropout設(shè)置為0.5,BatchSize為32,初始化學(xué)習(xí)率為0.001,并使用Adam算法對學(xué)習(xí)率進行優(yōu)化.
經(jīng)過對攻擊日志的分析,本文發(fā)現(xiàn)所有攻擊者的源主機都來自四個主機其中的一個,使用源主機特征的時候可能會導(dǎo)致這些源主機所有的事件都會被預(yù)測為異常. 因此,本文在后續(xù)的工作中刪除了導(dǎo)致這些偏見的特征,即:源用戶、 源主機和目標(biāo)主機.
從表3 中可以看出,由于LR對非線性問題的局限性,其精確率和召回率都較低. 而其它機器學(xué)習(xí)算法準(zhǔn)確率過高是數(shù)據(jù)不平衡造成的,數(shù)據(jù)集中惡意數(shù)據(jù)僅有全部數(shù)據(jù)的0.001%,這樣使得大量正常的樣本被預(yù)測成功而導(dǎo)致準(zhǔn)確率過高. 所以,本文僅關(guān)注精準(zhǔn)率、 召回率以及F1-Score,其中F1-Score最能體現(xiàn)模型的魯棒性. 普通的機器學(xué)習(xí)算法中,F(xiàn)1-Score最高的為RF算法,普通機器學(xué)習(xí)算法存在過擬合問題,RF具有兩個隨機特性,使得RF有一定的抗噪聲能力,同時也在一定程度上解決了過擬合問題. LSTM+ATT模型相對于傳統(tǒng)機器學(xué)習(xí)算法和普通LSTM算法都有一定的優(yōu)越性,其F1-Score值達到了0.989.
表3 Word-level結(jié)果
表4 Char-level結(jié)果
對比表3 和表4 可以看出,word-level和char-level編碼的實驗結(jié)果相差不大. 但是由于word-level要進行單獨的詞匯提取和編碼,而char-level直接使用ASCII編碼形式,所以在相同大小的數(shù)據(jù)集中,word-level的訓(xùn)練時間要比char-level短20%左右.
由表5 和表6 可知,在缺少用戶、 源主機和目標(biāo)主機字段的情況下,本文所提方法在惡意登錄異常檢測中依然有較高的精確率、 召回率以及F1-Score.
表5 刪除用戶、源主機和目標(biāo)主機的word-level結(jié)果
表6 刪除用戶、源主機和目標(biāo)主機的char-level結(jié)果
深度學(xué)習(xí)方法可以自動從大規(guī)模數(shù)據(jù)中選擇特征,同時,循環(huán)神經(jīng)網(wǎng)絡(luò)具有長期保存輸入特征的特點,本文基于此提出了一種基于注意力機制的惡意登錄異常檢測方法,與傳統(tǒng)LSTM方法相比,在輸出前通過加入注意力機制使模型能夠更好地聚焦用戶日志中正常操作的特征信息. 同時,為了提高模型的泛化性能,提出了word-level和char-level兩種編碼方法,對日志的字段進行編碼. 實驗結(jié)果表明,本文方法對惡意登錄異常檢測具有較好的精確率、 召回率以及F1-Score,優(yōu)于其他的無監(jiān)督惡意登陸檢測算法. 然而,本文研究依舊存在局限性,如惡意數(shù)據(jù)過少,僅占有所有數(shù)據(jù)的0.001%,因此,如何解決數(shù)據(jù)不平衡問題還需要深入研究; 從頭開始訓(xùn)練深度學(xué)習(xí)的模型需要大量的時間,在出現(xiàn)新數(shù)據(jù)后如何快速地重新訓(xùn)練模型有待進一步研究.