王 毅,馮小年,錢鐵云+,朱 輝,周 靜
1.武漢大學 計算機學院,武漢 430072
2.中國電力財務有限公司,北京 100005
3.北京匯通金財信息科技有限公司,北京 100094
互聯(lián)網+時代,信息網絡已深入國民經濟的各個環(huán)節(jié),人、物及商業(yè)已通過信息網絡逐步互聯(lián),網絡安全問題也日漸凸顯出來。從組織信息系統(tǒng)遭受的直接攻擊來源看,可將入侵分為外部入侵和內部用戶偽裝入侵。內部用戶偽裝入侵是指未授權用戶通過偽裝成內部合法用戶進入系統(tǒng),訪問、修改關鍵數(shù)據(jù)或執(zhí)行其他非法操作的行為[1]。
根據(jù)建模用戶行為模式所側重的信息(頻率信息、相關信息、轉移信息)[2]不同,目前的偽裝入侵檢測方法分為如下3種類型:(1)基于用戶行為頻率信息的偽裝入侵檢測,如文獻[3-5],這類方法比較簡單、高效,但其忽略了行為序列的時序性,因而其檢測率往往較低。(2)基于用戶行為相關信息的偽裝入侵檢測,如文獻[6]通過n-gram模型考慮了相鄰行為間相關信息(局部強相關性),文獻[7-8]同時考慮了相鄰行為和不相鄰行為這兩類相關信息??傮w來說,這類方法能較好捕獲行為序列的局部強相關性以及行為的長程依賴性,但不能準確捕獲整個行為序列的時序性,因而其建模用戶行為模式的能力有限。(3)基于用戶行為轉移信息的偽裝入侵檢測,如文獻[1,9-11],這類方法能較好地捕獲行為序列的時序信息,但未能兼顧行為的長程依賴性,故建模某些復雜且有長程依賴關系的行為序列時也捉襟見肘。
用戶偽裝入侵檢測關鍵技術在于如何有效地進行用戶行為模式的建模,雖然已有的方法就其用戶行為建模能力相比早期的偽裝入侵檢測方法有較大提升,但面對海量網絡數(shù)據(jù)及復雜高維入侵行為特征等安全挑戰(zhàn)時,傳統(tǒng)檢測技術存在建模能力不足及“維數(shù)災難”等問題。而深度學習運用了分層次抽象思想,能學習非常復雜的函數(shù),能更好地應對大量的高維復雜數(shù)據(jù),同時有著更高的建模能力。在深度學習的各種框架中,卷積神經網絡(convolution neural network,CNN)需要的參數(shù)更少,非常適合處理具有統(tǒng)計平穩(wěn)性和局部關聯(lián)性的數(shù)據(jù);長短期記憶(long short-term memory,LSTM)神經網絡被專門設計用于學習具有長依賴關系的時間序列數(shù)據(jù),在學習更高級別特征序列中的長程依賴性和時序性上有著很大的優(yōu)勢。因此,本文就內部用戶偽裝入侵檢測提出了一種結合卷積和長短期記憶的統(tǒng)一網絡框架(unified model combined convolution neural network with long short-term memory,CCNN-LSTM)的內部用戶偽裝入侵檢測方法,并進行了大量實驗和詳細的實驗分析。
本文組織結構如下:第2章闡述了CCNN-LSTM網絡結構的詳細設計和CCNN-LSTM模型學習,并提出了一種新的負樣本采集方法;第3章闡述了基于CCNN-LSTM偽裝入侵檢測的具體流程;第4章通過實驗對本文方法進行評估;第5章總結全文并展望未來。
企業(yè)或組織內部常常通過行為監(jiān)控和收集器進行用戶行為的搜集,這些行為按時間段進行截取,便可形成行為流。用戶行為流往往具有局部強關聯(lián)性、長程依賴性以及時序性等。以Shell命令流為例,對這3種特性進行闡述:(1)用戶的Shell命令流中往往有很多局部關聯(lián)很強的命令塊,如“cd ls cat”、“gdb gcc make”等。可以從上述示例發(fā)現(xiàn)前一個命令塊是用來查看某個文件的,而后者是用來編譯某份C++源碼的。“查看文件”和“編譯C++源碼”等用戶行為,在系統(tǒng)中具體執(zhí)行時,往往需要分解為更多的子行為,并由子行為組合而成。從上述觀察,可以推斷出:用戶的抽象行為往往由Shell命令的組合來實現(xiàn),這正是Shell命令流中很多命令有較強的局部關聯(lián)性的原因。(2)用戶的Shell命令流中某些命令往往和其跨度較遠的命令具有很強的關聯(lián)性,如“l(fā)ogin、x…x、logout”和“open、x…x、close”等,這類似于自然語言處理中的長程依賴性。(3)Shell流具有很強的時序性,這往往體現(xiàn)了用戶的行為習慣。
卷積神經網絡是一種分層的計算模型,隨著網絡層數(shù)的增加其可提取越來越復雜抽象的模式。CNN典型架構為Input?Conv?Pool?FullCon,該架構融合了局部感受野、共享權重以及空間或時間子采樣這3種思想。這樣的架構使得CNN非常適合處理具有統(tǒng)計平穩(wěn)性和局部關聯(lián)性的數(shù)據(jù),并使它對平移、縮放、傾斜等具有高度的不變形特性。長短期記憶是一種時間遞歸神經網絡(recurrent neural network,RNN)。它與RNN的區(qū)別主要在于它在算法中加入了一個判斷信息有用與否的“處理器”,這個處理器作用的結構被稱為cell。一個cell中被放置了3扇門,分別叫作輸入門、遺忘門和輸出門。一個信息進入LSTM的網絡中,可以根據(jù)規(guī)則來判斷是否有用。只有符合算法認證的信息才會留下,不符的信息則通過遺忘門被遺忘,在反復運算下解決神經網絡中長期存在的問題。因此在卷積和池化層之上選擇LSTM可學習更高級別特征序列中的長程依賴性和時序性。
基于上述觀察和分析,本文結合深度神經網絡,設計了一個如圖1所示的CCNN-LSTM網絡。
首先使用一個卷積層對Shell流進行處理,接著使用基于塊的最大池化層[12]進行局部重要特征的挑選,然后使用LSTM層捕獲數(shù)據(jù)的時序性和長程依賴性,最后使用sigmoid激活的全連接層進行正常概率計算。下面將對該網絡各層的設計做詳細闡述。
Fig.1 CCNN-LSTM network structure圖1 CCNN-LSTM網絡結構示意圖
嵌入表示查詢層存儲了一個各命令的嵌入表VC,當該網絡面對一個命令序列s=[c1c2…ck]時,其中表示命令ck的嵌入表示,嵌入表示查詢層即對每一個命令ck,在VC中查詢其嵌入表示。若有命令未曾出現(xiàn)在訓練命令集中,即ci?C,直接取查詢表VC中第一個位置的嵌入表示v0;反之,則取對應命令的嵌入表示vci。經過上述處理后,原始命令token的id序列變成了相應的命令嵌入表示序列Vs=[vc1vc2…vck]。相比其他的命令表示(如one-hot),命令嵌入表示具有低維稠密、計算高效的優(yōu)勢。
卷積層對命令嵌入表示序列Vs進行卷積操作。具體而言,卷積層設置多個卷積核W∈?lc×dc,每個卷積核都對窗口lc中的特征進行概述并且產生一個新的特征。對于窗口lc中的命令嵌入表示Vi:i+lc-1,一個卷積核Wl(1≤l≤L,其中L表示該卷積層卷積核的數(shù)目)按式(1)產生新的特征
其中,f是卷積層使用的非線性激活函數(shù)(ReLU);是該層的第l個卷積核;bl是該卷積核的偏置項;是堆疊而成的矩陣。當一個卷積核對命令嵌入表示序列Vs從V0:lc-1到Vk-lc+1:k中的每個窗口進行遍歷后,便得到了該卷積核所產生的新的特征圖,如式(2)所示:
將所有卷積核產生的特征圖進行堆疊,便可得到新的序列表示Hs=[h1,h2,…,hk-lc+1],其中hi∈?L×1是拼接L個卷積核在第i步產生的特征而形成的表示,可被看作用戶的抽象行為表示。
池化層對新的序列表示Hs進行池化操作。給定一個預定義的塊數(shù)N,首先將Hl劃分為N個片段,并將每個片段中的最大值順序拼接起來,得到一個長度為N的向量plN,如式(3)所示:
將L個特征圖的plN堆疊起來,便可得到Ps=[pn1,pn2,…,pN],其中pni∈?L×1為L個特征圖的第ni塊最大池化后而形成的向量。
為捕獲數(shù)據(jù)的時序性和長程依賴性,在Ps上使用LSTM架構的網絡層。該層由多個共享權值的LSTM區(qū)塊按時間步的順序連接而成。在每個時間步上,LSTM區(qū)塊的輸出將由3個門遺忘門ft、輸入門it、輸出門ot協(xié)同控制,其中每個門都是一個關于歷史區(qū)塊輸出bt-1和當前時間的輸入pt的矢量函數(shù)。這些門共同決定怎樣更新當前的記憶細胞體狀態(tài)以及當前的隱藏狀態(tài)。使用dh來表示LSTM區(qū)塊中記憶細胞體狀態(tài)的維度,同時該架構中其他向量也使用相同的維度。在時間步t上,LSTM區(qū)塊對pt按式(4)~(9)所示進行處理:
其中,σ是一個邏輯函數(shù);tanh是雙曲正切函數(shù);⊙表示元素乘運算。直觀上,可以將遺忘門ft視為控制來自舊區(qū)塊的信息以多大程度被丟棄的函數(shù),輸入門it控制有多少信息需要被存儲在當前記憶細胞體中,輸出門ot基于當前記憶細胞體狀態(tài)決定需要輸出什么。
經過LSTM網絡的處理后,將最后一步的LSTM區(qū)塊的輸出作為該序列的表示rs,即如式(10)所示:
其中,rs代表序列的抽象表示;T表示LSTM網絡輸入的最大長度,即池化層輸出Ps的最大長度。若|Ps| 最后,用一個全連接層直接對該序列表示進行處理,該層使用邏輯函數(shù)σ作為激活函數(shù),該層得到該序列是用戶正常行為序列的概率Pθ(s),其按式(11)計算: 根據(jù)最大似然估計,本文將損失函數(shù)設為模型在訓練樣本上的負對數(shù)似然性,即損失函數(shù)L(θ)按式(12)計算: 表示行為序列si的標簽,其取值為1或0,ysi=1時代表序列si為用戶的正常序列,ysi=0時代表序列si為用戶的異常序列(偽裝入侵行為)。 確定了損失函數(shù)后,模型的學習問題即轉換為最小化損失函數(shù)的優(yōu)化問題。采用Adam優(yōu)化算法對模型進行優(yōu)化求解。對概率輸出層、卷積層和嵌入層,使用經典的反向傳播算法進行誤差的反向傳播。而對于LSTM層,采用后向傳播算法進行誤差的反向傳播。 偽裝入侵檢測中,能輕易獲得用戶的正樣本(正常命令序列),卻很難獲得其負樣本(偽裝入侵的命令序列)。目前大多數(shù)的采集負樣本的做法都是直接采集其他用戶的所有命令序列或隨機采集一定數(shù)量的命令序列,然而這種采集方法并未考慮用戶自身的特性,即不同特性的用戶其未來正常行為和歷史正常行為有著不同的“緊密度”。本文認為若一個用戶的歷史行為比較固化單一,那么其未來行為也極有可能和歷史行為相似;然而若一個用戶的歷史行為極其豐富多變,那么其未來行為可能和歷史行為差距較大。 基于上述假設,本文提出了一種基于序列表征的負樣本采集算法。簡言之,該算法利用用戶的歷史命令序列表征,計算用戶歷史數(shù)據(jù)的散布程度,若散布程度高,則從其他用戶命令序列中選擇和本用戶歷史命令序列最不相似的作為其負樣本;若散布程度低,則從其他用戶命令序列中選擇和本用戶歷史命令序列相似的作為其負樣本。本文方法能夠較好地在具有一定行為模式的用戶之間進行負樣本采集。 本文提出的CCNN-LSTM網絡運用于內部用戶偽裝入侵檢測的框架如圖2所示。 Fig.2 Camouflage intrusion detection framework based on CCNN-LSTM圖2 基于CCNN-LSTM的偽裝入侵檢測框架 以圖2中的用戶A為例說明基于CCNN-LSTM偽裝入侵檢測的具體過程。 (1)使用命令數(shù)據(jù)搜集及解析模塊進行數(shù)據(jù)收集及預處理,主要收集用戶A的Shell命令,按時序排序,截取固定時間窗口內的數(shù)據(jù),形成短的命令流數(shù)據(jù),并對其進行過濾和主干抽取等預處理。 本次大豐收·云圖杯“中國最美柑橘果園評比大賽”啟動儀式的成功舉行,就彰顯了新型服務平臺的發(fā)展勢頭。僅用了一個星期的時間進行推廣和宣傳,就召集了近千名柑橘種植農戶。這既體現(xiàn)了雙方產品和服務的質量,同時也彰顯了平臺的推廣力度。 (2)使用上文提出的負樣本采集方法進行負樣本的采集,該階段主要包括:由用戶A的正樣本(歷史行為數(shù)據(jù))訓練出一個Seq2vec模型,使用該模型計算其他用戶正樣本的表征,在此基礎上使用2.2.2小節(jié)提出的算法進行負樣本采集。 (3)由上述得到的正樣本和負樣本訓練CCNNLSTM網絡得到用戶A的偽裝入侵檢測模型,使用該模型即可檢測用戶A的行為是否是偽裝入侵行為。 對組織信息系統(tǒng)內的關鍵崗位的用戶都進行上述流程的處理,即可得到相應用戶的偽裝入侵檢測模型,從而進行組織信息系統(tǒng)內部用戶偽裝入侵的檢測。 為了和其他文獻中的方法進行公平對比,本文采用已成為偽裝入侵檢測領域標準數(shù)據(jù)集的SEA數(shù)據(jù)集(http://www.schonlau.net/)[3-4,7]對上述提出的方法進行實驗評價。 SEA數(shù)據(jù)集包含50個用戶(User1~User50)的命令文件和一個masquerade_summary.txt文件,其中每個用戶文件一行記錄一個用戶命令(為了保護隱私每個命令的參數(shù)未被公開),總共包含15 000個用戶命令,前5 000個命令為用戶的正常命令,用作訓練數(shù)據(jù),而后10 000個命令被劃分為100個塊,這些塊中可能散布著入侵者的數(shù)據(jù),用作測試數(shù)據(jù)。masquerade_summary.txt文件保存了一個100×50的矩陣數(shù)據(jù),行號代表測試數(shù)據(jù)中的命令塊號,列號代表用戶號,矩陣使用0/1來指示某用戶測試數(shù)據(jù)中的某塊命令是否為偽裝入侵命令塊(0代表該塊為正常命令塊,1代表該塊為偽裝入侵命令塊)。 本文實驗遵循數(shù)據(jù)集固有的劃分,即每個用戶的前5 000個命令塊作為訓練數(shù)據(jù),后10 000個命令作為測試數(shù)據(jù)。本文方法需要訓練樣本和測試樣本的長度一致,因此也參照測試數(shù)據(jù)集中100個命令為一個塊(Block)的方式將訓練數(shù)據(jù)集劃分為50個塊。另外,需要說明的是在進行序列表征學習時,為了能讓序列表征模型擁有更多的訓練樣本,采取了固定窗口在序列上滑動的方式進行樣本采取,具體地設置了一個長度為100的窗口,以每步滑動5個命令的步長在每個用戶的訓練數(shù)據(jù)上進行滑動,共產生了1 000個用于進行序列表征學習的樣本。 實驗評價指標方面,除了采用檢測率(detection rate,DR)和誤報率(false positive rate,F(xiàn)PR)外,也采用了漏檢率(miss rate,MR)和檢測代價Cost[3],它們的定義如下所示: 其中,α、β采用α=1、β=3和α=1、β=6兩種設定,分別簡寫為Cost#3和為Cost#6(后文無明確說明情況下,Cost#6也可簡寫為cost)。 本文實驗在Ubuntu 16.04 LTS環(huán)境下進行,使用Keras2.0.2神經網絡庫構建網絡,使用Google開源的人工智能系統(tǒng)Tensorflow1.1.0作為后端計算框架。實驗中以Νormal(0,0.005)分布初始化嵌入層以及卷積層的權重和偏置,以glorot_normal(0)分布初始化LSTM層和全連接層的權重和偏置。使用mini-batch的方式對網絡進行小批量梯度更新,當對CCNNLSTM入侵檢測模型進行訓練時,mini-batch-size設為32,當對序列表征模型進行訓練時,mini-batch-size設為512。由于用于CCNN-LSTM入侵檢測模型的訓練樣本集較小,將該網絡的訓練迭代輪數(shù)epoch設為30,同時設置訓練數(shù)據(jù)集上loss≤0.09時進行早停的規(guī)則。對序列表征模型進行訓練時,將其迭代輪數(shù)epoch設為300。使用Adam學習算法進行模型參數(shù)學習。 (1)Shell命令嵌入表示維度的影響效果 為了探究Shell命令嵌入表示維度對該網絡入侵檢測性能的影響,本小節(jié)設置了8組變換維度的實驗。設置的最低維度為10,最高維度為250。先以20為步長,取得4組維度進行實驗;再從100以50為步長,取得另外4組維度進行實驗。實驗過程中,卷積核長度設為3。實驗結果如圖3所示。該結果顯示當嵌入表示的維度從10增加到250時,偽裝入侵的漏檢率在維度為10時最高為66.23%,而后逐步下降,當維度為70時達到最低漏檢率24.97%,最后再緩慢增長到29.87%;檢測代價Cost,也大致呈現(xiàn)先下降,再緩慢增長,最后趨至平穩(wěn)的規(guī)律;而誤檢率無明顯規(guī)律可循。從分析極值來看,當維度為10時,3項指標皆為該系列實驗值的極值。這表明當該網絡維度過低時,網絡的學習能力不足,其將樣本判斷為大類樣本的惰性極強。當維度激增至250時,其誤檢率和檢測代價相對d=10都有明顯下降,表明其相對于d=10的網絡有了更強的學習能力,然而此時的結果和d=50結果類似,并且各項指標皆低于d=100時的指標,表明嵌入表示過大時會出現(xiàn)一定性能的下降,維度變大時,理論上網絡會有更強的學習能力,但對于小數(shù)據(jù)來說也存在極大的過擬合風險。因此對于本文的小數(shù)據(jù)集,反而是在處于中間維度的100維時將達到最好的綜合性能。 Fig.3 Effect of Shell command embedded dimension on detection result圖3 Shell命令嵌入表示維度對檢測效果的影響 (2)卷積核長度的影響效果 本小節(jié)設置了6組不同的卷積核長度進行實驗,以分析卷積核大小對網絡性能的影響。實驗過程中,命令嵌入維度設為100。實驗結果如圖4所示。從圖中可以看出,3項指標(漏檢率、誤檢率、檢測代價)皆有先下降再上升的規(guī)律。除了漏檢率是在ks=2時達到最低為24.24%,其他兩項指標誤檢率和檢測代價都是在ks=3時達到最低,分別為44.13%和3.17%。這表明ks=2時,網絡對攻擊樣本有最好的檢測準確度,但也犧牲了對正常樣本的檢測準確度。相較之下ks=3時雖沒有達到對攻擊最好的檢測率,卻達到了最低的誤檢率,即其對正確樣本被誤分的比率更小,因此其綜合指標cost達到了最低,故ks=3時網絡的綜合性能最好。從圖中可以進一步得出這樣的結論:①命令序列有強的局部關聯(lián)性,ks=1時即上下文窗口為1,每次僅考慮一個命令,該情況退化為忽略局部關聯(lián)性的情形,此時該網絡的3項指標都最高,即網絡的檢測性能最低;②卷積核長度不宜過大,過大會一定程度損傷網絡的檢測性能,這是由于較長的卷積核長度會引入數(shù)據(jù)稀疏性,同時也會使模型參數(shù)過多難以訓練。 Fig.4 Effect of convolution core length on detection result圖4 卷積核長度對檢測效果的影響 本文提出的基于CCNN-LSTM檢測算法本質上是一種監(jiān)督式算法,而本實驗使用的SEA數(shù)據(jù)集的訓練集中只有每個用戶的正常樣本,因此需要人為采集負樣本。據(jù)調研,使用SEA數(shù)據(jù)集進行基于監(jiān)督式算法的偽裝入侵檢測方法中,研究者們大多采用從其他用戶的正樣本中隨機采集負樣本的策略。第2章提出了一種基于序列表征的負樣本采集算法。本小節(jié)對負樣本采集算法超參數(shù)進行分析。 根據(jù)2.2.2小節(jié)的描述可知,本文提出的負樣本采集算法需要設置兩個超參數(shù):采集的負樣本個數(shù)k、用戶正樣本散度閾值(mean squared error threshold,MSET)。本小節(jié)就這兩個超參數(shù)進行實驗分析,實驗過程中采用上一小節(jié)調節(jié)出的最優(yōu)網絡超參數(shù)進行實驗。 在進行負樣本個數(shù)k分析時,固定用戶散度閾值為5.0,并設置7組k值(k=1,5,10,20,30,40,50)進行實驗。實驗結果如圖5所示,可以看出隨著負樣本個數(shù)k的增大,漏檢率和誤檢率分別呈現(xiàn)線性下降和線性上升的趨勢。當k=1時,誤檢率最低僅為0.06%,即模型將99.94%的正樣本都判斷正確,但漏檢率高達100%,即此時模型會將所有的異常樣本誤判為正常樣本,可見此時模型的區(qū)分能力極弱,即當負樣本過少時模型幾乎無判別能力。隨著負樣本的增多,模型有更強的負例識別能力,但也降低了模型的正例識別能力。當k=5時,該模型的誤檢率和漏檢率分別為25.11%、3.17%,雖然都未達到最佳,但cost最低,即此時模型的綜合檢測效果最好。這是由于測試集中負樣本約占5%,即測試集中正負樣本比例約為20∶1。目前的機器學習都建立在訓練測試同分布的假設上,按照這個假設訓練數(shù)據(jù)集的正負樣本比例也應大致為20∶1,即每個用戶訓練集中應大致?lián)碛?.5個負樣本,但樣本規(guī)模太小,易受噪聲樣本的影響,因此5個左右的負樣本應是一個比較好的選擇,實驗結果也證實了這一點。 Fig.5 Effect of number of negative samples on detection result圖5 負樣本個數(shù)對檢測效果的影響 進行用戶正樣本散度閾值分析時,負樣本個數(shù)固定為5,并設置了7組正樣本散度閾值(MSET=4.7,4.8,4.9,5.0,5.1,5.2,5.3)進行實驗。實驗結果如圖6所示。從該實驗結果可以看出,當散度閾值從最低的4.7按0.1的步長增長到最高的5.3時,入侵的漏檢率呈現(xiàn)逐步下降的趨勢,而誤檢率呈現(xiàn)逐步上升的趨勢,兩者的綜合指標cost呈現(xiàn)“兩頭緩平,中間凹陷”的規(guī)律,這和本文的預期基本一致。當用戶的散度閾值設置得過小時,算法容易對一些散度較低的用戶也采用“挑選最遠負樣本”模式進行負樣本采集,這會造成CCNN-LSTM模型將會學習出更寬泛的正樣本區(qū)域,即模型對正樣本有一定的偏向,能比較好地判斷出正樣本,但同時也增大了將負樣本錯判為正樣本的風險,因此會呈現(xiàn)漏檢率高、誤檢率低的實驗結果;當用戶散度閾值設置得過大時,CCNNLSTM模型對一些散度大的用戶也學習出比較“緊致”的正例區(qū)域,這樣雖然會使模型以比較高的置信度判斷出正樣本,同時能辨識出更多的負樣本,但由于散度大用戶的特點,也使模型存在誤判更多的正樣本為負樣本風險,會呈現(xiàn)誤檢率高、漏檢率低的實驗結果。從cost指標可以看出,當MSET=5.0時,模型的綜合檢測效果達到最好,此時cost僅為44.13%。 Fig.6 Divergence threshold analysis of user positive samples圖6 用戶正樣本散度閾值分析 (1)與常見深度神經網絡的比較 據(jù)本文所知,目前尚無深度神經網絡方法被運用到偽裝入侵檢測領域。因此,本小節(jié)僅和目前深度學習領域幾種經典的深度神經網絡進行比較,它們分別是CNN、RNN、LSTM。為了公平比較,上述網絡也和本文方法一樣設置兩個隱藏層,即CNN采用了 Input→Conv→Maxpool→Conv→Maxpool→Dense的結構,RNN和LSTM都采用了Input→RNN1(LSTM1)→RNN2(LSTM2)→Dense的結構,本文方法采用了Input→Conv→Maxpool→LSTM→Dense的結構,且本文方法中Conv與LSTM層與上述網絡相應層的設計一致。各方法實驗結果如表1所示,從入侵檢測效果綜合指標cost來看,CNN最差,RNN和LSTM次之,本文提出的方法最好。CNN主要獲取數(shù)據(jù)的局部關聯(lián)性,而RNN和LSTM主要獲取數(shù)據(jù)的序列性,該結果表明用戶命令數(shù)據(jù)的序列性比局部關聯(lián)性更能體現(xiàn)用戶行為模式,從而提高偽裝入侵的檢測效果。值得注意的是LSTM的cost值比RNN低了4.92%,即LSTM的綜合檢測效果會略優(yōu)于RNN,這是因為LSTM能捕獲長程的依賴性引起的。在用戶Shell命令中某些命令的出現(xiàn)往往是和自己距離比較遠的命令相關聯(lián)的,如用戶先以rlogin命令遠程登錄了某臺線上機器,經過ftp、make、…、launch等操作后,其鍵入了exit命令登出了線上機,根據(jù)用戶的歷史習慣,其在線下鍵入launch后可能是鍵入explore,但若是在線上鍵入launch則下一個極可能鍵入exit,即exit命令和離它較遠的rlogin命令有了很強的關聯(lián)性。本文方法不僅捕獲了數(shù)據(jù)的局部關聯(lián)性、時序性,也捕獲了其長程依賴性,因此表現(xiàn)出了最低的檢測代價,故本文方法相比其他深度神經網絡更適合偽裝入侵檢測。 Table 1 Comparison with common depth neural networks表1 與常見深度神經網絡的比較 % (2)與其他偽裝入侵檢測方法的比較 已有眾多偽裝入侵檢測方法被研究者們提出,包括 Compression[1]、Sequence Matching[1]、IPAM(incremental probabilistic action modeling)[1]、Uniqueness[1]、Hybrid multistep Markov[1]、Bayes one-step Markov[1]、SVM(support vector machine)[4]、Two-class NB[3]、IWNB(instance-weighted Naive Bayes)[13]、PHMM(profile hidden Markov model)[14]、ECM(eigen co-occurrence matrix)[7],皆在SEA數(shù)據(jù)集上進行了實驗驗證,實驗結果如表2所示。本小節(jié)將簡要介紹這些方法,并對實驗結果進行分析,給出實驗結論。 由表2中可知,入侵檢測率上,SVM遠遠超過大部分方法,達到80.1%,本文方法僅次于該方法達到74.9%。概括來看,基于機器學習的檢測方法相比其他非機器學習方法(如Compression、SequenceMatching、Uniqueness等)有更高的檢測率;誤檢率上,Uniqueness最低為1.4%,該方法本質上是一種基于規(guī)則的方法,其并無學習過程,故不能學習數(shù)據(jù)中的知識,雖然其表現(xiàn)出最低的誤檢率,但檢測率極差,實用價值低;入侵檢測代價上,當β=6時,ECM表現(xiàn)出極低的檢測代價42.7%,本文方法僅次于該方法檢測代價為44.1%。而當β=3時,本文方法的入侵代價低至34.6%,為所有方法最佳。和本文方法一樣ECM方法也捕獲了用戶命令的局部相關性和長程依賴性,然而該方法需要根據(jù)全局的特征共現(xiàn)矩陣構建用戶的眾多分層網絡,因此難以實現(xiàn)增量訓練。本文方法可以通過在線訓練的方式實現(xiàn)增量學習和在線學習,且本文方法能應對大數(shù)據(jù)量的訓練數(shù)據(jù),有一定的實用性。 Table 2 Comparison with related literature methods表2 與相關文獻方法的比較 % 另外,從方法本身的角度來看,統(tǒng)計分析方法(Compression、Sequence Matching、IPAM、Uniqueness、Hybrid multistep Markov、Bayes one-step Markov)表現(xiàn)出了很高的檢測代價,表明這類方法具有較差的綜合檢測效果,僅靠少量統(tǒng)計參數(shù)來刻畫用戶復雜的行為模式,建模能力不足;SVM和Two-class NB都是通過捕獲用戶命令的頻率信息,用機器學習模型來建模用戶行為模式。從Cost#3指標來看,兩者遠超過Uniqueness(利用頻率信息),但僅勉強超過Bayes one-step Markov(利用命令轉移信息)。一方面表明機器學習方法的用戶行為建模能力比傳統(tǒng)的統(tǒng)計分析方法要強,另一方面也表明捕獲命令序列的何種信息對檢測效果也有較大影響。PHMM無論在Cost#6還是Cost#3上,都超過了SVM和Two-NB,其主要捕獲了命令序列的轉移信息,序列建模能力較強,這也表明命令序列的時序性能較好反應用戶的行為模式。IWNB是一種半監(jiān)督學習方法,其雖然也是基于頻率信息建模用戶行為模式,但其在訓練過程中運用了無標簽的測試數(shù)據(jù)進行模型的微調,故比SVM、Two-NB、PHMM等方法都要好。ECM方法和本文方法在Cost#6和Cost#3上的值都比較接近,分別達到所有方法的最佳值,表明兩者都有較強的綜合檢測效果。需要注意的是,這兩種方法都捕獲了數(shù)據(jù)的局部關聯(lián)性和長程依賴性,表明這兩種信息對用戶的行為建模極其有效。另外,本文方法也捕獲了數(shù)據(jù)的時序性,在應對更多的訓練數(shù)據(jù)時會呈現(xiàn)更大的潛力。 本文研究與分析了現(xiàn)有檢測方法,發(fā)現(xiàn)目前的檢測方法存在難以準確捕獲用戶復雜行為模式的缺點。然后,以此為切入點,利用CNN捕獲數(shù)據(jù)局部關聯(lián)性的優(yōu)勢以及LSTM捕獲數(shù)據(jù)序列性和長程依賴的優(yōu)勢,設計了一種CCNN-LSTM網絡結構。同時,給出了具體的模型學習過程。最后,編碼實現(xiàn)了該方法并在SEA數(shù)據(jù)集上進行了大量實驗,實驗結果表明該方法在偽裝用戶入侵檢測上具有優(yōu)異的綜合檢測效果,有較強的潛力。針對內部用戶偽裝入侵檢測中負樣本獲取困難的問題,提出了一種新的用戶樣本采集方法。即通過用戶正常行為的散度,有策略地采集其他用戶的樣本作為該用戶的負樣本。實驗結果表明,該方法優(yōu)于現(xiàn)有的負樣本采集方法,對后續(xù)的偽裝入侵檢測算法具有較大的補益。 未來工作可按如下幾方面展開: (1)面對小、中型數(shù)據(jù)集,考慮將多種異構模型的結果進行融合,如將CNN、LSTM、SVM、NB等結果進行Stacking集成得到最終檢測結果。 (2)內部用戶偽裝入侵檢測可以使用自動編碼機或基于LSTM的seq2seq進行檢測,概括講即通過編碼器壓縮原始輸入,然后由解碼器重構輸入,最后通過比對重構輸入和原始輸入之間的差距進行正常和異常的判斷,從而進行入侵檢測。 (3)針對負樣本稀少的問題,可以嘗試使用生成式對抗網絡(generative adversarial networks,GAN)學習出負樣本生成器,進行負樣本的生成。 [1]Schonlau M,Dumouchel W,Ju Wenhua,et al.Computer intrusion:detecting masquerades[J].Statistical Science,2001,16(1):58-74. [2]Li Chao,Tian Xinguang,Xiao Xi,et al.Anomaly detection of user behavior based on Shell commands and co-occurrence matrix[J].Journal of Computer Research and Development,2012,49(9):1982-1990. [3]Maxion R A,Townsend T N.Masquerade detection using truncated command lines[C]//Proceedings of the 2002 International Conference on Dependable Systems and Networks,Bethesda,Jun 23-26,2002.Washington:IEEE Computer Society,2002:219-228. [4]Kim H S,Cha S D.Empirical evaluation of SVM-based masquerade detection using UNIX commands[J].Computers&Security,2005,24(2):160-168. [5]Zhao Xiang,Hu Guangyu,Wu Zhigong.Masquerade detection using support vector machines in the smart grid[C]//Proceedings of the 7th International Joint Conference on Computational Sciences and Optimization,Beijing,Jul 4-6,2014.Washington:IEEE Computer Society,2014:30-34. [6]Hofmeyr S A,Forrest S,Somayaji A.Intrusion detection using sequences of system calls[J].Journal of Computer Security,1999,6(3):151-180. [7]Oka M,Oyama Y,Abe H,et al.Anomaly detection using layered networks based on eigen co-occurrence matrix[C]//LNCS 3224:Proceedings of the 7th International Symposium on Recent Advances in Intrusion Detection,Sophia Antipolis,Sep 15-17,2004.Berlin,Heidelberg:Springer,2004:223-237. [8]Wang Xiuli,Wang Yongji.Masquerader detection based on command closeness model[J].Acta Electronica Sinica,2014,42(6):1225-1229. [9]Lane T,Brodley C E.An empirical study of two approaches to sequence learning for anomaly detection[J].Machine Learning,2003,51(1):73-107. [10]Tian Xinguang,Sun Chunlai,Duan Miyi.Anomaly detection of user behaviors based on Shell commands and Markov chain models[J].Journal of Electronics&Information Technology,2007,29(11):2580-2584. [11]Xiao Xi,Tian Xinguang,Zhai Qibin,et al.Masquerade de-tection based on shell commands and Markov chain models[J].Journal on Communications,2011,32(3):98-105. [12]Zhang Jiajun,Zhang Dakun,Hao Jie.Local translation prediction with global sentence representation[C]//Proceedings of the 24th International Joint Conference on Artificial Intelligence,Buenos Aires,Jul 25-31,2015.Menlo Park:AAAI,2015:1398-1404. [13]Sen S.Using instance-weighted Naive Bayes for adapting concept drift in masquerade detection[J].International Journal of Information Security,2014,13(6):583-590. [14]Huang Lin,Stamp M.Masquerade detection using profile hidden Markov models[J].Computers&Security,2011,30(8):732-747. 附中文參考文獻: [2]李超,田新廣,肖喜,等.基于Shell命令和共生矩陣的用戶行為異常檢測方法[J].計算機研究與發(fā)展,2012,49(9):1982-1990. [8]王秀利,王永吉.基于命令緊密度的用戶偽裝入侵檢測方法[J].電子學報,2014,42(6):1225-1229. [10]田新廣,孫春來,段洣毅.基于shell命令和Markov鏈模型的用戶行為異常檢測[J].電子與信息學報,2007,29(11):2580-2584. [11]肖喜,田新廣,翟起濱,等.基于shell命令和Markov鏈模型的用戶偽裝攻擊檢測[J].通信學報,2011,32(3):98-105.2.2 CCNN-LSTM模型實現(xiàn)
2.2.1 CCNN-LSTM模型損失函數(shù)
2.2.2 基于序列表征的負樣本采集方法
3 基于CCNN-LSTM的內部用戶偽裝入侵檢測
4 實驗及分析
4.1 實驗數(shù)據(jù)集及評價指標
4.2 實驗設置
4.3 實驗結果與分析
4.3.1 CCNN-LSTM網絡超參數(shù)分析
4.3.2 負樣本采集方法對檢測效果的影響
4.3.3 與其他檢測方法的比較
5 總結與展望
5.1 本文工作總結
5.2 未來工作展望