林志興 ,王立可
(1. 三明學(xué)院網(wǎng)絡(luò)中心,福建三明365004; 2. 福建師范大學(xué)數(shù)學(xué)與信息學(xué)院,福州350007;3. 中國科學(xué)院成都計(jì)算機(jī)應(yīng)用研究所,成都610041)
網(wǎng)絡(luò)態(tài)勢(shì)是由各種網(wǎng)絡(luò)電子設(shè)備運(yùn)行狀況、網(wǎng)絡(luò)行為和用戶行為等因素構(gòu)成的整個(gè)網(wǎng)絡(luò)的當(dāng)前狀態(tài)和變化趨勢(shì)[1]。網(wǎng)絡(luò)態(tài)勢(shì)預(yù)測(cè)尤其是入侵檢測(cè)是網(wǎng)絡(luò)安全中的一個(gè)核心問題。將機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法引入網(wǎng)絡(luò)態(tài)勢(shì)預(yù)測(cè)中可以有效地識(shí)別異常和可疑活動(dòng),實(shí)現(xiàn)高效、準(zhǔn)確的網(wǎng)絡(luò)入侵檢測(cè),可以解決三類網(wǎng)絡(luò)態(tài)勢(shì)任務(wù),分別是:異常檢測(cè)與攻擊分類、加密攻擊檢測(cè)和零日漏洞檢測(cè)。異常檢測(cè)與攻擊分類指的是利用網(wǎng)絡(luò)通信協(xié)議自身存在的缺陷、用戶終端操作系統(tǒng)缺陷入侵網(wǎng)絡(luò);加密攻擊指的是利用加密技術(shù)來逃避防火墻和入侵;零日漏洞指的是被發(fā)現(xiàn)后立即被利用的安全漏洞,也稱零時(shí)差漏洞[2]。
網(wǎng)絡(luò)態(tài)勢(shì)檢測(cè)可分為三類:基于網(wǎng)絡(luò)的入侵檢測(cè)、基于主機(jī)的入侵檢測(cè)和混合的入侵檢測(cè)[3]?;谥鳈C(jī)的入侵檢測(cè)系統(tǒng)通過監(jiān)視多個(gè)主機(jī)并檢查網(wǎng)絡(luò)流量來檢測(cè)單個(gè)計(jì)算機(jī)上的惡意活動(dòng)?;诰W(wǎng)絡(luò)的入侵檢測(cè)通過檢測(cè)網(wǎng)絡(luò)流量來識(shí)別入侵。在基于網(wǎng)絡(luò)的入侵檢測(cè)中,傳感器位于網(wǎng)絡(luò)的瓶頸處,用于執(zhí)行監(jiān)視,通常是在非軍事區(qū)或網(wǎng)絡(luò)邊界上,并且捕獲所有的網(wǎng)絡(luò)流量。混合的入侵檢測(cè)通過分析應(yīng)用程序日志、系統(tǒng)調(diào)用、文件系統(tǒng)修改和其他主機(jī)狀態(tài)和活動(dòng)來檢測(cè)入侵[4]?;旌系娜肭謾z測(cè)指的是多種技術(shù)(如路由器和防火墻)一起使用,并根據(jù)多種行為數(shù)據(jù)[5]進(jìn)行決策。
進(jìn)行入侵檢測(cè)時(shí)最重要的一個(gè)過程就是從原始網(wǎng)絡(luò)數(shù)據(jù)中提取出流量的行為特征,行為特征可以分為統(tǒng)計(jì)特征、時(shí)序特征、協(xié)議特征和有效載荷特征四種。統(tǒng)計(jì)特征是整個(gè)網(wǎng)絡(luò)數(shù)據(jù)流中通過統(tǒng)計(jì)結(jié)果得出的,比如某個(gè)主機(jī)請(qǐng)求次數(shù)、域名系統(tǒng)(Domain Name System,DNS)服務(wù)器接收的數(shù)據(jù)包個(gè)數(shù)等,Rughan 等[6]的研究驗(yàn)證了統(tǒng)計(jì)特征用于分類可以得到較高精度的結(jié)果,模型在服務(wù)類型分類中僅5.1%錯(cuò)誤率。時(shí)間序列特征指的是數(shù)據(jù)包長度的序列、到達(dá)間隔時(shí)間序列和連續(xù)數(shù)據(jù)包的方向等,Yin等[7]使用數(shù)據(jù)包持續(xù)時(shí)間等特征在循環(huán)神經(jīng)網(wǎng)絡(luò)的模型進(jìn)行分類,并在KDD(Knowledge Discovery and Data mining)的公開數(shù)據(jù)集上取得了很好的結(jié)果。協(xié)議特征指的是通過提取網(wǎng)絡(luò)協(xié)議中的字段而得到的特征。有效載荷特征即通過提取基于TCP/UDP 傳輸中數(shù)據(jù)包的特定負(fù)載而獲取的特征。基于數(shù)據(jù)包載荷的檢測(cè)方法可以通過有效載荷特征來識(shí)別數(shù)據(jù)包[8],即能夠通過深度學(xué)習(xí)方法提取攻擊流量的有效載荷中隱含的特征信息,進(jìn)而識(shí)別異常流量。Yuan 等[9]使用連續(xù)流序列提取多個(gè)區(qū)域,并按照長度滑動(dòng)的時(shí)間窗生成三維特征圖,準(zhǔn)確率比傳統(tǒng)的機(jī)器學(xué)習(xí)方法高了5%。
近年來,Seq2Seq(Sequence to Sequence)模型由于其出色的表現(xiàn)除了在機(jī)器翻譯[10]任務(wù)中取得了非常顯著的效果以外,在其他領(lǐng)域也有了廣泛的應(yīng)用,如:Seq2Seq模型結(jié)合注意力機(jī)制在文本摘要任務(wù)取得了突破,2016 年 Nallapati 等[11]就使用該模型在兩個(gè)不同數(shù)據(jù)集上的評(píng)分均打破了歷史記錄;在自動(dòng)對(duì)話任務(wù)中,清華大學(xué)周昊等[12]利用Seq2Seq 模型與給定的上下文相關(guān)向量和情感選項(xiàng)(比如:開心、憂傷等)生成了與之對(duì)應(yīng)情緒的回復(fù);在中文詩詞生成任務(wù)中,Wang 等[13]在Seq2Seq模型的基礎(chǔ)上提出了Planning 模型,可以保證后面幾句詩詞在生成時(shí)與詩詞主題相關(guān);陶濤等[14]將Seq2Seq 模型用到了加油站時(shí)序數(shù)據(jù)異常檢測(cè)中,取得了不錯(cuò)的效果;近日,F(xiàn)acebook 人工智能研究院的 Lample 等[15]更是將該模型應(yīng)用到了數(shù)學(xué)統(tǒng)計(jì)和近似問題中,這種模型的性能要遠(yuǎn)超現(xiàn)在常用的能進(jìn)行符號(hào)運(yùn)算的工具,例如Mathematica、Matlab、Maple等。
盡管目前的網(wǎng)絡(luò)態(tài)勢(shì)檢測(cè)方法取得了不錯(cuò)的效果,但仍然存在很多問題,尤其是在特征構(gòu)造上,目前的特征構(gòu)造是完全基于人工的,這需要網(wǎng)絡(luò)安全維護(hù)者手動(dòng)構(gòu)造特征,這些特征的構(gòu)建完全是人類直覺驅(qū)動(dòng)的,并不能提取網(wǎng)絡(luò)數(shù)據(jù)中的深層次特征,而且目前網(wǎng)絡(luò)態(tài)勢(shì)檢測(cè)方法沒有充分利用網(wǎng)絡(luò)數(shù)據(jù)中的時(shí)序特征,這往往會(huì)使預(yù)測(cè)結(jié)果不盡人意。這些問題都是目前急需解決的,因此本文提出了網(wǎng)絡(luò)態(tài)勢(shì)預(yù)測(cè)方法DFS-Seq2Seq,以有效地解決上述問題。
深度特征合成(Deep Feature Synthesis,DFS)算法[16]是可以直接從關(guān)系數(shù)據(jù)集中自動(dòng)生成大量深度特征的算法。DFS能夠針對(duì)數(shù)據(jù)庫或日志文件中常見的多表格數(shù)據(jù)集和交易數(shù)據(jù)集自動(dòng)抽取融合大量特征。該算法的輸入是有關(guān)系相關(guān)的一組實(shí)體,算法定義了多種數(shù)學(xué)函數(shù)使用三種方式生成特征,這三種方式分別為efeat、dfeat、rfeat。上面描述的相關(guān)表示和定義如下:
實(shí)體(Entity)表示為 E1,2,…,K,每個(gè)實(shí)體中都有唯一標(biāo)識(shí),每個(gè)實(shí)體中有J個(gè)特征表示第k個(gè)實(shí)體的第i個(gè)實(shí)例特征j的值。三種類型的特征計(jì)算方式分別為:
1)efeat:依次對(duì) xi,j′應(yīng)用計(jì)算函數(shù)。直接計(jì)算每個(gè)屬性的值合成特征,這些特征可由式(1)表示:
2)dfeat:相關(guān)實(shí)體 e ∈ Ek中的特征被直接轉(zhuǎn)移為 m ∈ Ek的特征。
算法為給定實(shí)體合成的特征數(shù)量z由式(3)給出:
算法的目的就是為實(shí)體 E1,2,…,K提取生成新的 rfeat,dfeat和efeat特征。同時(shí),和EK具有前向關(guān)系的表稱為EF(多對(duì)一,可以進(jìn)行dfeat 特征合成),具有后向關(guān)系的表稱為EB(一對(duì)多,可以進(jìn)行rfeat 特征合成)。深度特征合成算法模型如圖1所示。
圖1 深度特征合成算法模型結(jié)構(gòu)Fig. 1 Structure of deep feature synthesis algorithm
自動(dòng)編碼器(AutoEncoder,AE)通過重建輸入的神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程實(shí)現(xiàn)降維。AutoEncoder 通過神經(jīng)網(wǎng)絡(luò)的訓(xùn)練后會(huì)在隱藏層中得到一個(gè)代表輸入數(shù)據(jù)的低維向量[17]。如果它的解碼器是線性重建數(shù)據(jù),可以用均方誤差(Mean Square Error,MSE)來表示它的損失函數(shù),由式(4)表示:
如果解碼器選擇Sigmoid 作為激活函數(shù),那么AutoEncoder的損失函數(shù)如式(5)所示:
AutoEncoder的模型結(jié)構(gòu)如圖2。
圖2 自動(dòng)編碼器結(jié)構(gòu)Fig. 2 Structure of AE
長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)是一種時(shí)間循環(huán)神經(jīng)網(wǎng)絡(luò),是為了解決一般的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)存在的長期依賴問題而專門設(shè)計(jì)出來的,RNN 在處理長序列時(shí)會(huì)出現(xiàn)梯度消失的問題,LSTM 很好地解決了這個(gè)問題[18]。LSTM 有三種類型的門結(jié)構(gòu)能夠讓信息在序列中傳遞下去:遺忘門、輸入門和輸出門。LSTM網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 LSTM網(wǎng)絡(luò)結(jié)構(gòu)Fig. 3 LSTM network structure
遺忘門的功能是決定應(yīng)丟棄或保留哪些信息。來自前一個(gè)隱藏狀態(tài)的信息和當(dāng)前輸入的信息同時(shí)傳遞到sigmoid 函數(shù)中去,輸出值位于0~1。遺忘門信息傳遞可由式(6)表示:
輸入門的作用是更新細(xì)胞狀態(tài)。首先將前一層隱藏狀態(tài)的信息和當(dāng)前輸入的信息傳遞到sigmoid 函數(shù)中去,將值調(diào)整到0~1 來決定要更新哪些信息。輸入門信息傳遞可由式(7)表示:
輸出門用來確定下一個(gè)隱藏狀態(tài)的值,隱藏狀態(tài)包含了先前輸入的信息。首先,將前一個(gè)隱藏狀態(tài)和當(dāng)前輸入傳遞到sigmoid 函數(shù)中,然后將新得到的細(xì)胞狀態(tài)傳遞給tanh 函數(shù)。最后將tanh 函數(shù)的輸出與sigmoid 函數(shù)的輸出相乘,以確定隱藏狀態(tài)應(yīng)攜帶的信息;再將隱藏狀態(tài)作為當(dāng)前細(xì)胞的輸出,把新的細(xì)胞狀態(tài)和新的隱藏狀態(tài)傳遞到下一個(gè)時(shí)間步長中去。每個(gè)LSTM 單元的計(jì)算如式(8)~(11)所示,其中σ 和⊙分別是sigmoid函數(shù)和元素乘法。
基于上述網(wǎng)絡(luò)態(tài)勢(shì)研究現(xiàn)狀,本文提出了DFS-Seq2Seq深度特征網(wǎng)絡(luò)態(tài)勢(shì)檢測(cè)方法,該方法使用DFS 算法解決了手動(dòng)特征提取費(fèi)時(shí)費(fèi)力、容易遺漏且不能提取深層次特征的問題。本文方法選擇了兩層的雙向長短期記憶(Bi-directional Long Short-Term Memory,Bi-LSTM)網(wǎng)絡(luò)來構(gòu)造Seq2Seq模型,可以充分地?cái)M合特征中的前后關(guān)系和深層次關(guān)系,能大大提升模型的性能。原始數(shù)據(jù)中的數(shù)據(jù)格式不統(tǒng)一,如果使用傳統(tǒng)特征工程需要手動(dòng)提取數(shù)據(jù)中的特征,會(huì)浪費(fèi)大量時(shí)間,還可能會(huì)產(chǎn)生特征遺漏的現(xiàn)象,所以本文使用了深度特征合成算法自動(dòng)提取融合特征,先將每個(gè)網(wǎng)絡(luò)端口收集到的數(shù)據(jù)按照相同的時(shí)間間隔劃分,然后把來自同一源的數(shù)據(jù)匯集并抽象成實(shí)體,再利用DFS 算法對(duì)抽象為實(shí)體的數(shù)據(jù)組進(jìn)行特征合成,具體表現(xiàn)為前文中提到的efeat、dfeat、rfeat 三種特征合成方式,通過大量的預(yù)設(shè)特征構(gòu)建方式可根據(jù)不同格式數(shù)據(jù)自動(dòng)提取構(gòu)造大量的特征,從而節(jié)約特征工程所消耗的時(shí)間,提高模型構(gòu)造效率。通過DFS 算法得到一個(gè)特征集合,該集合內(nèi)的特征由于是自動(dòng)合成的,數(shù)量非常龐大,可能數(shù)百或上千,此時(shí)若直接將特征向量作為判別模型的輸入會(huì)因?yàn)榫S度太大而影響模型效果,因此本文使用自動(dòng)編碼器來壓縮特征向量,減少特征向量維度,以提高模型訓(xùn)練速度。在處理數(shù)據(jù)完成后本文分別針對(duì)危險(xiǎn)操作與正常操作分類和危險(xiǎn)操作持續(xù)時(shí)間預(yù)測(cè)分別訓(xùn)練了分類模型和回歸模型,整個(gè)模型的流程如圖4所示。
圖4 DFS-Seq2Seq算法流程Fig. 4 Flowchart of DFS-Seq2Seq algorithm
本文中提到的DFS算法具體做法是對(duì)清洗過后的數(shù)據(jù)作深度特征合成,偽代碼如算法1所示。
算法1 深度特征合成算法DFS。
輸入 網(wǎng)絡(luò)日志中互連的實(shí)體E1,2,…,K;
輸出 合成的特征集合F。
1)初始化實(shí)體集合 Ei、E1:M、EV。
2)將實(shí)體中相關(guān)聯(lián)的實(shí)體依照連接關(guān)系連接。
3)構(gòu)造后向關(guān)系實(shí)體集合 EB= Backward(Ei,E1,2,…,M)和前向?qū)嶓w集合 EF= Forward(Ei,E1,2,…,M)。
4)遍歷全部實(shí)體,若Ej包含在EB中,則進(jìn)行rfeat 特征構(gòu)造且構(gòu)造的特征并入F。
5)再次遍歷全部實(shí)體,若Ej∈EV則跳過該實(shí)體,否則進(jìn)行步驟6)~7)。
6)合成構(gòu)造Ei與Ej相關(guān)的dfeat 特征并將合成的特征并入F。
7)對(duì)Ei單個(gè)集合合成構(gòu)造efeat特征并將特征并入F。
DFS 算法挖掘了大量網(wǎng)絡(luò)態(tài)勢(shì)與特征之間的關(guān)聯(lián),特征集合源自數(shù)據(jù)集中數(shù)據(jù)點(diǎn)之間的關(guān)系,對(duì)于網(wǎng)絡(luò)中不同數(shù)據(jù)源點(diǎn)收集到的數(shù)據(jù)集,很多特征是采用數(shù)學(xué)運(yùn)算及函數(shù)得到的,比如對(duì)一列數(shù)據(jù)求和、求均值、求方差等,這些與數(shù)據(jù)集本身無關(guān)的操作,定義為基元。DFS 還可以通過先前獲取的特征跨實(shí)體應(yīng)用基元派生出來新特征,通過設(shè)置搜索的最大深度參數(shù)deep可以控制創(chuàng)建特征的復(fù)雜度。
在對(duì)原始數(shù)據(jù)進(jìn)行處理之后產(chǎn)生了大量的特征,這些特征往往是提取的深層次的冗余特征,為了防止冗余特征對(duì)模型造成負(fù)面影響,本文選擇了自動(dòng)編碼器對(duì)特征進(jìn)行降維。同時(shí)為了使自動(dòng)編碼器在受到一定程度的擾動(dòng)時(shí)具有不變性,有很多種改進(jìn)的辦法,普遍的做法是對(duì)權(quán)值進(jìn)行懲罰,此時(shí)AutoEncoder數(shù)學(xué)表達(dá)形式如式(1)所示:
上述改進(jìn)方法在本文應(yīng)用中效果并不理想,因此本文使用了Contractive AutoEncoder,它在AutoEncoder 上加入了雅克比矩陣的規(guī)則項(xiàng),具體如式(2)所示:
其中:Jf(x)是關(guān)于隱含層輸出值權(quán)重的雅克比矩陣,而表示的是雅克比矩陣的F范數(shù)的平方,即雅克比矩陣中每個(gè)元素求平方。
最后求和即可得到如式(4)所示的結(jié)果:
如此改進(jìn)可以使得隱藏層向量對(duì)輸入數(shù)據(jù)的微小的變動(dòng)能夠有更強(qiáng)的魯棒性,增強(qiáng)模型的擬合能力。算法流程如算法2所示。
算法2 DFS-Seq2Seq深度特征網(wǎng)絡(luò)態(tài)勢(shì)預(yù)測(cè)方法。
輸入 服務(wù)器接收的身份驗(yàn)證日志(auth)、計(jì)算機(jī)與服務(wù)器接收進(jìn)程(proc)、中央路由器接收的網(wǎng)絡(luò)流事件(flow)、域名系統(tǒng)(DNS)服務(wù)器收集的域名服務(wù)查找事件(dns)、身份驗(yàn)證數(shù)據(jù)中獲取的特定危險(xiǎn)事件(redteam);
輸出 每條身份驗(yàn)證日志是否為危險(xiǎn)事件及危險(xiǎn)事件持續(xù)時(shí)間。
1)初始化參數(shù)DFS算法合成深度deep,一般取值為2~4。
2)日志數(shù)據(jù)清洗,刪除無效、重復(fù)、錯(cuò)誤日志數(shù)據(jù)。
3)選擇合適的時(shí)間間隔對(duì)數(shù)據(jù)進(jìn)行劃分。
4)使用DFS算法對(duì)每個(gè)時(shí)間內(nèi)的數(shù)據(jù)合成日志實(shí)體的深度為deep的特征。
5)用 Contractive Autoencoder 編碼器對(duì)步驟 3)中合成的深度特征進(jìn)行提取。
6)將編碼之后的特征向量按照時(shí)序排列以保證模型接收數(shù)據(jù)時(shí)為正常的時(shí)間序列ordertime(log_id)。
7)使用雙層的Bi-LSTM 模型構(gòu)造判別模型的Encoder,其中每一步的輸入為上一步中的特征向量。
8)構(gòu)造Decoder,在訓(xùn)練過程中,將Encoder最后產(chǎn)生的上下文相關(guān)向量作為輸入傳給Decoder端LSTM的開始。
9)將 Encoder 和 Decoder 連 接 起 來 構(gòu) 造 Seq2Seq 判 別模型。
10)使用判別模型對(duì)日志數(shù)據(jù)進(jìn)行判斷,找出用戶行為中的危險(xiǎn)操作。
11)若步驟9)中的預(yù)測(cè)結(jié)果是危險(xiǎn)行為,則使數(shù)據(jù)轉(zhuǎn)到預(yù)測(cè)時(shí)間模型,其模型的構(gòu)建與步驟5)~8)相似;若判別為安全行為,則轉(zhuǎn)去處理其他日志數(shù)據(jù)。
12)對(duì)危險(xiǎn)行為報(bào)警并采取相應(yīng)的應(yīng)對(duì)措施。
Seq2Seq模型的訓(xùn)練是本文中的關(guān)鍵內(nèi)容。Seq2Seq模型的主要思路是將一種循環(huán)深度神經(jīng)網(wǎng)絡(luò)模型作為基本單元,把輸入的序列映射為一個(gè)向量然后再生成輸出序列,這一過程由編碼(Encoder)輸入與解碼(Decoder)輸出兩個(gè)環(huán)節(jié)組成,前者負(fù)責(zé)把序列編碼成一個(gè)固定長度的向量,這個(gè)向量作為輸入傳給后者,輸出可變長度的向量。一般的Seq2Seq 模型結(jié)構(gòu)如圖5所示。
圖5 Seq2Seq模型結(jié)構(gòu)Fig. 5 Seq2Seq model structure
X =(x1,x2,…,xn)表示編碼器的輸入,在本文中是不同時(shí)刻原始數(shù)據(jù)中提取的特征向量;Y =(y1,y2,…,yM)表示解碼器的輸出,在本文中是判別值或回歸值。本文實(shí)驗(yàn)中,編碼器的隱藏層包含300 個(gè)隱藏單元,且每一個(gè)隱藏元在t時(shí)刻由式(5)~(7)計(jì)算:
并且為了簡(jiǎn)化公式,本文公式皆不考慮偏置項(xiàng)biases,且令初始的隱藏層參數(shù)為0。當(dāng)?shù)贜 個(gè)特征向量輸入編碼參與編碼后,則可由c = tanh(VhN)計(jì)算出上下文相關(guān)向量。Encoder 在最后一個(gè)輸入之后計(jì)算出的上下文向量即是Decoder的輸入為h′0= tanh(V′c)。
本文使用′來區(qū)分在Encoder 和Decoder 之中的各個(gè)參數(shù),則在解碼器中t時(shí)刻的隱層單元可由式(8)計(jì)算。
其中:
其中:e(y0)表示全零向量,表示Decoder 的開始;e(y)表示Decoder 每一步的輸出結(jié)果。與Encoder 不同的是,Decoder 在每一個(gè)時(shí)刻會(huì)依照概率生成標(biāo)簽值,這個(gè)值的計(jì)算方法如式(12)所示:
則第i個(gè)元素可由式(13)、(14)計(jì)算:
本文中Encoder 的輸入序列是不同時(shí)刻計(jì)算機(jī)源提取的特征,這些輸入通過編碼后在編碼器的最后以上下文相關(guān)向量c的形式輸出,也就是該上下文相關(guān)向量c包含了輸入序列的信息,在Decoder 部分該向量作為輸入?yún)⑴c模型預(yù)測(cè),從而模型預(yù)測(cè)結(jié)果是依賴于上下文相關(guān)向量的,而向量c 又由輸入特征向量編碼而來,所以網(wǎng)絡(luò)異常的預(yù)測(cè)是依賴于模型輸入特征的。
為了驗(yàn)證本文算法的有效性,采用Python 語言在Windows 平臺(tái)進(jìn)行了實(shí)現(xiàn),并進(jìn)行了一系列的實(shí)驗(yàn)驗(yàn)證,其實(shí)驗(yàn)環(huán)境為:Intel-Core i7-8750U2.20 GHz 處理器,24 GB 運(yùn)行內(nèi)存,64 位Windows 10 操作系統(tǒng)。本文使用的數(shù)據(jù)集為Kent2016,該數(shù)據(jù)集是從洛斯阿拉莫斯國家實(shí)驗(yàn)室的公司內(nèi)部計(jì)算機(jī)網(wǎng)絡(luò)中的5 個(gè)來源收集的連續(xù)58 d 的未標(biāo)識(shí)事件數(shù)據(jù)。數(shù)據(jù)集中包括以下內(nèi)容:
1)來自單個(gè)計(jì)算機(jī)和集中式Active Directory 域控制器服務(wù)器的基于Windows的身份驗(yàn)證事件;
2)來自單個(gè)Windows計(jì)算機(jī)的啟動(dòng)和停止事件;
3)內(nèi)部DNS服務(wù)器上收集的域名服務(wù)事件;
4)在幾個(gè)關(guān)鍵路由器位置收集的網(wǎng)絡(luò)流數(shù)據(jù);
5)一系列定義明確的危險(xiǎn)報(bào)警分組事件。
數(shù)據(jù)集刪除了知名的管理員賬戶的標(biāo)識(shí),但并未刪除標(biāo)識(shí)與系統(tǒng)相關(guān)的特定用戶(系統(tǒng)服務(wù)和本地服務(wù));而且在網(wǎng)絡(luò)流數(shù)據(jù)中,未刪除識(shí)別眾所周知的端口(例如80、443 等)。關(guān)于數(shù)據(jù)集的描述如表1所示。
表1 Kent2016 數(shù)據(jù)集描述Tab. 1 Kent2016 dataset description
為了預(yù)測(cè)網(wǎng)絡(luò)態(tài)勢(shì)是否安全,訓(xùn)練了Seq2Seq 分類模型,分類模型中Seq2Seq 訓(xùn)練時(shí)Encoder 使用的是時(shí)間序列的特征向量,Decoder 的輸出為網(wǎng)絡(luò)是否安全的代表值:本文實(shí)驗(yàn)中網(wǎng)絡(luò)態(tài)勢(shì)健康輸出0,即沒有危險(xiǎn)事件發(fā)生;網(wǎng)絡(luò)態(tài)勢(shì)不健康輸出1,即可能會(huì)有危險(xiǎn)事件發(fā)生。當(dāng)網(wǎng)絡(luò)態(tài)勢(shì)預(yù)測(cè)為不健康時(shí),本文訓(xùn)練了回歸Seq2Seq 模型預(yù)測(cè)危險(xiǎn)態(tài)勢(shì)持續(xù)的時(shí)間,該模型與分類模型不同的是:Seq2Seq 輸出的是一個(gè)值而不是一個(gè)二分類結(jié)果,該值代表的是危險(xiǎn)態(tài)勢(shì)持續(xù)的時(shí)間。由于模型可以根據(jù)歷史數(shù)據(jù)對(duì)未來的態(tài)勢(shì)作出預(yù)測(cè),所以當(dāng)網(wǎng)絡(luò)數(shù)據(jù)流中產(chǎn)生的日志數(shù)據(jù)通過分類模型預(yù)測(cè)結(jié)果為1時(shí),就會(huì)產(chǎn)生網(wǎng)絡(luò)預(yù)警并通過回歸模型預(yù)測(cè)出危險(xiǎn)持續(xù)的時(shí)間。
基于數(shù)據(jù)預(yù)測(cè)網(wǎng)絡(luò)事件是否為危險(xiǎn)事件的模型評(píng)價(jià)中,本文使用了三個(gè)評(píng)價(jià)指標(biāo),分別是:準(zhǔn)確率Acc(Accuracy)、召回率Re(Recall)和F1(F1-Score)。首先定義樣例總數(shù)為N,則真正例TP(True Positive)表示被模型預(yù)測(cè)為正的正樣本;假正例FP(False Positive)表示被模型預(yù)測(cè)為正的負(fù)樣本;假負(fù)例FN(False Negative)表示被模型預(yù)測(cè)為負(fù)的正樣本;真負(fù)例TN(True Negative)表示被模型預(yù)測(cè)為負(fù)的負(fù)樣本。則Accuracy、Recall和F1分別由式(1)~(3)計(jì)算:
實(shí)驗(yàn)中選取了以下四種常用的分類算法與本文提出的DFS-Seq2Seq模型進(jìn)行對(duì)比:
1)支持向量機(jī)(Support Vector Machine,SVM)。利用升維把低維樣本向高維空間作映射,使原本在低維樣本空間中非線性可分的問題轉(zhuǎn)化為在特征空間中線性可分的問題,尋找一個(gè)超平面來對(duì)樣本進(jìn)行分割[19]。
2)貝葉斯(Bayes)。利用概率統(tǒng)計(jì)知識(shí)進(jìn)行分類的算法,使用貝葉斯定理來預(yù)測(cè)一個(gè)未知類別的樣本屬于各個(gè)類別的可能性,選擇其中可能性最大的一個(gè)類別作為該樣本的最終類別。
3)隨機(jī)森林(Random Forest,RF)。用多棵決策樹隨機(jī)地建立一個(gè)森林分類器,當(dāng)有一個(gè)新的輸入樣本進(jìn)入時(shí),就讓森林中的每一棵決策樹分別進(jìn)行判斷,然后看哪一類被選擇最多,就預(yù)測(cè)這個(gè)樣本為哪一類[20]。
4)長短期記憶(LSTM)網(wǎng)絡(luò)。是一種特殊的RNN,能夠?qū)W習(xí)長期依賴性。LSTM 單元由單元、輸入門、輸出門和忘記門組成。該單元記住任意時(shí)間間隔內(nèi)的值,并且三個(gè)門控制進(jìn)出單元的信息流。本文采用最常用的LSTM 分類器作為對(duì)比實(shí)驗(yàn)。
為了使本文算法和其他算法更好地進(jìn)行對(duì)比,本文采用了10 折交叉驗(yàn)證對(duì)數(shù)據(jù)集進(jìn)行測(cè)試和評(píng)價(jià),并且在實(shí)驗(yàn)之前將所用的數(shù)據(jù)順序隨機(jī)打亂之后再從中隨機(jī)抽取部分?jǐn)?shù)據(jù)進(jìn)行實(shí)驗(yàn)。表2 給出了本文DFS-Seq2Seq 算法采用不同的特征合成深度和其他四種對(duì)比算法(SVM、RF、Bayes、LSTM)分別在準(zhǔn)確率、召回率和F1-Score 上的實(shí)驗(yàn)對(duì)比結(jié)果,其中deep是在特征合成時(shí)所使用的深度,實(shí)驗(yàn)中選擇了最常用的2層和3層進(jìn)行實(shí)驗(yàn)。
根據(jù)表2可以看出:本文提出的算法模型DFS-Seq2Seq在deep= 2 時(shí)的準(zhǔn)確率較SVM、Bayes 和LSTM 分別提升4.0%、1.5%、1.1%;在deep= 3 時(shí),準(zhǔn)確率提升分別為4.3%、1.8%、0.56%。但對(duì)于準(zhǔn)確率而言,不論deep如何取值,本文DFSSeq2Seq 算法都要低于RF 算法,說明它在準(zhǔn)確率上的提升效果并不顯著,這是因?yàn)閿?shù)據(jù)集中負(fù)樣本很少,數(shù)據(jù)極度不均衡,實(shí)驗(yàn)中用的對(duì)比模型RF 雖看起來準(zhǔn)確率較高,但實(shí)際上模型并沒有擬合數(shù)據(jù)集,只是將所有樣本都預(yù)測(cè)為正常。本文更關(guān)心的是全部的危險(xiǎn)事件被模型識(shí)別出來多少,需要使用危險(xiǎn)事件的召回率,從實(shí)驗(yàn)數(shù)據(jù)中可以看出:在deep= 2時(shí),DFS-Seq2Seq算法比其他四種算法模型的召回率提升分別為 7.4%、11.5%、6.5%、3.0%;在deep= 3 時(shí),提升分別為7.2%、13.1%、6.3%、3.5%。通過這些數(shù)據(jù)可以看出,在最能說明問題的召回率指標(biāo)上,DFS-Seq2Seq 算法提升顯著,說明該算法對(duì)危險(xiǎn)事件識(shí)別的性能比其他算法模型要好;而在準(zhǔn)確率上表現(xiàn)最好的RF模型召回率最差,這也正好印證了之前所說的該模型沒有擬合數(shù)據(jù)的說法。進(jìn)一步使用F1-Score 評(píng)價(jià)指標(biāo)來看:在deep= 2 時(shí),DFS-Seq2Seq 算法的性能比其他四種算法分別提升5.9%、4.4%、6.2%、5.1%;在deep= 3 時(shí),提升分別為5.3%、4.0%、6.1%、4.3%。從這幾組數(shù)據(jù)的對(duì)比來看,DFS-Seq2Seq 算法的性能均遠(yuǎn)遠(yuǎn)優(yōu)于對(duì)比算法,充分說明了該算法的優(yōu)勢(shì)。
為更清晰地展示本文算法訓(xùn)練模型的預(yù)測(cè)性能,在Accuracy、Recall和F1 下分別設(shè)置epoch={1,20,…,200},采用10 折交叉驗(yàn)證法對(duì)數(shù)據(jù)集進(jìn)行評(píng)測(cè),結(jié)果如圖6 所示。從圖6 中可以看出,隨著訓(xùn)練迭代次數(shù)的增加,模型的準(zhǔn)確率、召回率和F1-Score 評(píng)價(jià)指標(biāo)均呈現(xiàn)出上升的趨勢(shì),且在上升至一定值后,趨于一個(gè)穩(wěn)定的狀態(tài),然后隨著迭代次數(shù)的增加,準(zhǔn)確率、召回率和F1-Score 評(píng)價(jià)又略微下降。這說明實(shí)驗(yàn)中的模型通過訓(xùn)練具備了擬合數(shù)據(jù)的能力,且通過觀察準(zhǔn)確率和F1-Score 的大小可以看出模型的分類效果很不錯(cuò);隨著訓(xùn)練迭代次數(shù)的增加,模型的評(píng)價(jià)值有所下降,其原因是過度的訓(xùn)練使模型產(chǎn)生了過擬合,所以在實(shí)際訓(xùn)練模型時(shí)應(yīng)當(dāng)選擇合適的訓(xùn)練迭代次數(shù)。在本文所設(shè)計(jì)的實(shí)驗(yàn)中,迭代次數(shù)約為80 時(shí)達(dá)到最佳,此時(shí)的模型準(zhǔn)確率為0.891,召回率為0.958,F(xiàn)1-Score 為0.823,模型的評(píng)價(jià)值達(dá)到了最好狀態(tài),再繼續(xù)迭代訓(xùn)練可能會(huì)產(chǎn)生過擬合。
表2 各算法的準(zhǔn)確率、召回率和F1-Score評(píng)價(jià)對(duì)比Tab. 2 Comparison of accuracy,recall and F1-score of various algorithms
圖6 評(píng)價(jià)值隨迭代次數(shù)變化Fig. 6 Evaluation value varying with iteration times
在對(duì)危險(xiǎn)事件持續(xù)時(shí)間預(yù)測(cè)的模型評(píng)價(jià)中,選擇了以下三種經(jīng)典的回歸算法與本文提出的DFS-Seq2Seq 算法作對(duì)比:
1)線性回歸(Linear Regression)。使用多個(gè)獨(dú)立輸入變量(特征變量)和輸出因變量之間的關(guān)系創(chuàng)建模型,模型保持線性,輸出是輸入變量的線性組合。
2)多項(xiàng)式回歸(Polynomial Regression)。使用一個(gè)因變量與一個(gè)或多個(gè)自變量間多項(xiàng)式的回歸分析方法
3)嶺回歸(Ridge Regression)。目標(biāo)函數(shù)在一般線性回歸的基礎(chǔ)上加入了正則項(xiàng),在保證最佳擬合誤差的同時(shí),使得參數(shù)盡可能地“簡(jiǎn)單”,使模型的泛化能力更強(qiáng)(即不過分相信從訓(xùn)練數(shù)據(jù)中學(xué)到的知識(shí))。正則項(xiàng)通常采用一、二范數(shù),使得模型更具有泛化性,同時(shí)可以解決線性回歸中不可逆情況[21]。
基于用戶數(shù)據(jù)預(yù)測(cè)危險(xiǎn)事件持續(xù)時(shí)間的模型評(píng)價(jià)中,本文采用了兩個(gè)經(jīng)典評(píng)價(jià)指標(biāo),分別是平均絕對(duì)誤差(Mean Absolute Error,MAE)和決定系數(shù)(R-Square),反映了算法預(yù)測(cè)危險(xiǎn)持續(xù)時(shí)間的準(zhǔn)確度。假定用戶危險(xiǎn)操作持續(xù)時(shí)間為t_real,持續(xù)時(shí)間平均值為t_mean,模型對(duì)該用戶危險(xiǎn)操作時(shí)間的預(yù)測(cè)為t_predict,則評(píng)價(jià)指標(biāo)MAE 和R-Square 對(duì)模型的評(píng)價(jià)分別由式(4)、式(5)計(jì)算:
表3 給出了DFS-Seq2Seq 危險(xiǎn)事件持續(xù)時(shí)間預(yù)測(cè)模型使用不同的特征合成深度與其他三種回歸算法(線性回歸、多項(xiàng)式回歸、嶺回歸)在MAE 和R-Square 評(píng)價(jià)準(zhǔn)則下的實(shí)驗(yàn)結(jié)果。由表 3 數(shù)據(jù)可知,DFS-Seq2Seq 算法在deep= 2 時(shí)在 MAE 評(píng)價(jià)(MAE 的值越低算法的性能越好)下相較于其他三種算法提升分別為13.5%、7.5%、6.1%,在deep= 3 時(shí)提升分別為10.9%、7.4%、6.3%;在R-Square 評(píng)價(jià)準(zhǔn)則(R-Square 值越高算法的性能越好)下,DFS-Seq2Seq 算法在deep= 2 時(shí)比另外三種算法性能提升分別為28.0%、20.9%、10.5%,在deep= 3時(shí)性能提升分別為28.7%、22.0%、10.4%。通過這組數(shù)據(jù)和分析可以發(fā)現(xiàn)DFS-Seq2Seq 算法在預(yù)測(cè)危險(xiǎn)事件持續(xù)時(shí)間方面比其他算法有了極大的提升。本文實(shí)驗(yàn)還有一個(gè)比較有意思的現(xiàn)象就是在采用特征合成深度即deep= 3 時(shí),模型的效果幾乎都比deep= 2 時(shí)要好一些,這是因?yàn)樵诤铣商卣魃疃葹?時(shí)已經(jīng)包含了深度為2的所有特征,并且深度的增加挖掘了數(shù)據(jù)中更多的信息,在實(shí)際應(yīng)用該方法時(shí)應(yīng)選擇實(shí)體間最深關(guān)系深度作為deep的值以保證挖掘到更多數(shù)據(jù)中的信息。
表3 各算法的MAE和R-Square評(píng)價(jià)指標(biāo)對(duì)比Tab. 3 Comparison of MAE and R-Square of various algorithms
綜上可知,本文提出的DFS-Seq2Seq 深度特征網(wǎng)絡(luò)態(tài)勢(shì)預(yù)測(cè)方法使用了DFS算法可以挖掘數(shù)據(jù)中的深層次信息并合成特征,隨后使用本文設(shè)計(jì)的Seq2Seq 模型可以充分?jǐn)M合這些數(shù)據(jù),從而無論是在對(duì)危險(xiǎn)事件識(shí)別還是在危險(xiǎn)事件持續(xù)時(shí)間預(yù)測(cè)上均比對(duì)比算法更加出色,進(jìn)一步可以更加有效地對(duì)網(wǎng)絡(luò)中的危險(xiǎn)事件進(jìn)行預(yù)測(cè),達(dá)到及時(shí)阻止網(wǎng)絡(luò)非法入侵、維護(hù)網(wǎng)絡(luò)安全的目的。
維護(hù)網(wǎng)絡(luò)安全一直都是一項(xiàng)十分重要的任務(wù),網(wǎng)絡(luò)安全可以保證社會(huì)的穩(wěn)定和每個(gè)網(wǎng)絡(luò)用戶的隱私不被侵犯。隨著網(wǎng)絡(luò)入侵者的手段變得更加復(fù)雜多樣,不難發(fā)現(xiàn)傳統(tǒng)的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)方法在網(wǎng)絡(luò)入侵檢測(cè)中是有用的,但在處理網(wǎng)絡(luò)上的大數(shù)據(jù)時(shí)存在局限性。本文通過將來自不同來源的安全事件通過深度特征合成算法關(guān)聯(lián)起來,并訓(xùn)練優(yōu)秀的Seq2Seq 模型分別執(zhí)行危險(xiǎn)事件識(shí)別分類任務(wù)和危險(xiǎn)事件持續(xù)時(shí)間預(yù)測(cè)任務(wù),可以獲得比傳統(tǒng)方法更好的網(wǎng)絡(luò)態(tài)勢(shì)感知。隨著移動(dòng)互聯(lián)網(wǎng)和大數(shù)據(jù)時(shí)代的到來,網(wǎng)絡(luò)中的數(shù)據(jù)量大、數(shù)據(jù)復(fù)雜等問題比以往任何時(shí)候都要棘手,這要求不斷改進(jìn)算法、改進(jìn)模型、改進(jìn)流程以達(dá)到維護(hù)網(wǎng)絡(luò)安全的目的,值得一提的是如今的海量數(shù)據(jù)中包含了大量文本數(shù)據(jù),想要挖掘這部分?jǐn)?shù)據(jù)中的信息,必須要使用自然語言處理相關(guān)技術(shù),接下來將針對(duì)這些問題進(jìn)一步展開工作,力爭(zhēng)創(chuàng)造出適應(yīng)場(chǎng)景更廣闊、更有效的網(wǎng)絡(luò)態(tài)勢(shì)檢測(cè)方法。