柴亞闖,楊文忠,張志豪,胡知權,杜慧祥,錢蕓蕓
1(新疆大學 信息科學與工程學院,烏魯木齊 830046) 2(新疆大學 軟件學院,烏魯木齊 830046)
隨著計算機及網絡技術的飛速發展,越來越多的人通過計算機學習知識、聊天通訊,甚至網上交易.然而隨著計算機越來越多地應用于生活中的方方面面,計算機或服務器面臨的安全隱患也越來越嚴重.入侵檢測系統(Intrusion Detection System,IDS)作為一種監視和分析主機或網絡事件的系統,在當前網絡安全防御中發揮著非常重要的作用[1].由于物聯網及工業控制網絡對實際生活生產的巨大影響,大部分的入侵檢測系統主要針對于物聯網或工控網絡,用于主機、服務器或其它領域的相對較少[2-6].近年來,許多國內外學者將機器學習方法引入入侵檢測中,使網絡設備的入侵檢測能力大大增強.相比以往基于規則的入侵檢測,這些機器學習方法通過學習網絡的正?;虍惓P袨榉磻谀繕讼到y底層網絡流量的不同特征來辨別入侵行為.因此這種方法相比以往方法具有能檢測新的未知類型攻擊的優點[7].但是目前機器學習或深度學習應用于入侵檢測還有著以下不足[8]:
1)需要大量有標簽的數據集進行監督訓練.為了得到檢測性能比較好的模型,用于訓練模型的數據量往往是越多越好.且為了降低模型檢測的誤報和漏報率,這些數據集往往都要有人工添加標簽處理[9].因此大量數據收集、整理并添加標簽會給人們帶來較高的工作量.
2)離線學習.目前機器學習或深度學習應用于入侵檢測的基本流程是收集數據、對收集到的數據進行預處理、用備選模型進行訓練、用檢測數據測試模型性能.比如在入侵檢測領域,基于公開離線數據集(KDD99、NSL-KDD等)開展的研究占了相當大的比例,盡管這些模型在公開數據集上取得了較好的檢測效果[10],但不同于圖像處理中訓練及檢測數據與實際應用環境中非常類似的特點,入侵檢測領域中成功的入侵大都歸功于攻擊者奇異的想法和手段,因而其訓練及檢測數據集中所體現的網絡環境和網絡事件與實際使用中的可能會大不相同,而這種利用離線數據學習的方法會使模型只學習到收集數據時網絡環境的特點,這就會導致模型在實際使用中缺乏靈活性與自學習能力,從而使其正確率及實際可用性大打折扣.
3)占用資源量大,訓練復雜度高,且實時檢測較難實現.用大量數據訓練模型意味著方法對計算機或其它智能設備有較高的硬件要求.比如,加載數據集需要較大的內存,為了提高模型的訓練及檢測速度需要較高性能的處理器等.而人工神經網絡的計算復雜度會隨著神經元的個數指數增長[8],層數較深的網絡也會有較高的訓練復雜度.因此這種方法在執行速度上劣于基于規則的方法.面對每秒鐘會產生的巨大數據包數量,實時檢測往往難以保證.
鑒于以上不足,應該著力完善機器學習在入侵檢測領域的應用方法和應用的具體網絡場景.所以,本文提出了一種結合傳統機器學習方法—集成K-means聚類和人工神經網絡模型(Artificial Neural Network,ANN)—自編碼器的無監督在線主機入侵檢測方法EKM-AE,具有如下特點:
1)無監督學習.本文方法針對Kitsune方法[8](2018年NDSS會議論文,下文亦用Kitsune代表)需要正常數據樣本訓練自編碼器的缺陷,利用集成K-means聚類從一般流量(正常與異常流量均存在)中得出正常樣本用以訓練自編碼器,所以能在全程無監督(不需要標簽)的條件下較好地區分測試集中的正常與異常流量.降低了一般機器學習需要大量標簽數據產生的數據集收集整理的工作量.
2)在線處理.本文方法可以設計成獲取使用時流量作為訓練數據的形式,即在線訓練、在線檢測,這樣就有利于克服上述離線學習產生的缺陷,本文實驗部分就以在線訓練、在線檢測方式進行實驗對比,展現本文方法的有效性.
3)復雜度低.本文方法的檢測模型主要由一自編碼器構成,使得模型訓練檢測簡單,執行速度在很多情況下高于數據包產生的速度.
目前入侵檢測可以根據其使用的方法分為非機器學習的檢測和機器學習的檢測.
Guo Q等人[11]設計了一種對無線傳感器網絡任一路由協議的所有攻擊類型自動生成規則的方法,使得無線傳感器網絡場景下的入侵檢測更具有普適性和靈活性;Shen S等人[12]將無線傳感器網絡中攻擊者與入侵檢測代理之間的作用建模成一種入侵檢測博弈模型,根據兩者的作用關系定義代價矩陣,從而得到一種可以節省無線傳感器節點資源的防御方法;Fronimos D等人[13]評估了幾種低交互式蜜罐的性能,并進一步討論了低交互式蜜罐在發現高級可持續威脅早期跡象方面的用途;Pawlick J等人[14]對云控系統中云管理員、攻擊者和設備3種不同角色用不同的博弈模型進行建模,深化了對云控系統安全的理解.
可以看出,入侵檢測中的非機器學習方法大都通過生成規則或建立博弈模型來進行,部分方法對已知類型的攻擊具有較好的檢測能力,但這些方法有著不能檢測未知攻擊、對大數據場景不適用或使用的工具具有局限性(比如低交互式蜜罐)等缺點.
機器學習方法在入侵檢測領域中的應用也比較多.基本模式是利用代表網絡事件的網絡流量等數據,建立模型,學習正常行為或攻擊行為的不同特征,從而能夠自動辨別入侵行為[15].
許勐璠等人[1]針對目標網絡在遭受攻擊時反應在底層重要網絡流量特征各異的特點,引入信息增益率定量分析不同特征對檢測性能的影響程度,采用半監督學習利用少量標記數據獲得大量數據用于訓練,提高模型的檢測性能;Prabavathy S等人[16]針對規??煽s放、動態的物聯網環境,基于模糊計算,采用在線序列極限學習機(Online Sequential Extreme Learning Machine)的方法,構建分布式的檢測體系;Anand S等人[17]使用改進的遺傳K均值算法(IGKM)進行入侵檢測實驗,并在KDD99數據集上與K-means++算法做了對比;Yisroel M等人[8]針對網關或路由器設備內存和計算能力有限的問題,提出了一種基于集成自編碼器的在線入侵檢測方法.
以上機器學習方法雖然能夠檢測未知類型的攻擊,但會存在特征選取不全面、需要大量數據用以訓練等問題,進而造成模型對某些類型的攻擊檢測性能不高、數據的可靠標簽化需要成本、檢測模型受限于訓練數據等問題[18].比如文獻[1]中方法雖然可以利用少量標記數據獲得大量訓練數據,但是半監督方式本身會使訓練數據的標簽出現一定的錯誤率.Kitsune雖然也采用了基于自編碼器的在線檢測方法,但該模型的訓練要用正常流量數據進行,不能說是一種完全無監督的方法,而且該模型的特征提取方法在某些應用場景中不能全面反應網絡流量的特點.
因此,本文提出基于EKM-AE模型的無監督主機入侵檢測方法,實驗部分把本方法同幾種常用無監督方法以及Kitsune方法進行了對比.
本文EKM-AE模型用到的相關理論有兩部分:集成K-means聚類與自編碼器.
k均值聚類算法是一種迭代求解的聚類分析算法,首先選取k個對象作為初始聚類中心,通過某種距離計算方法,計算每個對象與各個聚類中心的距離,把每個對象分配給距離它最近的聚類中心.聚類中心以及分配給它們的對象就代表一個聚類.分配樣本后,聚類中心會根據聚類中現有的對象被重新計算,這個過程將不斷重復直到滿足某種終止條件為止.這種方法可以自動地由樣本間的某種距離將樣本區分開來,具有簡單、無監督和運行速度快的優點.
集成學習因為相較于單個模型通常能夠獲得更好的預測結果被廣泛應用.一般通過構建并結合多個單個模型來實現.在單個模型產生后,通過某種策略將單個模型的結果結合起來,產生更好的預測結果.
因此,為了增強K-means聚類結果的可靠性,本文采用集成K-means聚類方法.先通過一定策略將輸入數據分成若干部分,接著對每一部分進行K-means聚類操作,最后結合每部分數據的聚類結果綜合得出輸入數據的聚類結果.該過程可用圖1來表示.

圖1 集成K-means聚類示意圖Fig.1 Schematic diagram of the ensemble K-means clustering
注意,還有其它的無監督聚類算法可以使用,比如DBSCAN等,但是集成方式的K-means算法在本環境中最直接有效.若采用DBSCAN算法,由于必須不斷通過調整eps和min_samples參數值來得到合適的聚類數,所以在集成方式的每輪迭代中都會造成較高的時間復雜度,以至基本無法在實際環境中使用.第5節會進一步討論該問題.
自編碼器(autoencoder,AE)是一類半監督學習和無監督學習中使用的人工神經網絡,功能是通過將輸入信息作為學習目標,對輸入信息進行表征學習.包含編碼器和解碼器.對輸入信息的高效表示稱為編碼,這種表示維度一般遠小于輸入數據,使得其可用于降維.而由編碼階段的低維表示還原出原輸入信息稱為解碼.自編碼器一般表現為將輸入復制到輸出來工作,但通過不同方式對神經網絡增加約束,可以使這種復制變得極其困難.比如,可以限制內部表示的尺寸(即實現降維),或者對訓練數據增加噪聲并訓練自編碼器使其能恢復原有.這些限制條件防止自編碼器機械地將輸入復制為輸出,并強制它學習到數據的高效表示.此外,自編碼器還有著其它許多作用.

圖2 自編碼器示例圖Fig.2 Schematic diagram of the autoencoder
作為一種特殊的人工神經網絡,自編碼器具有神經網絡的一般結構:輸入層(input,visible layers)、隱藏層(hidden layers)和輸出層(output layers).一個典型的自編碼器(只有一個隱藏層)結構可以用圖2來表示.



自編碼器可采用典型的神經網絡訓練方法—誤差反向傳播算法進行訓練.訓練之前,需要定義輸出向量與輸入向量差值的度量(即重構誤差),作為反向傳播的優化目標.
自編碼器可以起到很多作用,用于異常檢測就是其中之一.基本原理就是以數據X進行訓練之后的自編碼器就會具有重構與X處于相同分布的其它數據的能力.如果一個數據與X屬于不同的數據分布規律,則其重構結果與其本身就會有較大的誤差.同樣,在定義了輸入與其重構結果之間差值的度量后,通過設定閾值,就可以檢測是否有異常情況發生,本文就是利用這一特點檢測網絡中存在的異常情況.
本文EKM-AE模型可分為EKM(集成K-means聚類)部分和AE(自編碼器)部分,其中EKM部分用于以無監督的方式得出流量中的正常樣例用于訓練,AE部分是用于執行訓練和異常檢測的自編碼器.整個方法流程包括數據包抓取、數據包解析、特征獲取、模型訓練和異常檢測5個部分,如圖3所示.

圖3 本文方法流程圖Fig.3 Flow diagram of this method
數據包抓取通過第3方工具捕獲流經主機網卡的實時流量數據.本文使用wireshark工具,將網卡流量數據捕獲為原始流量數據pcapng文件.數據包解析通過wireshark中的tshark工具,將原始pcapng文件中的有關屬性信息提取出來,從而將原始流量數據轉換為檢測需要使用的信息.特征獲取將數據包解析的結果轉換成計算機能夠處理的數字(向量),用于下一步模型的訓練或執行.模型訓練部分先無監督地找出代表正常流量的數字向量,并構造自編碼器,然后由這些向量對自編碼器進行訓練.異常檢測部分接收代表實時流經網卡流量的數字向量,并用完成訓練的自編碼器模型對數字向量進行重構,給出數字向量的重構誤差.在重構誤差大于某一閾值時,方法判定對應的流量數據具有入侵行為.
由于數據包抓取,數據包解析兩部分均通過第3方工具來實現,因此本文對這兩部分不做詳細說明.
特征對于模型最終的性能會產生非常大的影響,一般使用全面反應客觀數據規律的特征訓練得到的模型都具有較好的性能.特征獲取的任務最主要是用數字去代表實際的數據,有不少方法根據實際信息計算出某些統計量(即統計特征)作為特征獲取結果,也有些方法為了降低模型的復雜度,選用盡可能少的特征去代表實際信息.這些方法有著選取特征不全面或計算復雜度過高的問題,因此本著簡單有效的原則,本文選取了數據包長度、源目MAC地址、源目IP地址和源目TCP端口等可能對檢測結果有影響的18個屬性信息,這些屬性在tshark中的對應名稱如表1所示.

表1 屬性名稱列表Table 1 Table of property name used
然后用數字對抓取數據中這些屬性出現的取值進行編號,即一種編號對應一種屬性取值情況.在實現中,利用python語言中字典數據類型即可實現這種轉換,將屬性取值作為字典鍵值key,其對應的數字編號作為value,這種處理得到的示例字典如圖4所示.

圖4 特征獲取構造字典示例圖Fig.4 Schematic diagram of the generated dictionaries for getting features
利用字典中的value值得到代表每條數據樣例的向量表示.隨后對這些向量表示進行歸一化操作以便于訓練.需要注意的是,為了實現在線訓練、在線檢測的方式,本文參考了Kitsune對數據歸一化的操作方式,根據處理過的向量不斷改變記錄最大值和最小值的參數norm_max和norm_min,并利用當前參數norm_max和norm_min的值對要處理的向量進行歸一化,實現一種在線歸一化的方式,歸一化公式為:
其中pad取非常接近于0的正小數,如10-15.按照這種方式,在模型訓練前,記錄前10000條數據逐一歸一化后的結果以在模型訓練階段使用,類似地,在異常檢測階段,根據訓練階段最后的norm_max和norm_min參數值,對待檢測樣例的向量表示進行歸一化,之后輸入到已完成訓練的自編碼器模型進行檢測.
這種特征獲取方法以簡單直接的方式記錄了實際數據包的特點,避免了計算復雜統計量對時間的大量消耗,又能夠較全面地記錄實際流量數據的特點,對比實驗中也說明了這個問題.
本文在模型訓練部分,與以往方法最顯著的不同就是設法彌補自編碼器需要正常標簽的數據進行訓練的不足.如果能夠無監督地發現正常樣本,再用這些正常樣本對自編碼器訓練,就能夠實現更大程度的無監督化,這種無監督化,在對比真實標簽測試模型性能之外的其他階段,均不需要人工方式為數據集添加正?;虍惓撕?為了實現這個目標,本文EKM-AE模型在EKM部分利用網絡流量中正常數據要遠遠多于入侵性數據的一般規律,采用集成K-means方法對目標數據進行無監督聚類操作,并認定最終聚類結果里,占多數的一類為正常數據類.EKM部分中的集成K-means聚類操作可表示為下述算法1.
算法1.EKM部分中集成K-means聚類:
clustering(train_x,n):
last_result=[]
while cur_iter sub_x=select_sub_matrix(train_x) result= K-means(k=2,sub_x) result=modify_by_more_to_negative(result) last_result.append(result) cur_iter++ end 活動安排的時間是一天,有聽報告、聽課、參觀校園等,內容比較翔實而常規,但時間安排比較寬松,我們有足夠的時間在校園“游蕩”。隨后的接觸、所見所聞,隨意的溜達,徹底顛覆了剛來時的那點“灰灰”的印象。 last_result=numpy.array(last_result).T final_result=decide_by_vote(last_result) return final_result 根據這種機制,在模型訓練之前,捕獲最開始的10000條數據樣例,執行集成K-means聚類操作,將多數的一類視為正常樣例,用于自編碼器模型的訓練.為了防止數據信息在逐層傳遞中不斷丟失,本文采用只有一個隱藏層的自編碼器作為訓練與檢測模型.由于輸入樣例維度為18,所以自編碼器的輸入神經元個數與輸出神經元個數均為18,隱藏層神經元個數按一定的比例進行壓縮.訓練過程可表示為下述算法2. 算法2.自編碼器訓練過程: train(θ,X,max_iter): cur_iter=0 while cur_iter<=max_iter do: A,X′=hθ(X) deltas=bθ(X,X′) θ=GD(A,deltas) cur_iter++ end return θ 上述過程中,A與X′分別表示當X作為輸入時,正向傳播所得到的每個神經元的激活量與實際的輸出,由于模型訓練目的是能夠重構輸入,所以deltas表示實際輸出與期望輸出(輸入本身)的差值(其他符號可參見3.2節),隨后利用梯度下降算法更新權重,直到迭代次數超過既定最大次數為止.注意在本實驗中,為了保證模型在檢測階段的有效性,同時減少模型的訓練時間,模型訓練階段權值調整方式為每條訓練數據僅對模型權重進行一次調整,即cur_iter初始化的值與max_iter相等.當聚類模塊得到的所有正常樣例都已執行過訓練過程,自編碼器的訓練結束. 圖5 異常檢測過程圖Fig.5 Schematic diagram of anomaly detection 為了檢測本文EKM-AE方法在基于主機的入侵防御中是否有效,使用虛擬化軟件VMware-workstation搭建了虛擬的局域網實驗環境.針對可能對主機發起的5種攻擊類型做了實驗,包括從目標主機中抓取流量數據,用EKM-AE方法給出實驗結果,將結果與相關方法進行對比并分析原因等過程. 實驗選取的5種攻擊類型有:使用kali-Linux對主機進行的arp攻擊(含此攻擊的測試數據用“kali_arp”代表,本段下文括號內字母意義類似)、使用第3方軟件p2p終結者對主機進行的arp攻擊(p2p_arp)、針對主機操作系統漏洞的攻擊(winserver)、針對主機的dos攻擊(dos)以及包含后門的文件對宿主主機的攻擊(adobe).以上5種攻擊中,kali_arp、dos攻擊通過kali_linux的命令行命令arpspoof、hping3實現,winserver攻擊通過在kali-linux中,利用靶機win 7操作系統曾有的漏洞ms17_010_eternalblue來實現,adobe攻擊利用靶機Adobe Reader 9版本軟件中含有的漏洞,在kali-linux里生成含有后門的pdf文件來實現,p2p_arp攻擊通過使用第3方工具軟件p2p終結者,以圖形用戶界面方式實現. 實驗環境中涉及的系統或軟件版本如表2所示. 表2 各軟件或系統版本詳情表Table 2 Table of details of software and system used 為了說明EKM-AE中無監督聚類部分的有效性,即盡管訓練數據中含有異常樣本,方法也能發現后續發生的入侵行為,在模型的訓練數據中引入了入侵性數據(用kali-linux對靶機進行了arp欺騙).同時,因為Kitsune方法需要在模型訓練之前用一段數據得出特征映射矩陣以生成多個自編碼器,所以本文做了如下設定用于這兩種方法的對比:假設Kitsune用于得到特征映射的數據有10000條,用于訓練模型的數據有10000條(根據文獻[8],此20000條數據需均為正常訪問數據),EKM-AE方法用于提取正常樣本訓練模型的數據共10000條(此10000條數據中含有惡意數據,更接近實際的使用場景),在含有上述5種攻擊類型的測試數據上對比實驗效果.此外,還將EKM-AE方法與離線處理的高斯混合模型(GMM)、孤立森林模型(IsolationForest)、K-means方法進行了對比. 一般可以通過真正率(TPR)、真負率(TNR)、假正率(FPR)、假負率(FNR)和準確率(accuracy)對二分類模型性能進行評價,分別定義為: 本文采用了TPR、FPR和accuracy指標來對比各個模型的性能.此外,本文定義了處理速度指標process_rate用以對比各個方法檢測的實時性: 圖6-圖9分別表示5種方法在含有5種不同攻擊類型的數據集上的檢測準確率(accuracy)、真正率(TPR)、假正率(FPR)和執行速度(process_rate).其中K-means方法、GMM方法的參數均已通過sklearn中工具包GridSearchCV進行了參數調優,Kitsune異常檢測的閾值選擇原則是使分類TP值最大,同時FP值最小. 圖6 各種方法在5種數據集上的準確率accuracyFig.6 Accuracy of each method in 5 data sets 從accuracy可以初步看出,EKM-AE在檢測kali_arp、dos、adobe攻擊時表現均不錯.Kitsune方法表現不好的原因是它主要以數據包的長度計算對應樣例的統計量,這樣得到的特征較難以檢測出具有欺騙或攻擊性內容的數據包(如kali_arp、p2p_arp、winserver和adobe攻擊).因為入侵檢測數據集具有異常樣例一般遠少于正常樣例的特點,這種情況下,accuracy值較高不一定說明檢測出了足夠多的異常樣本.所以為了說明方法對異常樣本的檢測能力,我們還需要對比在5種數據集上的真正率(TPR)和假正率(FPR). 從圖7可以看出,EKM-AE在5種數據集上均具有很好的效果,IsolationForest雖然從accuracy指標看表現很好,但其在大部分數據集上的tpr值均不高,說明其并沒有把足夠的異常樣本檢測出來,K-means方法和GMM方法也是類似的情況. 圖7 各種方法在5種數據集上的真正率tprFig.7 True positive rate of each method in 5 data sets 圖8進一步補充對比了各種方法的性能.可以看出,Kitsune在5種數據集上的fpr值均較高,說明該方法并不適合于本文基于主機的入侵檢測.從上述三種指標的角度綜合來看,EKM-AE能在全過程無監督的情況下較好地區分出局域網環境中對主機的正常訪問流量與常見攻擊流量.且對不同的攻擊類型,方法性能具有相對穩定性. 圖8 各種方法在5種數據集上的假正率fprFig.8 False positive rate of each method in 5 data sets 圖9通過process_rate指標衡量了各種方法對流量處理的實時性. 圖9 各種方法在5種數據集上的執行速度process_rateFig.9 Execution speed-process_rate of each method in 5 data sets 從圖9可以看出,K-means方法和GMM方法也具有較快的訓練檢測速度,但從tpr、fpr和accuracy指標來看,它們沒有較好的檢測性能.Kitsune方法檢測速度較慢,是因為其特征提取模塊根據源目ip、源目mac和數據包長度進行了較為復雜的統計特征計算.EKM-AE對5種數據集均具有較快的訓練檢測速度.以最低process_rate=2.78(kpackets/s)來看,每秒處理2780條數據包已基本滿足實際使用時的一般情況.因此綜合來看,EKM-AE在具有穩定較好的檢測性能的同時,也具有較好的檢測實時性. 在無監督聚類模塊,筆者用集成DBSCAN聚類代替本文中集成K-means聚類的實驗中發現,為了得到合適的聚類數,DBSCAN方法需要不斷調整eps和min_samples參數值,且在每次由不同特征列選出訓練數據的“子部分”后都需要類似調整,而在實驗中一次調參就耗費了較多的時間(71.82秒),說明在訓練之前的聚類部分,相對于集成K-means,集成DBSCAN不適合本文環境下的使用. 因此上述實驗結果表明,本文EKM-AE方法以在線訓練、在線檢測的方式,在全過程無監督的條件下,對實際使用場景中發生的攻擊具有較好的檢測性能,同時具有檢測實時性. 本文提出了一種結合集成K-means和自編碼器的無監督在線主機實時入侵檢測方法EKM-AE.利用網絡流量中正常訪問數據多于異常訪問數據的一般規律,通過集成K-means方法和自編碼器模型,實現對網絡入侵的無監督實時在線檢測.通過局域網中基于主機的攻擊檢測實驗表明EKM-AE具有一定的有效性.在網絡攻擊日益復雜、新穎的挑戰下,這種在線訓練、在線檢測的方法會比傳統離線學習模型發揮更大的優勢. 對比其它相關方法可以發現,機器學習用于網絡入侵檢測,應注意提取的特征要具有全面性和實時性.全面性即特征應全面反應網絡環境特點,實時性即特征要能代表當前網絡環境特點.傳統離線學習模型在實際應用中性能大打折扣就是由于其訓練數據的特征不能或不全面反應實際使用時網絡環境的流量特點,因此以后的研究中應更注重特征的全面性與實時性.另外,EKM-AE可以考慮更多的特征,并按特征所屬協議種類進行分組,以實現更加準確、更多種類的入侵檢測.
4.3 異常檢測


5 實驗結果及分析
5.1 實驗環境

5.2 評價指標

5.3 結果及分析




6 總結與展望