劉 杰,李喜旺
1(中國科學(xué)院大學(xué),北京 100049)
2(中國科學(xué)院 沈陽計(jì)算技術(shù)研究所,沈陽 110168)
隨著科學(xué)技術(shù)的迅速發(fā)展,人們的日常生活中也逐漸離不開網(wǎng)絡(luò).由于網(wǎng)絡(luò)信息不斷產(chǎn)生和變化,使得網(wǎng)絡(luò)安全問題也成為計(jì)算機(jī)領(lǐng)域的一個熱門的研究方向.目前網(wǎng)絡(luò)攻擊發(fā)生在我們生活中的方方面面,加之網(wǎng)絡(luò)攻擊類型的千變?nèi)f化,網(wǎng)絡(luò)攻擊者通過各種不同的手段攻擊各種公共設(shè)施和用戶個人隱私信息[1],比如“橙風(fēng)單車”投用第二天就遭到黑客攻擊,導(dǎo)致系統(tǒng)癱瘓,用戶無法正常體驗(yàn)、使用.隨著信息化時(shí)代的發(fā)展,目前網(wǎng)絡(luò)數(shù)據(jù)已經(jīng)不僅僅是靜態(tài)的單個節(jié)點(diǎn)的影響,而是以不斷變化的形式存在,因此傳統(tǒng)的網(wǎng)絡(luò)異常檢測算法已不能滿足數(shù)據(jù)實(shí)時(shí)、準(zhǔn)確的檢測要求,對不斷更新的新的網(wǎng)絡(luò)攻擊手段無法迅速的做出相應(yīng)的裁決和相應(yīng),因此我們需要更加快速和準(zhǔn)確的檢測網(wǎng)絡(luò)異常的方法,已保證在高速網(wǎng)絡(luò)的數(shù)據(jù)到來時(shí)能夠?qū)?shù)據(jù)及時(shí)做出相應(yīng)[2].
目前常用的網(wǎng)絡(luò)入侵檢測的方法主要有兩種:誤用檢測和異常檢測[3].誤用檢測需要事先建立網(wǎng)絡(luò)異常的特征規(guī)則庫,并將采集到的每個數(shù)據(jù)包與規(guī)則庫的每一條規(guī)則進(jìn)行一一匹配,根據(jù)此判斷網(wǎng)絡(luò)中是否存在異常.誤用檢測的優(yōu)點(diǎn)是檢測率高、誤報(bào)率低,缺點(diǎn)是對未知特征的新異常行為,誤用檢測就表現(xiàn)毫無應(yīng)對能力.而異常檢測完全不同于誤用檢測,異常檢測所關(guān)注的是網(wǎng)絡(luò)流量的宏觀統(tǒng)計(jì)特證,異常檢測首先需要提取或者概括網(wǎng)絡(luò)流量的統(tǒng)計(jì)特征,據(jù)此建立一個正常模型.是將當(dāng)前產(chǎn)生的活動模型與正常模型作比較,當(dāng)當(dāng)前的活動模型與正?;顒幽P筒黄ヅ鋾r(shí),異常檢測就會發(fā)出警報(bào).異常檢測的優(yōu)點(diǎn)是可以檢測出以前從未出現(xiàn)的網(wǎng)絡(luò)攻擊方法,但缺點(diǎn)是誤報(bào)率較高[4,5].
近年來,為了應(yīng)對網(wǎng)絡(luò)異常入侵的多樣性,加之為提高網(wǎng)絡(luò)異常檢測的檢測率,降低網(wǎng)絡(luò)異常檢測的誤報(bào)率,國內(nèi)外的學(xué)者對此已經(jīng)做了大量的研究工作,目前網(wǎng)絡(luò)異常檢測方法大致分為兩大方面:動態(tài)網(wǎng)絡(luò)異常檢測和靜態(tài)網(wǎng)絡(luò)異常檢測.
在靜態(tài)網(wǎng)絡(luò)異常檢測中,最為代表的是基于閾值的網(wǎng)絡(luò)檢測方法.在基于閾值檢測的方法中,Maxion 等[6]提出根據(jù)歷史網(wǎng)絡(luò)流量的特征建立閾值,一旦超出此閾值即判斷為網(wǎng)絡(luò)異常[7].
在動態(tài)網(wǎng)絡(luò)異常檢測中,典型的方法即基于統(tǒng)計(jì)的檢測方法,比如基于用戶畫像的異常行為檢測模型[8]中提出引入用戶畫像技術(shù),實(shí)現(xiàn)了入侵檢測粒度的細(xì)化,并將大數(shù)據(jù)技術(shù)引入網(wǎng)絡(luò)安全領(lǐng)域,證明了基于用戶畫像的入侵檢測模型有較好的實(shí)用價(jià)值.基于隱馬爾可夫模型和條件熵的異常流量檢測方法研究中[1]中提出運(yùn)用統(tǒng)計(jì)學(xué)的方法對流量分類,最后通過輸出概率值來判斷是否是異常類型,該方法明顯的提高了異常檢測的精確度和檢測率,但是只能對流量進(jìn)行籠統(tǒng)的分類為異常和正常,無法做到更精細(xì)的劃分.
但由于網(wǎng)絡(luò)流量不僅存在相似性和周期性的特點(diǎn),還存在多點(diǎn)之間的連接性,因此當(dāng)網(wǎng)絡(luò)攻擊者對我們的網(wǎng)絡(luò)進(jìn)行入侵時(shí),往往不是單獨(dú)的某個點(diǎn)對我們的網(wǎng)絡(luò)造成極大的攻擊,而是多個網(wǎng)絡(luò)攻擊者聯(lián)合攻擊對我們的網(wǎng)絡(luò)造成網(wǎng)絡(luò)崩潰,網(wǎng)絡(luò)節(jié)點(diǎn)關(guān)系如圖1所示.因此目前的單點(diǎn)網(wǎng)絡(luò)異常檢測已滿足不了現(xiàn)階段對網(wǎng)絡(luò)攻擊者的防御和對其預(yù)測.另外,“網(wǎng)絡(luò)異?!币彩且粋€很模糊的概念,工控網(wǎng)絡(luò)異常檢測通常表現(xiàn)為結(jié)構(gòu)和屬性的變化,異常當(dāng)然也包括網(wǎng)絡(luò)節(jié)點(diǎn)本身的異常以及網(wǎng)絡(luò)變化的異常,因此在本文中,我們基于工控網(wǎng)絡(luò)中的多點(diǎn)連接性提出了基于圖神經(jīng)網(wǎng)絡(luò)的工控網(wǎng)絡(luò)異常檢測算法,將圖神經(jīng)網(wǎng)絡(luò)應(yīng)用于工控網(wǎng)絡(luò)異常檢測,這樣就可以同時(shí)抓取工控網(wǎng)絡(luò)結(jié)構(gòu)、屬性以及其周圍點(diǎn)鄰域狀態(tài)上的異常.從而使算法能夠脫離單點(diǎn)的網(wǎng)絡(luò)異常檢測.
圖1 網(wǎng)絡(luò)節(jié)點(diǎn)圖關(guān)系
最終將該模型與單點(diǎn)檢測算法比較,證明了該算法具有較高的準(zhǔn)確率,驗(yàn)證了該算法的有效性.
對于我們?nèi)粘I钪械木W(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),工控網(wǎng)絡(luò)節(jié)點(diǎn)的結(jié)構(gòu)特征和屬性以及工控網(wǎng)絡(luò)節(jié)點(diǎn)之間的連接關(guān)系,本文中提出的基于圖神經(jīng)網(wǎng)絡(luò)的工控網(wǎng)絡(luò)異常檢測算法的目標(biāo)是:充分利用工控網(wǎng)絡(luò)節(jié)點(diǎn)之間的屬性信息和工控網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的信息,挖掘工控網(wǎng)絡(luò)節(jié)點(diǎn)之間的隱含的交互信息,并學(xué)習(xí)每個工控網(wǎng)絡(luò)節(jié)點(diǎn)的類標(biāo)簽.表1給出本文中相關(guān)的符號定義.
表1 符號定義
圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network,GNN) 是近幾年出現(xiàn)的一類以圖結(jié)構(gòu)作為網(wǎng)絡(luò)輸入的神經(jīng)網(wǎng)絡(luò)模型[9].由于圖神經(jīng)網(wǎng)絡(luò)處理的數(shù)據(jù)結(jié)構(gòu)是圖,而圖是一種主要針對非歐幾里得空間結(jié)構(gòu)的數(shù)據(jù)進(jìn)行處理,具有以下優(yōu)勢:
(1)對輸入元素?cái)?shù)據(jù)的順序不敏感;
(2)在圖計(jì)算過程中,節(jié)點(diǎn)的表示受周圍鄰居節(jié)點(diǎn)的結(jié)構(gòu)和屬性的影響,而圖本身的連接不變;
(3)將網(wǎng)絡(luò)節(jié)點(diǎn)表示為圖結(jié)構(gòu)表示,便于進(jìn)行基于圖的推理,對網(wǎng)絡(luò)異常檢測具有天然的優(yōu)勢.
同時(shí)受到網(wǎng)絡(luò)嵌入的啟發(fā),本文旨在學(xué)習(xí)一個圖神經(jīng)網(wǎng)絡(luò)映射函數(shù),通過該映射函數(shù)將圖中的某一節(jié)點(diǎn)Vi可以聚合它自己的特征Xi與它相關(guān)聯(lián)的鄰居的特征Xj來生成節(jié)點(diǎn)Vi的新表示,然后將其作為K-means的輸入,進(jìn)行聚類算法,判斷該節(jié)點(diǎn)是否異常.圖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示.
圖2 圖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
圖神經(jīng)網(wǎng)絡(luò)模型由三大部分組成:圖節(jié)點(diǎn)狀態(tài)向量獲取模塊、迭代更新模塊和損失函數(shù)模塊[10].
(1)圖節(jié)點(diǎn)狀態(tài)向量獲取
首先每個節(jié)點(diǎn)Vi都可以用其特征Xi表示,并與其已標(biāo)記的標(biāo)簽相關(guān)聯(lián).給定部分標(biāo)記的圖G=(V,E),利用已標(biāo)記的節(jié)點(diǎn)來預(yù)測未標(biāo)記的節(jié)點(diǎn)標(biāo)簽.它可以通過學(xué)習(xí)得到每個節(jié)點(diǎn)的d維狀態(tài)向量表示為Hv,同時(shí)已包含了其相鄰節(jié)點(diǎn)的狀態(tài)信息.
其中,Xv表示節(jié)點(diǎn)的屬性特征集合,Xco表示邊的特征集合,Hne表示樣本v的鄰居節(jié)點(diǎn)的嵌入表示,Xne表示節(jié)點(diǎn)v的鄰居節(jié)點(diǎn)的屬性特征.f(x)函數(shù)表示將輸入節(jié)點(diǎn)的特征映射到d維向量空間的一個映射函數(shù).
(2)迭代更新
根據(jù)上述算法可以獲取到每個節(jié)點(diǎn)的d 維狀態(tài)向量,該向量蘊(yùn)含了連接節(jié)點(diǎn)的特征信息以及節(jié)點(diǎn)之間的交互信息.由于我們要求出Hv的唯一解,在本文中我們選擇使用不動點(diǎn)理論重寫上述方程進(jìn)行迭代更新.
其中,H和X表示所有h和x的連接.
然而對于每個節(jié)點(diǎn),其鄰域節(jié)點(diǎn)的交互信息固然重要,但其自身節(jié)點(diǎn)的原始信息也包含了很多重要的狀態(tài)信息.因此將節(jié)點(diǎn)的狀態(tài)向量Hv以及節(jié)點(diǎn)的特征Xv同時(shí)傳遞給輸出函數(shù)g進(jìn)一步計(jì)算,得到GNN 的輸出,即是否為異常節(jié)點(diǎn).即:
其中,f(x)和g(x)是全連接前饋神經(jīng)網(wǎng)絡(luò).
(3)損失函數(shù)
給定一個圖G=(V,E,X),經(jīng)過上述的狀態(tài)向量獲取和迭代更新,每個節(jié)點(diǎn)都可以用一個具有既包含節(jié)點(diǎn)自身信息又有樣本鄰域交互信息的狀態(tài)向量表示.在本文中根據(jù)詞特征向量,我們使用softmax(x)函數(shù)為每個節(jié)點(diǎn)計(jì)算每個類別對應(yīng)的概率,softmax(x)函數(shù)定義如下:
最后在該模型中,我們使用交叉熵計(jì)算模型的損失loss,其計(jì)算公式如下:
其中,y表示真實(shí)的標(biāo)簽.
圖神經(jīng)網(wǎng)絡(luò)的算法進(jìn)行節(jié)點(diǎn)特征表示的過程圖如圖3所示.
聚類算法是一個將數(shù)據(jù)集劃分成若干個聚類的過程,使得同一聚類的類內(nèi)相似性最大,類間相似性最小.相似性的度量我們選用基于距離的方法.在本文中我們選用歐幾里得距離,計(jì)算公式如下:
常用的聚類算法包括K 均值聚類、密度聚類、層次聚類.在本文中我們選擇K-means 聚類,K-means 聚類算法是將n個樣本點(diǎn)劃分成k個子集,每個子集都代表一個聚類.
K-means 算法的步驟:
① 在已研究的基礎(chǔ)上,將所有的樣本根據(jù)類標(biāo)種類分為k個類,記為k個種子聚類中心.
② 計(jì)算每個樣本與種子聚類中心之間的距離,并把每個樣本點(diǎn)分配到距離最近的聚類中心點(diǎn),即聚類中心及分配的樣本點(diǎn)代表一個簇.
③ 計(jì)算每個簇的均值作為每個簇的質(zhì)心,重復(fù)步驟②,直至質(zhì)心不再發(fā)生變化,確定k的值.
將上述圖神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)節(jié)點(diǎn)輸出特征作為Kmeans 聚類的輸入,判斷網(wǎng)絡(luò)節(jié)點(diǎn)是否是異常節(jié)點(diǎn).
圖3 節(jié)點(diǎn)特征表示的過程圖
為了評價(jià)本文提出的網(wǎng)絡(luò)異常檢測算法,使用Libpcap 網(wǎng)絡(luò)工具獲取中科院沈陽計(jì)算技術(shù)研究所使用的內(nèi)部網(wǎng)絡(luò)數(shù)據(jù),主要是原始網(wǎng)絡(luò)的流量數(shù)據(jù).
在本文中選取TCP 連接的基本特征比如連續(xù)時(shí)間,協(xié)議類型、傳送的字節(jié)數(shù)、連接正?;蝈e誤的狀態(tài)和TCP 連接的內(nèi)容特征比如登錄嘗試失敗的次數(shù)、成功登錄的次數(shù),root 用戶訪問次數(shù)和文件創(chuàng)建操作次數(shù)等屬性對網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)據(jù)進(jìn)行分析.
為了剔除數(shù)據(jù)集中的“臟數(shù)據(jù)”,與網(wǎng)絡(luò)節(jié)點(diǎn)異常無關(guān)的數(shù)據(jù)、重復(fù)采集的數(shù)據(jù)、數(shù)據(jù)格式錯誤或null 值的數(shù)據(jù),需要先對數(shù)據(jù)進(jìn)行預(yù)處理,找出數(shù)據(jù)的特征表示,為算法提供可靠的數(shù)據(jù)保證.對于數(shù)據(jù)的預(yù)處理主要包括兩大部分,首先利用Python 3 將獲取的字符型特征轉(zhuǎn)換為數(shù)值型特征,其次對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化和歸一化處理.在本文中使用的是min-max 標(biāo)準(zhǔn)化方法,即對原始數(shù)據(jù)的線性變換,使數(shù)據(jù)結(jié)果歸一化到[0,1]區(qū)間轉(zhuǎn)換函數(shù)如下:
其中,max 為樣本數(shù)據(jù)的最大值,min 為樣本數(shù)據(jù)的最小值.
使用基于Python3 環(huán)境的Tensorflow 開源深度學(xué)習(xí)框架實(shí)現(xiàn)圖神經(jīng)網(wǎng)絡(luò)的模型構(gòu)建與異常檢測.本文實(shí)驗(yàn)采用PC 機(jī),內(nèi)存為16 GB,操作系統(tǒng)為Windows、Linux.
在該網(wǎng)絡(luò)異常檢測算法中,模型的結(jié)果評估使用準(zhǔn)確率和誤判率來評價(jià)模型的性能.具體如表2.
表2 混淆矩陣
準(zhǔn)確率表示為:
傳統(tǒng)聚類單點(diǎn)檢測算法得到的聚類結(jié)果圖和經(jīng)圖神經(jīng)網(wǎng)絡(luò)處理后網(wǎng)絡(luò)節(jié)點(diǎn)異常檢測結(jié)果分別如圖4和圖5所示.
圖4 傳統(tǒng)聚類結(jié)果
本文模型在準(zhǔn)確率和誤報(bào)率與其他傳統(tǒng)網(wǎng)絡(luò)異常檢測模型比較,具體如表3.
圖5 圖神經(jīng)網(wǎng)絡(luò)處理聚類結(jié)果
表3 結(jié)果對比表(%)
網(wǎng)絡(luò)異常檢測已經(jīng)成為網(wǎng)絡(luò)安全的一個重要研究方向,本文提出的基于圖神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)異常檢測算法可以融合網(wǎng)絡(luò)節(jié)點(diǎn)自身屬性以及其鄰域節(jié)點(diǎn)的屬性信息進(jìn)行訓(xùn)練,彌補(bǔ)了以往的單節(jié)點(diǎn)的動態(tài)預(yù)測方法的不足,實(shí)驗(yàn)證明該方法具有較好的魯棒性,但是該算法也具有一定的局限性,對于進(jìn)一步的節(jié)點(diǎn)之間的相關(guān)性研究及圖神經(jīng)網(wǎng)絡(luò)更精確精準(zhǔn)的異常檢測是我們下一步的研究重點(diǎn).