王星凱 吳復(fù)迪 童明凱 薛見新 張潤滋
1(綠盟科技集團(tuán)股份有限公司 北京 100089)2(清華大學(xué)信息科學(xué)技術(shù)學(xué)院 北京 100084)
隨著網(wǎng)絡(luò)攻防對抗的升級,安全研究人員提出多種類型的威脅檢測引擎用于檢測各種網(wǎng)絡(luò)威脅[1].在網(wǎng)絡(luò)安全運(yùn)營中,由于攻擊產(chǎn)生的數(shù)據(jù)包往往與正?;顒赢a(chǎn)生的數(shù)據(jù)包較為相似,如果攻擊檢測規(guī)則較為敏感,會產(chǎn)生大量告警誤報(bào)[2].在實(shí)際生產(chǎn)環(huán)境中,安全運(yùn)營人員需要對各種防護(hù)系統(tǒng)的告警進(jìn)行排查.為了過濾低價(jià)值告警,運(yùn)營人員通常會在長期的監(jiān)控值守工作中,基于自身的專家知識梳理并形成一套基線,基于基線進(jìn)行告警的分類分級,從而減輕自身的運(yùn)維工作量,如腳本代碼、運(yùn)營系統(tǒng)的自定義配置或者專有的操作文檔和流程等.但是建立此類基線高度依賴于運(yùn)營人員的自身技術(shù)水平和運(yùn)營場景的環(huán)境復(fù)雜度,要求運(yùn)營人員具備大量的專業(yè)知識,對企業(yè)正常業(yè)務(wù)特征能進(jìn)行識別,并且需要耗費(fèi)較長時(shí)間才能完成.
因此,為了應(yīng)對上述問題,本文提出一種智能的算法用于生成可解釋的網(wǎng)絡(luò)安全告警降噪基線.為了對告警載荷進(jìn)行數(shù)據(jù)挖掘,本文提出一種告警載荷攻擊意圖特征提取方法,對告警載荷中的編碼塊進(jìn)行遞歸識別和解碼,通過分組消重和計(jì)數(shù)統(tǒng)計(jì)得到統(tǒng)計(jì)特征向量,使用潛在狄利克雷分配(LDA)聚類方法選出具有代表性的樣本,訓(xùn)練支持向量回歸(SVR)模型提取告警載荷攻擊意圖向量.結(jié)合變種SimHash算法生成向量化表示,一方面表示告警載荷的攻擊意圖,另一方面對告警載荷相似度進(jìn)行評估.為了智能地生成告警降噪基線,將向量輸入深度自編碼器中,標(biāo)注重構(gòu)誤差較大的原始告警為異常,按原始告警的結(jié)構(gòu)化特征分組,確保在不匹配異常告警的前提下尋找生成過濾規(guī)則中匹配最多告警的規(guī)則集合,通過規(guī)則矯正器后得到降噪基線,以提升網(wǎng)絡(luò)安全運(yùn)營效率.
面向網(wǎng)絡(luò)攻擊檢測/防護(hù)系統(tǒng)產(chǎn)生的原始告警日志,安全運(yùn)營中心(security operations center, SOC)通過多種攻擊行為聚合規(guī)則、告警類型過濾基線以及各種機(jī)器學(xué)習(xí)算法模型等方案對告警進(jìn)行處理.但是信息過載導(dǎo)致的告警疲勞現(xiàn)象仍然是SOC所面臨的普遍問題之一[3],研究人員對此提出不同的解決方案.文獻(xiàn)[4]提出一種基于全流量的網(wǎng)絡(luò)安全基線生成方法,對網(wǎng)絡(luò)全流量數(shù)據(jù)進(jìn)行預(yù)處理,將處理后的數(shù)據(jù)進(jìn)行聚合等操作生成網(wǎng)絡(luò)安全基線,降低網(wǎng)絡(luò)安全基線生成的技術(shù)門檻;文獻(xiàn)[5]提出一種基于安全基線模型的網(wǎng)絡(luò)數(shù)據(jù)安全檢測方法,針對不同的時(shí)間窗口長度分別構(gòu)造不同的安全基線模型,通過生成基線之間的對比發(fā)現(xiàn)網(wǎng)絡(luò)環(huán)境異常狀態(tài)的告警.上述2種方案均以原始網(wǎng)絡(luò)流量作為模型輸入,且不包含專家知識的輸入,從而導(dǎo)致誤報(bào)較多,在復(fù)雜真實(shí)的工業(yè)場景中應(yīng)用效果并不好.文獻(xiàn)[6]提出一種基于用戶行為和實(shí)體分析技術(shù)(UEBA)進(jìn)行異常行為事件判斷的方法,通過對用戶的異常行為進(jìn)行判斷,緩解數(shù)據(jù)災(zāi)難的發(fā)生.基于UEBA建立基線的方案,容易受到正常業(yè)務(wù)波動的影響.針對告警的UEBA方案,大多都只考慮包括告警規(guī)則在內(nèi)的結(jié)構(gòu)化特征,然而網(wǎng)絡(luò)攻擊檢測系統(tǒng)的誤報(bào)率普遍較高,很多告警的類型和描述與對應(yīng)的實(shí)際網(wǎng)絡(luò)行為不符,導(dǎo)致面向告警的UEBA方案通常性能較低.在CPU等故障運(yùn)維[7]領(lǐng)域,通?;邳S金指標(biāo)等進(jìn)行特征工程,構(gòu)建模型來緩解告警疲勞.由于多種網(wǎng)絡(luò)協(xié)議和業(yè)務(wù)類型混合的網(wǎng)絡(luò)攻擊告警領(lǐng)域存在高危告警標(biāo)簽少且告警指標(biāo)定義困難等因素,導(dǎo)致其他領(lǐng)域的方案[8-12]無法應(yīng)用.在緊迫的安全應(yīng)急事件中,如果未能提前在對應(yīng)領(lǐng)域提取有效的特征,則無法人工建立有效的基線,面對海量的告警數(shù)量會影響攻擊的檢出率,進(jìn)而導(dǎo)致響應(yīng)速度降低.本文所提出的方法可以幫助網(wǎng)絡(luò)安全運(yùn)營人員在不了解公司環(huán)境和業(yè)務(wù)的情況下智能地生成告警降噪基線,過濾無用告警,減少待研判的低價(jià)值告警數(shù)量,緩解SOC面臨的數(shù)據(jù)災(zāi)難,提升告警管理的有效性和及時(shí)性.
智能化網(wǎng)絡(luò)安全告警降噪基線流程如圖1所示.首先,采集一定時(shí)間的原始告警,通過預(yù)設(shè)的規(guī)則組進(jìn)行過濾,如剔除不直接指示任何攻擊行為的告警(故障告警、日志類告警等),此類告警通常屬于低價(jià)值的告警.然后,對數(shù)據(jù)進(jìn)行預(yù)處理,采用攻擊意圖評估方法和變種SimHash算法處理載荷得到向量表示.將向量輸入智能化基線生成模型中得到降噪基線,經(jīng)后處理模塊研判后生成有效的告警降噪基線,原始告警輸入基線得到過濾后的告警,提供給運(yùn)營專家研判.
圖1 降噪基線流程
由于基線的生成需要挖掘告警載荷,提取向量表示,因此,刪除告警載荷為空的告警.此外,OSI傳輸層及以下的協(xié)議包的告警載荷通常與具體的應(yīng)用攻擊方法無關(guān),需要刪除告警載荷中對應(yīng)內(nèi)容.
2.1.1 載荷攻擊意圖提取
在真實(shí)的場景中,攻擊意圖較為復(fù)雜,本文通過試探性和利用性2個(gè)方面衡量各種攻擊意圖[13],攻擊意圖量化表示如圖2所示,其中,試探性分值表示確定漏洞是否存在的攻擊行為,利用性分值表示構(gòu)成實(shí)際危害的攻擊行為,如第二象限(低試探性、高利用性)的告警為高危類型的告警,即需要運(yùn)營人員高度關(guān)注的告警.
圖2 攻擊意圖量化表示
首先,去除無法評估攻擊意圖的告警(如故障告警、日志類告警等)和有明顯的攻擊意圖的告警(如掃描器告警、蠕蟲告警等),并對告警載荷中的編碼塊進(jìn)行遞歸識別和解碼,對解碼前后內(nèi)容中的常見模式(如文件路徑、IP地址等)進(jìn)行分組消重和計(jì)數(shù)統(tǒng)計(jì),將計(jì)數(shù)結(jié)果作為統(tǒng)計(jì)特征向量.對統(tǒng)計(jì)特征向量執(zhí)行LDA聚類,在輸出的每個(gè)主題中選取概率最高的若干個(gè)樣本,對其試探性和利用性分值進(jìn)行人工標(biāo)注,得到標(biāo)注訓(xùn)練集A.對已知攻擊行為的告警標(biāo)注試探性和利用性分值,得到標(biāo)注訓(xùn)練集B.將標(biāo)注訓(xùn)練集A和B合并,訓(xùn)練SVR模型.將實(shí)時(shí)告警數(shù)據(jù)產(chǎn)生的統(tǒng)計(jì)特征向量輸入該模型,得出告警的試探性和利用性分值的估計(jì)值,經(jīng)專家驗(yàn)證分值有誤的進(jìn)行修改加入標(biāo)注集,并重新訓(xùn)練模型.最終,將統(tǒng)計(jì)特征向量作為訓(xùn)練好的SVR模型的輸入得到表示攻擊意圖的特征向量.
2.1.2 變種SimHash算法
為了使向量表示能反映數(shù)據(jù)的相似度,需計(jì)算告警載荷的相似度.由于有些告警載荷是二進(jìn)制,無法使用基于切詞的文本相似度計(jì)算方法.本文提出一種變種SimHash提取告警載荷的哈希值.SimHash算法[14]是Google提出用于解決億萬級別的網(wǎng)頁去重任務(wù)的算法.在告警載荷處理中,如果按標(biāo)準(zhǔn)SimHash算法,滑動窗口步長為1,告警載荷長度為L,滑動窗口大小為W,則每次計(jì)算SimHash含L-W+1次常規(guī)哈希計(jì)算.原始告警數(shù)量龐大,且K?W,該算法無法實(shí)時(shí)處理告警.如果滑動窗口步長大于1,設(shè)步長為S(S>1),雖然能夠提升計(jì)算效率,但當(dāng)原始數(shù)據(jù)中插入或移除N個(gè)字節(jié),且N不是S的倍數(shù)時(shí),可能會導(dǎo)致變更點(diǎn)之后的哈希值發(fā)生變化,無法有效地評估告警載荷數(shù)據(jù)相似性.因此,本文提出一種基于RSync和CRC32的變種SimHash算法[15],可快速有效地進(jìn)行告警載荷相似度評估.
首先,設(shè)定超參數(shù)RSync窗口大小為W,平均切片大小為P.然后,在輸入數(shù)據(jù)上運(yùn)行RSync算法,當(dāng)某個(gè)位置的RSync校驗(yàn)和除以P的余數(shù)為0時(shí),在該位置進(jìn)行切片.再對每2個(gè)相鄰切片合并計(jì)算CRC32校驗(yàn)和,對每個(gè)校驗(yàn)和按位展開為32維向量,并將0替換為-1.這樣處理后向量疊加則不需要進(jìn)一步的標(biāo)準(zhǔn)化處理,且向量的模與數(shù)據(jù)原始長度成正相關(guān).最終,將展開后的所有向量相加,作為變種SimHash算法輸出的向量表示.其中,P值越大,計(jì)算速度越快,SimHash精度越低.
首先,采用無監(jiān)督學(xué)習(xí)的稀疏深度自編碼器[16]進(jìn)行異常檢測,將告警載荷攻擊意圖的特征向量和SimHash向量拼接,作為訓(xùn)練樣本的矩陣X輸入到自編碼器中.如式(1)所示,通過編碼函數(shù)Enc()把數(shù)據(jù)映射到低維特征空間中,再利用解碼函數(shù)Dec()重構(gòu)特征空間的表示,在編碼解碼過程中多層網(wǎng)絡(luò)和激活函數(shù)能捕獲高維輸入數(shù)據(jù)的非線性信息,當(dāng)自編碼器輸出的重構(gòu)誤差大于預(yù)設(shè)重構(gòu)誤差閾值時(shí),則確定所述告警載荷對應(yīng)的告警為異常.其中,自編碼的參數(shù)和閾值均應(yīng)根據(jù)實(shí)際場景中業(yè)務(wù)復(fù)雜程度進(jìn)行調(diào)整.由于告警載荷的分布并不均勻,按告警載荷的SimHash向量分組,并統(tǒng)計(jì)次數(shù),將次數(shù)的對數(shù)作為權(quán)重,形成自監(jiān)督學(xué)習(xí)樣本.例如,將相同的待訓(xùn)練的哈希值分為一組,該組中包括n個(gè)哈希值,則該組的訓(xùn)練權(quán)重為lgn.
minE[dist(X,Dec((EncX)))].
(1)
由于業(yè)務(wù)變化,任何模型在不同的攻擊場景中都無法做到異常告警召回率為100%.為了得到更有效且具備可解釋性的降噪基線,本文將告警按可識別特征字段的組合進(jìn)行分組,從告警數(shù)據(jù)字段中選取一些可直接識別的特征字段(如源地址、目的地址、目的端口、告警規(guī)則ID等),假設(shè)特征字段共有M個(gè),記為F={f1,f2,…,fM},統(tǒng)計(jì)每個(gè)分組內(nèi)的總告警數(shù)以及是否包含異常告警,得到一個(gè)列表A0,其中,每個(gè)元素都是三元組(特征字段列表及其取值的字典,告警數(shù),是否包含異常告警),搜索最佳的告警過濾規(guī)則集,具體步驟如下:
1) 初始化.設(shè)定超參數(shù)最大基線規(guī)則數(shù)為N,最小特征數(shù)為m,m≤M.
2) for eachfiinA0
刪除A0中每個(gè)三元組的fi字段,將其余特征相同的三元組合并,“告警數(shù)”取和,是否包含異常告警取或,合并后的三元組列表記為A1i;
end for
3) 合并A0和步驟2)中得到的所有列表,合并結(jié)果記為AS,刪除AS中所有是否包含異常告警為真(即包含異常告警)的三元組.
4) 將AS中其余的三元組按(告警數(shù),特征數(shù))降序,取TopN的三元組,其特征組合即為基線規(guī)則匹配條件.由于真實(shí)的攻擊告警屬于少數(shù),可解釋告警過濾規(guī)則算法可以將其映射在AS三元組的末端.
為了應(yīng)對不同的業(yè)務(wù)場景,增強(qiáng)告警降噪基線效果的魯棒性,需要設(shè)計(jì)后處理模塊.例如:開發(fā)不規(guī)范的Web應(yīng)用可能會在正常業(yè)務(wù)的請求參數(shù)中包含形似SQL代碼的內(nèi)容,并不斷引起SQL注入告警,當(dāng)此類告警的試探性和利用性均不高且大量出現(xiàn)時(shí),則有可能導(dǎo)致真實(shí)攻擊者發(fā)起的SQL注入攻擊被過濾.因此,針對上述自動化生成的可解釋告警過濾基線還需要進(jìn)一步處理,以生成有效的告警過濾基線.因此,本文設(shè)計(jì)一種規(guī)則矯正器(如圖3所示)修正告警過濾基線,確?;€上線運(yùn)行后,能夠匹配的告警所指示的實(shí)際行為不會超出基線生成時(shí)的預(yù)期.
圖3 規(guī)則矯正器
為了搭建模型分類器,首先統(tǒng)計(jì)告警過濾基線所匹配的原始告警的SimHash值去重后的數(shù)量C.若C值較小,則將對應(yīng)SimHash值包裝為哈希集合,新告警命中規(guī)則匹配條件(特征組合)后,其告警載荷SimHash值必須位于該哈希集合中,才認(rèn)為基線規(guī)則匹配成功.若C值較大,則以對應(yīng)SimHash值為樣本訓(xùn)練一個(gè)分類器,彌補(bǔ)上述方法中采用結(jié)構(gòu)化特征進(jìn)行匹配的欠擬合問題.由于單類支持向量機(jī)(OCSVM)僅針對一類樣本可以訓(xùn)練異常檢測模型,在噪聲樣本數(shù)據(jù)中能快速進(jìn)行訓(xùn)練,并具有一定的魯棒性,利用該方法對上述告警過濾基線進(jìn)行修正.通過模型分類器進(jìn)行修正告警過濾規(guī)則會基本排除無效的告警過濾規(guī)則,再由運(yùn)營人員人工對過濾規(guī)則進(jìn)行分析,最終,確保不存在無效的告警過濾規(guī)則.
為了使數(shù)據(jù)貼近于真實(shí)的企業(yè)生產(chǎn)環(huán)境,本文研究團(tuán)隊(duì)在某公司生產(chǎn)環(huán)境中利用幾種網(wǎng)絡(luò)側(cè)安全防護(hù)產(chǎn)品采集網(wǎng)絡(luò)側(cè)告警.期間確保公司各種業(yè)務(wù)正常開展,采集到的告警由多數(shù)正常業(yè)務(wù)行為和少數(shù)惡意攻擊行為構(gòu)成.在對抗期間部署在該公司的網(wǎng)絡(luò)安全設(shè)備每日產(chǎn)生的原始日志數(shù)量為千萬級別,告警數(shù)量為10萬級別.高危惡意攻擊告警的標(biāo)注以網(wǎng)絡(luò)對抗中得分攻擊隊(duì)伍的攻擊報(bào)告和自述為主,高危告警和日志數(shù)量占比為0.0883%.由于并未有任何公開包含載荷的網(wǎng)絡(luò)側(cè)告警數(shù)據(jù),因此,本文僅采用上述數(shù)據(jù)來評估效果.
通過載荷攻擊意圖提取方法得到特征向量的條件期望分布如圖4所示(橫軸為試探性分值,縱軸為利用性分值).從圖4可以看出攻擊意圖特征向量能根據(jù)試探性和利用性的維度將攻擊告警和無用告警分到不同簇中,同時(shí),也存在一些無法分類的告警簇.并且還可以看出載荷攻擊意圖提取方法可以有效提取載荷的攻擊特征,并能夠用于后續(xù)模型的檢測.
圖4 攻擊意圖向量均值分布
表1 告警過濾規(guī)則效果
圖5 累計(jì)基線過濾比
由于本文研究是首個(gè)以自編碼器等黑盒模型為基礎(chǔ)方法生成可解釋告警過濾基線的方案,因此,并沒有能進(jìn)行對比的方法,所以通過在實(shí)際運(yùn)營中的效果來佐證上述方法的有效性.針對其中1天的規(guī)則過濾進(jìn)行人工分析,如圖6所示,橫軸為過濾規(guī)則ID,縱軸為該規(guī)則的過濾告警比,包括3部分:規(guī)則矯正器之前的過濾規(guī)則、經(jīng)過矯正器后的告警過濾規(guī)則以及人工排查確定有效的告警規(guī)則.從圖6可以看出經(jīng)過矯正器后的告警過濾規(guī)則相比規(guī)則矯正器之前的過濾規(guī)則過濾數(shù)量有所減少,將減少的告警篩選出來,經(jīng)專家排查后,發(fā)現(xiàn)均為告警載荷明顯不同于其他告警的情況,這表明規(guī)則矯正器可以修正載荷類型不一致告警的過濾,以免導(dǎo)致載荷變動的告警中存在真實(shí)攻擊.此外,通過圖6對比人工排查確定有效的告警規(guī)則和規(guī)則矯正器之前的過濾規(guī)則可以看出,規(guī)則ID為14和規(guī)則ID為30的過濾規(guī)則被專家刪除,該2條規(guī)則均為Web業(yè)務(wù)開發(fā)不規(guī)范引起的SQL注入告警,并非由算法誤判而生成.由此可以看出本文提出的網(wǎng)絡(luò)安全告警降噪基線的智能生成方法能有效地針對不同場景建立智能的告警過濾基線,從而提升安全運(yùn)營效率.
隨著全球數(shù)字經(jīng)濟(jì)的蓬勃發(fā)展,如何打造智能化的網(wǎng)絡(luò)安全防護(hù)成為學(xué)術(shù)界和工業(yè)界的研究熱點(diǎn).基于人工智能的安全運(yùn)營技術(shù)方案(AISecOps)[17]將大幅提升威脅檢測、風(fēng)險(xiǎn)評估、自動化響應(yīng)等關(guān)鍵運(yùn)營環(huán)節(jié)的處理效率,大幅減少對專家經(jīng)驗(yàn)的依賴[18],助力網(wǎng)絡(luò)安全運(yùn)營產(chǎn)業(yè)的技術(shù)升級,其中,緩解網(wǎng)絡(luò)安全領(lǐng)域海量告警的問題是AISecOps所面臨的關(guān)鍵問題之一.
本文提出一種智能化網(wǎng)絡(luò)告警降噪基線的生成方法,幫助網(wǎng)絡(luò)安全運(yùn)營人員在不了解公司環(huán)境和業(yè)務(wù)的情況下建立降噪基線過濾告警,以此減輕運(yùn)營人員的工作量,降低威脅分析與響應(yīng)的周期,對于提升重大網(wǎng)絡(luò)安全事故預(yù)警和風(fēng)險(xiǎn)防控水平具有重要的科學(xué)意義和應(yīng)用價(jià)值.