專利名稱:一種未知應用層協(xié)議自動分析方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)管理與網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,特別是涉及一種未知應用層協(xié)議自動
分析方法。
背景技術(shù):
Internet上的網(wǎng)絡(luò)應用日新月異。除了基于常見的、標準的應用層協(xié)議的各種應 用以外,還大量出現(xiàn)各種非標準協(xié)議的應用,以及各種新型網(wǎng)絡(luò)攻擊。這對于網(wǎng)絡(luò)管理人員 來說,要從采集的海量數(shù)據(jù)中分離、分析、識別、進而控制這些未知的應用或者攻擊,是一件 非常困難的事情?,F(xiàn)有的協(xié)議分析工具,只能分析已知和標準的協(xié)議,不能夠分析未知的、 新型的應用層協(xié)議,也不能夠發(fā)現(xiàn)和分析新型的攻擊?,F(xiàn)有的基于應用識別的流量管理設(shè) 備,只能識別和管理已知的應用所產(chǎn)生的流,不能識別和管理未知、新型應用產(chǎn)生的流。要 識別和管理新出現(xiàn)的應用,必須要通過人工分析建立該應用的正則表達式,并通過實驗和 調(diào)整提高該正則表達式的正確識別率、減少其誤識別率。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種對未知應用層協(xié)議進行自動發(fā) 現(xiàn)、自動聚類、自動分析、自動識別的技術(shù)。它避免了人工處理海量數(shù)據(jù)的困難,提高了網(wǎng)絡(luò) 管理的效率,使得網(wǎng)絡(luò)管理的效率可以跟上新型網(wǎng)絡(luò)應用出現(xiàn)的速率,可以及時對抗新型 網(wǎng)絡(luò)攻擊。 為了實現(xiàn)上述技術(shù)目的,本發(fā)明包括如下技術(shù)特征一種未知應用層協(xié)議自動分 析方法,包括對未知應用層數(shù)據(jù)所進行的采集過程和對采集到的未知應用層數(shù)據(jù)所進行的 分析過程; 所述采集過程是對網(wǎng)絡(luò)的主干、出入口和/或數(shù)據(jù)流的匯聚點的每個數(shù)據(jù)流進行 識別并采集未知應用層協(xié)議的數(shù)據(jù); 所述分析過程具體包括如下步驟a、對未知應用層協(xié)議的數(shù)據(jù)進行聚類分析;b、 挖掘未知應用層協(xié)議的關(guān)鍵詞;c、探索未知應用層協(xié)議的會話規(guī)則;d、分析未知應用層協(xié) 議的報文格式;e、預測未知應用層協(xié)議的狀態(tài)轉(zhuǎn)移關(guān)系。 本發(fā)明可以是在線對每個流進行應用識別,把不能識別的流的應用層數(shù)據(jù)記錄下 來;分析過程是離線的,在需要的時候啟動,可以是人工啟動,也可以在未知應用層數(shù)據(jù)積 累到一定量的時候自動啟動,用于對未知應用層協(xié)議進行分析。 更進一步的,所述采集過程具體為先建立已知應用的自動機或者正則表達式,將 所述自動機或者正則表達式用于在線識別各種已知的應用,并把不能識別的應用所對應的 應用層數(shù)據(jù)保存到磁盤。 所述步驟a具體為從采集的未知應用層數(shù)據(jù)中提取數(shù)據(jù)流流量特征、字符串特征 以及各層頭部信息特征,并用這些特征組成特征向量進行聚類分析,把聚類得到的每個類 作為一種未知應用。
所述步驟b具體為采用數(shù)據(jù)挖掘技術(shù)從每種未知應用的數(shù)據(jù)中挖掘其協(xié)議關(guān)鍵
詞和頻繁關(guān)鍵詞序列。 所述步驟c具體為采用屬于同一種未知應用的頻繁關(guān)鍵詞序列構(gòu)造一棵代表該
協(xié)議會話規(guī)則的前綴樹,前綴樹中的每條連線代表一個關(guān)鍵詞,每條路徑代表一種會話過 程。 所述步驟d具體為把每個數(shù)據(jù)包的應用層數(shù)據(jù)看作一個字符串,然后對所有字符 串進行語法分析,以構(gòu)造代表該未知應用層協(xié)議的報文格式的自動機或者正則表達式。
所述步驟e具體為采用隱馬爾可夫模型參數(shù)估計算法,以各個流的關(guān)鍵詞序列為 訓練集,估計該未知應用層協(xié)議的狀態(tài)轉(zhuǎn)移概率矩陣,以及產(chǎn)生包括關(guān)鍵詞、字符串長度和 編碼方式的觀測值概率分布。 更進一步的,對得到的自動機或者正則表達式進行有效性驗證,具體為檢驗所述
的自動機、正則表達式接受該應用層協(xié)議的樣本流的程度,以及拒絕其它應用層協(xié)議樣本
流的程度,把經(jīng)過驗證的自動機或者正則表達式用于在線識別該應用層協(xié)議。 為了提供正常性測量功能,可以利用得到的未知應用層協(xié)議的隱馬爾可夫模型,
對所采集的樣本流進行測量,以獲取所有樣本的正常性分布和每個樣本的正常性,或者發(fā)
現(xiàn)異常的樣本流。 本發(fā)明通過采集未知應用層數(shù)據(jù)、對未知應用進行聚類分析、挖掘未知應用層協(xié) 議的關(guān)鍵詞、探索未知應用層協(xié)議會話規(guī)則、分析未知應用層協(xié)議的報文格式、估計未知應 用層協(xié)議的狀態(tài)轉(zhuǎn)移關(guān)系,實現(xiàn)對未知應用層協(xié)議的自動分析。所以本發(fā)明的突出優(yōu)點是 提供了一種對未知應用層協(xié)議進行自動發(fā)現(xiàn)、自動聚類、自動分析、自動識別的技術(shù),避免 了人工處理海量數(shù)據(jù)的困難,提高了網(wǎng)絡(luò)管理的效率,使得網(wǎng)絡(luò)管理的效率可以跟上新型 網(wǎng)絡(luò)應用出現(xiàn)的速率,網(wǎng)絡(luò)安全防御措施可以及時對抗新型網(wǎng)絡(luò)攻擊。
圖1為本發(fā)明的方法流程示意具體實施例方式
從系統(tǒng)結(jié)構(gòu)的角度看,本發(fā)明可以包括如下結(jié)構(gòu)包含兩個子系統(tǒng),在線子系統(tǒng)和 離線子系統(tǒng)。在線子系統(tǒng)保持在線運行,它具有至少兩個網(wǎng)卡,連接在網(wǎng)絡(luò)的主干、出入口 或者流的匯聚點,它對經(jīng)過該子系統(tǒng)的每個流進行應用識別,把不能識別的流的應用層數(shù) 據(jù)記錄下來;離線子系統(tǒng)則在需要的時候啟動,可以是人工啟動,也可以在未知應用層數(shù)據(jù) 積累到一定量的時候自動啟動,用于對未知應用層協(xié)議進行分析。 其中在線子系統(tǒng)包含應用識別和未知應用層數(shù)據(jù)采集。應用識別模塊利用事先建 立的已知應用的正則表達式,對每個由五元組確定的流進行應用識別;不能被識別的流的 原始數(shù)據(jù)包,則被作為未知應用的流的樣本,由未知應用層數(shù)據(jù)采集模塊保存到數(shù)據(jù)庫。離 線子系統(tǒng)包含聚類分析模塊、關(guān)鍵詞挖掘模塊、前綴樹統(tǒng)計模塊、語法分析模塊、狀態(tài)轉(zhuǎn)移 關(guān)系估計模塊。聚類分析模塊對采集的未知應用層數(shù)據(jù)進行聚類分析;關(guān)鍵詞挖掘模塊對 每個類的樣本流進行關(guān)鍵詞挖掘;前綴樹模塊探索未知應用層協(xié)議會話規(guī)則;語法分析模 塊分析未知應用層協(xié)議的報文格式;狀態(tài)轉(zhuǎn)移關(guān)系估計模塊估計未知應用層協(xié)議的狀態(tài)轉(zhuǎn)移關(guān)系。 如圖1所示,下面為具體實現(xiàn)流程的詳細介紹。 在線的未知應用層協(xié)議采集過程包括如下的(1)至(3)。
(1)建立已知應用的正則表達式 首先采用人工分析的方法或者本發(fā)明的自動分析方法,為每個已知應用建立正則 表達式或者自動機,使得這些正則表達式或自動機可以在每個流的開始階段即可以正確識 別其所屬的應用,并且使得誤識別率盡可能低。
(2)進行應用識別 事先建立的正則表達式列表將用于應用的在線識別。具體做法是,a)由數(shù)據(jù)包頭 部的五元組信息,即其源IP、目的IP、源端口 、目的端口 、傳輸層協(xié)議,確定每個數(shù)據(jù)包所屬 的流;b)提取每個數(shù)據(jù)包的應用層數(shù)據(jù),并重組該流的應用層數(shù)據(jù);c)用正則表達式列表 中的每個正則表達式去匹配重組的應用層數(shù)據(jù);d)如果有一個正則表達式匹配成功,則表 明該流已經(jīng)被識別;對該流做一個標記;對該流此后到達的數(shù)據(jù)包將不再進行數(shù)據(jù)包解析 和應用識別;e)如果沒有一個正則表達式匹配成功,且該流已到達的數(shù)據(jù)包個數(shù)沒有超過 事先設(shè)定的上限,例如10個數(shù)據(jù)包,則轉(zhuǎn)到a),等待下一個數(shù)據(jù)包的到達;否則f)將該流 標記為"未知"。
(3)采集未知應用的數(shù)據(jù) 對于標記為"未知"的流,記錄下其五元組信息,并把每個數(shù)據(jù)包的應用層數(shù)據(jù)提 取出來,每個數(shù)據(jù)包的應用層數(shù)據(jù)作為一個報文,把報文按數(shù)據(jù)包在流中的先后順序保存 到數(shù)據(jù)庫,同時記錄每個報文的長度、到達時間間隔、傳輸方向(由IP1到IP2,還是由IP2 到IP1,其中IP1是發(fā)起連接方的IP地址,IP2是接受連接方的IP地址)。每個未知流的 按時間順序交叉在一起的雙向報文序列,即為一個樣本流。 對采集到的未知應用層協(xié)議進行離線分析的過程包括如下的(4)至(8)
(4)對數(shù)據(jù)進行聚類分析 對于采集的未知應用樣本流集合,在其樣本數(shù)足夠多時,進行聚類分析。首先獲取 每個樣本流的統(tǒng)計信息,包括-流的特征信息連接接受方(即服務(wù)器的)端口號、流持續(xù)的時間、傳輸?shù)目倲?shù) 據(jù)包數(shù)、總的ascii字節(jié)數(shù)、總的binary字節(jié)數(shù)、數(shù)據(jù)包長度的統(tǒng)計特征、數(shù)據(jù)包到達時間 間隔的統(tǒng)計特征等。其中統(tǒng)計特征包括最大值、最小值、平均值、中值、方差、流起始階段 均值、流結(jié)束階段均值。-載荷的特征信息每個報文的ascii字節(jié)數(shù)和binary字節(jié)數(shù)、是否加密或加壓、
報文起始位置的頻繁子字符串集和結(jié)尾位置的頻繁子字符串集。-流的前導信息隧道或IPSec的密鑰交換和安全關(guān)聯(lián)信息。 把獲取的每個樣本流的統(tǒng)計信息組成一個特征向量A = (ai, a2,…,aN) , ^是該 流的第i個特征。 利用樣本流的特征向量對樣本流集合進行聚類分析,即把特征向量最接近的樣本
流作為一個類,并且使得類與類之間的特征向量離得盡可能遠。聚類分析的結(jié)果是,得到一
至多個類。把每個類看作一種未知應用。
(5)對每個類的樣本流進行協(xié)議關(guān)鍵詞挖掘
5
把每個類也即每種未知應用的樣本流的所有報文看作一個集合,采用如下方法進 行關(guān)鍵詞挖掘a)先確定關(guān)鍵詞的起始位置。方法是,先對報文的第一個字節(jié)進行統(tǒng)計,并 按照概率的高低對找到的字符進行排序,然后從高到低進行概率累加,當累積概率達到0. 8 時,如果高概率字符的個數(shù)超過50個,則開始對報文的第二個字節(jié)進行統(tǒng)計,...,直到某 個字節(jié)的累積概率為0. 8的高概率字符數(shù)少于50個時為止;設(shè)該字節(jié)為從報文起始位置 開始算起的第n個字節(jié);b)挖掘報文第n個字符位置開始的頻繁子字符串集,即關(guān)鍵詞集; c)在報文中保留挖掘出來的關(guān)鍵詞,去掉其它字符,使得每個樣本流被映射為一個關(guān)鍵詞 序列;d)挖掘關(guān)鍵詞序列中的頻繁子序列集;e)從樣本流集合中去掉那些不能被映射為關(guān) 鍵詞序列或不包含頻繁子序列的樣本流。
(6)探索未知應用層協(xié)議的會話規(guī)則 用頻繁子序列集構(gòu)建一棵前綴樹,樹中每條轉(zhuǎn)移線都代表一個關(guān)鍵詞,從樹根出
發(fā)的每條路徑都代表一個頻繁子序列,即該應用層協(xié)議會話的一種交互過程。
(7)分析未知應用層協(xié)議的報文格式 把樣本流集合中的所有報文,按照關(guān)鍵詞分成子集合,即具有相同關(guān)鍵詞的報文
被分到同一個子集合,沒有關(guān)鍵詞的報文這里忽略;然后,對每個子集合中的報文,進行語
法分析,即把每個報文看作一個字符串,分析同一個子集中的所有字符串共同遵循的語法
規(guī)則,從而構(gòu)成描述這種語法的代表報文格式的自動機或者正則表達式。 把前綴樹中的每條轉(zhuǎn)移線都用其關(guān)鍵詞所對應的自動機來代替,形成一個更大的
自動機;用其它應用層協(xié)議的流作為負例子集,對該自動機進行簡化;最后得到的自動機
或者正則表達式用于對該協(xié)議的在線識別。
(8)估計未知應用層協(xié)議的狀態(tài)轉(zhuǎn)移關(guān)系 把由樣本流映射得到的關(guān)鍵詞序列作為觀測序列。然后,用觀測序列集訓練一個 隱馬爾可夫模型。該模型的狀態(tài)代表該協(xié)議的狀態(tài),狀態(tài)之間的轉(zhuǎn)移線代表協(xié)議狀態(tài)轉(zhuǎn)換 時發(fā)出的觀測值(即關(guān)鍵詞)。用隱馬爾可夫模型的前后向算法和參數(shù)估計公式,估計得到 狀態(tài)之間的轉(zhuǎn)移概率矩陣和每條轉(zhuǎn)移線的觀測概率分布。去掉那些轉(zhuǎn)入概率很小的狀態(tài)和 那些某個轉(zhuǎn)出概率接近l的狀態(tài)。最后得到的隱馬爾可夫模型就反映了未知應用層協(xié)議的 狀態(tài)轉(zhuǎn)移關(guān)系。 進一步,對觀測值進行擴展,使之除了包括關(guān)鍵詞以外,還包括關(guān)鍵詞后跟隨的字 符串的編碼方式(ASCII、binary、或者ASCII與binary的混合)、以及字符串長度等。并 用隱馬爾可夫模型的參數(shù)估計算法估計其初始狀態(tài)分布n 、狀態(tài)轉(zhuǎn)移概率矩陣A、從狀態(tài)i 到狀態(tài)j的轉(zhuǎn)移時出現(xiàn)關(guān)鍵詞k的概率(k),在關(guān)鍵詞k后跟隨的字符串的編碼方式是c 的概率是ek(c),長度是L的概率fk(L)。用該隱馬爾可夫模型計算每個樣本流的或然概率 Ps, s是樣本流的編號。然后對{ps}進行統(tǒng)計,得到其均值P和均方差o 。把該模型作為 描述該應用層協(xié)議的正常模型。
另外本系統(tǒng)還提供如下的功能方案 a)提供編輯功能,用于新建、修改、保存、驗證自動機或者正則表達式。驗證自動機 或者正則表達式有效性的方法是,把樣本流集合看作正例子集,把其中的每個樣本流都看 作一個字符串,輸入到待驗證的自動機或者正則表達式,檢驗它們接受正例子的比例;把其 它應用層協(xié)議的樣本流集合看作負例子集,檢驗它們拒絕這些負例子的比例;當接受正例子的比例和拒絕負例子的比例都很高(例如大于95% )時,驗證通過這些自動機或者正則 表達式;否則拒絕該自動機或者正則表達式。把經(jīng)過驗證的自動機或者正則表達式用于在 線識別該未知應用層協(xié)議。 b)提供搜索功能,即根據(jù)用戶提供的關(guān)鍵詞、端口號、IP地址等,把網(wǎng)絡(luò)中符合條 件的流記錄到數(shù)據(jù)庫;或者從數(shù)據(jù)庫中把符合條件的樣本流的應用層數(shù)據(jù)顯示給用戶。
c)提供正常性測量功能。其方法是,用所挖掘的關(guān)鍵詞去匹配網(wǎng)絡(luò)中實時到達的 每個數(shù)據(jù)包的應用層數(shù)據(jù)或者已采集的樣本流。設(shè)在預期的第n個字符位置匹配到關(guān)鍵 詞k,該關(guān)鍵詞后跟隨的字符串的編碼方式是c(對應于ASCII、 binary、或它們的混合,c =0,1,2),長度是L。所以, =(k,c,L)是對當前數(shù)據(jù)包的觀測向量。觀測向量序列01, o2, . . . , ot就是對待測流到目前為止到達的t個數(shù)據(jù)包觀測的結(jié)果。把觀測向量序列0l, o2, . . . , ot輸入到該應用層協(xié)議的正常模型,得到其或然概率p,則其正常性的度量為m = p-y |/o。 m越小表示越正常。當m〉3時,可以認為是該應用層協(xié)議的異常流。
權(quán)利要求
一種未知應用層協(xié)議自動分析方法,其特征在于包括對未知應用層數(shù)據(jù)所進行的采集過程和對采集到的未知應用層數(shù)據(jù)所進行的分析過程;所述采集過程是對網(wǎng)絡(luò)的主干、出入口和/或數(shù)據(jù)流的匯聚點的每個數(shù)據(jù)流進行識別并采集未知應用層協(xié)議的數(shù)據(jù);所述分析過程具體包括如下步驟a、對未知應用層協(xié)議的數(shù)據(jù)進行聚類分析;b、挖掘未知應用層協(xié)議的關(guān)鍵詞;c、探索未知應用層協(xié)議的會話規(guī)則;d、分析未知應用層協(xié)議的報文格式;e、預測未知應用層協(xié)議的狀態(tài)轉(zhuǎn)移關(guān)系。
2. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于所述采集過程具 體為先建立已知應用的自動機或者正則表達式,將所述自動機或者正則表達式用于在線識 別各種已知的應用,并把不能識別的應用所對應的應用層數(shù)據(jù)保存到磁盤。
3. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于所述步驟a具體 為從采集的未知應用層數(shù)據(jù)中提取數(shù)據(jù)流流量特征、字符串特征以及各層頭部信息特征, 并用這些特征組成特征向量進行聚類分析,把聚類得到的每個類作為一種未知應用。
4. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于所述步驟b具體 為采用數(shù)據(jù)挖掘技術(shù)從每種未知應用的數(shù)據(jù)中挖掘其協(xié)議關(guān)鍵詞和頻繁關(guān)鍵詞序列。
5. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于所述步驟c具體 為采用屬于同一種未知應用的頻繁關(guān)鍵詞序列構(gòu)造一棵代表該協(xié)議會話規(guī)則的前綴樹,前 綴樹中的每條連線代表一個關(guān)鍵詞,每條路徑代表一種會話過程。
6. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于所述步驟d具體 為把每個數(shù)據(jù)包的應用層數(shù)據(jù)看作一個字符串,然后對所有字符串進行語法分析,以構(gòu)造 代表該未知應用層協(xié)議的報文格式的自動機或者正則表達式。
7. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于所述步驟e具體 為采用隱馬爾可夫模型參數(shù)估計算法,以各個流的關(guān)鍵詞序列為訓練集,估計該未知應用 層協(xié)議的狀態(tài)轉(zhuǎn)移概率矩陣,以及產(chǎn)生包括關(guān)鍵詞、字符串長度和編碼方式的觀測值概率 分布。
8. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于對得到的自動機 或者正則表達式進行有效性驗證,具體為檢驗所述的自動機、正則表達式接受該應用層協(xié) 議的樣本流的程度,以及拒絕其它應用層協(xié)議樣本流的程度,把經(jīng)過驗證的自動機或者正 則表達式用于在線識別該應用層協(xié)議。
9. 根據(jù)權(quán)利要求1所述的未知應用層協(xié)議自動分析方法,其特征在于利用得到的未知 應用層協(xié)議的隱馬爾可夫模型,對所采集的樣本流進行測量,以獲取所有樣本的正常性分 布和每個樣本的正常性,或者發(fā)現(xiàn)異常的樣本流。
全文摘要
本發(fā)明為一種未知應用層協(xié)議自動分析方法,包括在線的未知應用層協(xié)議采集過程和對采集到的未知應用層協(xié)議進行離線分析的過程;所述在線的未知應用層協(xié)議采集過程是對網(wǎng)絡(luò)的主干、出入口或流的匯聚點的每個數(shù)據(jù)流進行識別并采集未知應用層協(xié)議;所述未知應用層協(xié)議離線分析過程具體包括如下步驟a、對未知應用層協(xié)議的數(shù)據(jù)進行聚類分析;b、挖掘未知應用層協(xié)議的關(guān)鍵詞;c、探索未知應用層協(xié)議的會話規(guī)則;d、分析未知應用層協(xié)議的報文格式;e、估計未知應用層協(xié)議的狀態(tài)轉(zhuǎn)移關(guān)系。本發(fā)明避免了人工處理海量數(shù)據(jù)的困難,提高了網(wǎng)絡(luò)流量管理和網(wǎng)絡(luò)安全管理的效率。
文檔編號H04L29/08GK101707532SQ200910193469
公開日2010年5月12日 申請日期2009年10月30日 優(yōu)先權(quán)日2009年10月30日
發(fā)明者余順爭 申請人:中山大學