專利名稱:基于報文分析的協(xié)議格式自動推斷方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù),尤其涉及一種分析協(xié)議實體的輸入輸出報文從而推斷協(xié)議報文格式的方法。
背景技術(shù):
協(xié)議是為在計算機(jī)網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的一系列規(guī)則、標(biāo)準(zhǔn)和約定,是計算機(jī)網(wǎng)絡(luò)中不可缺少的重要組成部分。協(xié)議作為網(wǎng)絡(luò)通信功能實現(xiàn)的支撐要素,是網(wǎng)絡(luò)領(lǐng)域的重點研究對象。但由于目前使用的協(xié)議大部分是私有協(xié)議,缺乏正式的描述文檔,需要采用協(xié)議逆向的方法提取協(xié)議信息。協(xié)議逆向指在不依賴于協(xié)議描述的情況下,通過監(jiān)控和分析協(xié)議實體的網(wǎng)絡(luò)輸入 輸出、系統(tǒng)行為和指令執(zhí)行流程,提取協(xié)議文法、語法和語義的過程。Samba、RdeSktop等針對非公開協(xié)議的逆向應(yīng)用取得了較為理想的效果,但存在過度依賴人工分析以及過程冗長耗時等共性問題。協(xié)議自動逆向可以顯著減少人工分析,提高私有協(xié)議的分析效率。根據(jù)分析對象的不同,協(xié)議自動逆向可以劃分為兩類。一類是基于協(xié)議實體的網(wǎng)絡(luò)流量來分析協(xié)議,被稱為報文分析(NetworkTrace)方法。另外一類是在主機(jī)上動態(tài)跟蹤報文的處理流程,這類方法被稱為指令執(zhí)行分析(Execution Trace)方法。報文分析方法的主要優(yōu)點在于不依賴于協(xié)議解析終端,實現(xiàn)簡單;通用性強(qiáng),適用于各個層次的協(xié)議。目前報文分析方法存在的主要問題是協(xié)議報文樣本集具有序列長、數(shù)量多的特點,分析過程需要耗費大量的時間和計算資源。此外,現(xiàn)有方法在字段語義推斷時沒有充分考慮字段間的相互約束,造成語義推斷的準(zhǔn)確度較低。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種基于報文分析的協(xié)議格式自動推斷方法,能夠高效準(zhǔn)確的對原始報文樣本進(jìn)行比對,并以此為基礎(chǔ),實現(xiàn)協(xié)議格式內(nèi)間隔字段、數(shù)據(jù)字段、序號字段、長度字段以及格式標(biāo)識字段等主要字段語義的自動推斷。本發(fā)明針對的兩個主要問題是現(xiàn)有逆向方法不能高效比對協(xié)議報文樣本集,得到的報文塊結(jié)構(gòu)不準(zhǔn)確;在字段語義推斷時沒有充分考慮字段間的約束關(guān)系導(dǎo)致語義推斷準(zhǔn)確度低。本發(fā)明的技術(shù)解決方案,基于報文分析的協(xié)議格式自動推斷方法,對協(xié)議實體的輸入輸出報文進(jìn)行分析從而推斷協(xié)議報文具體格式。采用此方法首先需要獲得足夠數(shù)量的由待分析協(xié)議所產(chǎn)生的網(wǎng)絡(luò)報文。獲取的方法是通過網(wǎng)絡(luò)抓包軟件對待分析協(xié)議的網(wǎng)絡(luò)通信進(jìn)行足夠長時間的監(jiān)聽,并將捕獲的所有網(wǎng)絡(luò)報文集中在一起用于分析。從統(tǒng)計學(xué)的角度看,由于捕獲的報文是待分析協(xié)議產(chǎn)生報文的抽樣,因此將它們稱為報文樣本?;趫笪姆治龅膮f(xié)議格式自動推斷方法包括以下步驟首先是對大量報文樣本進(jìn)行初步聚類,將結(jié)構(gòu)相似的樣本集中在一起;其次是對結(jié)構(gòu)相似的報文樣本以段為單位進(jìn)行多序列比對,明確報文的基本結(jié)構(gòu)和段的基本結(jié)構(gòu),進(jìn)而獲得報文整體的基本結(jié)構(gòu);最后是語義推斷階段,基于報文的基本結(jié)構(gòu),依據(jù)樣本中各字段的取值和變化特征對相應(yīng)字段的語義進(jìn)行推斷;所述初步聚類階段的工作流程以字節(jié)為單位,依據(jù)字節(jié)屬于可顯示字符還是二進(jìn)制字符,對獲取的網(wǎng)絡(luò)報文進(jìn)行劃段;依據(jù)劃段所展現(xiàn)出的格式序列,將格式序列相同的報文歸為一個類別,實現(xiàn)初步聚類。多序列比對階段的工作流程以段為單位實施多序列比對,在比對過程中首先對同一類別的報文采用局部序列比對算法進(jìn)行比對,構(gòu)造相對距離矩陣;而后采用層次聚類算法將參與比對的每個報文段放入一個獨立的集合,依據(jù)集合中報文段的平均距離進(jìn)行集合的合并,利用報文段構(gòu)造系統(tǒng)樹,每個報文段將作為系統(tǒng)樹中的一個節(jié)點;設(shè)置系統(tǒng)樹中同類報文段的最大距離,進(jìn)而將系統(tǒng)樹分割為多棵子系統(tǒng)樹;最后對子系統(tǒng)樹中的報文段采用全局序列比對算法進(jìn)行比對,實現(xiàn)同一類別報文段的對齊和長度統(tǒng)一,獲得此類別報文段的基本結(jié)構(gòu);
語義推斷階段的工作流程在確定某一類別報文樣本的基本結(jié)構(gòu)后,統(tǒng)計此類別樣本中各個字節(jié)取值的變化率;依據(jù)字節(jié)取值的變化率,確定樣本格式中的固定字段和可變字段;首先判斷固定字段是否為間隔字段,再判斷可變字段是否為數(shù)據(jù)字段,進(jìn)而推斷未識別的可變字段中是否存在序號字段;依據(jù)判斷出的字段語義,進(jìn)行字段合并,并在未識別字段中推斷長度字段;最后依據(jù)已識別出的格式序列,推斷樣本中的格式標(biāo)識字段;即采用“間隔字段一數(shù)據(jù)字段一序號字段一長度字段一格式標(biāo)識字段”的語義推斷流程。本發(fā)明的有益效果是1)在序列比對前,依據(jù)字符的可顯示屬性以字節(jié)為單位對報文進(jìn)行劃段,確定字節(jié)格式序列,序列比對針對相同格式序列的樣本實施,避免了將格式明顯不同的報文在一起進(jìn)行序列比對的計算開銷和時間開銷;2)序列比對不再針對完整的報文實施,而是以字符可顯示屬性決定的基本塊為單位進(jìn)行,解決了多序列比對算法在序列過長時存在的準(zhǔn)確度不高的問題。3)采用層次聚類算法構(gòu)造系統(tǒng)樹,進(jìn)而對具有高相似度的報文段實施全局序列比對,序列比對過程整體的空間復(fù)雜度和時間復(fù)雜度得到降低;4)采用“間隔字段一數(shù)據(jù)字段一序號字段一長度字段一格式標(biāo)識字段”的語義推斷流程,提高了語義推斷的準(zhǔn)確度和效率??傮w上看,本發(fā)明能夠高效準(zhǔn)確的對捕獲的報文樣本進(jìn)行比對,并以此為基礎(chǔ),實現(xiàn)協(xié)議格式內(nèi)間隔字段、數(shù)據(jù)字段、序號字段、長度字段以及格式標(biāo)識字段等主要字段語義的自動推斷。解決了現(xiàn)有逆向方法不能高效比對協(xié)議報文樣本集,導(dǎo)致推斷得到的報文結(jié)構(gòu)不準(zhǔn)確,以及在字段語義推斷時沒有充分考慮字段間的約束關(guān)系致使語義推斷準(zhǔn)確度低等問題。
圖I是本發(fā)明的整體處理流程示意2是本發(fā)明的多序列比對流程示意3是本發(fā)明的語義推斷流程示意圖具體的實施方式如圖I所示,本發(fā)明的實施例通過接收充足數(shù)量的網(wǎng)絡(luò)報文樣本,依據(jù)字符的可顯示屬性確定每個樣本的格式序列,將相同格式序列的樣本歸為一類,在此基礎(chǔ)上對同一類報文以段為單位進(jìn)行多序列比對,推斷段的結(jié)構(gòu)信息,進(jìn)而得到報文整體的結(jié)構(gòu)。在掌握報文結(jié)構(gòu)信息的基礎(chǔ)上,綜合同類所有報文執(zhí)行語義推斷,獲得報文結(jié)構(gòu)中間隔字段、數(shù)據(jù)字段、序號字段、長度字段以及格式識別字段等語義信息。本發(fā)明的完整流程包括初步聚類、多序列比對以及語義推斷三個部分。具體的實施方式以下分別說明。初步聚類的具體實施對于獲取的原始網(wǎng)絡(luò)報文,首先進(jìn)行劃段。劃段的規(guī)則是對報文的每一字節(jié)進(jìn)行類型判定,是否為可顯示字符,如果不是則標(biāo)記為二進(jìn)制字段。二進(jìn)制字段也可能在可顯示字符的范圍內(nèi),但考慮到完整可顯示字符串的每個字節(jié)與前后字節(jié)往往存在一定的連續(xù)性,可以根據(jù)字節(jié)所處上下文進(jìn)行準(zhǔn)確的判斷。連續(xù)的二進(jìn)制字段合成一個‘B’段,連續(xù)的可顯示字段合成一個‘A’段。經(jīng)過初步劃段后,報文的格式序列是一串
間隔組成的字符串。以報文的格式序列為依據(jù)對報文樣本進(jìn)行分類,格式序列相同的報文被歸為一類,實現(xiàn)報文的初步聚類。 多序列比對的具體實施本發(fā)明針對初步聚類確定的同一類報文相同位置的一段進(jìn)行多序列比對,這樣有助于提高樣本多序列比對的準(zhǔn)確度,進(jìn)而保證報文格式提取的準(zhǔn)確度。實施多序列比對時,首先采用局部序列比對算法,確定任意兩段間的最長匹配子序列,并依據(jù)最長匹配子序列的長度,構(gòu)造報文段的相對距離矩陣。以相對距離矩陣為基礎(chǔ),采用層次聚類算法,將參與比對的報文段構(gòu)造成一顆系統(tǒng)樹,每一個報文段作為系統(tǒng)樹的一個葉子節(jié)點。在此基礎(chǔ)上,采用設(shè)定距離閾值的方式確定同類報文段的相似度,以保證同一棵樹中的報文段有較高的相似度,并依據(jù)距離閾值對系統(tǒng)樹進(jìn)行分割,產(chǎn)生多棵子系統(tǒng)樹。對于子系統(tǒng)樹中的報文段,依據(jù)樹結(jié)構(gòu)采用全局序列比對算法實施兩兩比對,通過增加空格的方式保證同一棵子系統(tǒng)樹中報文段的對齊和長度統(tǒng)一,最終獲得報文段的基本結(jié)構(gòu)。將一類報文中各段綜合在一起可以獲得該類報文的總體結(jié)構(gòu)。語義推斷的具體實施語義推斷在掌握報文整體結(jié)構(gòu)的基礎(chǔ)上實施。將同類的所有報文集中在一起,對報文中的各個字節(jié)位置進(jìn)行分析。依據(jù)每個字節(jié)取值的變化率,確定報文中的固定字段和可變字段。此后,將依次推斷報文格式中的間隔字段、數(shù)據(jù)字段、序號字段、長度字段和格式標(biāo)識字段,所采用的識別策略具體如下(I)間隔字段的判斷間隔字段是指在整個報文或報文的某一段中起分割、劃段作用的關(guān)鍵字段,也稱為分隔符。由于二進(jìn)制類型的‘B’段中各字段的長度都較為固定,一般不會出現(xiàn)間隔字段,所以對該字段的識別只在可顯示字符類型的‘A’段中進(jìn)行。間隔字段的特征是取值固定,在樣本中間隔出現(xiàn)多次,長度通常為一個字節(jié),且一般不是字母、數(shù)字等常用的ASCII字符。本發(fā)明采取的識別策略是對未知固定字節(jié)進(jìn)行判斷,確定其是否為非字母和數(shù)字,且在樣本中間隔出現(xiàn)(連續(xù)出現(xiàn)算作一次)的次數(shù)是否超過了設(shè)置的默認(rèn)閾值3 (或3-6之間的整數(shù));如果滿足條件,則判定該字段為間隔字段。(2)數(shù)據(jù)字段的判斷數(shù)據(jù)字段是指對報文的結(jié)構(gòu)和其它關(guān)鍵字段影響不大或沒有直接影響的可變字段,一般是指報文的負(fù)載。數(shù)據(jù)字段的特征是變化具有隨機(jī)性,且變化率無規(guī)律可循,長度可能不固定,即在序列比對的過程中可能會出現(xiàn)空格。對于‘B’段,如果未知可變字段中出現(xiàn)空格,就判定為數(shù)據(jù)字段;對于‘A’段,如果兩個分隔符之間存在未知可變字段,就判定為數(shù)據(jù)字段。(3)序號字段的判斷序號字段是用于標(biāo)識報文在會話中的先后順序,以防在處理時出現(xiàn)亂序的字段。序號字段一般靠近段首,另外,在不考慮報文亂序、重傳的情況下,取值變化率接近100%,且與截獲報文的先后順序相對應(yīng)。因此,識別策略是對未知可變字段進(jìn)行判斷,其取值變化是否與報文的截獲順序相關(guān),如果是則判定為序號字段。對于‘A’段,還特別要求序號字段為數(shù)據(jù)字段中的全數(shù)字字段。(4)長度字段的判斷長度字段是報文中為某一字段或連續(xù)的某幾個字段定界的字段,一般出現(xiàn)在變長報文中。長度字段的特征是其自身長度一般為1-4字節(jié),且取值與樣本的某一字段或連續(xù)的某幾字段的長度相等,作用域通常不會在該字段之前。長度字段的識別策略,斷該字段的取值與其后的某一字段或連續(xù)的某幾字段的長度是否相等,若相等就判定為長度字段。長度字段判斷過程中涉及到對字段的定界和合并,‘A’段可以利用已經(jīng)識別出的間隔字段進(jìn)行報文段的分隔;對于‘B’段則利用對字節(jié)取值變化率的統(tǒng)計信息,將連續(xù)的未識別的不變字段合并為一個未識別的不變字段,將連續(xù)的未識別的取值變化率相同的可變字段合并為一個未識別的可變字段。以此為基礎(chǔ),逐步判斷長度字段以及它在報文中的作用域。
(5)格式標(biāo)識字段的判斷格式標(biāo)識字段是指該字段的取值能夠決定該字段之后報文格式序列的關(guān)鍵字段。格式標(biāo)識字段的特征是自身取值變化率較小,且取值與其后的格式序列密切相關(guān),通常是一個值對應(yīng)于作用域的一種格式序列。在完成其他語義推斷的基礎(chǔ)上,以剩余各段的取值變化率為基礎(chǔ),對報文序列從左至右選擇取值變化率小的字段作為候選的格式標(biāo)識字段。確定候選格式標(biāo)識字段后,根據(jù)字段能否對序列的格式起到?jīng)Q定作用實施進(jìn)一步判斷。將候選字段的作用域劃定為從該候選字段到下一個候選字段(如果不存在下個候選字段,則選擇序列尾部作為終點)之間的范圍,候選字段取某一值時,所涉及的樣本應(yīng)當(dāng)具有完全相同的格式;此外,候選字段取不同值時,所涉及的樣本在格式上應(yīng)當(dāng)存在差異。如果候選字段滿足給定的條件,則判斷其為格式標(biāo)識字段。
權(quán)利要求
1.基于報文分析的協(xié)議格式自動推斷方法,其特征是對協(xié)議實體的輸入輸出報文進(jìn)行分析從而推斷協(xié)議報文具體格式的方法,包括以下步驟 首先是對大量報文樣本進(jìn)行初步聚類,將結(jié)構(gòu)相似的樣本集中在一起; 其次是對結(jié)構(gòu)相似的報文樣本以段為單位進(jìn)行多序列比對,明確段的基本結(jié)構(gòu),進(jìn)而獲得報文整體的基本結(jié)構(gòu); 最后是語義推斷階段,基于報文的基本結(jié)構(gòu),依據(jù)樣本中各字段的取值和變化特征對相應(yīng)字段的語義進(jìn)行推斷; 所述初步聚類階段的工作流程以字節(jié)為單位,依據(jù)字節(jié)屬于可顯示字符還是二進(jìn)制字符,對獲取的網(wǎng)絡(luò)報文進(jìn)行劃段,連續(xù)的二進(jìn)制字段合成一個‘B’段,連續(xù)的可顯示字段合成一個‘A’段。經(jīng)過初步劃段后,報文的格式序列是一串‘B’、‘A’間隔組成的字符串。依據(jù)劃段所展現(xiàn)出的格式序列,將格式序列相同的報文歸為一個類別,實現(xiàn)初步聚類。
多序列比對階段的工作流程以段為單位實施多序列比對,在比對過程中首先采用采用局部序列比對算法構(gòu)造相對距離矩陣;而后采用層次聚類算法,將參與比對的報文段構(gòu)造成系統(tǒng)樹,并通過設(shè)置同類報文段的最大距離,將系統(tǒng)樹分割為多棵子系統(tǒng)樹;最后采用全局序列比對算法對子系統(tǒng)樹中的報文段進(jìn)行比對,獲得報文段的基本結(jié)構(gòu); 語義推斷階段的工作流程在確定某一類別報文樣本的基本結(jié)構(gòu)后,統(tǒng)計此類別樣本中各個字節(jié)取值的變化率;依據(jù)字節(jié)取值的變化率,確定樣本格式中的固定字段和可變字段;首先判斷固定字段是否為間隔字段,再判斷可變字段是否為數(shù)據(jù)字段,進(jìn)而推斷未識別的可變字段中是否存在序號字段;依據(jù)判斷出的字段語義,進(jìn)行字段合并,并在未識別字段中推斷長度字段;最后依據(jù)已識別出的格式序列,推斷樣本中的格式標(biāo)識字段;即采用“間隔字段一數(shù)據(jù)字段一序號字段一長度字段一格式標(biāo)識字段”的語義推斷流程。
2.根據(jù)權(quán)利要求I所述的基于報文分析的協(xié)議格式自動推斷方法,其特征是實施多序列比對時,首先采用局部序列比對算法,確定任意兩段間的最長匹配子序列,并依據(jù)最長匹配子序列的長度,構(gòu)造報文段的相對距離矩陣。以相對距離矩陣為基礎(chǔ),采用層次聚類算法,將參與比對的報文段構(gòu)造成一顆系統(tǒng)樹,每一個報文段作為系統(tǒng)樹的一個葉子節(jié)點。在此基礎(chǔ)上,采用設(shè)定距離閾值的方式確定同類報文段的相似度,以保證同一棵樹中的報文段有較高的相似度,并依據(jù)距離閾值對系統(tǒng)樹進(jìn)行分割,產(chǎn)生多棵子系統(tǒng)樹。對于子系統(tǒng)樹中的報文段,依據(jù)樹結(jié)構(gòu)采用全局序列比對算法實施兩兩比對,通過增加空格的方式保證同一棵子系統(tǒng)樹中報文段的對齊和長度統(tǒng)一,最終獲得報文段的基本結(jié)構(gòu)。將一類報文中各段綜合在一起可以獲得該類報文的總體結(jié)構(gòu)。
3.根據(jù)權(quán)利要求I或2所述的基于報文分析的協(xié)議格式自動推斷方法,其特征是語義推斷在掌握報文整體結(jié)構(gòu)的基礎(chǔ)上實施;將同類的所有報文集中在一起,對報文中的各個字節(jié)位置進(jìn)行分析;依據(jù)每個字節(jié)取值的變化率,確定報文中的固定字段和可變字段;此后,將依次推斷報文格式中的間隔字段、數(shù)據(jù)字段、序號字段、長度字段和格式標(biāo)識字段; 語義推斷所采用的識別策略具體如下 (O間隔字段的判斷對未知固定字節(jié)進(jìn)行判斷,確定其是否為非字母和數(shù)字,且在樣本中間隔出現(xiàn)的次數(shù)是否超過了設(shè)置的默認(rèn)閾值3 ;如果滿足條件,則判定該字段為間隔字段; (2)數(shù)據(jù)字段的判斷對于‘B’段,如果未知可變字段中出現(xiàn)空格,就判定為數(shù)據(jù)字段;對于‘A’段,如果兩個分隔符之間存在未知可變字段,就判定為數(shù)據(jù)字段; (3)序號字段的判斷對未知可變字段進(jìn)行判斷,其取值變化是否與報文的截獲序號成正相關(guān)的關(guān)系,如果是則判定為序號字段;對于‘A’段,還特別要求序號字段為數(shù)據(jù)字段中的全數(shù)字字段; (4)長度字段的判斷判斷字段的取值與其后的某一字段或連續(xù)的某幾字段的長度是否相等,若相等就判定為長度字段;長度字段判斷過程中涉及到對字段的定界和合并,‘A’段可以利用已經(jīng)識別出的間隔字段進(jìn)行報文段的分隔;對于‘B’段則利用對字節(jié)取值變化率的統(tǒng)計信息,將連續(xù)的未識別的不變字段合并為一個未識別的不變字段,將連續(xù)的未識別的取值變化率相同的可變字段合并為一個未識別的可變字段。
(5)格式標(biāo)識字段的判斷在完成其他語義推斷的基礎(chǔ)上,以剩余各段的取值變化率·為基礎(chǔ),對報文序列從左至右選擇取值變化率小的字段作為候選的格式標(biāo)識字段。確定候選格式標(biāo)識字段后,根據(jù)字段能否對序列的格式起到?jīng)Q定作用實施進(jìn)一步判斷。將候選字段的作用域劃定為從該候選字段到下一個候選字段(如果不存在下個候選字段,則選擇序列尾部作為終點)之間的范圍,候選字段取某一值時,所涉及的樣本應(yīng)當(dāng)具有完全相同的格式;此外,候選字段取不同值時,所涉及的樣本在格式上應(yīng)當(dāng)存在差異。如果候選字段滿足給定的條件,則判斷其為格式標(biāo)識字段。
全文摘要
基于報文分析的協(xié)議格式自動推斷方法,對協(xié)議實體的輸入輸出報文進(jìn)行分析從而推斷協(xié)議報文具體格式的方法,包括以下步驟首先是依據(jù)字符的可顯示屬性,以字節(jié)為單位對獲取的網(wǎng)絡(luò)報文進(jìn)行劃段,并基于劃段展現(xiàn)出的格式序列進(jìn)行初步聚類;其次是對結(jié)構(gòu)相似的報文樣本以段為單位進(jìn)行多序列比對,實現(xiàn)報文段的對齊和長度統(tǒng)一,從而掌握報文段的基本結(jié)構(gòu),進(jìn)而獲得報文整體的結(jié)構(gòu);最后是語義推斷階段,基于報文的結(jié)構(gòu),依據(jù)樣本中各字段的取值和變化特征,遵循各類語義的識別策略,采用“間隔字段→數(shù)據(jù)字段→序號字段→長度字段→格式標(biāo)識字段”的語義推斷流程,提高語義推斷的準(zhǔn)確度和效率。
文檔編號H04L12/70GK102891852SQ20121038336
公開日2013年1月23日 申請日期2012年10月11日 優(yōu)先權(quán)日2012年10月11日
發(fā)明者洪征, 吳禮發(fā), 李華波, 賴海光, 鄭成輝, 黃康宇, 潘璠 申請人:中國人民解放軍理工大學(xué)