一种数据特征提取的方法及装置转让专利

申请号 : CN201511021283.9

文献号 : CN105554152B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐牧池

申请人 : 北京神州绿盟信息安全科技股份有限公司北京神州绿盟科技有限公司

摘要 :

本发明涉及通信技术领域,尤其涉及一种数据特征提取的方法及装置。该方法为,分别从确定的第一会话和第二会话中提取设定数目的报文信息,其中,第一会话和第二会话是同一个应用操作在不同时间所产生的,报文信息中至少包括报文应用层负载字节序;根据从第一会话提取的报文应用层负载字节序和指定多模式匹配算法,构建相应状态机,并根据从第二会话中提取的报文应用层负载字节序,进行匹配,获得应用操作的数据特征,解决了对私有协议及加密流量的应用特征提取难得问题,提高了效率,解放了人力,并且通过特征串迭代合并得到了强特征集合,提高了所提取特征串的有效性。

权利要求 :

1.一种数据特征提取的方法,其特征在于,包括:

确定需要进行数据特征提取的第一会话和第二会话,并从所述第一会话包含的报文中提取第一设定数目的报文信息,以及从所述第二会话包含的报文中提取第二设定数目的报文信息;其中,所述第一会话和第二会话是同一个应用操作在不同时间所产生的,所述报文信息中至少包括报文应用层负载字节序;

采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为所述应用操作的数据特征。

2.如权利要求1所述的方法,其特征在于,从所述第一会话包含的报文中提取第一设定数目的报文信息,以及从所述第二会话包含的报文中提取第二设定数目的报文信息,具体包括:依次从第一会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定所述一个报文的应用层负载长度大于0,且不是重传报文时,从所述一个报文中提取报文信息,直至提取到第一设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度;

依次从第二会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定所述一个报文的应用层负载长度大于0,且不是重传报文时,从所述一个报文中提取报文信息,直至提取到第二设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度。

3.如权利要求1所述的方法,其特征在于,采用指定的匹配算法,根据从第一会话中提取的一个报文应用层负载字节序构建相应的状态机,具体包括:基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合;

基于所述模式串集合,采用指定的匹配算法构建相应的状态机。

4.如权利要求3所述的方法,其特征在于,基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合,具体包括:从所述一个报文应用层负载字节序中的第一个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第一提取结果;

从所述一个报文应用层负载字节序中的第二个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第二提取结果;

分别将第一提取结果和第二提取结果中包含的每一个字节段作为一个模式串,生成相应的模式串集合,并保存每一个模式串在所述一个报文应用层负载字节序中的起始位置值和结束位置值。

5.如权利要求4所述的方法,其特征在于,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配后,获得相应的匹配结果,在所述匹配结果中记录有匹配得到的所有特征串,以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值和结束位置值,以及在第二会话中的报文应用层负载字节序中的起始位置值和结束位置值;其中,所述特征串为,所述当前构建的状态机中的所有模式串中在所述从第二会话中提取的任意一个报文应用层负载字节序中出现的任意一个模式串。

6.如权利要求5所述的方法,其特征在于,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配,获得相应的匹配结果,对当前获得的匹配结果进行迭代合并,具体包括:将当前获得的匹配结果中的每一个特征串按照每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值,按照从小到大的顺序进行排序;

排序结束后,从第一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,若是,则获得迭代合并后的特征串,否则,从下一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,直到最后一个特征串为止;其中,迭代合并表示,相邻的两个特征串合并后,将合并后的特征串再和相邻的下一个特征串进行合并;

针对上述所有不能迭代合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等,若是,则进行保留,否则,进行舍弃;

将经迭代合并后的匹配结果中连续为0x00和0xff的特征串舍弃。

7.如权利要求6所述的方法,其特征在于,判断相邻的两个特征串是否可以迭代合并,具体包括:

判断相邻的两个特征串是否满足预设条件;其中,所述预设条件为,相邻的两个特征串中的前一个特征串在第二会话中的报文应用层负载字节序中的结束位置值不小于后一个特征串在第二会话中的报文应用层负载字节序中的起始位置值,并且,后一个特征串在第二会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第二会话中的报文应用层负载字节序中的起始位置值的第一差值,与,后一个特征串在第一会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第一会话中的报文应用层负载字节序中的起始位置值的第二差值相等,以及,所述第一差值和第二差值都不小于2。

8.如权利要求1-7任一项所述的方法,其特征在于,根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,具体包括:将经迭代合并后的匹配结果中每一个长度为2的特征串的权值设置为1,并将每一个长度大于2的特征串的权值设置为2;

将经迭代合并后的匹配结果中每一个特征串的权值进行累加,获得所有特征串的权值和,并所述权值和作为所述当前获得的迭代合并后的匹配结果的权值。

9.如权利要求1-7任一项所述的方法,其特征在于,进一步包括:

根据所述报文信息和所述应用操作的数据特征,构建识别所述应用操作的规则,其中,报文信息中至少包括,源端口、目的端口、报文在会话中的位置以及报文在会话中的流向信息。

10.一种数据特征提取的装置,其特征在于,包括:

提取单元,用于确定需要进行数据特征提取的第一会话和第二会话,并从所述第一会话包含的报文中提取第一设定数目的报文信息,以及从所述第二会话包含的报文中提取第二设定数目的报文信息;其中,所述第一会话和第二会话是同一个应用操作在不同时间所产生的,所述报文信息中至少包括报文应用层负载字节序;

匹配单元,用于采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为所述应用操作的数据特征。

11.如权利要求10所述的装置,其特征在于,从所述第一会话包含的报文中提取第一设定数目的报文信息,以及从所述第二会话包含的报文中提取第二设定数目的报文信息时,提取单元具体用于:依次从第一会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定所述一个报文的应用层负载长度大于0,且不是重传报文时,从所述一个报文中提取报文信息,直至提取到第一设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度;

依次从第二会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定所述一个报文的应用层负载长度大于0,且不是重传报文时,从所述一个报文中提取报文信息,直至提取到第二设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度。

12.如权利要求10所述的装置,其特征在于,采用指定的匹配算法,根据从第一会话中提取的一个报文应用层负载字节序构建相应的状态机时,匹配单元具体用于:基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合;

基于所述模式串集合,采用指定的匹配算法构建相应的状态机。

13.如权利要求12所述的装置,其特征在于,基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合时,匹配单元具体用于:从所述一个报文应用层负载字节序中的第一个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第一提取结果;

从所述一个报文应用层负载字节序中的第二个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第二提取结果;

分别将第一提取结果和第二提取结果中包含的每一个字节段作为一个模式串,生成相应的模式串集合,并保存每一个模式串在所述一个报文应用层负载字节序中的起始位置值和结束位置值。

14.如权利要求13所述的装置,其特征在于,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配后,获得相应的匹配结果,在所述匹配结果中记录有匹配得到的所有特征串,以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值和结束位置值,以及在第二会话中的报文应用层负载字节序中的起始位置值和结束位置值;其中,所述特征串为,所述当前构建的状态机中的所有模式串中在所述从第二会话中提取的任意一个报文应用层负载字节序中出现的任意一个模式串。

15.如权利要求14所述的装置,其特征在于,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配,获得相应的匹配结果,对当前获得的匹配结果进行迭代合并时,进一步包括,优化单元,用于:将当前获得的匹配结果中的每一个特征串按照每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值,按照从小到大的顺序进行排序;

排序结束后,从第一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,若是,则获得合并后的特征串,否则,从下一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,直到最后一个特征串为止;其中,迭代合并表示,相邻的两个特征串合并后,将合并后的特征串再和相邻的下一个特征串进行合并;

针对上述所有不能迭代合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等时,若是,则进行保留,否则,进行舍弃;

将经迭代合并后的匹配结果中连续为0x00和0xff的特征串舍弃。

16.如权利要求15所述的装置,其特征在于,判断相邻的两个特征串是否可以迭代合并时,优化单元具体用于:判断相邻的两个特征串是否满足预设条件;其中,所述预设条件为,相邻的两个特征串中的前一个特征串在第二会话中的报文应用层负载字节序中的结束位置值不小于后一个特征串在第二会话中的报文应用层负载字节序中的起始位置值,并且,后一个特征串在第二会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第二会话中的报文应用层负载字节序中的起始位置值的第一差值,与,后一个特征串在第一会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第一会话中的报文应用层负载字节序中的起始位置值的第二差值相等,以及,所述第一差值和第二差值都不小于2。

17.如权利要求10-16任一项所述的装置,其特征在于,根据预设规则计算当前获得的经迭代合并后的匹配结果的权值时,匹配单元具体用于:将经迭代合并后的匹配结果中每一个长度为2的特征串的权值设置为1,并将每一个长度大于2的特征串的权值设置为2;

将经迭代合并后的匹配结果中每一个特征串的权值进行累加,获得所有特征串的权值和,并所述权值和作为所述当前获得的迭代合并后的匹配结果的权值。

18.如权利要求10-16任一项所述的装置,其特征在于,进一步包括,规则创建单元,用于:

根据所述报文信息和所述应用操作的数据特征,构建识别所述应用操作的规则,其中,报文信息中至少包括,源端口、目的端口、报文在会话中的位置以及报文在会话中的流向信息。

说明书 :

一种数据特征提取的方法及装置

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种数据特征提取的方法及装置。

背景技术

[0002] 随着互联网技术的飞速发展,新的应用和服务不断涌现,应用层协议层出不穷。这在带给人们极大便利的同时,其安全性问题也日趋严重。各种新的应用和未知协议导致网络越来越复杂并且难以管理。对应用层协议精确识别进而根据识别结果进行指定流量的管理是目前解决上述问题的主要方式,也是新一代防火墙的核心所在。目前,对应用层协议的识别,使用最广泛的技术为深度包检测(Deep Packet Inspection,DPI)技术,这也是最有效的技术,因为DPI技术主要是基于应用层特征的提取,根据提取的应用层特征,进行形成一定的规则,用于应用识别,所以在指定流量中提取出有效的应用层特征,是应用识别的主要工作。
[0003] 目前,可以通过对网络流量的捕获分析而得到应用层特征,但现有技术中的应用层特征提取都是采用简单的自动化特征提取的方法,主要是针对通用应用层协议的特征提取,例如,超文本传送协议(Hypertext transfer protocol,HTTP),而对于私有协议及加密流量的特征提取,目前还没有比较有效的方法。

发明内容

[0004] 本发明实施例提供一种数据特征提取的方法及装置,以解决现有技术中无法有效地提取私有协议和加密流量中的数据特征的问题。
[0005] 本发明实施例提供的具体技术方案如下:
[0006] 一种数据特征提取的方法,包括:
[0007] 确定需要进行数据特征提取的第一会话和第二会话,并从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息;其中,上述第一会话和第二会话是同一个应用操作在不同时间所产生的,上述报文信息中至少包括报文应用层负载字节序;
[0008] 采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为上述应用操作的数据特征。
[0009] 本发明实施例中,确定同一个应用操作对应的第一会话和第二会话,根据从第一会话提取的报文应用层负载字节序和指定的匹配算法,构建状态机,并根据从第二会话中提取的报文应用层负载字节序,进行匹配,最后获得应用操作的数据特征,解决了对私有协议及加密流量的应用特征提取难得问题,提高了效率,解放了人力,并且通过特征串迭代合并得到了强特征集合,提高了所提取特征串的有效性。
[0010] 较佳的,从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息,具体包括:
[0011] 依次从第一会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第一设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度;
[0012] 依次从第二会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第二设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度。
[0013] 这样,在提取报文信息时,进行预处理,即只对符合要求的报文进行提取,缩小了进行数据特征提取的报文的范围,减少了大量报文匹配带来的性能损耗。
[0014] 较佳的,采用指定的匹配算法,根据从第一会话中提取的一个报文应用层负载字节序构建相应的状态机,具体包括:
[0015] 基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合;
[0016] 基于上述模式串集合,采用指定的匹配算法构建相应的状态机。
[0017] 这样,通过构建模式串集合和多模式匹配,进而得到应用操作的数据特征,而不是使用逐字节序比较等方法,这样显著提升了匹配速度,也提高了匹配精度,排除了漏掉有效特征串的问题。
[0018] 较佳的,基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合,具体包括:
[0019] 从上述一个报文应用层负载字节序中的第一个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第一提取结果;
[0020] 从上述一个报文应用层负载字节序中的第二个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第二提取结果;
[0021] 分别将第一提取结果和第二提取结果中包含的每一个字节段作为一个模式串,生成相应的模式串集合,并保存每一个模式串在上述一个报文应用层负载字节序中的起始位置值和结束位置值。
[0022] 较佳的,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配后,获得相应的匹配结果,在上述匹配结果中记录有匹配得到的所有特征串,以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值和结束位置值,以及在第二会话中的报文应用层负载字节序中的起始位置值和结束位置值;其中,上述特征串上述特征串为,上述当前构建的状态机中的所有模式串中在上述从第二会话中提取的任意一个报文应用层负载字节序中出现的任意一个模式串。
[0023] 较佳的,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配,获得相应的匹配结果,对当前获得的匹配结果进行迭代合并,具体包括:
[0024] 将当前获得的匹配结果中的每一个特征串按照每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值,按照从小到大的顺序进行排序;
[0025] 排序结束后,从第一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,若是,则获得合并后的特征串,否则,从下一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,直到最后一个特征串为止;其中,迭代合并表示,相邻的两个特征串合并后,将合并后的特征串再和相邻的下一个特征串进行合并;
[0026] 针对上述所有不能迭代合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等时,若是,则进行保留,否则,进行舍弃;
[0027] 将经迭代合并后的匹配结果中连续为0x00和0xff的特征串舍弃
[0028] 这样,对匹配结果,进行了优化,舍弃弱特征,并通过特征串合并等操作得到了强特征集合,提高了所提取特征串的有效性,降低了数据特征提取中无效特征产生的噪声。
[0029] 较佳的,判断相邻的两个特征串是否可以迭代合并,具体包括:
[0030] 判断相邻的两个特征串是否满足预设条件;其中,上述预设条件为,相邻的两个特征串中的前一个特征串在第二会话中的报文应用层负载字节序中的结束位置值不小于后一个特征串在第二会话中的报文应用层负载字节序中的起始位置值,并且,后一个特征串在第二会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第二会话中的报文应用层负载字节序中的起始位置值的第一差值,与,后一个特征串在第一会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第一会话中的报文应用层负载字节序中的起始位置值的第二差值相等,以及,上述第一差值和第二差值都不小于2。
[0031] 较佳的,根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,具体包括:
[0032] 将经迭代合并后的匹配结果中每一个长度为2的特征串的权值设置为1,并将每一个长度大于2的特征串的权值设置为2;
[0033] 将经迭代合并后的匹配结果中每一个特征串的权值进行累加,获得所有特征串的权值和,并上述权值和作为上述当前获得的迭代合并后的匹配结果的权值。
[0034] 较佳的,进一步包括:
[0035] 根据上述报文信息和上述应用操作的数据特征,构建识别上述应用操作的规则,其中,报文信息中至少包括,源端口、目的端口、报文在会话中的位置以及报文在会话中的流向信息。
[0036] 一种数据特征提取装置,包括:
[0037] 提取单元,用于确定需要进行数据特征提取的第一会话和第二会话,并从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息;其中,上述第一会话和第二会话是同一个应用操作在不同时间所产生的,上述报文信息中至少包括报文应用层负载字节序;
[0038] 匹配单元,用于采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为上述应用操作的数据特征。
[0039] 本发明实施例中,确定同一个应用操作对应的第一会话和第二会话,根据从第一会话提取的报文应用层负载字节序和指定的匹配算法,构建状态机,并根据从第二会话中提取的报文应用层负载字节序,进行匹配,最后获得应用操作的数据特征,解决了对私有协议及加密流量的应用特征提取难得问题,提高了效率,解放了人力,并且,通过特征串迭代合并得到了强特征集合,提高了所提取特征串的有效性。
[0040] 较佳的,从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息时,提取单元具体用于:
[0041] 依次从第一会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第一设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度;
[0042] 依次从第二会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第二设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度。
[0043] 这样,在提取报文信息时,进行预处理,即只对符合要求的报文进行提取,缩小了进行数据特征提取的报文的范围,减少了大量报文匹配带来的性能损耗。
[0044] 较佳的,采用指定的匹配算法,根据从第一会话中提取的一个报文应用层负载字节序构建相应的状态机时,匹配单元具体用于:
[0045] 基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合;
[0046] 基于上述模式串集合,采用指定的匹配算法构建相应的状态机。
[0047] 这样,通过构建模式串集合和多模式匹配,进而得到应用操作的数据特征,而不是使用逐字节序比较等方法,这样显著提升了匹配速度,也提高了匹配精度,排除了漏掉有效特征串的问题。
[0048] 较佳的,基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合时,匹配单元具体用于:
[0049] 从上述一个报文应用层负载字节序中的第一个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第一提取结果;
[0050] 从上述一个报文应用层负载字节序中的第二个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第二提取结果;
[0051] 分别将第一提取结果和第二提取结果中包含的每一个字节段作为一个模式串,生成相应的模式串集合,并保存每一个模式串在上述一个报文应用层负载字节序中的起始位置值和结束位置值。
[0052] 较佳的,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配后,获得相应的匹配结果,在上述匹配结果中记录有匹配得到的所有特征串,以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值和结束位置值,以及在第二会话中的报文应用层负载字节序中的起始位置值和结束位置值;其中,上述特征串为,上述当前构建的状态机中的所有模式串中在上述从第二会话中提取的任意一个报文应用层负载字节序中出现的任意一个模式串。
[0053] 较佳的,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配,获得相应的匹配结果,对当前获得的匹配结果进行迭代合并时,进一步包括,优化单元,用于:
[0054] 将当前获得的匹配结果中的每一个特征串按照每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值,按照从小到大的顺序进行排序;
[0055] 排序结束后,从第一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,若是,则获得合并后的特征串,否则,从下一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,直到最后一个特征串为止;其中,迭代合并表示,相邻的两个特征串合并后,将合并后的特征串再和相邻的下一个特征串进行合并;
[0056] 针对上述所有不能迭代合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等时,若是,则进行保留,否则,进行舍弃;
[0057] 将经迭代合并后的匹配结果中连续为0x00和0xff的特征串舍弃。
[0058] 这样,对匹配结果,进行了优化,舍弃弱特征,并通过特征串合并等操作得到了强特征集合,提高了所提取特征串的有效性,降低了数据特征提取中无效特征产生的噪声。
[0059] 较佳的,判断相邻的两个特征串是否可以迭代合并时,优化单元具体用于:
[0060] 判断相邻的两个特征串是否满足预设条件;其中,上述预设条件为,相邻的两个特征串中的前一个特征串在第二会话中的报文应用层负载字节序中的结束位置值不小于后一个特征串在第二会话中的报文应用层负载字节序中的起始位置值,并且,后一个特征串在第二会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第二会话中的报文应用层负载字节序中的起始位置值的第一差值,与,后一个特征串在第一会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第一会话中的报文应用层负载字节序中的起始位置值的第二差值相等,以及,上述第一差值和第二差值都不小于2。
[0061] 较佳的,根据预设规则计算当前获得的经迭代合并后的匹配结果的权值时,匹配单元具体用于:
[0062] 将经迭代合并后的匹配结果中每一个长度为2的特征串的权值设置为1,并将每一个长度大于2的特征串的权值设置为2;
[0063] 将经迭代合并后的匹配结果中每一个特征串的权值进行累加,获得所有特征串的权值和,并上述权值和作为上述当前获得的迭代合并后的匹配结果的权值。
[0064] 较佳的,进一步包括,规则创建单元,用于:
[0065] 根据上述报文信息和上述应用操作的数据特征,构建识别上述应用操作的规则,其中,报文信息中至少包括,源端口、目的端口、报文在会话中的位置以及报文在会话中的流向信息。

附图说明

[0066] 图1为本发明实施例中,数据特征提取方法概述流程图;
[0067] 图2为本发明实施例中,提取报文信息的执行过程详细流程图;
[0068] 图3为本发明实施例中,数据特征匹配的执行过程详细流程图;
[0069] 图4为本发明实施例中,数据特征提取装置结构示意图。

具体实施方式

[0070] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0071] 为了能够有效地提取私有协议和加密流量中的数据特征,本发明实施例中,将多模式匹配算法应用到数据特征提取中,指定需数据特征提取的会话,根据提取的设定数目的报文应用层负载字节序,构建状态机并进行匹配,得到数据特征,提高了数据特征提取的效率和有效性,解决了对私有协议及加密流量的应用层数据特征提取难的问题。
[0072] 参阅图1所示,本发明实施例中,数据特征提取方法的具体流程如下:
[0073] 步骤100:确定需要进行数据特征提取的第一会话和第二会话,并从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息;其中,上述第一会话和第二会话是同一个应用操作在不同时间所产生的,上述报文信息中至少包括报文应用层负载字节序。
[0074] 执行步骤100时,具体包括:
[0075] 首先,确定需要进行数据特征提取的第一会话和第二会话。
[0076] 其中,第一会话和第二会话都是包含多个报文应用层负载信息的集合,且都是由传输层协议、源端口、源IP、目的端口、目的IP确定,其中,报文应用层负载信息包括报文应用层负载字节序和应用层负载长度。
[0077] 然后,依次从第一会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第一设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度;
[0078] 最后,依次从第二会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第二设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度。
[0079] 这样,提取报文信息时,进行预处理,筛选出应用层负载长度大于0的报文,这是因为,应用层负载长度小于0的报文,是没有有效的应用层负载的,并只依次提取设定数目的报文,缩小了数据特征提取的报文的范围,减小了大量报文匹配带来的性能损耗。
[0080] 值得说明的是,第一会话和第二会话的报文信息提取过程是一样的,因为本发明实施例,是从报文的应用层提取数据特征,因此,提取的报文信息中至少包括报文应用层负载字节序和应用层负载长度,但同时,提取的报文信息中也包括源端口、目的端口、报文在会话中的位置以及报文在会话中的流向信息等,并将提取的报文信息进行保存,保存的报文信息的数据结构为pkt_msg,用于在数据特征提取结束后,创建识别应用操作的规则。
[0081] 其中,上述第一设定数目为pNum1,上述第二设定数目为pNum2,较佳的,满足{0
[0083] 步骤110:采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为上述应用操作的数据特征。
[0084] 实际上,步骤110的执行,是一个双层for循环的过程,第一层for循环为从第一会话中提取的每一个报文应用层负载字节序,第二层for循环为从第二会话中提取的每一个报文应用层负载字节序,其中,第一层for循环用于构建状态机,第二层for循环用于和当前构建的状态机进行匹配,只要匹配成功,就会退出双层for循环,执行步骤110时,具体包括:
[0085] 首先,采用指定的匹配算法,根据从第一会话中提取的一个报文应用层负载字节序构建相应的状态机,具体包括:
[0086] 基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合;以及,基于上述模式串集合,采用指定的匹配算法构建相应的状态机。
[0087] 其中,基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合,具体包括:
[0088] a)从上述一个报文应用层负载字节序中的第一个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第一提取结果。
[0089] 其中,这里设置以2字节为单位进行提取,是为了保证不会出现特征丢失的情况。
[0090] b)从上述一个报文应用层负载字节序中的第二个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第二提取结果;
[0091] c)分别将第一提取结果和第二提取结果中包含的每一个字节段作为一个模式串,生成相应的模式串集合,并保存每一个模式串在上述一个报文应用层负载字节序中的起始位置值和结束位置值,也就是说,得到的模式串集合中的每一个模式串的长度都为2。
[0092] 下面以构建一个状态机为例进行说明,第一会话的报文应用层负载字节序数组为app_data_1st[pNum1],其中的每一个元素,即为一个报文应用层负载字节序,为app_data_1st[i](i=0,1,…,pNum1-1)。
[0093] 取app_data_1st[pNum1]的一个元素,即app_data_1st[i],对app_data_1st[i]进行处理得到模式串集合,例如为ptn_set[i];以及,根据指定的多模式匹配算法,较佳的为AC算法,和ptn_set[i]构建状态机,例如为,ac_search[i],支持对字节序的多模式匹配,其中,根据多模式匹配算法和模式串集合构建状态机的具体方法,可以采用现有的方法,本发明实施例中,并不对其进行限制,这里就不再一一赘述了。
[0094] 然后,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配。
[0095] 下面以执行一次匹配为例进行说明,第二会话的报文应用层负载字节序数组为app_data_2cd[pNum2],其中的每一个元素,即为一个报文应用层负载字节序,为app_data_2cd[j](j=0,1,…,pNum2-1)。
[0096] 取app_data_2cd[pNum2]的一个元素开始,即app_data_2cd[j],和当前构建的状态机ac_search[i]进行匹配。
[0097] 最后,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为上述应用操作的数据特征。
[0098] 其中,每执行一次匹配,就会得到一个匹配结果,例如为mth_set[i][j],在上述匹配结果mth_set[i][j]中记录有匹配得到的所有特征串,以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值和结束位置值,以及在第二会话中的报文应用层负载字节序中的起始位置值和结束位置值;其中,上述特征串为,上述当前构建的状态机中的所有模式串中在上述从第二会话中提取的任意一个报文应用层负载字节序中出现的任意一个模式串,这也说明,每执行一次匹配,得到的匹配结果mth_set[i][j],为上述模式串集合ptn_set[i]的子集,这是因为,状态机ac_search[i]是根据ptn_set[i]进行构建的。
[0099] 下面对上述匹配过程进行举例说明,例如:
[0100] app_data_1st[i]为“ABCDEFG“,则以长度2为单位,进行处理,得到的模式串集合ptn_set[i]为{AB,CD,EF,BC,DE,FG},根据AC算法,构建状态机ac_search[i],支持多模式匹配;app_data_2cd[j]为“BCDHK“,和ac_search[i]进行匹配,得到匹配结果mth_set[i][j]为{BC、CD},且记录有BC在“ABCDEFG“的起始位置值和结束位置值分别为1、2,CD在“ABCDEFG“的起始位置值和结束位置值分别为2、3,BC在“BCDHK“的起始位置值和结束位置值分别为0、1,CD在“BCDHK“的起始位置值和结束位置值分别为1、2。
[0101] 这里,也可以得知,mth_set[i][j]为ptn_set[i]的子集。
[0102] 这样,通过构建模式串集合和多模式匹配得到匹配结果,而不是采用逐字节序进行比较等方法,这样显著提升了匹配速度,也提高了匹配精度,排除了漏掉有效特征串的问题。
[0103] 其中,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配,获得相应的匹配结果,对当前获得的匹配结果进行迭代合并,具体包括:
[0104] 首先,将当前获得的匹配结果中的每一个特征串按照每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值,按照从小到大的顺序进行排序。
[0105] 值得说明的是,进行排序时,先按照每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值,从小到大进行排序,如果匹配结果中有两个特征串是相同的,再根据在第一会话中的报文应用层负载字节序中的起始位置值,从小到大进行排序,例如,若匹配结果mth_set[i][j]为{BC、EF、FG、EF},则先按照在第二会话中报文应用层负载字节序中的起始位置值排序后,有两个EF,就需要再判断这两个EF分别在第一会话中的报文应用层负载字节序中的起始位置值,从大到小进行排序。
[0106] 然后,排序结束后,从第一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,若是,则获得合并后的特征串,否则,从下一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,直到最后一个特征串为止;其中,迭代合并表示,相邻的两个特征串合并后,将合并后的特征串再和相邻的下一个特征串进行合并。
[0107] 例如,若排序后的匹配结果为{BC、CD、EF、FG},若判断BC和CD可以合并,则合并后得到BCD,再判断BCD和EF是否可以合并,直到判断到FG,若判断BC和CD不可以合并,则再判断CD和EF是否可以合并,直到判断到FG。
[0108] 然后,针对上述所有不能迭代合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等时,若是,则进行保留,否则,进行舍弃。
[0109] 也就是说,对于不能迭代合并的特征串,大部分是需要舍弃的,只有在确定其在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值相等时,才会保留,这是因为,不能迭代合并的特征串长度虽仍为2,但是由于在第一会话和第二会话中有固定的起始位置,所以可以被认为是较强的特征。
[0110] 最后,将经迭代合并后的匹配结果中连续为0x00和0xff的特征串舍弃。。
[0111] 这是因为,连续为0x00或0xff的字节序为填充字节,所以进行舍弃。
[0112] 也就是说,对匹配结果进行迭代合并处理后,得到的经迭代合并后的匹配结果中,包括迭代合并后的特征串(长度大于2),在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值相等的不能迭代合并的特征串(长度为2),并且没有连续为0x00和0xff的特征串,可以说,上述在得到匹配结果后,进行的迭代合并处理,包括排序、迭代合并、舍弃不符合的特征串等操作,是对匹配结果的一种优化操作,目的是,进行优化后,舍弃弱特征,并通过特征串合并等操作得到了强特征串集合,提高了匹配得到的特征串的有效性。
[0113] 其中,判断相邻的两个特征串是否可以迭代合并,具体包括:
[0114] 判断相邻的两个特征串是否满足预设条件;其中,上述预设条件为,相邻的两个特征串中的前一个特征串在第二会话中的报文应用层负载字节序中的结束位置值不小于后一个特征串在第二会话中的报文应用层负载字节序中的起始位置值,并且,后一个特征串在第二会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第二会话中的报文应用层负载字节序中的起始位置值的差值,与,后一个特征串在第一会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第一会话中的报文应用层负载字节序中的起始位置值的差值相等,以及,上述差值不小于2。
[0115] 例如,首先,确定匹配结果中每一个特征串的位置信息:
[0116] 匹配结果mth_set[i][j]为{BC、CD},其中BC在第一会话对应的app_data_1st[i]为“ABCDEFG“的起始位置值和结束位置值分别为1、2,CD在第一会话对应的app_data_1st[i]为“ABCDEFG“的起始位置值和结束位置值分别为2、3,BC在第二会话对应的app_data_2cd[j]为“BCDHK“的起始位置值和结束位置值分别为0、1,CD在第二会话对应的app_data_
2cd[j]为“BCDHK“的起始位置值和结束位置值分别为1、2。
[0117] 然后,匹配结果中每一个特征串进行排序:
[0118] 因为,BC在“BCDHK“的起始位置值不大于CD在“BCDHK“的起始位置值,则得到排序后的集合order_mth_set[i][j]仍为{BC、CD}。
[0119] 最后,判断是否可以迭代合并:
[0120] 1)BC在“BCDHK“的结束位置值不小于CD在“BCDHK“的起始位置值。
[0121] 2)BCD在“ABCDEFG“的结束位置值与起始位置值的差值为2,BCD在“BCDHK”的结束位置值与起始位置值的差值为2,是相等的。
[0122] 3)上述BCD的差值为2,即说明BCD的长度为3,是不小于2的。
[0123] 通过1)、2)、3)的判断,得知BC、CD是可以合并的,合并后为“BCD”,进一步确定“BCD”不是为0x00或0xff,且没有不能合并的特征串,则得到优化后的mth_opt_set[i][j]为{BCD}。
[0124] 其中,根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,具体包括:
[0125] 首先,将匹配结果中的每一个长度为2的特征串的权值设置为1,并将每一个长度大于2的特征串的权值设置为2。
[0126] 这里的2和上述得到的模式串集合中每一个模式串的长度2,是一致的,上述每一个模式串的长度为2,那么,经过迭代合并等操作后,得到的特征串长度可能大于2或等于2。
[0127] 然后,将匹配结果中每一个特征串的权值进行累加,获得所有特征串的权值和,并上述权值和作为上述当前获得的匹配结果的权值。
[0128] 执行步骤110之后,进一步包括:根据上述报文信息和上述应用操作的数据特征,构建识别上述应用操作的规则。
[0129] 这样,根据上述实施例提取的数据特征,是有效的,解决了对私有协议流量和加密流量提取数据特征难得问题,这是因为,可以指定私有协议流量或加密流量的两个会话,然后采用上述实施例中的数据特征提取,就可以得到有效的数据特征,并且根据上述实施例提取的数据特征而构建的应用操作识别规则也是有效的,进而也解决了对私有协议流量和加密流量创建应用识别规则难的问题,提高了应用操作识别的工作效率,解放了人力。
[0130] 值得说明的是,若在执行步骤110时,第一会话和第二会话中的所有报文应用层负载字节序全部匹配完之后,也没有确定匹配成功,也就是没有获取到有效数据特征,就会提示从第一会话和第二会话中无法提取出数据特征。
[0131] 这种情况下数据特征提取失败,第一会话和第二个会话可能不存在有效数据特征,就需要人工进一步进行审查,人工审查的部分就不属于本发明的保护范围了。
[0132] 基于以上实施例,下面采用一个具体的应用场景对上述实施例作出进一步详细说明,具体分为两部分进行介绍,参阅图2和图3。
[0133] 参阅图2所示,本发明实施例中,提取报文信息的执行过程具体如下:
[0134] 步骤200:指定一个会话,即确定需要进行数据特征提取的会话。
[0135] 步骤201:从会话中依次获取报文。
[0136] 步骤202:针对当前获取的一个报文(pkt),也就是说,每次针对一个报文进行提取。
[0137] 步骤203:判断pkt的应用层负载长度是否大于0,若是,则执行步骤204,否则执行步骤208。
[0138] 步骤204:从pkt中提取pkt信息,其中pkt信息中至少包括:pkt应用层负载字节序、应用层负载长度、源端口、目的端口、pkt在会话中的位置、pkt在会话中的流向信息等等。
[0139] 步骤205:将pkt信息存入pkt_msg格式的数组中,用于创建识别应用操作的规则。
[0140] 步骤206:将pkt信息中pkt应用层负载字节序,存入数组中,用于数据特征提取。
[0141] 步骤207:判断数组元素是否小于设定数目,若是,则执行步骤208,否则,执行步骤209。
[0142] 步骤208::判断pkt是否是会话中最后一个报文,若是,则执行步骤209,否则,执行步骤201。
[0143] 步骤209:结束。
[0144] 本发明实施例中,需要从两个会话(即第一会话和第二会话)中分别提取报文信息,其中,提取报文的方法都可以参阅图2所示的执行方法,从第一会话和第二会话中提取的报文信息可以表示如下:从第一会话中提取的报文应用层负载字节序为:app_data_1st[pNum1],从第二会话中提取的报文应用层负载字节序为:app_data_2cd[pNum2]。提取报文信息之后,进行匹配获取数据特征,进而创建识别应用操作的规则,具体参阅图3所示,本发明实施例中,数据特征匹配的执行过程具体如下:
[0145] 步骤300:令整数i=0&&j=0,即从数组的第一个元素开始进行匹配。
[0146] 步骤301:从数组app_data_1st[pNum1]中,获取数组中下标i所对应的元素app_data_1st[i]。
[0147] 步骤302:构造模式串集合ptn_set[i],具体包括:
[0148] 从app_data_1st[i]元素中中的第一个字节开始依次向后取长度为2的字节,以及分别从app_data_1st[i]元素中的第二个字节开始依次向后取长度为2的字节,直止剩余的字节的长度不满足2时,将取出的所有长度为2的字节,作为相应的模式串集合ptn_set[i],并保存每一个模式串在app_data_1st[i]元素中的起始位置值和结束位置值。
[0149] 步骤303:根据模式串集合ptn_set[i]和指定匹配算法,例如AC算法,构建状态机ac_search[i]。
[0150] 步骤304:从数组app_data_2cd[pNum2]中,获取数组中下标j所对应的元素app_data_2cd[j]。
[0151] 步骤305:将app_data_2cd[j]与ac_search[i]进行匹配,获得匹配结果mth_set[i][j]。
[0152] 可知,mth_set[i][j]是构建的模式串集合ptn_set[i]的子集,在mth_set[i][j]中同时保存有在app_data_2cd[j]元素中的起始位置值和结束位置值和在app_data_1st[i]元素中的起始位置值和结束位置值。
[0153] 步骤306:对mth_set[i][j]进行优化,获得优化后的集合mth_opt_set[i][j],具体包括:
[0154] 首先,对元素mth_set[i][j]中的每一个字符串根据在app_data_2cd[j]元素中的起始位置值和结束位置值和在app_data_1st[i]元素中的起始位置值和结束位置值进行排序;
[0155] 然后,从mth_set[i][j]中的第一个字符串开始,取相邻的两个字符串进行合并,若确定可以合并,则合并的字符串作为下一次合并的前一个字符串,并和下一个字符串继续进行合并;若确定不能合并,则直接取后两个相邻字符串进行合并,直到最后一个字符串;
[0156] 然后,在合并结束后,对于不能合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等时,若是,则进行保留,否则,进行舍弃;
[0157] 最后,将所有合并后的字符串和保留的不能合并的字符串中全为0x00和0xff的字符串舍弃后,获得mth_opt_set[i][j]。
[0158] 步骤307:计算mth_opt_set[i][j]的权值weight,具体计算方法为:
[0159] 将mth_opt_set[i][j]中长度为2的字符串的权值设置为1,以及将将mth_opt_set[i][j]中长度大于2的字符串的权值设置为2,mth_opt_set[i][j]中所有字符串的权值相加的和,即为mth_opt_set[i][j]的权值weight。
[0160] 步骤308:判断weight是否不小于设定阈值,若是,则执行步骤309,否则,执行步骤310。
[0161] 步骤309:将mth_opt_set[i][j]作为应用操作的数据特征,并基于报文信息和mth_opt_set[i][j]创建识别应用操作的规则。
[0162] 其中,上述应用操作为第一会话和第二会话对应的应用操作。
[0163] 步骤310:j=j+1,即从数组app_data_2cd[pNum2]中取下一个元素。
[0164] 步骤311:判断j是否小于pNum2,若是,则执行步骤304,否则,执行步骤312。
[0165] 步骤312:i=i+1&&j=0,也就是说,遍历完app_data_2cd[pNum2]中的元素也没有匹配成功,则再取app_data_1st[pNum1]中下一个元素,进行下一次循环,并再从app_data_2cd[pNum2]中的第一个元素开始进行遍历匹配。
[0166] 步骤313:判断i是否小于pNum1,若是,则执行步骤301,否则,结束循环,说明从第一会话和第二会话中无法提取出有效的数据特征,不能构建识别应用操作的规则。
[0167] 基于上述实施例,参阅图4所示,本发明实施例中,数据特征提取装置包括:
[0168] 提取单元40,用于确定需要进行数据特征提取的第一会话和第二会话,并从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息;其中,上述第一会话和第二会话是同一个应用操作在不同时间所产生的,上述报文信息中至少包括报文应用层负载字节序;
[0169] 匹配单元41,用于采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为上述应用操作的数据特征。
[0170] 较佳的,从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息时,提取单元40具体用于:
[0171] 依次从第一会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第一设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度;
[0172] 依次从第二会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第二设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度。
[0173] 较佳的,采用指定的匹配算法,根据从第一会话中提取的一个报文应用层负载字节序构建相应的状态机时,匹配单元41具体用于:
[0174] 基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合;
[0175] 基于上述模式串集合,采用指定的匹配算法构建相应的状态机。
[0176] 较佳的,基于从第一会话中提取的一个报文应用层负载字节序,采用预设方式进行处理,得到相应的模式串集合时,匹配单元41具体用于:
[0177] 从上述一个报文应用层负载字节序中的第一个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第一提取结果;
[0178] 从上述一个报文应用层负载字节序中的第二个字节开始,以2字节为单位进行字节段提取,直到剩余字节的长度小于2为止,获得第二提取结果;
[0179] 分别将第一提取结果和第二提取结果中包含的每一个字节段作为一个模式串,生成相应的模式串集合,并保存每一个模式串在上述一个报文应用层负载字节序中的起始位置值和结束位置值。
[0180] 较佳的,将当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配后,获得相应的匹配结果,在上述匹配结果中记录有匹配得到的所有特征串,以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值和结束位置值,以及在第二会话中的报文应用层负载字节序中的起始位置值和结束位置值;其中,上述特征串为,上述当前构建的状态机中的所有模式串中在上述从第二会话中提取的任意一个报文应用层负载字节序中出现的任意一个模式串。
[0181] 较佳的,当前构建的状态机与从第二会话中提取的任意一个报文应用层负载字节序进行匹配,获得相应的匹配结果,对当前获得的匹配结果进行迭代合并时,进一步包括,优化单元,用于:
[0182] 将当前获得的匹配结果中的每一个特征串按照每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值以及每一个特征串在第一会话中的报文应用层负载字节序中的起始位置值,按照从小到大的顺序进行排序;
[0183] 排序结束后,从第一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,若是,则获得合并后的特征串,否则,从下一个特征串开始,依次判断相邻的两个特征串是否可以迭代合并,直到最后一个特征串为止;其中,迭代合并表示,相邻的两个特征串合并后,将合并后的特征串再和相邻的下一个特征串进行合并;
[0184] 针对上述所有不能迭代合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等时,若是,则进行保留,否则,进行舍弃;
[0185] 将经迭代合并后的匹配结果中连续为0x00和0xff的特征串舍弃
[0186] 较佳的,判断相邻的两个特征串是否可以迭代合并时,优化单元42具体用于:
[0187] 判断相邻的两个特征串是否满足预设条件;其中,上述预设条件为,相邻的两个特征串中的前一个特征串在第二会话中的报文应用层负载字节序中的结束位置值不小于后一个特征串在第二会话中的报文应用层负载字节序中的起始位置值,并且,后一个特征串在第二会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第二会话中的报文应用层负载字节序中的起始位置值的第一差值,与,后一个特征串在第一会话中的报文应用层负载字节序中的结束位置值与前一个特征串在第一会话中的报文应用层负载字节序中的起始位置值的第二差值相等,以及,上述第一差值和第二差值都不小于2。
[0188] 较佳的,根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,时,匹配单元41具体用于:
[0189] 将经迭代合并后的匹配结果中每一个长度为2的特征串的权值设置为1,并将每一个长度大于2的特征串的权值设置为2;
[0190] 将经迭代合并后的匹配结果中每一个特征串的权值进行累加,获得所有特征串的权值和,并上述权值和作为上述当前获得的迭代合并后的匹配结果的权值。
[0191] 较佳的,进一步包括,规则创建单元43,用于:
[0192] 根据上述报文信息和上述应用操作的数据特征,构建识别上述应用操作的规则,其中,报文信息中至少包括,源端口、目的端口、报文在会话中的位置以及报文在会话中的流向信息。
[0193] 综上所述,本发明实施例中,确定需要进行数据特征提取的第一会话和第二会话,并从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息;其中,上述第一会话和第二会话是同一个应用操作在不同时间所产生的,上述报文信息中至少包括报文应用层负载字节序;采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,根据预设规则计算当前获得的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将匹配成功的匹配结果作为上述应用操作的数据特征。这样,根据从第一会话提取的报文应用层负载字节序和匹配算法,构建状态机,并根据从第二会话中提取的报文应用层负载字节序,进行匹配,最后获得应用操作的数据特征,解决了对私有协议及加密流量的应用特征提取难得问题,提高了效率,解放了人力,且对匹配结果进行迭代合并,舍弃弱特征,得到了强特征集合,提高了所提取特征串的有效性;
[0194] 并且,在提取报文信息时,进行预处理,即只对符合要求的报文进行提取,缩小了进行数据特征提取的报文的范围,减少了大量报文匹配带来的性能损耗;通过构建模式串集合和多模式匹配得到数据特征集,而不是使用逐字节序比较等方法,这样显著提升了匹配速度,也提高了匹配精度,排除了漏掉有效特征串的问题;对匹配结果的数据特征集,进行了优化,舍弃弱特征,并通过特征串合并等操作得到了强特征集合,提高了所提取特征串的有效性,降低了数据特征提取中无效特征产生的噪声。
[0195] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0196] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0197] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0198] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0199] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0200] 显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。