[go: up one dir, main page]

CN101282251B - 一种应用层协议识别特征挖掘方法 - Google Patents

一种应用层协议识别特征挖掘方法 Download PDF

Info

Publication number
CN101282251B
CN101282251B CN2008101060589A CN200810106058A CN101282251B CN 101282251 B CN101282251 B CN 101282251B CN 2008101060589 A CN2008101060589 A CN 2008101060589A CN 200810106058 A CN200810106058 A CN 200810106058A CN 101282251 B CN101282251 B CN 101282251B
Authority
CN
China
Prior art keywords
frequent
feature
application layer
item
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008101060589A
Other languages
English (en)
Other versions
CN101282251A (zh
Inventor
刘兴彬
杨建华
胡玥
谢高岗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2008101060589A priority Critical patent/CN101282251B/zh
Publication of CN101282251A publication Critical patent/CN101282251A/zh
Application granted granted Critical
Publication of CN101282251B publication Critical patent/CN101282251B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种应用层协议识别特征挖掘方法。该方法包括下列步骤:步骤A,对训练数据包集合进行第一次过滤,以及进行编码,提取准协议识别特征数据信息;步骤B,从提取的准协议识别特征数据信息中进行第一次挖掘,得到多级频繁项集;步骤C,对所述多级频繁项集进行第一次过滤,对第一次过滤后剩余的多级频繁项集的频繁度进行修正和第二次挖掘后,对其进行第二次过滤,得到最终协议识别特征;步骤D,若所有最终协议识别特征的字节识别率达到要求,或者数据包识别率总和达到要求时,则不再挖掘第二个及以后数据包的数据;否则循环挖掘第二个及以后数据包,直到总识别率达到要求。其能够对数据包集合进行分析、挖掘,可提取出相应应用层协议的所有识别特征,极大的提高了特征提取效率和总体识别率。

Description

一种应用层协议识别特征挖掘方法 
技术领域
本发明涉及计算机网络流量监测分析技术领域,特别是涉及一种应用层协议识别特征挖掘方法。 
背景技术
网络应用层流量识别对网络规划、网络管理、流量工程、安全检测等至关重要。传统的应用层识别方法主要基于国际互联网代理成员管理局(InternetAssigned Numbers Authority,IANA)定义应用对应的协议端口,但出于隐藏流量或者其他方面的需要,现有技术大量使用动态协议端口或者加密数据包负载,这给传统的应用层识别方法带来了很大的挑战。 
为了解决这一问题,人们提出了深层数据包解析技术(Deep PacketInspection,DPI)识别方法。该方法通过找出数据包特征字串,组成应用层协议识别特征库,采用特征匹配的方式进行流量识别。 
但使用该方法的前提是必须正确找出协议的应用层协议特征,应用层协议的识别特征的准确性对识别率、准确率以及误识别率都有极大的影响。 
目前提取应用层协议特征的方法主要有以下两种: 
第一,找到应用层协议的定义文档,根据文档的规定得到该协议的应用层特征。但是目前的很多新的应用层协议采用私有协议实现,无法获得协议定义文档,如PPlive。此外,即使协议公开,协议更新的频率也给协议识别特征的更新带来了巨大的困难。 
第二,通过wireshark、tcpdump等捕包工具捕获协议的通信过程的数据包,通过人工的查看、对比每一个流相对应的数据包,发现该协议的应用层特征。但是,这种方法效率与可信度低。 
随着新应用不断出现,要实现准确的应用层流量识别就要不断地寻找并更新每种协议的应用层特征。但是由于目前没有更好的应用层协议特征挖掘方法,人工分析的方法仍然是目前最常用的一种应用层协议识别特征挖掘方法。 目前很多网络监测分析产品公司为了能提高识别特征库的准确性,专门有一个强大的团队负责定期对各种应用进行跟踪,包括数据包捕获、人工协议分析等。 
但是,依靠人工分析实现应用层协议识别特征的挖掘方法,特征提取效率很低,无法满足新的应用层协议不断涌现和已有协议频繁升级的需求,而且,通过人工观察发现的识别特征通常不完全,导致总体识别效率不高。 
发明内容
本发明的目的在于提供一种应用层协议识别特征挖掘方法,其能够完全自动化的对数据包集合进行分析、挖掘,可提取出相应应用层协议的所有识别特征,极大的提高了特征提取效率和总体识别率。 
为实现本发明的目的而提供的一种应用层协议识别特征挖掘方法,包括下列步骤: 
步骤A,利用混杂流量过滤方法和应用层载荷编码方法对多个TCP流中每个流的第一个数据包组成的训练数据包集合进行过滤,然后利用基于位置对提取的TCP流中每个流的第一个数据包中的字节进行编码的方法对应用层载荷进行编码,对经过编码后的数据的信息提取准协议识别特征数据信息; 
步骤B,从提取的准协议识别特征数据信息中进行挖掘,得到多级频繁项集; 
步骤C,包括下列步骤: 
步骤C1,对所述多级频繁项集进行第一次频繁项过滤; 
步骤C2,对第一次频繁项过滤后的多级频繁项集进行频繁度修正和第二次频繁项过滤,消除频繁项间的包含关系; 
步骤C3,将修正与过滤后的频繁项集中的频繁项转化为特征字符串,从事务数据库中检索得到满足该特征字符串的事务,挖掘绝对包长特征和包长与内容差值关系特征,并将满足绝对包长特征和包长与内容差值关系特征的事务进行标记; 
步骤C4,将被标记的事务的准协议识别特征数据信息过滤掉重复挖掘特征、弱特征以及疑似混杂特征,得到最终的协议识别特征; 
其中,包长与内容差值关系特征是指所有满足一特征字符串的数据包,若其应用层载荷的长度与应用层载荷中一个固定位置处的值都相差一个固定大 小的值,就称其满足包长与内容差值关系特征;这个包长与内容差值关系特征是与特征字符串的组合特征,当满足包长与内容差值关系特征时一定满足一字符串特征。 
所述的应用层协议识别特征挖掘方法,还包括下列步骤: 
步骤D,若所有最终协议识别特征的字节识别率达到要求,或者数据包识别率达到要求时,则不再挖掘第二个及以后数据包的数据;否则循环挖掘第二个及以后数据包,直到上述字节识别率或数据包识别率达到要求。 
所述步骤A包括下列步骤: 
A1.捕获训练数据包集合并对训练数据包集合按流进行划分后存储到流结构体中; 
A2.利用混杂流量过滤方法过滤训练数据包集合中的混杂流量; 
A3.利用基于位置对提取的数据包中的字节进行编码的方法对应用层载荷进行编码; 
A4.对经过编码后数据的信息进行提取,提取准协议识别特征数据信息。 
所述步骤A2中,混杂流量过滤方法包括下列步骤: 
A21.过滤掉满足HTTP协议和FTP协议的流的内容; 
A22.过滤掉TCP流中没有完整三次握手的流。 
步骤A21中,所述过滤掉满足FTP协议的流的内容,包括下列步骤: 
过滤掉采用FTP的PASV模式通信的流结构体的数据包; 
过滤掉采用20、21端口的流结构体的数据包。 
所述采用FTP的PASV模式通信的流结构体的判断方法,包括下列步骤: 
寻找采用21端口的流结构体,判断属于该流结构体的数据包是否有以227开头的数据包; 
若有则进一步判断该数据包是否是PASV模式的应答包,若是则该数据包中就包含服务器端准备和客户端进行PASV模式数据连接的IP地址和端口号,同时该数据包的目的IP地址也即客户端的IP地址,FTP数据连接采用TCP协议,记录这四个数据; 
当遍历完所有采用21端口的流结构体后,得到所有采用FTP的PASV模式通信的流信息。 
所述过滤掉采用PASV模式通信的流结构体的数据包,包括下列步骤: 
将每个流和记录的采用FTP的PASV模式的数据连接流信息进行对比,若流结构体中的五元组信息中的四个分别与记录的PASV模式数据连接的流信息相同,则认定此流是采用FTP的PASV模式通信的流,丢弃该流中的所有数据包。 
所述步骤A3中,基于位置对提取的数据包中的字节进行编码的方法,包括下列步骤: 
将数据包中一个用两个十六进制数表示的字节的值,编码为一个用5个字符表示的单项,从左边起第1个字符是I,表示Item,第二、三个字符表示该字节在所述数据包中提取的前N个字节中处于第几位,用十六进制表示,从零开始计数,若小于十六则第二个字符为零;第四、五个字符是原来字节的两个十六进制字符。 
所述步骤A4中,所述准协议识别特征数据信息,包括具有相同偏移数据包的经过编码的信息,以及相关的统计辅助数据信息; 
所述提取准协议识别特征数据信息,包括下列步骤: 
A41.对TCP流提取准协议识别特征数据信息,并导入到事务数据库中; 
A42.对UDP流提取准协议识别特征数据信息,并导入到事务数据库中。 
所述步骤B包括下列步骤: 
步骤B1,先设定一个初始频繁率,由初始频繁率乘以数据库中事务的总个数,然后取整得到初始频繁度;计算数据库中每一个单项的频繁度,过滤掉频繁度小于初始频繁度的单项,剩余的每一个单项称为一级频繁项,所有一级频繁项的集合称为一级频繁项集; 
步骤B2,从K-1级频繁项集中选择两个K-1级频繁项M和N,这两个K-1级频繁项必须满足K-1级频繁项M的前K-2个单项与K-1级频繁项N的K-2个单项相同,K-1级频繁项M的第K-1个单项与K-1级频繁项N的第K-1个单项的位置不同,若N的第K-1个单项的位置大于M的第K-1个单项的位置,则将N的第K-1个单项,附加在M的后面得到准K级频繁项,计算该准K级频繁项的频繁度,若大于等于初始频繁度,则其确实是K级频繁项,按此方法得到所有的K级频繁项,组成K级频繁项集;其中,K≥2。 
所述事务包括经过编码的字节、包长、字节百分比和包百分比四个属性字段,存储所提取的数据。 
所述步骤C2包括下列步骤: 
步骤C21,利用下式对1级频繁项的频繁度进行修正; 
freq new = k 1 &times; freq old ; pos 0 = 0 , 0.9 &le; k 1 < 1 f ( pos 0 ) &times; freq old ; pos 0 &NotEqual; 0 , 0 < f ( pos 0 ) &le; k 1
其中,freqnew表示修正过后的新的频繁度,freqold表示修正前的频繁项的频繁度,posi表示频繁项中第i个单项的位置,i从零开始;单项的位置从零开始编号,k1是一个常数,f(pos0)是一个连续单调减函数; 
步骤C22,利用下式对2级频繁项的频繁度进行修正; 
Figure 509269DEST_PATH_GSB00000390735900042
其中,k2是一个常数,f((pos1-pos0))是一个连续单调减函数; 
步骤C23,首先,利用下式求频繁项中项与项之间的平均距离,记为avedist; 
ave dist = &Sigma; i = 1 k - 1 pos i - pos i - 1 k - 1
所述距离是指项中两个相临单项的位置的差值的绝对值; 
如果avedist≠1,利用下式对avedist进行修正; 
其中,k3,k4是常数; 
然后,对3、4级频繁项的频繁度的利用下式进行修正; 
Figure 362235DEST_PATH_GSB00000390735900045
其中,f1(k)是关于k的连续单调增函数;k表示频繁项中单项的个数,f2(avedist)和f3(avedist)是关于avedist的连续单调减函数,且满足f2(avedist)>f3(avedist); 
步骤C24,过滤掉有包含关系的频繁项中频繁度小的频繁项。 
本发明的有益效果在于: 
1.通过本发明的方法分析每种应用层协议识别特征具有很高的效率,运用本发明的技术使得实现特征库中每种协议识别特征的周期性更新成为了现实,为实现完全、准确识别所有流量打下了基础; 
2.本发明的方法得出的应用层协议识别特征完全性、可靠性都较当前技术有极大的提高。因为该方法是在对大量数据进行提取、分析的基础上挖掘应用层协议识别特征的,能够得到更完全、完整的应用层协议识别特征,并在得出最终应用层协议识别特征前已经对多个可能的特征进行了多级过滤和验证,其可靠性也比当前技术只分析有限数据包得出的特征的可靠性有极大的提高; 
3.本发明的方法提出了度量应用层协议识别特征正确与否的指标:识别率、准确率、正误识别率、负误识别率,从各个方面对自动得出的应用层协议识别特征进行衡量,使得自动得出的协议识别特征即可以达到较高的识别率,同时又保证了较高的准确率和较低的误识别率,使得自动识别的应用层协议识别特征的正确性有了判断依据; 
4.本发明的方法不仅在于把当前识别协议特征的人工分析过程转化为计算机自动挖掘处理应用层协议识别特征的过程,同时更在于其得出的协议识别特征的准确性、完全性和可靠性等方面,这使得以前随着识别协议的增多,协议之间的误识别率增高的现象有很大的改变,该方法把协议之间的误识别率降低到了一个很小的范围内,使得可靠性得到极大的提升。 
附图说明
图1是本发明的应用层协议识别特征挖掘方法的工作流程图; 
图2是本发明中训练数据提取步骤的工作流程图; 
图3是本发明中准特征初级过滤步骤的工作流程图; 
图4是本发明中准特征二次挖掘过滤步骤的工作流程图。 
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种应用层协议识别特征挖掘方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。 
本发明提出了一种应用层协议识别特征挖掘方法,该方法只需捕获到该应用层协议通信过程中的数据包集合,通过对该数据包集合进行分析、挖掘,即可提取出该应用层协议的所有识别特征,特征提取效率和总体识别率较现有技术都有极大提高。 
为了更好的说明本发明一种应用层协议识别特征挖掘方法,以下首先对本发明中使用到的术语和所能够挖掘的几个特征进行说明: 
流:指一个包括通信双方的源IP、目的IP、源端口、目的端口和协议的五元组。 
训练数据包集合:捕获的一具体协议的通信过程的数据包集合,用这个捕获的训练数据包集合来挖掘应用层协议识别特征。 
事务:事务数据库中的一条记录,在本发明中一事务包括经过编码的字节、包长、字节百分比和包百分比四个属性字段,存储所提取的数据。 
单项:应用层载荷中的一字节B1经过编码后的表示,第一位是字符I,表示Item,第二、三位表示的十六进制值称为项的位置,第四、五位表示字节B1 的十六进制值,例如:I0039。 
项:由一个或多个单项组成的序列,序列中单项之间用标点符号隔开(如逗号),且序列中单项的位置满足从左到右的递增关系。 
频繁度:一个项在事务数据库中出现的次数。 
频繁项:一个频繁度大于等于初始频繁度(一个预先设定的正整数)的项。 
K级频繁项:一个包含K个单项的频繁项。 
频繁项集:一个由各级频繁项组成的集合。 
特征字符串:在应用层载荷中固定位置出现,能够标识该协议的字符的组合。 
绝对包长特征:所有满足一特征字符串的数据包的应用层载荷的长度都相等,就称其满足绝对包长特征。这个绝对包长特征是与特征字符串的组合特征,所以当满足绝对包长特征时一定满足一字符串特征,它非常有效的降低了误识别,同时提高了识别准确性。 
包长和内容的差值关系特征:所有满足一特征字符串的数据包,若其应用层载荷的长度与应用层载荷中一个固定位置处的值都相差一个固定大小的值,就称其满足包长和内容的差值关系特征。这个包长和内容差值关系特征是与特征字符串的组合特征,所以当满足包长和内容的差值关系特征时一定满足一字符串特征,它非常有效的降低了误识别,同时提高了识别准确性。 
本发明提出了一种应用层协议识别特征挖掘方法,能够挖掘提取以下三种特征:特征字符串、绝对包长特征、包长和内容的差值关系特征。下面结合上述目标介绍本发明一种应用层协议识别特征自动挖掘方法,如图1所示,包括下列步骤: 
步骤S100,利用混杂流量过滤方法和应用层载荷编码方法对训练数据包集合进行过滤和编码,提取准协议识别特征数据信息; 
如图2所示,所述步骤S100包括下列步骤; 
步骤S110,捕获训练数据包集合并对训练数据包集合按流进行划分后存储到流结构体中; 
从每一个数据包的IP数据报报头中提取其源IP、目的IP的和协议号。若协议号为6则表示传输层采用TCP协议,从TCP报头中提取源端口号和目的端口号;若协议号为17则表示传输层采用UDP协议,从UDP报头中提取源端口号和目的端口号;若协议号为其它值则丢弃该数据包。 
将具有相同源IP、目的IP、源端口、目的端口和协议的数据包分为一类,并按其到达先后存储在一个流结构体中,以流的五元组作为它的标签。 
步骤S120,利用混杂流量过滤方法过滤训练数据包集合中的混杂流量; 
步骤S121,过滤掉确定满足HTTP协议和FTP协议的流的内容; 
由于目前许多软件很多都在页面上嵌入一些广告,这些广告采用HTTP协议传输,而且有些软件也同时支持基于HTTP协议或者FTP协议的文件下载或者数据传输,这导致虽然只采用一种软件进行通信,但却产生了不同协议的流量,并且如果有软件采用这两种方式中的任何一种,通信中产生的HTTP或者FTP协议流量一般会占总流量较大的比例,如果不将其过滤掉,将会在挖掘本协议特征的同时挖掘出HTTP或FTP协议特征,这将导致在实时识别时将HTTP或者FTP协议识别为该协议。 
因此,在捕获训练数据包集合时,为使捕获的数据包基本上是采用同一个 应用层协议通信的数据包,只打开一种应用软件,需要过滤掉满足HTTP协议和FTP协议的流的内容。 
实验表明目前其它应用层协议产生的混杂流量占总流量的比例很小,不会对挖掘结果造成大的影响,通过弱特征过滤就可以把它们过滤掉。 
步骤S121A,首先过滤掉HTTP协议的流的内容; 
依次判断每个TCP流结构体,若满足以下两个条件则将该结构体包含的数据包丢弃:1)该流结构体含有80端口;2)该结构体中第四个数据包的开始是GET、HEAD、POST、PUT、PATCH、COPY、MOVE、DELETE、LINK、UNLINK、OPTION中任一个。 
步骤S121B,然后过滤掉FTP协议的流的内容; 
(1)过滤掉采用PASV模式通信的流结构体的数据包; 
(2)过滤掉采用20、21端口的结构体的数据包; 
判断采用FTP的PASV模式通信的流结构体的方法: 
首先寻找采用21端口的流结构体,判断属于该结构体的数据包是否有以227开头的数据包; 
若有则进一步判断是否是PASV模式的应答包(即根据FTP协议应答包的格式),若是则该数据包中就包含服务器端准备和客户端进行PASV模式数据连接的IP地址和端口号,同时该数据包的目的IP地址也即客户端的IP地址,FTP数据连接采用TCP协议,至此采用FTP的PASV模式通信的流的五元组信息已经得到4个,记录这四个数据;当遍历完所有采用21端口的流结构体后,可以得到所有采用FTP的PASV模式通信的流信息; 
对20端口的结构体数据包,直接过滤掉。 
将每个流和所述记录的采用FTP的PASV模式的数据连接流信息进行对比,若流结构体中的五元组信息中的四个分别与所述记录的PASV模式数据连接的流信息相同,则认定此流是采用FTP的PASV模式通信的流,丢弃该流中的所有数据包。 
步骤S122,过滤掉TCP流中没有完整三次握手的流; 
根据TCP协议的三次握手数据包的标志位,判断每一个TCP流是否是具有完整的三次握手的流,过滤掉没有完整三次握手数据包的TCP流; 
步骤S130,利用基于位置对提取的数据包中的字节进行编码的方法对应 用层载荷进行编码; 
在协议的报头中,不同位置的相同数据表示不同的意义,而本发明分析的内容很多涉及协议的报头,此外在不编码情况下用寻找频繁项集方法得出的处理结果对本发明的问题而言也是无意义的。为了解决该问题本发明提出了一种基于位置对提取的数据包中的字节进行编码的方法,并利用该方法对所有数据包内容进行编码,它不仅把不同位置的相同字节区分开来,并对后面准应用层协议识别特征的过滤、应用层协议识别特征的自动生成有决定意义。 
所述编码方法为:原来的数据包中一个字节的值用两个十六进制数表示,现在把这个字节编码为一个有5个字符的单项,从左边起第1个字符是I,表示Item,第二、三个字符表示该字节在上述所提取的前N个字节中处于第几位,用十六进制表示,从零开始计数,若小于十六则第二位为零;第四、五个字符是原来字节的两个十六进制字符。 
步骤S140,对经过编码后数据的信息进行提取,提取准协议识别特征数据信息。 
准协议识别特征数据信息包括具有相同偏移数据包的经过编码的信息,以及相关的统计辅助数据信息。 
对过滤过的流,按照IP数据报报头中的上层协议类型,分为TCP流和UDP流,并分别进行准协议识别特征数据信息提取,包括如下步骤: 
步骤S141,对TCP流提取准协议识别特征数据信息,并导入到事务数据库中; 
对TCP流提取具有相同偏移数据包的经过编码的信息,即流的第i个数据包前N个经过编码的字节、第i个数据包的包长、该流的总字节数占训练数据包集合中所有具有完整三次握手TCP流的总字节数的百分比、该流的总数据包数占训练数据包集合中所有具有完整三次握手TCP流的总数据包数的百分比。 
然后,根据i值的不同导入到事务数据库不同的表中,较佳地,所述其中4≤i≤(n+4),从第四个包开始提取是为了不提取建立连接的三次握手数据包的数据,i最大为(n+4),表示总共提取n个数据包,提取n个数据包是为了在第1个数据包挖掘得到的信息不足以有效识别协议时,迭代用第2,3到第n个数据包的内容继续进行挖掘; 
步骤S142,对UDP流提取准协议识别特征数据信息,并导入到事务数据 库中。 
对UDP流的提取与TCP流提取类似,但1≤i≤n,因为UDP没有建立连接的过程; 
步骤S200,从提取的准协议识别特征数据信息中挖掘得到多级频繁项集; 
特征字符串(例如固定的版本号、状态等)是最常见的识别特征之一,它一般会在协议的报头部分出现,而上一步提取的每一条数据都极可能是协议报头部分数据,若能在这些数据中找出频繁出现的组合字符串,则这些字符串就很可能是标识该协议的特征,因此提取特征字符串的问题可转化为对编码过的数据挖掘分析寻找频繁项集的问题。 
本发明的挖掘得到一级频繁项集处理方法是:先设定一个初始频繁率,由初始频繁率乘以事务数据库中事务的总个数,然后取整得到初始频繁度;计算数据库中每一个单项的频繁度,过滤掉频繁度小于初始频繁度的单项,剩余的每一个单项称为一级频繁项,所有一级频繁项的集合称为一级频繁项集; 
K(K≥2)级频繁项的挖掘方法是:从(K-1)级频繁项集中选择两个(K-1)级频繁项A和B,这两个(K-1)级频繁项必须满足(K-1)级频繁项A的前(K-2)个单项与(K-1)级频繁项B的(K-2)个单项相同,(K-1)级频繁项A的第(K-1)个单项与(K-1)级频繁项B的第(K-1)个单项的位置不同,若B的第(K-1)个单项的位置大于A的第(K-1)个单项的位置,则将B的第(K-1)个单项,附加在A的后面得到准K级频繁项(由K个单项组成),计算该准K级频繁项的频繁度,若大于等于初始频繁度,则其确实是K级频繁项,按此方法得到所有的K级频繁项,组成K级频繁项集。 
例如,二级频繁项的挖掘方法是:从一级频繁项集中任选两个一级频繁项,按位置关系组合成准二级频繁项,然后扫描事务数据库,计算这个准二级频繁项的频繁度,若大于等于初始频繁度,则确定此准二级频繁项确实是二级频繁项,按此方法可以得到所有的二级频繁项,组成二级频繁项集。 
因为若存在二级频繁项,则其一定是两个一级频繁项的组合,并且由于本发明中编码的特点,二级频繁项中项的位置一定要满足从左到右按从小到大排列,而不是一级频繁项的随意组合,这就极大的减少了组合次数,提高了处理效率。 
三级频繁项的挖掘方法是:从二级频繁项集中选择两个二级频繁项A和B, 这两个二级频繁项满足二级频繁项A的第一个单项与二级频繁项B的第一个单项相同,二级频繁项A的第二个单项与二级频繁项B的第二个单项的位置不同,若B的第二个单项的位置大于A的第二个单项的位置,则将B的第二个单项,附加在A的后面得到准三级频繁项(由三个单项组成),计算该准三级频繁项的频繁度,若大于等于初始频繁度,则其确实是三级频繁项,按此方法得到所有的三级频繁项,组成三级频繁项集。 
四级频繁项及以后各级的频繁项挖掘方法与此类同。 
迭代处理直到找不更长的频繁项时,处理结束。将各级频繁项组合就得到频繁度大于等于一设定值的频繁项集,并将包含单项个数相对较多的频繁项称为高级频繁项,包含单项个数较少的频繁项为低级频繁项。 
步骤S300,利用频繁度修正和频繁项过滤方法,对所述多级频繁项集进行第一次过滤,对第一次过滤后剩余的多级频繁项的频繁度进行修正、二次挖掘和第二次频繁项过滤,得到最终协议识别特征; 
步骤S310,利用频繁度修正和频繁项过滤方法,对所述多级频繁项集进行第一次频繁项过滤,以及频繁度修正与第二次频繁项过滤; 
本步骤包括第一次频繁项过滤过程,以及频繁度修正和第二次频繁项过滤过程。 
第一次频繁项过滤过程过滤冗余准特征和全零的准特征; 
频繁度修正和第二次频繁项过滤过程:对4级频繁项及以下各级频繁项的频繁度进行修正,然后通过第二次频繁项过滤方法过滤掉可靠性相对较低的特征。 
频繁度修正方法有力的降低了不可靠特征的频繁度,确保不可靠特征在第二次频繁项过滤过程中被过滤掉,极大的减少了准特征个数。使得特征的识别准确性得到极大的提高,同时降低了不同协议之间特征交叉的概率。 
如图3所示,所述步骤S310包括下列步骤。 
步骤S311,对所述多级频繁项集进行第一次频繁项过滤; 
步骤S200中处理得到的多级频繁项集,有很大冗余,即包括很多冗余特征,需要对其进行第一次频繁项过滤。 
所述冗余特征是指:若一个频繁项的频繁度与包含它的高级频繁项的频繁度相等,则称该频繁项为冗余特征。 
因为高级频繁项的存在就意味着频繁度不小于当前高级频繁项的频繁度的任意子频繁项的存在。 
第一次频繁项过滤从一级频繁项开始依次检查过滤掉所有的冗余特征。因为这是等价过滤,不会产生特征的丢失。 
此外第一次频繁项过滤还要过滤掉内容全零的频繁项。 
所述全零的频繁项是指:频繁项中每个单项的后两位全为零。 
首先全零特征实际中被采用的可能性很小,因为其只能标识很少的信息;其次全零的特征在实际中是不可靠的,因为有很多协议采用零填充,在对许多协议的特征挖掘分析过程中都出现大量全零的频繁项,若不将其过滤会导致协议间的交叉误识别。 
步骤S312,对第一次频繁项过滤后的多级频繁项集进行频繁度修正,然后进行第二次频繁项过滤,消除频繁项间的包含关系; 
经过第一次频繁项过滤后,仍可能存在有互相包含关系的频繁项,这在最终结果中决不允许的,否则高级频繁项将自动被屏蔽,低级频繁项出现的频繁度更高,但高级频繁项更不容易产生误识别。 
因此,本发明提出对4级频繁项及4级以下频繁项的频繁度,基于起始位置以及频繁项中单项与单项之间的平均距离修正其频繁度。 
因为低级频繁项产生误识别的概率比高级频繁项大,且低级频繁项一般较多,一些低级频繁项的起始位置较大并且单项与单项之间的距离较大,而这样的频繁项一般不满足协议识别特征,它们的存在会产生较高误识别,所以可以根据这些值降低其频繁度以达到将其过滤掉的目的。以长度4作为修正频繁度的分界是因为长度大于4的频繁项一般较少,频繁度相对较低,而且其造成误别的最大概率为1/240即使不过滤也不会造成大的误识别。 
进一步地,所述对4级频繁项及4级以下频繁项的频繁度进行频繁度修正和第二次频繁项过滤,包括如下步骤: 
步骤S3121,利用公式(1)对1级频繁项的频繁度进行修正; 
freq new = k 1 &times; freq old ; pos 0 = 0 , 0.9 &le; k 1 < 1 f ( pos 0 ) &times; freq old ; pos 0 &NotEqual; 0 , 0 < f ( pos 0 ) &le; k 1 - - - ( 1 )
其中,freqnew表示修正过后的新的频繁度,freqold表示修正前的频繁项的频繁度,posi表示频繁项中第i个单项的位置,i从零开始,k表示频繁项中单 项的个数。单项的位置从零开始编号,k1是一个常数,f(pos0)是一个连续单调减函数。 
步骤S3122,利用公式(2)对2级频繁项的频繁度进行修正; 
Figure S2008101060589D00141
其中,k2是一个常数,f((pos1-pos0))是一个连续单调减函数。 
对起始位置在前四位,并且两个单项位置相临的频繁项,不降低其频繁度,反而将频繁度升高,目的是为消除频繁度比它稍大的一级频繁项,升高此项的频繁度不会对包含它的更长项频繁度有影响,因为它的频繁度即使不升高也比包含的长频繁项的频繁度大。 
同样,在下述步骤中增大频繁度的目的与此类同。 
步骤S3123,利用式(5)对3、4级频繁项的频繁度进行修正; 
首先,利用公式(3)求频繁项中项与项之间的平均距离,记为avedist。 
ave dist = &Sigma; i = 1 k - 1 pos i - pos i - 1 k - 1 - - - ( 3 )
所述距离是指项中两个相临单项的位置的差值的绝对值。 
如果avedist≠1,利用公式(4)对avedist进行修正,以保证频繁度降低适当,而不至于一次降低太大; 
Figure S2008101060589D00143
其中,k3,k4是常数。 
对3、4级频繁项的频繁度的修正公式为式(5) 
Figure S2008101060589D00144
其中,f1(k)是关于k的连续单调增函数;f2(avedist)和f3(avedist)是关于 avedist的连续单调减函数,且满足f2(avedist)>f3(avedist)。 
步骤S3124,过滤掉有包含关系的频繁项中频繁度小的频繁项。 
经过频繁度修正后,比较任意两个具有包含关系的频繁项的频繁度大小,利用第二次频繁项过滤方法,即过滤掉其中频繁度较小的频繁项。 
步骤S320,将修正与过滤后的频繁项集中的频繁项转化为特征字符串,挖掘绝对包长特征和包长与内容差值关系特征,并标记相应事务,然后将相应于该事务的准协议识别特征数据信息进行过滤,得到最终的协议识别特征。 
本步骤包括对满足特征字符串的事务进行二次挖掘,挖掘绝对包长特征和包长与内容差值关系特征,并将满足绝对包长特征和包长与内容差值关系特征的事务进行标记;并将相应于该事务的准协议识别特征数据信息过滤掉弱特征、重复挖掘特征、疑似混杂特征,降低误识别率,得到最终的协议识别特征。 
本步骤的作用是增加协议识别特征特征的准确性和可靠性,极大的提高了识别的准确率、降低了误识别率,本步骤中提出的挖掘绝对包长特征和包长与内容差值关系特征的方法是准确识别协议的保证,没有这个方法,协议之间的误识别率将急剧上升;另外本步骤中提出的弱特征、重复挖掘特征和疑似混杂特征过滤方法也在一定程度上降低了协议间的误识别率。 
步骤S321,将修正与过滤后的频繁项集中的频繁项转化为特征字符串,从事务数据库中检索得到满足该特征字符串的事务,挖掘绝对包长特征和包长与内容差值关系特征,并将满足绝对包长特征和包长与内容差值关系特征的事务进行标记; 
将经过第一次频繁项过滤,以及第二次频繁项修正与过滤后的每一个频繁项转化为一个特征字符串,依次扫描事务数据库中的每个事务,对满足该特征字符串的事务,首先记录该事务所对应的数据包的实际包长,其次将提取的前N个字节的实际内容(即每个单项后两位的值)从第0个字节开始,把前后相临的两个字节相组合,分别组合成(N-1)个大端字节序(Big-Endian)双字节无符号整数和(N-1)个小端字节序(Little-Endian)双字节无符号整数,并设置两个能存储2n×(N-1)个值的存储结构进行存储。用该事务所对应的数据包包长分别减去前面的(N-1)个大端字节序无符号整数,若其值在[-n,n-1]之间则在上面存储结构中相应的位置计数加一,并在相应的位置记录其位置,并对(N-1)个小端字节序无符号整数做相同的处理。 
若存在绝对包长特征,则满足该特征字符串的所有事务所对应的数据包的实际包长是一个相同的值或者绝大部分事务所对应的数据包的实际包长是一个相同的值。若存在包长与内容的差值关系特征,设其满足与起始位置为2的大端字节序双字节无符号整数差值为5的特征,则满足该特征字符串的所有或者绝大部分事务所对应的数据包的实际包长与起始位置为2的大端字节序双字节无符号整数差值都是5。 
通过对事务数据库中的所有事务扫描一遍之后,就可以判断满足该特征字符串的所有事务中,是否有绝大部分(一个确定的百分比)的事务所对应的包长相等,若是,说明满足绝对包长特征,将绝对包长特征附加在特征字符串之后;若否,再判断是否有绝大部分的事务存在其包长与一固定起始处双字节值相差一个固定大小的值,若是则满足包长与内容之间的差值特征,此时要先对特征字符串修正,修正方法是除去特征字符串中位置是包长与内容差值关系特征的位置的单项,然后再附加上包长与内容的差值关系特征。 
扫描事务数据库重新计算修正过的特征的频繁度、所有满足该特征的流的总数据包个数占该协议(TCP或UDP)所对应的总数据包个数的百分比、所有满足该特征的流的总字节总数该协议所对应的总字节数的百分比,对满足该新特征的事务打上标记。 
步骤S322,将相应于该事务的准协议识别特征数据信息过滤掉重复挖掘特征、弱特征以及疑似混杂特征,得到最终的协议识别特征。 
对上步过滤后剩余的准协议识别特征数据信息特征称之为第二级准特征,对任意两个第二级准特征,记录它们在事务数据库中同时出现的次数,若同时出现的次数占频繁度较小的那个准特征的频繁度的p1%以上,其中,p1一个预先设定的值,80≤p1≤100,则认为这两个准特征实际上是重复的,它们是从基本相同的事务中发现的,称频繁度小的第二级准特征为重复挖掘特征,过滤掉此重复挖掘特征。 
经过过滤后,再依次判断每个第二级准特征是否仅是一个1级频繁项,若是则称其为弱特征,因为其出现的概率为1/256,会造成很高的误识别,所以要将其过滤掉;同时对于剩余的所有第二级准特征,判断满足该第二级准特征所有流的总数据包和总字节数分别占该协议所对应的总数据包和总字节数的百分比是否小于p2%(其中,p2一个预先设定的值),若任一个第二级准特 征称小于p2%,则该特征为疑似混杂特征,产生该疑似混杂特征的原因可能是训练数据包集合中混合进了其它协议的流量,要将其过滤掉(实验结果表明有很多流量不足1%的准特征造成了很大的误识别,过滤掉这些准特征后,识别率基本上没有降低,但误识别率变得很低),把剩余的准特征作为该协议的最终协议识别特征。 
步骤S400,若所有最终协议识别特征的字节识别率都达到要求,或者数据包识别率总和达到要求时,则不再挖掘第二个及以后数据包的数据;否则循环挖掘第二个及以后数据包,直到总识别率达到要求。 
经过修正、挖掘和过滤后,若所有最终协议识别特征的字节识别率或者数据包识别率总和都达到p3%以上(其中,所述p3是一个预先设定的值,80≤p3 ≤100),则不再挖掘第二个及以后数据包的数据,否则循环挖掘第二个及以后数据包,直到总识别率达到p3%以上,然后用挖掘得出最终协议识别特征生成特征库中相对应的特征文件。至此就可以运行流量识别程序进行实时在线识别了。 
所述用最终协议识别特征生成特征库中相关的特征文件,以及利用流量识别程序进行实时在线识别,是一种现有技术,因此,在本发明实施例中,不再一一详细描述。 
下面以自动分析生成迅雷采用TCP协议进行通信的应用层协议,提取识别特征为例,对本发明的应用层协议识别特征挖掘方法进行进一步解释说明。 
步骤S100’,提取迅雷满足条件TCP流的数据; 
提取迅雷满足条件的804个TCP流中每个流的第一个数据包的部分数据如表1所示。 
表1: 
  事务   前N个经过编码的字节   包长   字节百分比   包百分比
  1   I0038,I0100,I0200,I0300,I040d,I0500,  I0600,I0700,I0884,I09ab,I0a0c,I0b00   21   0.007039%   0.00597%
  2   I0038,I0100,I0200,I0300,I0472,I0500,  I0600,I0700,I0864,I09e5,I0a5c,I0b00   122   0.002133%   0.000246%
  3   I0038,I0100,I0200,I0300,I040d,I0500,  I0600,I0700,I0884,I09f4,I0a1e,I0b00   21   0.011092%   0.00957%
  4   I0038,I0100,I0200,I0300,I040d,I0500,  I0600,I0700,I0884,I0933,I0a00,I0b00   21   0.014291%   0.012682%
  5   I0038,I0100,I0200,I0300,I040d,I0500,  I0600,I0700,I0884,I095d,I0a13,I0b00   21   0.011305%   0.011376%
  6   I0038,I0100,I0200,I0300,I0472,I0500,  I0600,I0700,I0864,I099d,I0a5f,I0b00   122   0.001493%   0.000159%
  7   I0032,I0132,I0230,I032d,I0453,I0565,  I0672,I0776,I082d,I0955,I1020,I1146   44   0.001067%   0.000103%
  8   I0038,I0100,I0200,I0300,I0472,I0500,  I0600,I0700,I0864,I09dc,I0a5c,I0b00   122   0.002133%   0.000246%
  .  .  .   .  .  .   .  .  .   .  .  .   .  .  .
  803   I0038,I0100,I0200,I0300,I0472,I0500,  I0600,I0700,I0864,I09e5,I0a5c,I0b00   122   0.001493%   0.000269%
  804   I0038,I0100,I0200,I0300,I0472,I0500,  I0600,I0700,I0864,I09e5,I0a5c,I0b00   122   0.001493%   0.000269%
步骤S200’,找出所有大于一频繁度的频繁项。 
将初始频繁率设置为0.02;初始频繁度=(初始频繁率×事务个数)取整=(0.02×804)取整=16,挖掘所有频繁度大于16的频繁项,此实施例中共挖掘出31680个频繁项,部分列举如表2所示。 
表2 
  序号   频繁度   各级频繁项
  1   27   I0032
  2   723   I0038
  3   248   I040d
  4   29   I0955
  5   29   I0a20
  .  .  .   .  .  .   .  .  .
  51   27   I0032,I0132
  52   27   I0032,I0230
  53   640   I0000,I0200
  .  .  .   .  .  .   .  .  .
  397   27   I0032,I0132,I0230
  398   27   I0032,I0132,I032d
  .  .  .   .  .  .   .  .  .
  5423   720   I0038,I0100,I0200,I0500,I0600
  5424   720   I0038,I0100,I0200,I0500,I0700
  5425   720   I0038,I0100,I0200,I0300,I0500,I0600,I070   0
  5426   228   I0100,I0200,I0300,I040d,I0500,I0600,I070   0
  .  .  .   .  .  .   .  .  .
  10000   718   I0038,I0100,I0200,I0300,I0500,I0600,I070   0,I0b00
  .  .  .   .  .  .   .  .  .
  31678   84   I0038,I0100,I0200,I0300,I0472,I0500,I060  0,I0700,  I0864,I09dc,I0a5c,I0b00
  31679   63   I0038,I0100,I0200,I0300,I0472,I0500,I060  0,I0700,I0864,  I09e5,I0a5c,I0b00
  31680   20   I0067,I0165,I0274,I032f,I040d,I050a,I066  c,I0765,I086e,  I0967,I0a74,I0b68
步骤S300’,准特征过滤; 
步骤S310’,(第一次过滤)对上步得出的频繁项进行第一次过滤: 
很显然步骤S200’得到的频繁项有高度的冗余,需要对其进行过滤,第一次过滤包括过滤冗余特征和内容为全零的频繁项(过滤方法参见实施方式)。 
在本示例中第一次过滤共过滤31649个频繁项,非常有力了降低了候选特征的个数,并且冗余特征过滤是等价过滤,保证过滤过程没有信息的丢失,过滤后剩余31个频繁项,部分列举如表3所示。 
表3: 
  序号   频繁度   各级频繁项
  2   723   I0038
  3   248   I040d
  4   29   I0955
  5   29   I0a20
  5425   720   I0038,I0100,I0200,I0300,I0500,I0600,I0700
  5426   228   I0100,I0200,I0300,I040d,I0500,I0600,I0700
  10000   718   I0038,I 0100,I0200,I0300,I0500,I0600,I 0700,I0b00
  .  .  .   .  .  .   .  .  .
  31678   84   I0038,I0100,I0200,I0300,I0472,I0500,I0600,I0700,     I0864,I09dc,I0a5c,I0b00
  31679   63   I0038,I0100,I0200,I0300,I0472,I0500,I0600,I0700,     I0864,I09e5,I0a5c,I0b00
  31680   20   I0067,I0165,I0274,I032f,I040d,I050a,I066c,I0765,     I086e,I0967,I0a74,I0b68
步骤S320’,(频繁度修正和频繁项第二次过滤)对于4级频繁项及4级以上的频繁项,基于起始位置及单项之间的平均距离修正其频繁度,并进行第二次过滤。 
修正频繁项的方法参见实施方式,对频繁项修正过后的如表4所示。 
表4: 
  序号   频繁度   各级频繁项
  2   686   I0038
  3   137   I040d
  4   10   I0955
  5   9   I0a20
  5425   720   I0038,I0100,I0200,I0300,I0500,I0600,I0700
  5426   228   I0100,I0200,I0300,I040d,I0500,I0600,I0700
  10000   718   I0038,I0100,I0200,I0300,I0500,I0600,I0700,I0b00
  .  .  .   .  .  .   .  .  .
  31678   84   I0038,I0100,I0200,I0300,I0472,I0500,I0600,I0700,     I0864,I09dc,I0a5c,I0b00
  31679   63   I0038,I0100,I0200,I0300,I0472,I0500,I0600,I0700,     I0864,I09e5,I0a5c,I0b00
  31680   20   I0067,I0165,I0274,I032f,I040d,I050a,I066c,I0765,     I086e,I0967,I0a74,I0b68
表4中序号2、3、4、5部分是经过修正后的频繁度,因其它的频繁项都包含了四个或四个以上单项,所以不修正其频繁度。 
对频繁度修正后,过滤掉任意两个有包含关系的频繁项中频繁度小的频繁项,过滤后结果列举如表5所示。 
表5: 
  序号   频繁度   各级频繁项
  5425   720  I0038,I0100,I0200,I0300,I0500,I0600,I0700
  5426   228  I0100,I0200,I0300,I040d,I0500,I0600,I0700
  31680   20  I0067,I0165,I0274,I032f,I040d,I050a,I066c, I0765,I086e,I0967,I0a74,I0b68
步骤S400’,准特征二次挖掘过滤; 
步骤S410’,挖掘第二次过滤后的每个频繁项是否同时满足绝对包长关 系以及包长与内容差值关系。若存在上述关系则对新发现特征进行附加,并对旧特征(即频繁项)进行修正。 
将表5中序号5425表示的频繁项转化为一个特征字符串,该特征字符串表示的意义:应用层载荷的第0个字节(从零开始编号)是0x38,第1、2、3、5、6、7位是零,其频繁度记为Support=720。 
以该特征字符串为例挖掘绝对包长特征方法如下: 
例如可以定义一个结构,以记录满足特征字符串的包长的分布信息,如表6所示。 
表6: 
  包长   0   1   2   3   1497   1498   1499   1500
  Count   0   0   0   0   0   0   0   0
扫描事务数据库,对满足该特征字符串的事务记录其对应的包长(例如:若包长为21则在包长为21的计数值单元加1)。当扫描完事务数据库后,可以取得计数值最大的计数单元的值Countmax和其所对应的包长Plen,如果(Countmax/Support)≥P5%,(一个确定的百分比如95%),则认为满足该特征字符串的事务还满足绝对包长为Plen的特征,将此特征附加在特征字符串后,形成一个组合特征。 
以序号为5425的频繁项转化的特征字符串为例挖掘包长与内容的差值关系特征的方法如下: 
事务数据库中一条事务中可包含的单项个数最大值记为N,则对一条包含N个单项且满足该特征字符串的事务来说,可以提取组合成(N-1)个大端字节序(Big-Endian)无符号整数和(N-1)个小端字节序(Little-Endian)无符号整数。(详细组合方法参见实施方式)可用如下方式表示:表7表示(N-1)个大端字节序无符号整数,序号也同时表示位置。例如:若事务包含以下三个单项I0001,I0102,I0203,则其可组成两个大端字节序双字节无符号整数和两个小端字节序双字节无符号整数,由I0001和I0102提取组合的大端字节序双字节无符号整数为18,序号为0(等于两个被组合的单项中,位置较小的单项的位置),由I0001和I0102提取组合的小端字节序双字节无符号整数为33,序号为0。表8表示(N-1)个小端字节序双字节无符号整数。 
表7  (N-1)个大端字节序无符号整数表 
  序号(位置)   值(大端字节序)
  0   BigVal0
  1   BigVal1
  ...   ...
  N-2   BigValN-2
  N-1   BigValN-1
表8  (N-1)个小端字节序无符号整数表 
  序号(位置)   值(小端字节序)
  0   LittVal0
  1   LittVal1
  ...   ...
  N-2   LittValN-2
  N-1   LittValN-1
数据库中每个事务所对应的包长记为Plen。另需要两个全局的结构,用分别记录包长和上面2×(N-1)值的差值关系。例如:可用如下结构记录每条事务的Plen与(N-1)个大端字节序双字节无符号整数的差值关系,如表9所示。 
表9  差值关系表 
  序号(位置)   -n   -(n-1) ...   0   1 ...   (n-1)
  0   0   0   0   0   0   0   0
  1   0   0   0   0   0   0   0
  ...   0   0   0   0   0   0   0
  N-2   0   0   0   0   0   0   0
  N-1   0   0   0   0   0   0   0
表9中n表示一个正整数,记(Plen-BigVali)=MinVali,若-n≤MinVali <n,则在第i行第MinVali列计数加1,对数据库扫描一遍后可以得到最大的一个计数值CountMax,其位于表9结构中第Pos行,第Val列。如果(CountMax /Support)≥P6%,(一个确定的百分比如95%),则认为满足该特征字符串的事务还满足包长与应用层载荷的第Pos和(Pos+1)个字节组成的大端字节序双字节无符号整数差值为Val的特征。判断特征字符串中是否包含位置等于Pos或(Pos+1)的值,若有将这两个位置上的值从特征字符串中删除,再将包长与内容的差值特征附加在特征字符串后,形成组合特征。 
扫描事务数据库重新计算修正过的特征的频繁度、所有满足该特征的流的总数据包个数占该协议所对应的总数据包个数的百分比(即该条准特征的包识别率)、所有满足该特征的流的总字节总数该协议所对应的总字节数的百分比(即该条准特征的字节识别率),对满足该特征的事务打上标记。经过二次挖掘修正过准特征如表10所示。 
表10: 
  序号   频繁度   包识别率   字节识别率   准特征
  5425   720   99.5%   99.94%   I0038,I0100,I0200,I0600,     I0700*BE*BG:3*MV:8*LE*BG:4*MV:8
  5426   228   18.79%   20.58%   I0100,I0200,I0300,I040d,I0500,I0600,   I0700*APL:21
  31680   20   0.04%   0%   I0067,I0165,I0274,I032f,I040d,I050a,  I066c,I0765,I086e,I0967,I1074,  I1168*APL:75
步骤S420’,过滤弱特征和重复挖掘特征。 
过滤掉只包含一个一级频繁项的准特征,该准特征出现的概率为1/256,会造成很高的误识别率。 
过滤掉重复挖掘特征(重复挖掘特征概念参见实施方式),上步得到的序号为5425和5426的准特征是从基本相同的事务是挖掘得到的,因为当序号为5426的准特征出现时序号为5425的准特征(99%)的都出现了,所认为序号5426表示的准特征为重复挖掘特征,要将其过滤。 
过滤掉包识别率或者字节识别率小于p2%的准特征,称这种特征为疑似混杂特征,产生此特征的原因可能是因为训练数据包集合中混合进了少量的其它协议的流量。实验证明许多识别率不足1%的特征造成了协议间严重的误识别, 过滤掉这些特征后对识别率基本上没有影响,但却极大的降低了误识别率。根据此规则过滤掉了序号3和4的准特征。 
目前只剩下如下一个特征,如表11所示。 
表11: 
  序号   频繁度   包百分比   字节百分比  应用层特征
  5425   720   99.502%   99.939%  I0038,I0100,I0200,I0600,I0700 *BE*BG:3*MV:8*LE*BG:4*MV:8
I0038,I0100,I0200,I0600,I0700是表示特征字符串,表示第0-2位是0x38,0x00,0x00,第6、7位是0x00,0x00;*BE*BG:3*MV:8表示包长与内容的差值关系,*BE表示是大端字节序,*BG:3表示起始位在第3位,MV:8表示包长与第3、4位组成的大端字节序双字节无符号整数的差值是8。LE*BG:4*MV:8表示包长与内容的差值关系,*LE表示是小端字节序,*BG:4表示起始位在第4位,MV:8表示包长与第4、5位组成的小端字节序双字节无符号整数的差值是8。 
步骤S500’,用挖掘的协议识别特征,生成该协议的特征文件。本例用XML文件表示特征文件,生成特征文件之后就可以运行流量识别程序进行在线实时识别。 
以下是用上述挖掘的特征生成的特征文件的计算机实现算法示例: 
<tcp> 
       <type value=″1″> 
          <content_length> 
               <offset>4</offset> 
               <byte_number>10</byte_number> 
               <differ_value>8</differ_value> 
          </content_length> 
          <byte> 
               <content>0x38</content> 
               <offset>0</offset> 
          </byte> 
    <byte> 
        <content>0x00</content> 
        <offset>1</offset> 
    </byte> 
    <byte> 
        <content>0x00</content> 
        <offset>2</offset> 
    </byte> 
    <byte> 
       <content>0x00</content> 
       <offset>6</offset> 
    </byte> 
    <byte> 
       <content>0x00</content> 
       <offset>7</offset> 
    </byte> 
</type> 
<type value=″2″> 
    <content_length> 
    <offset>3</offset> 
    <byte_number>2</byte_number> 
    <differ_value>8</di ffer_value> 
</content_length> 
<byte> 
   <content>0x38</content> 
   <offset>0</offset> 
</byte> 
<byte> 
        <content>0x00</content> 
        <offset>1</offset> 
    </byte> 
    <byte> 
        <content>0x00</content> 
        <offset>2</offset> 
    </byte> 
    <byte> 
       <content>0x00</content> 
       <offset>6</offset> 
    </byte> 
    <byte> 
       <content>0x00</content> 
       <offset>7</offset> 
    </byte> 
  </type> 
</tcp> 
本发明的有益效果在于: 
1.通过本发明的方法分析每种应用层协议识别特征具有很高的效率,运用本发明的技术使得实现特征库中每种协议识别特征的周期性更新成为了现实,为实现完全、准确识别所有流量打下了基础; 
2.本发明的方法得出的应用层协议识别特征完全性、可靠性都较当前技术有极大的提高。因为该方法是在对大量数据进行提取、分析的基础上挖掘应用层协议识别特征的,能够得到更完全、完整的应用层协议识别特征,并在得出最终应用层协议识别特征前已经对多个可能的特征进行了多级过滤和验证,其可靠性也比当前技术只分析有限数据包得出的特征的可靠性有极大的提高; 
3.本发明的方法提出了度量应用层协议识别特征正确与否的指标:识别率、准确率、正误识别率、负误识别率,从各个方面对自动得出的应用层协议识别特征进行衡量,使得自动得出的协议识别特征即可以达到较高的识别率, 同时又保证了较高的准确率和较低的误识别率,使得自动识别的应用层协议识别特征的正确性有了判断依据; 
4.本发明的方法不仅在于把当前识别协议特征的人工分析过程转化为计算机自动挖掘处理应用层协议识别特征的过程,同时更在于其得出的协议识别特征的准确性、完全性和可靠性等方面,这使得以前随着识别协议的增多,协议之间的误识别率增高的现象有很大的改变,该方法把协议之间的误识别率降低到了一个很小的范围内,使得可靠性得到极大的提升。 
通过以上结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。 
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。 

Claims (12)

1.一种应用层协议识别特征挖掘方法,其特征在于,包括下列步骤:
步骤A,利用混杂流量过滤方法对训练数据包集合进行过滤,然后利用基于位置对提取的数据包中的字节进行编码的方法对应用层载荷进行编码,对经过编码后的数据的信息提取准协议识别特征数据信息;
步骤B,从提取的准协议识别特征数据信息中进行挖掘,得到多级频繁项集;
步骤C,包括下列步骤:
步骤C1,对所述多级频繁项集进行第一次频繁项过滤;
步骤C2,对第一次频繁项过滤后的多级频繁项集进行频繁度修正和第二次频繁项过滤,消除频繁项间的包含关系;
步骤C3,将修正与过滤后的频繁项集中的频繁项转化为特征字符串,从事务数据库中检索得到满足该特征字符串的事务,挖掘绝对包长特征和包长与内容差值关系特征,并将满足绝对包长特征和包长与内容差值关系特征的事务进行标记;
步骤C4,将被标记的事务的准协议识别特征数据信息过滤掉重复挖掘特征、弱特征以及疑似混杂特征,得到最终的协议识别特征;
其中,包长与内容差值关系特征是指所有满足一特征字符串的数据包,若其应用层载荷的长度与应用层载荷中一个固定位置处的值都相差一个固定大小的值,就称其满足包长与内容差值关系特征;这个包长与内容差值关系特征是与特征字符串的组合特征,当满足包长与内容差值关系特征时一定满足一字符串特征。
2.根据权利要求1所述的应用层协议识别特征挖掘方法,其特征在于,还包括下列步骤:
步骤D,若所有最终协议识别特征的字节识别率达到要求,或者数据包识别率达到要求时,则不再挖掘第二个及以后数据包的数据;否则循环挖掘第二个及以后数据包,直到上述字节识别率或数据包识别率达到要求。
3.根据权利要求1或2所述的应用层协议识别特征挖掘方法,其特征在于,所述步骤A包括下列步骤:
A1.捕获训练数据包集合并对训练数据包集合按流进行划分后存储到流结构体中;
A2.利用混杂流量过滤方法过滤训练数据包集合中的混杂流量;
A3.利用基于位置对提取的数据包中的字节进行编码的方法对应用层载荷进行编码;
A4.对经过编码后数据的信息进行提取,提取准协议识别特征数据信息。
4.根据权利要求3所述的一种应用层协议识别特征挖掘方法,其特征在于,所述步骤A2中,混杂流量过滤方法包括下列步骤:
A21.过滤掉满足HTTP协议和FTP协议的流的内容;
A22.过滤掉TCP流中没有完整三次握手的流。
5.根据权利要求4所述的一种应用层协议识别特征挖掘方法,其特征在于,步骤A21中,所述过滤掉满足FTP协议的流的内容,包括下列步骤:
过滤掉采用FTP的PASV模式通信的流结构体的数据包;
过滤掉采用20、21端口的流结构体的数据包。
6.根据权利要求5所述的一种应用层协议识别特征挖掘方法,其特征在于,所述采用FTP的PASV模式通信的流结构体的判断方法,包括下列步骤:
寻找采用21端口的流结构体,判断属于该流结构体的数据包是否有以227开头的数据包;
若有则进一步判断该数据包是否是PASV模式的应答包,若是则该数据包中就包含服务器端准备和客户端进行PASV模式数据连接的IP地址和端口号,同时该数据包的目的IP地址也即客户端的IP地址,FTP数据连接采用TCP协议,记录这四个数据;
当遍历完所有采用21端口的流结构体后,得到所有采用FTP的PASV模式通信的流信息。
7.根据权利要求6所述的一种应用层协议识别特征挖掘方法,其特征在于,所述过滤掉采用PASV模式通信的流结构体的数据包,包括下列步骤:
将每个流和记录的采用FTP的PASV模式的数据连接流信息进行对比,若流结构体中的五元组信息中的四个分别与记录的PASV模式数据连接的流信息相同,则认定此流是采用FTP的PASV模式通信的流,丢弃该流中的所有数据包。
8.根据权利要求3所述的一种应用层协议识别特征挖掘方法,其特征在于,所述步骤A3中,所述基于位置对提取的TCP流中每个流的第一个数据包中的字节进行编码的方法,包括下列步骤:
将数据包中一个用两个十六进制数表示的字节的值,编码为一个用5个字符表示的单项,从左边起第1个字符是I,表示Item,第二、三个字符表示该字节在所述数据包中提取的前N个字节中处于第几位,用十六进制表示,从零开始计数,若小于十六则第二个字符为零;第四、五个字符是原来字节的两个十六进制字符。
9.根据权利要求3所述的一种应用层协议识别特征挖掘方法,其特征在于,所述步骤A4中,所述准协议识别特征数据信息,包括具有相同偏移数据包的经过编码的信息,以及相关的统计辅助数据信息;
所述提取准协议识别特征数据信息,包括下列步骤:
A41.对TCP流提取准协议识别特征数据信息,并导入到事务数据库中;
A42.对UDP流提取准协议识别特征数据信息,并导入到事务数据库中。
10.根据权利要求9所述的一种应用层协议识别特征挖掘方法,其特征在于,所述步骤B包括下列步骤:
步骤B1,先设定一个初始频繁率,由初始频繁率乘以数据库中事务的总个数,然后取整得到初始频繁度;计算数据库中每一个单项的频繁度,过滤掉频繁度小于初始频繁度的单项,剩余的每一个单项称为一级频繁项,所有一级频繁项的集合称为一级频繁项集;
步骤B2,从K-1级频繁项集中选择两个K-1级频繁项M和N,这两个K-1级频繁项必须满足K-1级频繁项M的前K-2个单项与K-1级频繁项N的K-2个单项相同,K-1级频繁项M的第K-1个单项与K-1级频繁项N的第K-1个单项的位置不同,若N的第K-1个单项的位置大于M的第K-1个单项的位置,则将N的第K-1个单项,附加在M的后面得到准K级频繁项,计算该准K级频繁项的频繁度,若大于等于初始频繁度,则其确实是K级频繁项,按此方法得到所有的K级频繁项,组成K级频繁项集;其中,K≥2。
11.根据权利要求10所述的一种应用层协议识别特征挖掘方法,其特征在于,所述事务包括经过编码的字节、包长、字节百分比和包百分比四个属性字段,存储所提取的数据。
12.根据权利要求1所述的一种应用层协议识别特征挖掘方法,其特征在于,所述步骤C2包括下列步骤:
步骤C21,利用下式对1级频繁项的频繁度进行修正;
freq new = k 1 &times; freq old ; pos 0 = 0 , 0.9 &le; k 1 < 1 f ( pos 0 ) &times; freq old ; pos 0 &NotEqual; 0 , 0 < f ( pos 0 ) &le; k 1
其中,freqnew表示修正过后的新的频繁度,freqold表示修正前的频繁项的频繁度,posi表示频繁项中第i个单项的位置,i从零开始;单项的位置从零开始编号,k1是一个常数,f(pos0)是一个连续单调减函数;
步骤C22,利用下式对2级频繁项的频繁度进行修正;
Figure FSB00000390735800042
其中,k2是一个常数,f((pos1-pos0))是一个连续单调减函数;
步骤C23,首先,利用下式求频繁项中项与项之间的平均距离,记为avedist
ave dist = &Sigma; i = 1 k - 1 pos i - pos i - 1 k - 1
所述距离是指项中两个相临单项的位置的差值的绝对值;
如果avedist≠1,利用下式对avedist进行修正;
Figure FSB00000390735800044
其中,k3,k4是常数;
然后,对3、4级频繁项的频繁度的利用下式进行修正;
Figure FSB00000390735800045
其中,f1(k)是关于k的连续单调增函数,k表示频繁项中单项的个数;f2(avedist)和f3(avedist)是关于avedist的连续单调减函数,且满足f2(avedist)>f3(avedist);
步骤C24,过滤掉有包含关系的频繁项中频繁度小的频繁项。
CN2008101060589A 2008-05-08 2008-05-08 一种应用层协议识别特征挖掘方法 Expired - Fee Related CN101282251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101060589A CN101282251B (zh) 2008-05-08 2008-05-08 一种应用层协议识别特征挖掘方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101060589A CN101282251B (zh) 2008-05-08 2008-05-08 一种应用层协议识别特征挖掘方法

Publications (2)

Publication Number Publication Date
CN101282251A CN101282251A (zh) 2008-10-08
CN101282251B true CN101282251B (zh) 2011-04-13

Family

ID=40014544

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101060589A Expired - Fee Related CN101282251B (zh) 2008-05-08 2008-05-08 一种应用层协议识别特征挖掘方法

Country Status (1)

Country Link
CN (1) CN101282251B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107302474A (zh) * 2017-07-04 2017-10-27 四川无声信息技术有限公司 网络数据应用的特征提取方法及装置

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741908B (zh) * 2009-12-25 2012-07-11 青岛朗讯科技通讯设备有限公司 一种应用层协议特征的识别方法
CN102195945A (zh) * 2010-03-11 2011-09-21 凹凸电子(武汉)有限公司 协议识别方法、装置及系统
CN102468987B (zh) * 2010-11-08 2015-01-14 清华大学 网络流特征向量提取方法
CN102420830A (zh) * 2010-12-16 2012-04-18 北京大学 一种p2p协议类型识别方法
CN102546363A (zh) * 2010-12-21 2012-07-04 深圳市恒扬科技有限公司 一种报文处理方法、装置及设备
CN103051480B (zh) * 2012-12-25 2015-09-30 华为技术有限公司 一种dn的存储方法及dn存储装置
CN103095718B (zh) * 2013-01-29 2015-07-15 电子科技大学 一种基于Hadoop的应用层协议特征提取方法
CN103997385B (zh) * 2014-05-23 2017-05-03 北京中和卓远科技有限公司 一种数据回放模拟方法及系统
WO2016074094A1 (en) * 2014-11-14 2016-05-19 Marin Litoiu Systems and methods of controlled sharing of big data
CN105681297A (zh) * 2016-01-12 2016-06-15 西安电子科技大学 未知网络协议隐匿行为的指令序列聚类挖掘方法
CN105871619B (zh) * 2016-04-18 2019-03-01 中国科学院信息工程研究所 一种基于n-gram多特征的流量载荷类型检测方法
CN108092792A (zh) * 2016-11-23 2018-05-29 中国移动通信集团湖北有限公司 一种ott应用字节流特征提取方法和装置
CN106878102B (zh) * 2016-12-23 2020-05-22 中国科学院信息工程研究所 一种基于网络流量多字段识别的人流量检测方法及系统
CN108173781B (zh) * 2017-12-20 2019-08-16 宜通世纪科技股份有限公司 Https流量识别方法、装置、终端设备及存储介质
CN110896388B (zh) * 2018-09-12 2022-07-05 西门子(中国)有限公司 网络流量分析方法、装置、计算机可读介质
CN109768887A (zh) * 2019-01-11 2019-05-17 四川大学 一种自动挖掘工控流量周期性特征的方法
CN109873838A (zh) * 2019-04-19 2019-06-11 国网甘肃省电力公司电力科学研究院 一种新能源厂站远程运维非法网络通道识别方法
CN111314170B (zh) * 2020-01-16 2021-12-03 福建奇点时空数字科技有限公司 一种基于连接统计规律分析的特征模糊p2p协议识别方法
CN112887289B (zh) * 2021-01-19 2024-01-23 恒安嘉新(北京)科技股份公司 一种网络数据处理方法、装置、计算机设备及存储介质
CN113890835A (zh) * 2021-09-29 2022-01-04 杭州迪普科技股份有限公司 Dpi应用测试报文的处理方法及装置
CN115190056B (zh) * 2022-09-08 2022-12-23 杭州海康威视数字技术股份有限公司 一种可编排的流量协议识别与解析方法、装置及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1612135A (zh) * 2003-10-30 2005-05-04 中联绿盟信息技术(北京)有限公司 入侵检测(保护)产品与防火墙产品中的协议识别技术
CN1845066A (zh) * 2006-05-16 2006-10-11 北京启明星辰信息技术有限公司 一种自动协议识别方法及系统
CN101035111A (zh) * 2007-04-13 2007-09-12 北京启明星辰信息技术有限公司 一种智能协议解析方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1612135A (zh) * 2003-10-30 2005-05-04 中联绿盟信息技术(北京)有限公司 入侵检测(保护)产品与防火墙产品中的协议识别技术
CN1845066A (zh) * 2006-05-16 2006-10-11 北京启明星辰信息技术有限公司 一种自动协议识别方法及系统
CN101035111A (zh) * 2007-04-13 2007-09-12 北京启明星辰信息技术有限公司 一种智能协议解析方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WO 01/01272 A2,全文.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107302474A (zh) * 2017-07-04 2017-10-27 四川无声信息技术有限公司 网络数据应用的特征提取方法及装置
CN107302474B (zh) * 2017-07-04 2020-02-04 四川无声信息技术有限公司 网络数据应用的特征提取方法及装置

Also Published As

Publication number Publication date
CN101282251A (zh) 2008-10-08

Similar Documents

Publication Publication Date Title
CN101282251B (zh) 一种应用层协议识别特征挖掘方法
CN111488582B (zh) 一种基于图神经网络的智能合约重入性漏洞检测的方法
CN102831121B (zh) 一种网页信息抽取的方法和系统
US6360224B1 (en) Fast extraction of one-way and two-way counts from sparse data
CN101883024B (zh) 一种跨站点伪造请求的动态检测方法
CN105187242B (zh) 一种基于变长序列模式挖掘的用户异常行为检测方法
CN109753800A (zh) 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统
US20090226098A1 (en) Character string updated degree evaluation program
CN106446228A (zh) 一种web页面数据的采集分析方法及装置
CN106228398A (zh) 基于c4.5决策树算法的特定用户挖掘系统及其方法
CN113011889A (zh) 账号异常识别方法、系统、装置、设备及介质
WO2021012894A1 (zh) 获取神经网络测试报告的方法、装置、设备和存储介质
CN102122280A (zh) 一种智能提取内容对象的方法及系统
US20140010452A1 (en) Optical character recognition verification and correction system
Hostiadi et al. Dataset for Botnet group activity with adaptive generator
CN106709000B (zh) 一种基于PageRank和起源图抽象的关键视图发现方法
CN110472416A (zh) 一种网页恶意代码检测方法及相关装置
CN113158635B (zh) 电子报表生成方法及装置
CN103336800A (zh) 基于行为分析的指纹存储比对的方法
CN118981658A (zh) 一种基于异构图自编码器的apt攻击者聚类方法
CN118296149A (zh) 基于人工智能的文本数据挖掘分析系统及方法
CN108304301B (zh) 记录用户行为轨迹的方法及装置
JP4558369B2 (ja) 情報抽出システム、情報抽出方法、コンピュータプログラム
Hirokawa et al. Predictive labeling
CN106506614A (zh) 移动终端识别码的生成方法、生成装置和移动终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110413

Termination date: 20200508

CF01 Termination of patent right due to non-payment of annual fee