一种未知应用层协议报文格式的最佳分段方法

文档序号:7795783阅读:309来源:国知局
专利名称:一种未知应用层协议报文格式的最佳分段方法
一种未知应用层协议报文格式的最佳分段方法技术领域
本发明属于网络安全的应用层网络协议自动反向分析的技术,特别是涉及一种未知应用层协议报文格式的最佳分段方法。技术背景
对应用层协议的分析研究开始于如何有效的识别网络中存在的各种应用层协议。 在网络层和传输层中,网络中的流量具有多达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日
发明者余顺争 申请人:中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1