一種未知應用層協議報文格式的最佳分段方法
2023-06-19 21:23:11 2
專利名稱:一種未知應用層協議報文格式的最佳分段方法
一種未知應用層協議報文格式的最佳分段方法技術領域
本發明屬於網絡安全的應用層網絡協議自動反向分析的技術,特別是涉及一種未知應用層協議報文格式的最佳分段方法。技術背景
對應用層協議的分析研究開始於如何有效的識別網絡中存在的各種應用層協議。 在網絡層和傳輸層中,網絡中的流量具有多達249種測度可以作為流量識別的特徵。由於基於流測度的方法只能將網絡流粗略的分成幾大類,不能區分同一類中的不同協議,這一局限性促使許多研究關注應用層載荷(payload)的識別特徵。基於應用層載荷(payload) 的識別方法是針對於應用層載荷的前η個字節,利用不同的統計學方法來獲取應用層協議的識別特徵。
對於未知應用層協議分析來說,準確地從網絡流量中找出未知應用僅僅是第一步,許多網絡管理和安全應用需要對未知協議有更深入的了解。例如基於深度包檢測(DPI) 的安全系統需要完整的協議規範作為輸入。而要實現協議仿真和協議漏洞測試則必須了解報文中各個欄位的語法和語義規則。所以,自動的協議逆向工程變得非常重要,其目的是要在無需了解協議規範的前提下,重構協議的報文格式,以及推導出描述各種類型報文發送順序的狀態機。目前,國內外對網絡協議逆向工程的研究根據分析數據的類型可劃分為兩個方向基於程序分析(program analysis)的方法和基於流量分析(traffic analysis) 的方法。
基於程序分析(program analysis)的方法又可以分為靜態分析方法和動態分析方法。目前,靜態分析方法主要是運用反彙編工具對協議的可執行程序進行反彙編,由於需要大量的人工參與,效率低下,而且容易出現錯誤,因此人們一般不採用靜態分析方法,而是側重於動態分析方法。動態分析方法利用動態汙點分析(dynamic taint analysis)的方法動態地監測協議的可執行程序的運行過程,通過觀察和分析程序在執行過程中體現出的各種行為及上下文信息來提取協議的消息格式。而且這種方法可以揭示豐富的語義信息, 準確性高。
然而,基於程序分析的方法必須先獲得協議的可執行程序,對於大多數協議,往往不能及時或者很難獲得它們的可執行程序,這將會對協議反向工程的時效性造成巨大影響。另外,一些攻擊程序由於其隱蔽性和多態性,往往會使得基於程序分析的方法失效。即使獲得了可執行程序,還需要讓其運行在一個可控制的環境裡才能對其進行監測和分析。 因此,在當前複雜的網絡環境中,新型應用和新型攻擊快速出現,網絡環境變化迅猛,基於程序分析的方法顯然不能提高網絡管理的效率和對新型攻擊的反應速度。而基於流量分析的方法只需分析協議的應用層數據包,不需要額外獲取實現協議的程序實例,而且通過網絡抓包工具或者蜜罐技術很容易從網絡上採集到網絡流量,因此它易於系統實現和部署, 更適合當前新型網絡應用日新月異、網絡環境變化迅猛的形勢要求。
基於流量分析的方法主要有基於序列比對、遞歸聚類、統計分析、自動機等的方法。
序列比對在生物信息學領域已得到廣泛的運用,主要用於分析生物遺傳信息的相似性。基於序列比對的方法把應用層的消息看作是字符序列,運用著名的Needleman Wunsch算法將兩個字符序列對齊到具有相同長度的形式,並且兩個序列中相同的部分相互對齊。
基於遞歸聚類的方法先把消息分割為二進位類型或文本類型的token,用B、T分別替換消息中的二進位類型、文本類型的token,從而得到只包含B、T的序列,稱之為token 序列模式,接著對各個消息的Token序列模式,運用遞歸聚類的方法根據Token序列模式和格式標誌域的取值不斷地重複再分類,直到子類中的報文數目小於某個閾值,最後在每個子類裡推斷消息的格式。
基於統計分析的方法是根據報文各字節或位的統計規律提取網絡協議的相關欄位。相關欄位(Relevant Field)是指可以體現消息的一般特徵或者會話間的相似行為的欄位。
基於自動機的方法運用序列比對的算法對消息基於字節進行兩兩比對,將比對的結果作為自動機狀態轉移路徑構建自動機,最後藉助偏序比對算法(partial order alignment)化簡自動機。
以上基於流量分析的方法對系統輸入的數據集有嚴格的要求,數據集中的流量必須是屬於同一類協議的,如果在待分析協議的流量中混雜了其他協議的流量,即引入了噪聲,則會導致系統的性能明顯下降,大大降低分析結果的準確性。同時,目前也沒有一種有效的方法可以對報文內的各個欄位進行準確劃分,對欄位劃分是否最佳對報文的語義分析有極大的影響。發明內容
本發明的目的在於克服現有技術的不足,提出一種未知應用層協議報文格式的最佳分段方法。它利用未知應用層協議在網絡會話過程中傳輸的報文序列的樣本集,採用隱半馬爾可夫模型(HSMM)模型參數估計算法,從報文序列樣本集中獲取模型參數,再通過基於HSMM的最大似然概率分段方法,對報文中的各個欄位進行最佳劃分,同時獲取代表各個欄位語義的關鍵詞、屬性值、狀態碼或類型碼。這種方法不需要關於未知應用層協議的先驗知識,也不要求絕對純淨的樣本集。它不僅能夠有效解析報文格式,還能夠基於觀測序列的似然概率分布,發現混雜在樣本集中的其它協議數據(噪聲)並進行有效過濾。
為了實現發明目的,採用的技術方案如下
常見的hternet各層協議的報文格式有(1) 二進位形式;0)TLV形式;( 關鍵詞形式;(4)指針形式。無論是哪種形式,只要欄位內出現某種固定模式的比特串或者字符串,這些固定模式的串都會在樣本集中頻繁出現,這些固定模式的串統稱為「關鍵詞」。
所述報文格式的定義為C1I Ic2I ... Cl的形式,其中Ci, 1彡i彡1,代表一個定長或變長的欄位,1是欄位的個數,I I代表串行拼接,Ci本身又細分為keyi I I data,的形式, 其中keyi是該欄位的首部;Clatei是該欄位的剩餘部分,長度可以為0。於是,報文格式分析問題就變成了對報文中的字符串或比特串進行CpC2,. . . ,Ci最佳分段的問題,以及對Ci進 Skeyi, datai劃分的問題。
隱半馬爾可夫模型(HSMM)的最大似然概率狀態序列估計方法,是一種非常適合於最佳分段的方法,其中每個隱狀態都代表一種或幾種欄位結構,狀態的持續時間代表該欄位的長度。把每個報文序列看成一個字符串,並稱之為觀測序列,記為01:τ = O1O2O3O4. . . oT, T為觀測序列的長度,即字符個數,其中Ot為觀測序列的第T個字符。狀態集合定義為S = {1,2,. .,Μ}。將觀測序列01:τ對應的狀態序列記為S1:T = S1S2S3S4. . . St, St e S.所以,對觀測序列的段劃分就是求最大似然概率的狀態序列i2,..., in,i2,...,in e S),每個狀態對應一個欄位,狀態的持續長度等於欄位的長度,即各個欄位的長度依次為屯,屯,...,dn,其中任一個欄位或者狀態都限定在一個報文內,不會跨越兩個報文。由觀測序列不能直接對應得到狀態序列,因而這裡的狀態也稱為「隱狀態」。
假設隱狀態之間的跳轉是一個一階的馬爾可夫過程。即,設狀態i轉移到狀態j的概率為,滿足; =1且% = O。狀態i的初始分布概率定義為π i。觀測序列的所有子字符串都是一個狀態可能的輸出值或觀測值key。定義狀態的所有輸出值key的集合為 KEY,在給定狀態j的情況下以key為輸出值的概率定義為k」(key),滿足t= 1 °字Jkey & KEY段長度即狀態持續長度不僅與狀態有關,還與該分段所包含的key有關。在給定狀態j和其輸出值key e KEY的情況下,狀態的持續長度為d的概率為Ijikey (d),滿足=1 』其中I key ^ d^ Dmax,Dmax是狀態的最大持續長度,| key |是key的長度。因此,HSMM的模型參數可以用 λ = Iaij, π kj(key),Ijjkey(Cl), i, j e S, key e KEY}來表示。
HSMM模型的訓練是一個求局部最優解的過程,一般來說,Bij和π ,的初始值對最終訓練得到的模型參數影響很小,可以簡單地取等概率分布。kj(key)初始值為1/lKEYl, lKEYl是KEY集合中的元素數目,key是KEY中的任意一個元素,即所有的key取等概率分布。同時設給定狀態j和key的情況下,每個欄位的長度key的初始概率分布為Ij, key(d) =ce_T(ld_keyl),其中Ikeyl是key的長度,d-1 key I是key後面所跟隨的data的長度,τ是一個待定的參數,c是歸一化因子,它使得Σ(力=h假設key的長度有一定的限d制,引入了 key的最大長度為KLmax。一般來說,KLmax取10個字節就足夠了。當key的長度超過KLmax時,最後的結果會把該key看作多個key』。
用S。表示到t』結束的一個狀態,S[t表示從t開始的一個狀態,S[t:t,表示從t開始到t』還沒有結束的一個狀態,St:tq表示在t已經開始到t』結束的一個狀態。假設觀測序列的某個段Cm = ot+1:t+d,隱狀態輸出值key的可能取值範圍為lot+1:t+kl,I^kl ^ min (d, KLmax) }。在給定S[t+l:t+d] 一 j的情況下,觀測到0t+1:t+d的概率為bj.jcvuj。
定義前向變量iit(j) =P[、= j,o1:t| λ],利用迭代得到的前向變量,可以計算出M觀測序列相對於給定模型λ的似然概率ζΜ = ρ[〃1:Γ μ] = ΣaC/)。;=1
定義後向變量3t(i) = P[ot+1:T|St] = i,λ]。
定義三個中間變量
lt(i, j) = P[St] = i, S[t+1 = j, o1:T| λ]i 乒 j,0 彡 t 彡 T-I
Vt(j,kl) =P[S[t+1:t+kl = j,o1:T| λ]t 彡 T_kl,kl 彡 1
ξ t (j, key, d) = P[S[t_d+1:t] = j, ot_d+1:t_d+key = key, o1:T λ ]t 彡 1,Dt彡d彡I key |彡1
採用多序列訓練模型,假設訓練集總共有N個觀測序列,其中,O11J1是第n個觀測序列,τ(η)是其長度,由O11J1 可以計算得到 Lkh(n)、^"^,/)、yA"\j,ki)、cnkey,cP) ο
再利用下式估計模型參數N 1 T(n)-\
S =Z7^)n=\ LKn t=iN ι T(n)-\key\
k]{key) = Yj---key)n=\ LfCh t=0 N ι T(n)
IjkJd) = Σ TT^ZCwO',m=i Lkh t=d NM ι
^-ΣΣτττ^^α n=\ j=\ LKn
最後進行歸一化處理,就可以得到模型參數新的估計值 i = (at], J^1,k^keyll] key(d))。重複進行這種模型參數的估計過程,最終將收斂到一組固定的模型參數值。
混雜在協議數據中的噪聲是指在待分析協議的會話序列樣本集中存在其他協議的會話序列。當使用含有噪聲的樣本集訓練HSMM模型時,假定已經通過了某種精確的聚類分析,儘可能提純了未知協議會話序列的樣本集,噪聲所佔的比例已經不大,這時模型參數主要受待分析協議數據的影響,而噪聲數據對模型訓練產生的影響很小。訓練得到的模型更偏向於描述待分析協議數據的統計特徵,所以噪聲序列與目標協議數據序列相對於模型的似然概率會有較大的不同。定義觀測序列集0相對於模型λ的平均對數似然概率 (averagelog-1ike1ihood) %
ALH = —^―ln(P(0 | A))Msg(O)
其中Msg(O)是觀測序列集0的報文個數。協議數據和噪聲的ALH會有很不同的分布,通過簡單的算法就可以實現對噪聲的過濾。在進行初步的噪聲過濾以後,可以重新進行模型參數的估計,然後用新的模型參數再進行一次噪聲過濾,使得ALH的分布更加集中。
在估計得到模型參數λ以後,開始進行最大似然概率的段劃分。如前所述,對於觀測序列0,存在多種可能的段劃分。對隱狀態序列的最大似然概率(ML)估計,將是對觀測序列的最優的段劃分。因此,通過對HSMM的Viterbi算法作相應的修改,可以估計最大似然概率的狀態序列,再由各狀態確定協議的各個關鍵詞。
圖1為觀測序列中的報文格式及欄位劃分示意圖2為本發明的HSMM模型圖;具體實施方式
本發明提出一種基於HSMM模型的抗噪的未知應用層協議報文格式的最佳分段方法。一個具體的實施方法包括以下步驟1、數據採集從網絡中採集未知應用的樣本流量,組成樣本集,其中每一個樣本都是應用的一個會話(session)記錄,它包含了雙向傳輸的報文序列,如圖1所示。把這些會話樣本進一步分為樣本子集,每個樣本子集所包含的會話樣本應該具有共同點,例如對於客戶機-伺服器模式的應用,該樣本子集中所有的會話均具有相同的伺服器IP和埠號;對於P2P模式的應用,該樣本子集中所有的會話均發生在一組給定的IP位址之間。2、建立模型在報文序列中的每個報文都具有協議所規定的格式。常見的^ternet各層協議的報文格式有(1) 二進位形式,即把若干比特(固定長)作為一個欄位(field),每個欄位代表一種屬性,欄位內比特的取值就是該屬性的值;(2) TLV形式,即type-length-value形式,其中固定字節長度的type代表屬性類型,固定字節長度的length表明後面跟的屬性值 value的字節數,可變字節數的value代表屬性值;(3)關鍵詞形式,即用特定的關鍵詞、狀態碼等代表語義或者命令,其後跟著的字符串是內容;(4)指針形式,即用pointer指出一個欄位的開始或者結束位置。在上述四種形式的報文格式中,有的欄位是固定長的,有的欄位是可變長的。但無論是哪種形式,只要欄位內出現某種固定模式的比特串或者字符串,這些固定模式的串都會在樣本集中頻繁出現,因而可以被挖掘出來。本發明把這些固定模式的串統稱為「關鍵詞」。所述報文格式的定義為C1 Ic1I I... I I C1的形式,如圖1所示,其中Ci, 1彡i彡1, 代表一個定長或變長的欄位,ι是欄位的個數,Il代表串行拼接,Ci本身又細分為 key, Idatei的形式,其中1^71是該欄位的首部;(Iatei是該欄位的剩餘部分,長度可以為0。 於是,報文格式分析問題就變成了對報文中的字符串或比特串進行C1, C2, . . . , Ci最佳分段的問題,以及對Ci進行keyi,data,劃分的問題。隱半馬爾可夫模型(HSMM)的最大似然概率狀態序列估計方法,是一種非常適合於最佳分段的方法,其中每個隱狀態都代表一種或幾種欄位結構,狀態的持續時間代表該欄位的長度。把應用層的報文序列看成一個字符串,並稱之為觀測序列,記為01:T = O1O2O3O4. . . oT, T為觀測序列的長度,即字符個數,其中Ot為觀測序列的第T個字符。狀態集合定義為S = {1,2,. .,Μ}。將觀測序列01:τ對應的狀態序列記為S1:T = S1S2S3S4. . . St, St e S。用Sf^表示從t開始到t』結束的一個狀態,S1:T也可以用序列(i1;屯),(i2,
d2),...,(in,dn)來表示,im 是狀態,dm 是狀態 im 的持續長度,= h,S[di+l:di+d2] = 『+++,其中
η
I1, i2,...,in e S且滿足1]< 。所以,對觀測序列的最佳段劃分就是求最大似然概率的
w=l
狀態序列i2,..·, in,每個狀態對應一個欄位,狀態的持續長度等於欄位的長度,即各個欄位的長度依次為屯,屯,...,dn,其中任一個欄位或者狀態都限定在一個報文內,不會跨越兩個報文。對於欄位Cm,對應於狀態im和長度dm,從其起始位置開始的一個字符串是keym, 如圖2所示。由於一個狀態可以對應於多個不同的欄位模式,每個欄位模式有一個給定的 key和key後跟隨的一個可變的長度與可變內容的data部分,所以,可以把dm和keym都看作是給定狀態im的輸出值或觀測值,必要的情況下,也可以把Clatem看作給定狀態im的輸出值(例如,最簡單地看作binary或者ascii)。由於在進行最佳分段和確定欄位模式之前, 不知一個欄位的起始位置、起始的key和欄位長度,也不知所對應的狀態,所以由觀測序列不能直接得到對應的狀態序列,因而狀態序列是「不可觀測的」即「隱性存在的」。正因如此, 這裡的狀態也稱為「隱狀態」。3、參數設置考慮到報文之間的關係以及報文中的欄位之間的關係,代表了協議規範和協議狀態之間的轉移關係,所以可以假設隱狀態之間的跳轉是一個一階的馬爾可夫過程。即設狀
態i轉移到狀態j的概率為,滿足工 =1且= 0。狀態i的初始分布概率定義為π it)
權利要求
1.一種未知應用層協議報文格式的最佳分段方法,其特徵在於利用未知應用層協議在網絡會話過程中傳輸的報文序列樣本集,通過隱半馬爾可夫模型的模型參數估計算法,從報文序列樣本集中獲取模型參數,所述報文序列樣本集中的每個報文序列被看作一個字符串,所述每個字符串稱為一個觀測序列,再基於隱半馬爾可夫模型的最大似然概率分段方法,對報文進行最佳分段,同時獲取代表各個欄位語義的應用層協議關鍵詞、屬性值、狀態碼或類型碼,並基於觀測序列的似然概率分布,發現混雜在樣本集中的噪聲數據並進行有效過濾。
2.根據權利要求1所述的未知應用層協議報文格式的最佳分段方法,其特徵在於所述的關鍵詞定義為在報文內出現的固定模式的比特串或者字符串,所述報文格式的定義為 C1 Ic2I I... 11C1的形式,其中Ci, ι < i < 1,代表一個定長或變長的欄位,1是欄位的個數,I代表串行拼接,Ci本身又細分為key」data,的形式,其中Iceyi是該欄位的首部,也是協議的關鍵詞,而Clatai是該欄位的剩餘部分。
3.根據權利要求1所述的未知應用層協議報文格式的最佳分段方法,其特徵在於從報文序列樣本集中獲取模型參數的操作具體如下把觀測序列記為01:T = O1O2O3O4. . . oT, T為觀測序列的長度,即字符個數,其中Ot為觀測序列的第T個字符,狀態集合定義為S= {1,2, ..,Μ},將觀測序列01:τ對應的狀態序列記為S1:T = S1S2S3S4... ST, St e S,對觀測序列的最佳劃分就是求最大似然概率的狀態序列 I1, i2,...,in,其中i2,...,in e S,每個狀態對應一個欄位,狀態的持續長度等於欄位的長度,即各個欄位的長度依次為屯,d2,...,dn,其中任一個欄位或者狀態都限定在一個報文內,該狀態稱為隱狀態,設定隱狀態之間的跳轉是一個一階的馬爾可夫過程,即設狀態i轉移到狀態j的概率為^iij,滿足=1且aii = 0,狀態i的初始分布概率定義為πj觀測序列的所有子字符串都是一個狀態的可能輸出值或觀測值key,定義狀態的所有輸出值key的集合為KEY,在給定狀態j的情況下以key為輸出值的概率定義為k」(key),滿足= 1 』欄位長度即狀態持續長度不僅與狀態有關,還與該分段所包含的key有關,key & KEY在給定狀態j和其輸出值key e KEY的情況下,狀態的持續長度為d的概率為、,key(d),滿足Σ。^》= 1』其中Ikeyl彡d彡Dmax,Dmax是狀態的最大持續長度,key是key的長度,因d此,隱半馬爾可夫模型的模型參數用λ = Iaij, J^kjkeyhlu^dhi,j e S, key e KEY} 來表不。
4.根據權利要求1或3所述的未知應用層協議報文格式的最佳分段方法,其特徵還包括對隱半馬爾可夫模型的模型參數估計算法,所述模型參數估計算法具體如下模型參數的定義與初始值選取方法au和π i的初始值對最終訓練得到的模型參數影響很小,取等概率分布,、(key)初始值為1/KEY,KEY是KEY集合中的元素數目,key是KEY 中的任意一個元素,即所有的key取等概率分布,同時設給定狀態j和key的情況下,每個欄位的長度d彡key的初始概率分布為lj,key(d) = ce_T(d_hl),其中!key!是key的長度,d-1 key I是key後面所跟隨的data的長度,τ是一個待定的參數,c是歸一化因子,它使得Σ^^Μ) = 1 』設定key的長度有一定的限制,即key的最大長度為KLmax。在一般情況 d下,KLmax取值為10,當key的實際長度超過KLmax時,最後的結果會把一個超長的key看作 多個經常同時出現的、長度小於等於KLmaxWkey';用Stq表示到t』結束的一個狀態,S[t表示從t開始的一個狀態,S[t:t,表示從t開始到 t』還沒有結束的一個狀態,St:tq表示在t已經開始到t』結束的一個狀態,設定觀測序列的 某個段Cm = ot+1:t+d,隱狀態輸出值key的取值範圍為{ot+1:t+kl,1 ^kl ^ min(d, KLmax)},在 給定S[t+1:t+d] = j的情況下,觀測到ot+1:t+d的概率為I^d(CVbd);定義前向變量at(j) =P[St] = j,o1:t| X],利用迭代得到的前向變量,計算出觀測序 列相對於給定模型\的似然概率
5.根據權利要求1所述的未知應用層協議報文格式的最佳分段方法,其特徵在於過濾 噪聲的方法具體如下當使用混合數據中的未知協議會話序列樣本集訓練隱半馬爾可夫模型時,設定已經通 過了某種精確的聚類分析,儘可能提純了未知協議會話序列樣本集,噪聲所佔的比例已經 不大,這時模型參數主要受待分析協議數據的影響,而噪聲數據對模型訓練產生的影響很 小,訓練得到的模型更偏向於描述待分析協議數據的統計特徵,所以噪聲序列與目標協議 數據序列相對於模型的似然概率會有較大的不同,定義觀測序列集O相對於模型X的平均對數似然概率為
6.根據權利要求1、3或4所述的未知應用層協議報文格式的最佳分段方法,其特徵在於基於最大似然概率分段方法具體如下令 G(j,key,d) = kj(key)lj,key(d),並定義前向變量5t(j,d)三?axi3[乂:卜d+1:i] = j,ovt I λ] = maxSt_d(i,Ci^aijGij,ot-d+\\t-d+kl, 『其中 t < T,d < Dt, d,< Dt_d』,1 ^ kl ^ KLmax用W(t,j,d)記錄St(j,d)所選擇的前一狀態及其持續時間,同時用Key_ML(t,j,d) 記錄當前狀態分段(j,d)所選擇的關鍵詞,0' ,d M ) = argmax5t_d(/,d})atJG(j,oti,d』,klψα,j,d) = (t-d,i*,d*)Key_ML(tJ,d) = ot d+u d+u,完成前向計算後,令、=T,進行反向的路徑回溯{jx ^dl) = arg max δτ (/, d)i,dkw! = Key_ML(ti; J1, (I1) (t2, j2, d2) = Ψ (t1; (I1) kw2 = Key_ML (t2, j2, d2) (tn,jn,dn) — Ψ (tn_! j jn-! J Cl^1) kwn = Key_ML (tn_!, J-^1, (In^1)直到確定si = in,算法結束,最終得到最大似然概率的狀態序列{(jn,dn), (jn-1, dn-1),. . .,(jl,dl)},以及觀測序列所包含的關鍵詞序列{kwn,kwn-1, ... , kwl}。
全文摘要
本發明提供一種未知應用層協議報文格式的最佳分段方法,用於未知應用層協議反向工程。它利用未知應用層協議在網絡會話過程中傳輸的報文序列樣本集,通過隱半馬爾可夫模型(HSMM)模型參數估計算法,從報文序列樣本集中獲取模型參數,再通過基於HSMM的最大似然概率分段方法,對報文中的各個欄位進行最佳劃分,同時獲取代表各個欄位語義的關鍵詞、屬性值、狀態碼或類型碼。這種方法不需要關於未知應用層協議的先驗知識,也不要求絕對純淨的樣本集。它不僅能夠有效解析報文格式,它還能夠基於觀測序列的似然概率分布,發現混雜在樣本集中的其它協議數據(噪聲)並進行有效過濾。
文檔編號H04L12/56GK102523167SQ20111043941
公開日2012年6月27日 申請日期2011年12月23日 優先權日2011年12月23日
發明者餘順爭 申請人:中山大學