蔡樂+石榮+許都
摘 要: 目前常用的網(wǎng)絡協(xié)議識別軟件大多采用單一方法,且只能針對特定的網(wǎng)絡數(shù)據(jù)包或數(shù)據(jù)流進行識別,自動化程度低,識別準確度不高。針對上述情況構(gòu)建了一種新的協(xié)議識別系統(tǒng),該系統(tǒng)將DPI深度包檢測和DFI深度流檢測相結(jié)合,對非加密的數(shù)據(jù)使用深度包檢測方法,在特征字提取之后進行自動推理識別;對未知的加密數(shù)據(jù)則采用深度流檢測方法,提取數(shù)據(jù)流特征之后使用支持向量機進行識別。測試數(shù)據(jù)表明,所構(gòu)建的系統(tǒng)在保證準確率的情況下,不僅可以識別多層網(wǎng)絡協(xié)議,而且提高了識別的自動化程度,從而為網(wǎng)絡傳輸數(shù)據(jù)分析、狀態(tài)監(jiān)控、安全防護提供了新的技術(shù)手段。
關(guān)鍵詞: 深度包檢測; 深度流檢測; 協(xié)議識別; 自動推理; 支持向量機; 安全防護
中圖分類號: TN915?34; TN971 文獻標識碼: A 文章編號: 1004?373X(2018)03?0101?06
Abstract: Most commonly?used network protocol identification softwares use single method, can only identify the specific network data packet or data stream, and has low automation degree and identification accuracy. Therefore, a new protocol identification system is proposed, which is based on the combination of deep packet inspection (DPI) and deep flow inspection (DFI). The DPI method is used to perform the automatic reasoning for the unencrypted data after character word extraction. The DFI method is used to identify the unknown encrypted data with support vector machine (SVM) after data stream feature extraction. The test data shows that the constructed system can recognize the multi?layer network protocol and improve the recognition automatic degree while ensuring the accuracy, and provides a new technical means for network transmission data analysis, state monitoring and security protection.
Keywords: DPI; DFI; protocol identification; automatic reasoning; SVM; security protection
0 引 言
隨著信息技術(shù)的高速發(fā)展,網(wǎng)絡通信成為人們?nèi)粘I畹闹饕涣鞣绞?,隨之而來的則是木馬、入侵等網(wǎng)絡信息安全問題,計算機網(wǎng)絡的完整性、安全性、保密性均受到了非常大的挑戰(zhàn)。雖然傳統(tǒng)的網(wǎng)絡安全技術(shù)能夠解決一部分問題,但是對于網(wǎng)絡管理員或者用戶來說,能夠準確地識別通信數(shù)據(jù)所使用的協(xié)議具有重要的意義,其是研究區(qū)分服務、入侵檢測[1]、流量監(jiān)控以及分析用戶行為的前提和基礎。
目前,網(wǎng)絡協(xié)議識別技術(shù)得到了快速的發(fā)展和應用,主要包括基于端口、負載[2]以及協(xié)議行為進行識別,其識別對象主要集中在應用層協(xié)議。但是隨著網(wǎng)絡協(xié)議種類的不斷增加,協(xié)議規(guī)范的不斷變化,加上網(wǎng)絡代理和協(xié)議加密等技術(shù)的應用,使得網(wǎng)絡協(xié)議的識別更加困難,傳統(tǒng)的單一識別技術(shù)已經(jīng)無法有效地識別眾多的協(xié)議。因此,本文提出了DPI和DFI[3]相結(jié)合的網(wǎng)絡協(xié)議自動識別方法,針對不同的協(xié)議數(shù)據(jù)進行分類識別,并在綜合分析模塊中加入了自動推理等技術(shù)手段,形成了一套完整的協(xié)議識別系統(tǒng),下面對該系統(tǒng)的構(gòu)建方法與識別效果進行詳細的闡述。
1 系統(tǒng)組成與工作原理
針對單一協(xié)議識別技術(shù)的缺陷和協(xié)議特征庫自動更新困難的問題,結(jié)合深度包檢測和深度流檢測技術(shù),在原有識別模塊的基礎上加入了反饋機制。該系統(tǒng)由以下幾部分組成:數(shù)據(jù)預處理模塊、特征提取模塊、協(xié)議識別模塊、綜合分析模塊。
整個系統(tǒng)架構(gòu)如圖1所示。
圖1中各個模塊的主要功能和工作流程概述如下:
1) 數(shù)據(jù)預處理模塊:整個識別系統(tǒng)針對的數(shù)據(jù)類型是以太幀,預處理階段是將訓練數(shù)據(jù)和待識別數(shù)據(jù)以幀格式進行輸入,后續(xù)處理模塊也是以幀為單位進行處理。系統(tǒng)識別的對象是兩層以上的協(xié)議,包括網(wǎng)絡層、傳輸層以及應用層的協(xié)議。
2) 特征提取模塊:此模塊主要包括深度包檢測和深度流檢測兩部分,其特征提取流程如圖2所示。
由圖2可知,未加密數(shù)據(jù)流主要采用深度包檢測進行特征字提取,得到數(shù)據(jù)包特征;而對于加密數(shù)據(jù)流則采用深度流檢測進行特征提取,得到數(shù)據(jù)的流特征。同時對于新興或者未知協(xié)議的數(shù)據(jù)流進行雙重的特征識別,得到包和流的特征向量,其中新興的或者未知協(xié)議數(shù)據(jù)可能是綜合分析模塊通過反饋機制發(fā)送回來的數(shù)據(jù),此時在特征提取之后對未知數(shù)據(jù)的協(xié)議類型進行自定義命名并存入特征庫中,達到對特征庫進行更新和補充的目的。
3) 協(xié)議識別模塊:協(xié)議識別模塊整體流程類似于特征提取模塊,其識別流程如圖3所示,區(qū)別在于特征提取模塊是對被識別數(shù)據(jù)進行有針對性的特征提取,而協(xié)議識別模塊需要再通過對特征庫中的特征向量進行“特征比對”,從而得到數(shù)據(jù)特征。例如,包特征檢測部分則是直接針對特征庫中的特征字進行匹配,判斷被識別數(shù)據(jù)是否具有此特征字,若匹配成功則將該特征字作為此數(shù)據(jù)的數(shù)據(jù)包特征,最后輸入到綜合分析模塊中處理。endprint
另外,協(xié)議識別模塊中的數(shù)據(jù)是不確定協(xié)議類型的網(wǎng)絡原始數(shù)據(jù),而特征提取模塊中的數(shù)據(jù)是特定的協(xié)議數(shù)據(jù)。
4) 綜合分析模塊:此模塊主要由自動推理模塊和SVM模塊構(gòu)成,其中,自動推理模塊主要應用于DPI系統(tǒng)中,推理模塊中的推理機由推理模型[4]和推理規(guī)則構(gòu)成。首先將數(shù)據(jù)及其特征進行組合生成RDF[5](Resource
Description Framework)格式數(shù)據(jù)作為推理機的輸入,然后將自定義推理規(guī)則作為推理依據(jù)進行數(shù)據(jù)推理。SVM模塊主要應用于DFI系統(tǒng)中,首先用提取的數(shù)據(jù)流特征作為訓練集對SVM進行訓練,隨后直接輸入待識別數(shù)據(jù)的流特征進行協(xié)議識別。
5) 特征庫:特征庫主要分為包特征向量和流特征向量兩個部分,這兩部分數(shù)據(jù)主要由特征提取模塊獲得。除此之外,對于互聯(lián)網(wǎng)中大部分已有的協(xié)議如IP,TCP,UDP等都有明確的格式和規(guī)范,因此,規(guī)范中定義的字段值可以直接作為協(xié)議識別的特征字存入特征庫中,同樣地,對于已有協(xié)議的流特征也可以存入特征庫中,此部分特征稱為先驗知識。
2 數(shù)據(jù)包特征的提取
2.1 特征提取流程
對于未加密協(xié)議數(shù)據(jù)采用深度包檢測技術(shù)進行協(xié)議特征字提取,特征提取流程分為兩部分:頻繁集提取、關(guān)聯(lián)規(guī)則分析。其流程如圖4所示。
由圖4可知,首先對數(shù)據(jù)流進行頻繁集提取,在提取過程中將出現(xiàn)次數(shù)超過設定閾值的特征字符串集稱為頻繁集。在分析過程中,由于數(shù)據(jù)流都是按照協(xié)議標準進行組織的,所以特定位置上的特定序列不會隨著數(shù)據(jù)內(nèi)容的改變而改變,并且同一幀中的頻繁序列之間也存在著關(guān)聯(lián)關(guān)系,如協(xié)議首部某些字段的位置和內(nèi)容是固定不變的。因此,采用關(guān)聯(lián)規(guī)則分析算法對頻繁序列之間的關(guān)聯(lián)關(guān)系進行分析,從而得出關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則不僅能夠直接作為協(xié)議識別的特征向量,而且可以剔除錯誤的特征集,保留識別效率高的頻繁序列作為協(xié)議識別的特征字。
2.2 頻繁集提取算法
頻繁集的提取一般采用多模式匹配算法[6],常用的多模式匹配算法有AC[7]算法,AC?BM算法,Wu?Manber算法。其中,AC算法是模式匹配問題中最經(jīng)典的算法,該算法應用有限自動機巧妙地將字符比較轉(zhuǎn)換為狀態(tài)轉(zhuǎn)移。AC?BM算法則是在AC算法的基礎上,引入了BM[8]單模式匹配算法中的跳躍思想,結(jié)合好后綴和壞字符規(guī)則,加快了匹配的速度。Wu?Manber算法則完全不同于AC算法,在性能上也明顯優(yōu)于AC算法,兩者的區(qū)別主要體現(xiàn)在對模式序列的預處理上,Wu?Manber算法用字典結(jié)構(gòu)代替自動狀態(tài)機,對于數(shù)量較大的模式序列,這樣處理節(jié)省了大量的時間和空間資源。由于本文在進行多模式匹配中使用的是窮舉模式序列的方法,將會產(chǎn)生數(shù)量較大的模式集,因此采用Wu?Manber算法進行頻繁集提取。
頻繁集提取流程如圖5所示。
1) 首先定義需要提取的頻繁序列的長度范圍此范圍根據(jù)網(wǎng)絡協(xié)議特征字段允許長度而定,可以隨著不同的對象進行調(diào)整,然后窮舉所有符合長度范圍的十六進制序列作為模式序列;
2) 輸入模式序列和數(shù)據(jù)流進行匹配,對于匹配成功的模式序列進行個數(shù)統(tǒng)計,并記錄模式序列出現(xiàn)在相應幀的位置;
3) 當所有的數(shù)據(jù)幀匹配完成之后,統(tǒng)計出現(xiàn)次數(shù)大于或者等于所設定閾值的模式序列,并將其規(guī)定為頻繁集。
2.3 關(guān)聯(lián)規(guī)則挖掘算法
關(guān)聯(lián)規(guī)則(Association Rules)是對一個事物和其他事物的相互依存和關(guān)聯(lián)關(guān)系的一種描述。本文中的關(guān)聯(lián)規(guī)則表示的是特征向量的關(guān)聯(lián)關(guān)系,當兩個或多個特征向量同時出現(xiàn)的次數(shù)超過所設定閾值時,就認為此協(xié)議必須要同時具有這兩個或多個特征向量,即在判斷過程中,同時具有此兩個或多個特征向量的數(shù)據(jù)才被判定為此協(xié)議。
關(guān)聯(lián)規(guī)則挖掘的算法主要分為兩類:Apriori[9]算法,F(xiàn)P?Growth[10]算法。FP?Growth算法將數(shù)據(jù)I/O次數(shù)降低為兩次,相比于Apriori算法在時間效率上有較大的提高。除此之外,F(xiàn)P?Growth算法不需要產(chǎn)生候選項集,減少了產(chǎn)生和測試候選項集的時間,并且采用分而治之的方式對數(shù)據(jù)庫進行挖掘,減少了搜索時間。因此本文采用FP?Growth算法進行關(guān)聯(lián)規(guī)則分析。
關(guān)聯(lián)規(guī)則挖掘過程如下:首先將頻繁序列以及頻繁序列在各個幀中出現(xiàn)的位置情況作為輸入;然后利用FP?Growth進行關(guān)聯(lián)規(guī)則的挖掘,記錄頻繁序列在所給數(shù)據(jù)中的關(guān)聯(lián)情況,包括關(guān)聯(lián)序列出現(xiàn)的次數(shù)和位置;最后經(jīng)過分析將確定有效的協(xié)議特征存入特征庫中。
3 數(shù)據(jù)流特征的提取
3.1 特征提取流程
數(shù)據(jù)流分析主要針對應用層協(xié)議。其提取流程如圖6所示。
1) 訓練數(shù)據(jù)是由網(wǎng)絡抓包工具wireshark抓取的原始網(wǎng)絡數(shù)據(jù),之后將其處理為十六進制格式并以幀為單位進行存儲。
2) 將訓練數(shù)據(jù)輸入深度包檢測系統(tǒng),此系統(tǒng)結(jié)合L7?filter[11]中pat文件對訓練數(shù)據(jù)進行信息提取,以七元組的格式輸出,保存在packetMessage.txt文件中。七元組為:應用層協(xié)議、源/目IP、源/目端口、TCP/UDP、pid;其中pid是對每一幀數(shù)據(jù)的惟一標識。
3) 流特征提?。簩acketMessage.txt文件進行處理,提取五元組信息(源/目IP、源/目端口、傳輸層協(xié)議)并去重,區(qū)分TCP、UDP數(shù)據(jù)。
4) 對抓取的數(shù)據(jù)根據(jù)五元組信息進行分類,提取每一類中前15幀數(shù)據(jù)的三個基本特征(傳輸方向、包到達時間間隔、包大?。┮约皡f(xié)議類型作為該協(xié)議的訓練特征集,而對于待識別數(shù)據(jù)則只需提取傳輸方向和包大小。
3.2 數(shù)據(jù)流協(xié)議的識別
針對數(shù)據(jù)流進行識別主要采用SVM[12]分類器實現(xiàn),如圖7所示。其處理流程如下:endprint