劉 亮,趙倩崇,鄭榮鋒,田智毅,孫思琦
(1.四川大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,四川 成都 610065; 2.四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
入侵檢測(cè)系統(tǒng)(intrusion detection system,IDS)作為提高網(wǎng)絡(luò)安全訪問(wèn)的有效手段[1],在應(yīng)對(duì)日益頻繁的網(wǎng)路熱點(diǎn)事件時(shí)的更新能力受到了越來(lái)越多的關(guān)注。IDS通過(guò)實(shí)時(shí)監(jiān)視系統(tǒng),對(duì)發(fā)現(xiàn)的異常情況進(jìn)行告警,其檢測(cè)能力受制于規(guī)則的準(zhǔn)確性和豐富性,良好的規(guī)則更新能夠提升對(duì)正在發(fā)生的熱點(diǎn)事件的應(yīng)對(duì)能力。
針對(duì)以上問(wèn)題,本文提出了一種基于威脅情報(bào)的自動(dòng)生成入侵檢測(cè)規(guī)則方法,利用網(wǎng)絡(luò)中公開(kāi)傳播的、能夠及時(shí)描述當(dāng)前網(wǎng)絡(luò)安全環(huán)境的開(kāi)源威脅情報(bào)文本(cyber threat intelligence,CTI),使用深度學(xué)習(xí)算法提取IoC數(shù)據(jù),自動(dòng)生成入侵檢測(cè)規(guī)則,應(yīng)對(duì)當(dāng)前熱點(diǎn)安全威脅和高級(jí)持續(xù)威脅(advance persistence threat)。陷落指標(biāo)數(shù)據(jù)(indicator of compromise,IoC)可用于識(shí)別計(jì)算機(jī)系統(tǒng)是否被攻擊者入侵的信息,包括網(wǎng)絡(luò)安全事件相關(guān)的IP地址、域名、電子郵件地址等信息。開(kāi)源威脅情報(bào)文本是由網(wǎng)絡(luò)安全領(lǐng)域的專業(yè)人員針對(duì)于最新發(fā)生的網(wǎng)絡(luò)安全熱點(diǎn)事件撰寫(xiě)的、包含完整事件過(guò)程的報(bào)告,其中包含豐富的IoC數(shù)據(jù),可被用于提升計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)對(duì)網(wǎng)絡(luò)安全熱點(diǎn)事件的能力。本文即是研究自動(dòng)地從網(wǎng)絡(luò)威脅情報(bào)文本中精確地提取IoC信息,并及時(shí)地形成可用的入侵檢測(cè)規(guī)則。
本文的創(chuàng)新點(diǎn)主要為:
(1)使用基于條件共現(xiàn)度的方法對(duì)IoC所在段落進(jìn)行特征擴(kuò)展和文檔重構(gòu),提高IoC數(shù)據(jù)提取準(zhǔn)確率;
(2)使用基于3層LSTM和CNN網(wǎng)絡(luò)結(jié)構(gòu)的ResLCNN深度學(xué)習(xí)模型驗(yàn)證所提取的IoC數(shù)據(jù)真實(shí)性,達(dá)到了91%的IoC數(shù)據(jù)提取準(zhǔn)確率;
(3)將開(kāi)源威脅情報(bào)應(yīng)用于入侵檢測(cè)系統(tǒng)的規(guī)則生成,實(shí)現(xiàn)了IDS規(guī)則的及時(shí)自動(dòng)更新,提升應(yīng)對(duì)熱點(diǎn)網(wǎng)絡(luò)安全威脅的能力。
為了實(shí)現(xiàn)自動(dòng)更新規(guī)則數(shù)據(jù)庫(kù),文獻(xiàn)[2]提出了一種結(jié)合機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)生成規(guī)則的方法Dendron。Dendron同時(shí)利用了決策樹(shù)和遺傳算法,以生成出語(yǔ)言可解釋的準(zhǔn)確的檢測(cè)規(guī)則,同時(shí)將啟發(fā)式方法集成到生成過(guò)程中。該方法可以高精度地檢測(cè)網(wǎng)絡(luò)攻擊,但沒(méi)有考慮大規(guī)模數(shù)據(jù)集的訓(xùn)練時(shí)間。文獻(xiàn)[3,4]都提出了利用蜜罐安全機(jī)制來(lái)區(qū)分來(lái)自客戶端的傳入流量和攻擊者發(fā)起的流量的IDS。文獻(xiàn)[2]提出的Dendron和文獻(xiàn)[3,4]提出的基于蜜罐的規(guī)則生成算法都需要足夠數(shù)量的規(guī)則攻擊樣本以提取良好的規(guī)則。除此之外,文獻(xiàn)[5]提出了一種基于關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘技術(shù)來(lái)檢測(cè)網(wǎng)絡(luò)探針攻擊的改進(jìn)Snort IDS規(guī)則的程序。以上這些規(guī)則更新方法只能提取已知攻擊行為的特征,或者在原有特征的基礎(chǔ)上尋找最佳的一般表達(dá)式,無(wú)法針對(duì)當(dāng)前發(fā)生的熱點(diǎn)網(wǎng)絡(luò)安全事件做出及時(shí)更新。
目前,威脅情報(bào)最普遍的使用場(chǎng)景是事后攻擊檢測(cè),即利用IoC數(shù)據(jù)進(jìn)行日志檢測(cè),發(fā)現(xiàn)內(nèi)部被攻陷的主機(jī)等重要風(fēng)險(xiǎn)。這種情況下可以發(fā)現(xiàn)傳統(tǒng)安全產(chǎn)品無(wú)法發(fā)現(xiàn)的很多威脅,對(duì)于安全運(yùn)營(yíng)有較大的幫助[6]。但是將開(kāi)源威脅情報(bào)直接用于入侵檢測(cè)系統(tǒng)等實(shí)時(shí)攻擊檢測(cè)技術(shù)的研究還很少。文獻(xiàn)[7]提出的CyTIME系統(tǒng)利用威脅情報(bào)共享協(xié)議TAXII協(xié)議,從威脅情報(bào)共享平臺(tái)中收集威脅情報(bào)數(shù)據(jù),并將其轉(zhuǎn)化為結(jié)構(gòu)統(tǒng)一的STIX格式,最后生成用于入侵檢測(cè)的規(guī)則。但該系統(tǒng)只能收集結(jié)構(gòu)化的CTI并將其轉(zhuǎn)為IDS規(guī)則,針對(duì)從難度更大且實(shí)用性更強(qiáng)的非結(jié)構(gòu)化的數(shù)據(jù)例如文本中收集IoC沒(méi)有實(shí)現(xiàn)。從非結(jié)構(gòu)化的數(shù)據(jù)中準(zhǔn)確提取IoC是一項(xiàng)挑戰(zhàn)性的自然語(yǔ)言處理技術(shù)。在文獻(xiàn)[8]中,Yuan和Liao等提出一種自動(dòng)從博客文章中收集IoC的系統(tǒng)iACE,他們將問(wèn)題建模為圖相似問(wèn)題,如果IoC項(xiàng)具有與訓(xùn)練集相似的圖結(jié)構(gòu),則將其識(shí)別出來(lái)。文獻(xiàn)[9]提出利用卷積神經(jīng)網(wǎng)絡(luò)CNN自動(dòng)提取IoC的系統(tǒng)iGen。文獻(xiàn)[8,9]都只關(guān)注了句子級(jí)別的特征,并且沒(méi)有將其與上下文關(guān)聯(lián),準(zhǔn)確率較低。
本文提出的基于威脅情報(bào)的自動(dòng)生成入侵檢測(cè)規(guī)則方法,首先從網(wǎng)絡(luò)安全公司、組織搭建的開(kāi)源威脅情報(bào)網(wǎng)站中收集可能與網(wǎng)絡(luò)安全事件相關(guān)的文章,文章分類模塊使用Word2Vec進(jìn)行特征提取,訓(xùn)練監(jiān)督學(xué)習(xí)模型,該模型自動(dòng)將文章分為威脅情報(bào)文本和非威脅情報(bào)文本;然后定位IoC所在的段落并使用條件共現(xiàn)度算法進(jìn)行特征擴(kuò)展和子文檔重構(gòu),并使用深度學(xué)習(xí)網(wǎng)絡(luò)驗(yàn)證IoC真實(shí)性。最后,入侵檢測(cè)系統(tǒng)構(gòu)建模塊將提取出的IoC轉(zhuǎn)換為入侵檢測(cè)系統(tǒng)規(guī)則,構(gòu)建入侵檢測(cè)系統(tǒng)。
本文提出的基于威脅情報(bào)的自動(dòng)生成入侵檢測(cè)規(guī)則模型如圖1所示。
該模型主要包含4個(gè)模塊,威脅情報(bào)收集與預(yù)處理模塊、文章分類模塊、IoC提取模塊和入侵檢測(cè)系統(tǒng)構(gòu)建模塊。①威脅情報(bào)收集與預(yù)處理模塊包含數(shù)據(jù)收集組件和文本預(yù)處理組件,數(shù)據(jù)收集組件在各大開(kāi)源威脅情報(bào)網(wǎng)站上定期收集可能與網(wǎng)絡(luò)安全事件相關(guān)的文章,然后使用預(yù)處理組件進(jìn)行數(shù)據(jù)清洗與文本預(yù)處理;②文章分類模塊使用Word2Vec進(jìn)行特征提取,利用AdaBoost算法訓(xùn)練文章分類模型,該模型自動(dòng)將文章分為威脅情報(bào)文本和非威脅情報(bào)文本;③IoC提取模塊首先通過(guò)靜態(tài)規(guī)則定位可能包含IoC的段落,使用條件共現(xiàn)度算法進(jìn)行特征擴(kuò)展和子文檔重構(gòu),交由基于ReslCNN 深度學(xué)習(xí)網(wǎng)絡(luò)的IoC驗(yàn)證模型驗(yàn)證IoC;④最后,入侵檢測(cè)系統(tǒng)構(gòu)建模塊將提取出的IoC轉(zhuǎn)換為可以應(yīng)用于開(kāi)源入侵檢測(cè)系統(tǒng)Snort的規(guī)則,構(gòu)建入侵檢測(cè)系統(tǒng)。
圖1 整體方法模型
數(shù)據(jù)收集組件定期在不同的開(kāi)源威脅情報(bào)網(wǎng)站上收集文章,所獲得的原始HTML腳本中有很多噪聲信息,包括標(biāo)簽、廣告鏈接、視頻等,需要通過(guò)預(yù)處理模塊提取HTML 腳本中的文本內(nèi)容。預(yù)處理組件還對(duì)原始文本進(jìn)行停用詞去除和詞性還原。為了節(jié)約數(shù)據(jù)存儲(chǔ)空間、提高后續(xù)分類準(zhǔn)確率,在預(yù)處理階段去除應(yīng)用廣泛但自身并無(wú)明確意義的停用詞。由于收集來(lái)的文本中同一原型的詞經(jīng)常以不同的形態(tài)出現(xiàn),并且在訓(xùn)練模型提取特征時(shí)通常將這些單詞當(dāng)作多個(gè)詞進(jìn)行處理,故使用詞形還原將單詞的不同形式統(tǒng)一為詞的原始形式,以提高特征提取的準(zhǔn)確性及效率。
盡管開(kāi)源威脅情報(bào)網(wǎng)站發(fā)布的文章大多為CTI信息,但其中也夾雜著產(chǎn)品廣告、安全技術(shù)指導(dǎo)等非IoC文章。本模塊將從威脅情報(bào)收集與預(yù)處理模塊傳來(lái)的所有文章中提取包含妥協(xié)指標(biāo)IoC的文章。首先通過(guò)正則匹配過(guò)濾掉所有不包含候選IoC(IP、域名、url、哈希值等)的文章,之后通過(guò)自然語(yǔ)言處理技術(shù)提取特征構(gòu)建文章分類模型。
特征提?。涸谕{情報(bào)領(lǐng)域往往會(huì)有層出不窮的新的詞匯,并且描述網(wǎng)絡(luò)安全事件的文章篇幅往往較長(zhǎng),采用傳統(tǒng)的詞袋模型會(huì)引發(fā)維度災(zāi)難,嚴(yán)重影響計(jì)算速度。Word2Vec模型可以很好地解決上述問(wèn)題。相較于傳統(tǒng)NLP的高維、稀疏的表示法,Word2Vec是一種可以進(jìn)行高效率詞嵌套學(xué)習(xí)的預(yù)測(cè)模型,訓(xùn)練出的詞向量是低維、稠密的。除此之外,Word2Vec模型訓(xùn)練的詞向量包含詞的語(yǔ)義信息且能體現(xiàn)詞之間的線性關(guān)系[10],因此本系統(tǒng)利用基于Skip-gram模型的Word2Vec模型訓(xùn)練威脅情報(bào)語(yǔ)料中的詞匯,得到文章每個(gè)詞的詞向量。
Skip-gram模型共分為3層:輸入層、隱藏層和輸出層。輸入層中每個(gè)詞由獨(dú)熱編碼方式表示,輸入層與隱藏層之間的權(quán)重矩陣W的第i行代表詞匯表中第i個(gè)單詞的權(quán)重,最后模型還有N個(gè)結(jié)點(diǎn)的隱藏層,隱藏層節(jié)點(diǎn)hi就是輸入層輸入的加權(quán)求和。隱藏層h公式如下
(1)
輸出層是輸入節(jié)點(diǎn)的上下文,窗口大小為C, 模型輸出結(jié)點(diǎn)C*V也是由對(duì)應(yīng)輸入結(jié)點(diǎn)的加權(quán)求和計(jì)算得到,輸出層節(jié)點(diǎn)公式如下
(2)
最后使用softmax函數(shù)對(duì)輸出層的多項(xiàng)式分布進(jìn)行歸一化,將模型的歸一化輸出作為目標(biāo)函數(shù),然后通過(guò)交叉熵方法獲得損失函數(shù),并通過(guò)反向傳播算法更新變量權(quán)重,該算法連續(xù)迭代直到網(wǎng)絡(luò)收斂。
構(gòu)建IoC文章分類模型:為訓(xùn)練分類模型,手工標(biāo)注在各大開(kāi)源威脅情報(bào)網(wǎng)站上收集的400篇文章(包括299篇非威脅情報(bào)文本和101篇威脅情報(bào)文本文章),并將這些文章分為訓(xùn)練集和測(cè)試集。利用Word2Vec模型提取的特征,本模塊使用AdaBoost算法來(lái)訓(xùn)練IoC文章分類模型。AdaBoost是一種可以顯著提高一般分類器分類精度的方法,它可以聯(lián)合幾個(gè)初等分類器構(gòu)成一個(gè)新分類器,本系統(tǒng)采用AdaBoost算法提高模型訓(xùn)練的精度。
模型訓(xùn)練過(guò)程如下:在每輪訓(xùn)練中,添加新的弱分類器。如果已經(jīng)對(duì)樣本點(diǎn)進(jìn)行了準(zhǔn)確分類,則在構(gòu)建下一個(gè)訓(xùn)練集時(shí)減少其權(quán)重;相反,如果樣本點(diǎn)未正確分類,則其權(quán)重會(huì)增加。最終改進(jìn)的強(qiáng)分類器,采用不同弱分類器的加權(quán)組合,即某個(gè)數(shù)據(jù)被分為哪一類要由各分類器權(quán)值決定[11]。
其中,計(jì)算弱分類器在最終分類器中所占的權(quán)重αt, 如下
(3)
然后需要更新威脅情報(bào)樣本數(shù)據(jù)中訓(xùn)練樣本的權(quán)值分布
(4)
本模塊的任務(wù)是在IoC文章中準(zhǔn)確識(shí)別并提取IoC。如果直接在IoC文章中使用靜態(tài)規(guī)則(例如正則表達(dá)式、關(guān)鍵詞匹配)提取IoC存在很高的誤報(bào)率。如圖2所示,圖中的3個(gè)段落來(lái)自3篇不同的IoC文章,如果單純依靠靜態(tài)規(guī)則匹配會(huì)將圖中的所有候選IoC(符合IoC格式的字符串)都當(dāng)作真實(shí)IoC提取出來(lái),但事實(shí)上只有第一段中的IP地址、域名和第三段中的IP地址才是真正的IoC。
圖2 包含候選IoC的段落示例
本文采用深度學(xué)習(xí)的方法,訓(xùn)練一個(gè)以帶有候選IoC的段落為輸入,以是否為IoC為輸出的文本分類器。自然段落有數(shù)據(jù)量小,高維性和特征稀疏(如圖2所示)等特點(diǎn),這增大了文本分類的難度。為了解決該問(wèn)題,本模塊先利用條件共現(xiàn)度對(duì)原有文本進(jìn)行特征擴(kuò)展和文本重構(gòu),使用Word2vec將重構(gòu)之后的段落轉(zhuǎn)換為低維度的詞向量,最后輸入結(jié)合了CNN和LSTM優(yōu)勢(shì)的ReslCNN深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行模型訓(xùn)練。
特征擴(kuò)展和文本重構(gòu):本文沒(méi)有選擇候選IoC所在的句子而是選擇以候選IoC所在的段落為基本單位進(jìn)行特征擴(kuò)展和模型訓(xùn)練。由于自然段落是一種基本的語(yǔ)言結(jié)構(gòu),自然段落中的內(nèi)容將集中描述一個(gè)主題,因此它代表了一個(gè)連貫的語(yǔ)義文本段。此外,自然段落比句子和塊包含更多的詞匯信息并且大小適中[12]。
本模塊首先要將每篇IoC文章以自然段落為基本單位拆分成具有獨(dú)立語(yǔ)義結(jié)構(gòu)的子文檔。但是,將具有較少單詞的段落視為基本的語(yǔ)義結(jié)構(gòu)會(huì)為后續(xù)的特征擴(kuò)展帶來(lái)誤差,因此,有必要確定在處理過(guò)程中是否可以將自然段落當(dāng)成具有獨(dú)立語(yǔ)義結(jié)構(gòu)的子文檔。每個(gè)不能被劃分為獨(dú)立語(yǔ)義結(jié)構(gòu)的段落都將被合并到下一個(gè)段落中。判定規(guī)則如下
(5)
(6)
其中, [δ] 表示取整操作。
在對(duì)原始IoC文章進(jìn)行語(yǔ)義結(jié)構(gòu)拆分之后,每個(gè)子文檔內(nèi)的詞共同說(shuō)明了一個(gè)主題的內(nèi)容,而單個(gè)詞無(wú)法準(zhǔn)確定位文本的語(yǔ)義內(nèi)容,因?yàn)閱蝹€(gè)詞表達(dá)的語(yǔ)義相對(duì)廣泛。而當(dāng)單詞同時(shí)出現(xiàn)或組合成較長(zhǎng)單元的短語(yǔ)時(shí),可以更精確地表達(dá)文本的語(yǔ)義關(guān)系。另外,只用普通的詞共現(xiàn)方法往往不能準(zhǔn)確判斷文檔重點(diǎn)描述的語(yǔ)義信息。例如“Phorpiex”和“攻擊”共現(xiàn)時(shí),不容易判定該段落內(nèi)容描述的是“Phorpiex為攻擊者”還是“Phorpiex為被攻擊者”;其次,若在一個(gè)段落中,“木馬”和“攻擊”,以及“木馬”和“檢測(cè)”的共現(xiàn)次數(shù)相同,無(wú)法判定本段落在更偏重于描述“木馬攻擊”的手段還是更偏重于描述“檢測(cè)木馬”的手段。為了解決文本內(nèi)容的語(yǔ)義歧義,本文采用文獻(xiàn)[13]中提出的條件共現(xiàn)度方法度量原始段落中任意兩個(gè)詞的依存性,并根據(jù)詞語(yǔ)間的條件共現(xiàn)度對(duì)原始段落進(jìn)行特征詞擴(kuò)充和重構(gòu)[13]。
(7)
(8)
然后,為了突出詞語(yǔ)組合后在段落中的語(yǔ)義強(qiáng)度,在求得詞間的條件共現(xiàn)度后,乘以段落內(nèi)相應(yīng)的兩個(gè)詞語(yǔ)詞頻的和與ρ的差值,即
(9)
其中,ρ用來(lái)控制詞語(yǔ)組合的強(qiáng)度,ρ越小,則強(qiáng)度越大,反之,則強(qiáng)度越小。
最后,依據(jù)上述兩步操作后獲得的組合詞及其權(quán)重的整數(shù)部分,對(duì)擁有獨(dú)立語(yǔ)義結(jié)構(gòu)的段落特征進(jìn)行擴(kuò)充和重構(gòu)。在重構(gòu)過(guò)程中,將這些組合詞按其權(quán)重的整數(shù)部分進(jìn)行重復(fù)。
如圖3所示,我們從一個(gè)段落中提取出3個(gè)詞,分別為“木馬”、“檢測(cè)”和“攻擊”,分別用a代表“木馬”,b代表“檢測(cè)”,c代表“攻擊”,并取ρ=2。 首先根據(jù)該段落的共現(xiàn)矩陣計(jì)算條件共現(xiàn)度矩陣;然后強(qiáng)調(diào)組合詞語(yǔ)義,根據(jù)文檔語(yǔ)義提高組合詞的權(quán)重;最后進(jìn)行特征詞擴(kuò)充及文本重構(gòu)。從最后的重構(gòu)文檔內(nèi)容可以看出,“木馬檢測(cè)”、“木馬攻擊”和“檢測(cè)木馬”是關(guān)鍵內(nèi)容。此外,可以清楚地分辨出“木馬檢測(cè)”比“木馬攻擊”更重要。
圖3 特征擴(kuò)充及文本重構(gòu)示例
構(gòu)建ReslCNN模型:在對(duì)包含候選IoC的原始段落進(jìn)行特征擴(kuò)展和文本重構(gòu)之后,需要訓(xùn)練模型來(lái)驗(yàn)證候選IoC是否為真實(shí)IoC。對(duì)自然段分類屬于短文本分類的范疇,目前,短文本分類模型通常是淺層網(wǎng)絡(luò),即一層或兩層CNN或LSTM,相對(duì)于深層神經(jīng)網(wǎng)絡(luò)特征表達(dá)能力較差。但是深層神經(jīng)網(wǎng)絡(luò)模型效果受梯度消失影響。
為了解決上述問(wèn)題,本文使用文獻(xiàn)[14]提出的基于3層LSTM和CNN網(wǎng)絡(luò)結(jié)構(gòu)的ResLCNN(residual-LSTM-CNN)深度學(xué)習(xí)模型,如圖4所示。ResLCNN模型以Word2vec詞向量構(gòu)成的段落矩陣作為輸入,第1層LSTM根據(jù)隱藏層和記憶單元獲取文本時(shí)序特征,隨后殘差層包含兩層LSTM,接著CNN層使用多個(gè)卷積核進(jìn)行卷積運(yùn)算,并提取最優(yōu)卷積特征通過(guò)softmax分類。ResLCNN模型為了獲取更復(fù)雜的特征,將3層LSTM結(jié)合CNN構(gòu)建深層網(wǎng)絡(luò),同時(shí)在第1層LSTM輸出與CNN層輸入之間添加恒等映射,構(gòu)建殘差層緩解訓(xùn)練模型階段低網(wǎng)絡(luò)層梯度消失問(wèn)題[13]。
圖4 ResLCNN模型框架
設(shè)Mi代表第i層的輸入,其中i∈{1,2,3,4}。F表示殘差函數(shù),權(quán)重為W。 殘差層運(yùn)算如下
M4=F(M2,W)+M2
(10)
殘差層的輸入為M2, 輸出直接作為第4層CNN的輸入M4, 進(jìn)而得出式(10)。式(10)反向求導(dǎo)的過(guò)程為
(11)
IoC生成:通過(guò)比對(duì)IoC文章和非IoC文章,比對(duì)真IoC與假I(mǎi)oC的段落,總結(jié)出約260個(gè)與IoC有關(guān)的關(guān)鍵詞。本模塊通過(guò)靜態(tài)規(guī)則從真IoC段落中提取出IoC和IoC的類型。
隨著越來(lái)越多的網(wǎng)絡(luò)安全威脅和攻擊不斷出現(xiàn),傳統(tǒng)的IDS面對(duì)的挑戰(zhàn)是規(guī)則滯后無(wú)法應(yīng)對(duì)最新的威脅?,F(xiàn)有的規(guī)則更新方法基本都是取出已知攻擊行為的特征,或者在原有特征的基礎(chǔ)上尋找最佳的一般表達(dá)式,無(wú)法完整表達(dá)現(xiàn)在和未來(lái)的安全狀況。而將威脅情報(bào)用于構(gòu)建入侵檢測(cè)系統(tǒng),能夠根據(jù)過(guò)去和當(dāng)前網(wǎng)絡(luò)安全狀況動(dòng)態(tài)調(diào)整防御規(guī)則。
在眾多入侵檢測(cè)系統(tǒng)中,Snort占主流地位。Snort是一種開(kāi)源的輕量級(jí)網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng),可以進(jìn)行實(shí)時(shí)數(shù)據(jù)流量分析和記錄IP網(wǎng)絡(luò)數(shù)據(jù)包,檢測(cè)不同的攻擊方式,對(duì)攻擊進(jìn)行實(shí)時(shí)報(bào)警,具有很好的擴(kuò)展性和可移植性。本文基于Snort構(gòu)建入侵檢測(cè)系統(tǒng)。
如圖5所示,Snort規(guī)則包含規(guī)則頭部和選項(xiàng)兩部分,規(guī)則頭部中,action指明規(guī)則被觸發(fā)后所執(zhí)行的動(dòng)作,proto表示規(guī)則所使用的協(xié)議,例如TCP、UDP或ICMP,在Snort3中,協(xié)議可以為空,接下來(lái)是源IP地址,源端口號(hào),目的IP地址,目的端口號(hào),規(guī)則選項(xiàng)定義了用于分析數(shù)據(jù)包負(fù)載以檢測(cè)攻擊的模式。將IoC轉(zhuǎn)換為IDS規(guī)則的算法如算法1所示。
圖5 Snort規(guī)則格式
算法1:IDS規(guī)則生成算法
輸入:IoC文件IoCs
輸出:IDS規(guī)則R
(1)R← 0
(2)foreachIoCinIoCsdo
(3)ifIoCcontainsblacklistsIPaddressesthen
(4)ExtractIPaddresses,creationtime,typefromIoC
(5)GeneratethecorrespondingsecurityrulerwithIPaddresses,creationtime,type
1) 對(duì)刀片刃面進(jìn)行局部氣體滲碳以及淬火和低溫回火熱處理后能達(dá)到使刀片具有沿橫截面上的表里硬度差,達(dá)到表層硬(硬度≥60HRC)、心部韌(硬度≤35HRC)的目的。
(6)AddrtoR
(7)elseifIoCcontainsblacklisteddomainnamesthen
(8)Extractblacklisteddomainnames,creationtime,typefromIoC
(9)Generatethecorrespondingsecurityrulerwithblacklisteddomainnames,creationtime,type
(10)AddrtoR
(11)elseifIoCcontainsfilehashthen
(12)Extracthash,hashtype,creationtime,typefromIoC
(13)Generatethecorrespondingsecurityrulerwithhash,hashtype,creationtime,type
(14)AddrtoR
(15)elseifIoCcontainsmalwarethen
(16)Extractmalwarename,malwaretype,malwaresignature,creationtime,typefromIoC
(17)Generatethecorrespondingsecurityrulerwithmalwarename,malwaretype,malwaresignature,creationtime,type
(18)AddrtoR
(19) …
(20)endif
(21)endfor
(22)returnR
采用Python3.6程序語(yǔ)言實(shí)現(xiàn)本文算法,通過(guò)爬蟲(chóng)在30個(gè)開(kāi)源威脅情報(bào)網(wǎng)站進(jìn)行文章收集、分類和IoC提取,包括AlienVault、badcyber、FireEye、Freebuf等威脅情報(bào)平臺(tái)。本系統(tǒng)共收集了3100篇網(wǎng)絡(luò)安全文章,其中包含910篇IoC文章,從中提出共2300個(gè)包含候選IoC的段落,其中1500個(gè)段落包含真實(shí)IoC,800個(gè)段落包含虛假I(mǎi)oC。其中IoC類型分布見(jiàn)表1。
表1 IoC類型分布
在文章分類和IoC提取實(shí)驗(yàn)中評(píng)價(jià)指標(biāo)采用準(zhǔn)確率P, 召回率R和調(diào)和平均值F1, 其計(jì)算公式為
(12)
(13)
(14)
其中,TP表示正確告警條數(shù);FP表示誤報(bào)條數(shù);FN表示漏報(bào)條數(shù);TN表示正確未告警條數(shù)。準(zhǔn)確率P表示正確識(shí)別的正類占所有預(yù)測(cè)為正類的比率;召回率R表示正確識(shí)別的正類占所有實(shí)際為正類的比率;調(diào)和平均數(shù)F1表示準(zhǔn)確率與召回率的綜合值。
在入侵檢測(cè)系統(tǒng)構(gòu)建實(shí)驗(yàn)中采用評(píng)價(jià)指標(biāo)漏報(bào)率FNR和誤報(bào)率FPR
(15)
(16)
漏報(bào)率FNR是錯(cuò)誤識(shí)別的正類占所有預(yù)測(cè)為負(fù)類的比率,誤報(bào)率FPR是錯(cuò)誤識(shí)別的負(fù)類占所有實(shí)際為負(fù)類的比率,F(xiàn)NR、FPR越低,表示檢測(cè)效果越好。
3.3.1 文章分類與IoC提取實(shí)驗(yàn)
在提取IoC實(shí)驗(yàn)中,基于條件共現(xiàn)度的特征擴(kuò)充算法是提高IoC提取準(zhǔn)確率的關(guān)鍵算法,所以本文將使用特征擴(kuò)充前的文本和特征擴(kuò)充后的文本分別進(jìn)行IoC提取,實(shí)驗(yàn)結(jié)果對(duì)比見(jiàn)表2。
表2 IoC提取實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果表明,基于條件共現(xiàn)度的特征擴(kuò)充算法顯著地提高了提取IoC的準(zhǔn)確率。除此之外,本文將本系統(tǒng)所使用的IoC提取模型與其它方法進(jìn)行了對(duì)比,包括分別使用TF和TF-IDF算法提取特征的SVM(支持向量機(jī)分類器)和樸素貝葉斯分類器。采用10折交叉驗(yàn)證技術(shù),比較了準(zhǔn)確率、召回率和調(diào)和平均值。如表3所示,本系統(tǒng)以93%的準(zhǔn)確率,90%的召回率生成IoC,性能優(yōu)于其它方法。
文獻(xiàn)[8]提出的iACE在高精度提取IoC方面也取得較好效果。但是該方法從其使用的數(shù)據(jù)集中手動(dòng)提取了5283個(gè)特征,這意味著iACE運(yùn)用在其它數(shù)據(jù)集中精度無(wú)法保證。但是在本系統(tǒng)中,特征不用手動(dòng)提取,使用條件共現(xiàn)度方法進(jìn)行特征擴(kuò)展后,由ResLCNN深度學(xué)習(xí)模型自動(dòng)選擇特征。該特性使得本系統(tǒng)在任何數(shù)據(jù)集上都具有更強(qiáng)的適應(yīng)性。
表3 IoC提取實(shí)驗(yàn)結(jié)果
3.3.2 IDS檢測(cè)實(shí)驗(yàn)
本文將從威脅情報(bào)中提取出的IoC轉(zhuǎn)化為snort規(guī)則,轉(zhuǎn)化過(guò)程如圖6所示,轉(zhuǎn)化后的規(guī)則被應(yīng)用到入侵檢測(cè)系統(tǒng)中。
為在實(shí)驗(yàn)環(huán)境下采用統(tǒng)一標(biāo)準(zhǔn)對(duì)本文所提出的基于威脅情報(bào)的自動(dòng)生成入侵檢測(cè)規(guī)則方法加以驗(yàn)證,本文采用malware-traffic-analysis[15]網(wǎng)站公開(kāi)的惡意代碼,該數(shù)據(jù)集包含了Angler、Boleto、EITest、Emotet、Nuclear、Trickbot等知名惡意代碼相關(guān)的流量數(shù)據(jù)。本文在實(shí)驗(yàn)室環(huán)境下搭建了Snort入侵檢測(cè)系統(tǒng),并將使用生成的規(guī)則對(duì)該數(shù)據(jù)集中的惡意流量進(jìn)行檢測(cè)。表4中從上至下惡意代碼發(fā)現(xiàn)時(shí)間從遠(yuǎn)到近,其中DRIDEX FROM LINK-BASED MALSPAM是最新發(fā)生的網(wǎng)絡(luò)安全事件中采集的流量。同時(shí),本文選取文獻(xiàn)[16]和文獻(xiàn)[17]所提出的入侵檢測(cè)系統(tǒng)作為對(duì)照。文獻(xiàn)[16]提出基于分層時(shí)空特征的入侵檢測(cè)系統(tǒng)(HAST-IDS),首先使用深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)學(xué)習(xí)網(wǎng)絡(luò)流量的低層空間特征,然后使用長(zhǎng)短期記憶網(wǎng)絡(luò)學(xué)習(xí)高層時(shí)間特征。文獻(xiàn)[17]提出了一種新穎的入侵檢測(cè)系統(tǒng),該系統(tǒng)結(jié)合了不同的分類器方法,這些方法基于決策樹(shù)和基于規(guī)則的概念,即REP樹(shù)、JRip算法和Forest PA。具體來(lái)說(shuō),第一種和第二種方法將數(shù)據(jù)集的特征作為輸入,將網(wǎng)絡(luò)流量分類為攻擊/良性。除了將第一分類器和第二分類器的輸出作為輸入之外,第三分類器還使用初始數(shù)據(jù)集的特征。實(shí)驗(yàn)結(jié)果見(jiàn)表4。
圖6 IoC轉(zhuǎn)snort規(guī)則舉例
表4 異常流量檢測(cè)結(jié)果對(duì)比/%
結(jié)果顯示,隨著惡意代碼的發(fā)現(xiàn)時(shí)間越近,本系統(tǒng)的檢測(cè)漏報(bào)率越低,文獻(xiàn)[16]和文獻(xiàn)[17]的檢測(cè)漏報(bào)率越高,而本系統(tǒng)的誤報(bào)率始終低于文獻(xiàn)[16]和文獻(xiàn)[17]。在MALSPAM PUSHES FORMBOOK的檢測(cè)中,本系統(tǒng)的漏報(bào)率最高,檢測(cè)效果最差,而對(duì)于最新發(fā)現(xiàn)的DRIDEX FROM LINK-BASED MALSPAM的檢測(cè)效果優(yōu)于其它文獻(xiàn)提出的入侵檢測(cè)方法。這是因?yàn)閷?duì)于文獻(xiàn)[16]和文獻(xiàn)[17],流量數(shù)據(jù)類型的規(guī)模和數(shù)據(jù)量的大小對(duì)預(yù)測(cè)模型的訓(xùn)練效果有顯著的影響,如果檢測(cè)流量規(guī)模和數(shù)據(jù)量足夠大時(shí)檢測(cè)效果優(yōu)于本系統(tǒng),所以對(duì)于越早發(fā)現(xiàn)的惡意代碼檢測(cè)效果越好。盡管本系統(tǒng)生成的規(guī)則多數(shù)只包含了數(shù)據(jù)包頭的信息,但在熱點(diǎn)網(wǎng)絡(luò)安全事件還未有足夠流量規(guī)模用以訓(xùn)練時(shí)具有較好的檢測(cè)結(jié)果,優(yōu)于其它系統(tǒng)。并且因?yàn)楸鞠到y(tǒng)可以從威脅情報(bào)中獲得較為準(zhǔn)確的IoC數(shù)據(jù),可以生成更加可靠的規(guī)則,所以誤報(bào)率始終低于其它系統(tǒng)。
最終結(jié)果表明,文本所設(shè)計(jì)的基于威脅情報(bào)的自動(dòng)生成入侵檢測(cè)規(guī)則方法能夠有效捕捉開(kāi)源威脅情報(bào)中的有效數(shù)據(jù),有效幫助提升應(yīng)對(duì)APT攻擊,提升網(wǎng)絡(luò)安全防護(hù)能力。
本文提出基于威脅情報(bào)的自動(dòng)生成入侵檢測(cè)規(guī)則方法,將威脅情報(bào)用于構(gòu)建入侵檢測(cè)系統(tǒng),能夠根據(jù)過(guò)去和當(dāng)前網(wǎng)絡(luò)安全狀況動(dòng)態(tài)調(diào)整防御規(guī)則。該系統(tǒng)先在不同開(kāi)源威脅情報(bào)網(wǎng)站收集網(wǎng)絡(luò)安全文章,訓(xùn)練文本分類模型,之后通過(guò)條件共現(xiàn)度算法進(jìn)行特征擴(kuò)展和文本重構(gòu),使用深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練IoC提取模型。最后,入侵檢測(cè)系統(tǒng)構(gòu)建模塊將提取出的IoC轉(zhuǎn)換為可以應(yīng)用于開(kāi)源入侵檢測(cè)系統(tǒng)Snort的規(guī)則,構(gòu)建入侵檢測(cè)系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,本系統(tǒng)能夠準(zhǔn)確分離出與安全事件相關(guān)的文章,提取出文章中的IoC信息,能夠有效為新的攻擊生成IDS規(guī)則。
在下一步的工作中,將匯總來(lái)自多個(gè)事件/來(lái)源的數(shù)據(jù)并與其它信息進(jìn)行補(bǔ)充,聚合IoC以便生成準(zhǔn)確率更高的IDS規(guī)則。