一种网络攻击字符匹配方法及装置与流程

文档序号:15272657发布日期:2018-08-28 22:37阅读:139来源:国知局

本发明涉及网络安全技术领域,尤其涉及一种网络攻击字符匹配方法及装置。



背景技术:

模式匹配方法是网络入侵检测领域应用比较广泛的一种方法,该方法首先收集已知的攻击数据包,并根据这些攻击数据包建立起规则库,然后抓取网络连接中的数据包,并对数据包进行拆解,最后将拆解的数据包与规则库进行匹配,如果匹配则表示发生入侵,否则表示没有发生入侵。现阶段比较成熟的模式匹配方法为boyer-moore(bm)算法和aho-corasick(ac)算法等,这些算法虽然有着较高的检测准确率,但是时间性能仍然有待提高。



技术实现要素:

本发明实施例提供一种网络攻击字符匹配方法及装置,用于降低网络攻击数据包的字符匹配阶段的时间消耗。所述技术方案如下:

根据本发明实施例的第一方面,提供一种网络攻击字符匹配方法,包括:

对待检测数据包进行拆解,得到待检测文本串;

使用预先生成的双向自动机分别从待检测文本串的左右两侧进行字符匹配,所述双向自动机包括正向自动机和逆向自动机,所述双向自动机包括通过对收集到的攻击数据包进行训练学习得到的模式串;

根据字符匹配结果及预设的坏字符表和前置字符表确定跳转距离;

根据所述跳转距离进行跳转后继续进行字符匹配,直到所述双向自动机到达所述待检测文本的匹配终止位置。

可选的,所述根据字符匹配结果及预设的坏字符表和前置字符表确定跳转距离,包括:

当所述字符不匹配时,根据所述坏字符表和前置字符表确定跳转距离;

当所述字符匹配且当前状态为输出状态时,根据所述前置字符表确定所述跳转距离;

当所述字符匹配且当前状态为非输出状态时,确定所述调转距离为1。

可选的,当所述字符不匹配时,根据预设的坏字符表和前置字符表确定跳转距离,包括:

查询所述字符在所述坏字符表和前置字符表对应的至少两个预设跳转距离;

选择所述至少两个预设跳转距离中的最大值作为所述跳转距离;

当所述字符匹配且当前状态为输出状态时,根据所述前置字符表确定所述跳转距离,包括:

查询所述字符在所述前置字符表对应的预设跳转距离;

选择所述预设跳转距离作为所述跳转距离;

当所述字符不属于所述坏字符表或所述前置字符表时,所述根据字符匹配结果及预设的坏字符表和前置字符表确定跳转距离,包括:

确定所述跳转距离为所述双向自动机中最短模式串的第二长度。

可选的,所述方法还包括:

获取所述双向自动机中最长模式串的第一长度和最短模式串的第二长度;

获取字符在所述双向自动机中的深度;

当所述字符的深度大于所述第二长度时,确定所述字符对应的预设跳转距离为第二长度加1;

当所述字符的深度小于或等于所述第二长度时,确定所述字符对应的预设跳转距离为所述字符的深度;

当所述字符在所述双向自动机中出现至少2次时,选择所述字符对应的至少2个预设跳转距离中的最小值作为所述字符对应的预设跳转距离;

根据所述字符及所述字符对应的预设跳转距离生成所述前置字符表。

可选的,所述方法还包括:

根据所述待检测文本串的第三长度和所述双向自动机中最长模式串的第一长度确定所述双向自动机的匹配范围为:

当第一长度为奇数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

当第一长度为偶数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

其中,n表示第三长度,maxlen表示第一长度。

根据本发明实施例的第二方面,提供一种网络攻击字符匹配装置,包括:

拆解模块,用于对待检测数据包进行拆解,得到待检测文本串;

匹配模块,用于使用预先生成的双向自动机分别从待检测文本串的左右两侧进行字符匹配,所述双向自动机包括正向自动机和逆向自动机,所述双向自动机包括通过对收集到的攻击数据包进行训练学习得到的模式串;

第一确定模块,用于根据字符匹配结果及预设的坏字符表和前置字符表确定跳转距离;

所述匹配模块,用于根据所述跳转距离进行跳转后继续进行字符匹配,直到所述双向自动机到达所述待检测文本的匹配终止位置。

可选的,所述第一确定模块,用于当所述字符不匹配时,根据所述坏字符表和前置字符表确定跳转距离;当所述字符匹配且当前状态为输出状态时,根据所述前置字符表确定所述跳转距离;当所述字符匹配且当前状态为非输出状态时,确定所述调转距离为1。

可选的,所述第一确定模块,用于当所述字符不匹配时,查询所述字符在所述坏字符表和前置字符表对应的至少两个预设跳转距离;选择所述至少两个预设跳转距离中的最大值作为所述跳转距离;

所述第一确定模块,用于当所述字符匹配且当前状态为输出状态时,查询所述字符在所述前置字符表对应的预设跳转距离;选择所述预设跳转距离作为所述跳转距离;

所述第一确定模块,用于当所述字符不属于所述坏字符表或所述前置字符表时,确定所述跳转距离为所述双向自动机中最短模式串的第二长度。

可选的,所述装置还包括:

获取模块,用于获取所述双向自动机中最长模式串的第一长度和最短模式串的第二长度;获取字符在所述双向自动机中的深度;

第二确定模块,用于当所述字符的深度大于所述第二长度时,确定所述字符对应的预设跳转距离为第二长度加1;当所述字符的深度小于或等于所述第二长度时,确定所述字符对应的预设跳转距离为所述字符的深度;当所述字符在所述双向自动机中出现至少2次时,选择所述字符对应的至少2个预设跳转距离中的最小值作为所述字符对应的预设跳转距离;

生成模块,用于根据所述字符及所述字符对应的预设跳转距离生成所述前置字符表。

可选的,所述装置还包括:

第三确定模块,用于根据所述待检测文本串的第三长度和所述双向自动机中最长模式串的第一长度确定所述双向自动机的匹配范围为:

当第一长度为奇数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

当第一长度为偶数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

其中,n表示第三长度,maxlen表示第一长度。

本发明的实施例提供的技术方案可以包括以下有益效果:

本实施例中,通过双向自动机分别从待检测字符串左右两侧分别进行字符匹配,保证正、逆向自动机都只用查找一半左右的文本串就可以完成匹配,大大降低匹配阶段的时间消耗,又可以保证当最长模式串在文本串中间部位出现时能够成功完成匹配,降低漏报率。

另外,根据预设的坏字符表和前置字符表来增大当字符比匹配时的移动距离,使最大移动距离为最短模式串长度minlen加1,而并非最短模式串长度minlen,并且,当成功匹配到一个模式串后,仍然可以通过预读前置字符进行跳跃式移动,而并非只机械地移动一个字符的距离,这样当文本串长度较长时,极大地减少比较次数,有效降低了匹配阶段的时间消耗。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种网络攻击字符匹配方法的流程图;

图2是根据另一示例性实施例示出的一种网络攻击字符匹配方法的流程图;

图3是根据一示例性实施例示出的一种网络攻击字符匹配装置的框图;

图4是根据另一示例性实施例示出的一种网络攻击字符匹配装置的框图;

图5是根据另一示例性实施例示出的一种网络攻击字符匹配装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种网络攻击字符匹配方法的流程图,如图1所示,该网络攻击字符匹配方法包括以下步骤:

步骤s11,对待检测数据包进行拆解,得到待检测文本串。

步骤s12,使用预先生成的双向自动机分别从待检测文本串的左右两侧进行字符匹配,双向自动机包括正向自动机和逆向自动机,双向自动机包括通过对收集到的攻击数据包进行训练学习得到的模式串。

其中,正向自动机可以从右至左进行匹配查询,逆向自动机可以从左向右进行匹配查询,或者,正向自动机可以从左向右匹配查询,逆向自动机可以从右至左进行匹配查询。

步骤s13,根据字符匹配结果及预设的坏字符表和前置字符表确定跳转距离。

步骤s14,根据跳转距离进行跳转后继续进行字符匹配,直到双向自动机到达待检测文本的匹配终止位置。

例如,正向自动机可以从右至左进行匹配查询,逆向自动机可以从左向右进行匹配查询。双向自动机中最短模式串的第二长度用minlen表示。

正向自动机第一次匹配是从待检测文本串t的末端向前取minlen个字符与自动机的根字符对齐,逆向自动机第一次匹配是从待检测文本串t的前端向后取minlen个字符与自动机的根字符对齐。

正向自动机判断字符是否匹配,如果不匹配,则根据坏字符表和前置字符表确定跳转距离max1,进行跳转。逆向自动机判断字符是否匹配,如果字符匹配,则判断是否为输出状态,如果字符不匹配,则根据坏字符表和前置字符表确定跳转距离max2,进行跳转。

如果字符匹配,则判断匹配的字符是否为输出状态,如果是,则输出;如果不是,则将下标移动一个字符的距离,继续查找匹配。

每查找匹配一个字符的距离,都要判断是否到达正、逆向自动机的终止位置,如果达到终止位置,则结束;如果没有到达终止位置,则取决于查找匹配阶段是否遇到输出状态,如果遇到,则需读取前置字符表,决定移动距离后继续查找匹配。

本实施例中,通过双向自动机分别从待检测字符串左右两侧分别进行字符匹配,保证正、逆向自动机都只用查找一半左右的文本串就可以完成匹配,大大降低匹配阶段的时间消耗,又可以保证当最长模式串在文本串中间部位出现时能够成功完成匹配,降低漏报率。

另外,根据预设的坏字符表和前置字符表来增大当字符比匹配时的移动距离,使最大移动距离为最短模式串长度minlen加1,而并非最短模式串长度minlen,并且,当成功匹配到一个模式串后,仍然可以通过预读前置字符进行跳跃式移动,而并非只机械地移动一个字符的距离,这样当文本串长度较长时,极大地减少比较次数,有效降低了匹配阶段的时间消耗。

在一个实施例中,步骤s13中,根据字符匹配结果及预设的坏字符表和前置字符表确定跳转距离,包括以下几种情况:

一、当字符不匹配时,根据坏字符表和前置字符表确定跳转距离。

具体地,当字符属于坏字符表或前置字符表时,查询字符在坏字符表和前置字符表对应的至少两个预设跳转距离,选择至少两个预设跳转距离中的最大值作为跳转距离。

当字符不属于坏字符表或前置字符表时,确定跳转距离为双向自动机中最短模式串的第二长度minlen。

二、当字符匹配且当前状态为输出状态时,根据前置字符表确定跳转距离。

查询字符在前置字符表对应的预设跳转距离,选择预设跳转距离作为跳转距离。

三、当字符匹配且当前状态为非输出状态时,确定调转距离为1。

图2是根据另一示例性实施例示出的一种网络攻击字符匹配方法的流程图,如图2所示,该方法还包括:

步骤s21,获取双向自动机中最长模式串的第一长度和最短模式串的第二长度minlen;

步骤s22,获取字符在双向自动机中的深度i;

步骤s23,当字符的深度i大于第二长度minlen时,确定字符对应的预设跳转距离为第二长度加1,minlen+1;

步骤s24,当字符的深度i小于或等于第二长度minlen时,确定字符对应的预设跳转距离为字符的深度i;

步骤s25,当字符在双向自动机中出现至少2次时,选择字符对应的至少2个预设跳转距离中的最小值作为字符对应的预设跳转距离;

步骤s26,根据字符及字符对应的预设跳转距离生成前置字符表。

例如,某个字符char在双向自动机i深度处,则跳转距离skip(char)为:

若该字符char在双向自动机中出现了3次,分别在深度i=1,i=2,i=3处,则字符char最终在前置字符表中的跳转长度取三者的最小值min{skip(char)|i=1,skip(char)|i=2,skip(char)|i=3}。没有出现在双向自动机中的字符的跳转长度=minlen+1。

在另一实施例中,正、逆向自动机对待检测文本串的遍历长度由待检测文本串的第三长度n和双向自动机中最长模式串的第一长度maxlen共同决定。该方法还包括:根据待检测文本串的第三长度和双向自动机中最长模式串的第一长度确定双向自动机的匹配范围为:

当第一长度为奇数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

当第一长度为偶数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

其中,n表示第三长度,maxlen表示第一长度。

本实施例中,当最长模式串比较长时既可以保证正、逆向自动机都只用查找一半左右的文本串就可以完成匹配,大大降低匹配阶段的时间消耗,又可以保证当最长模式串在文本串中间部位出现时能够成功完成匹配,降低漏报率。

下述为本发明装置实施例,可以用于执行本发明方法实施例。

图3是根据一示例性实施例示出的一种网络攻击字符匹配装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图3所示,该网络攻击字符匹配装置包括:

拆解模块31,用于对待检测数据包进行拆解,得到待检测文本串;

匹配模块32,用于使用预先生成的双向自动机分别从待检测文本串的左右两侧进行字符匹配,双向自动机包括正向自动机和逆向自动机,双向自动机包括通过对收集到的攻击数据包进行训练学习得到的模式串;

第一确定模块33,用于根据字符匹配结果及预设的坏字符表和前置字符表确定跳转距离;

匹配模块32,用于根据跳转距离进行跳转后继续进行字符匹配,直到双向自动机到达待检测文本的匹配终止位置。

可选的,第一确定模块33,用于当字符不匹配时,根据坏字符表和前置字符表确定跳转距离;当字符匹配且当前状态为输出状态时,根据前置字符表确定跳转距离;当字符匹配且当前状态为非输出状态时,确定调转距离为1。

可选的,第一确定模块33,用于当字符不匹配时,查询字符在坏字符表和前置字符表对应的至少两个预设跳转距离;选择至少两个预设跳转距离中的最大值作为跳转距离;

第一确定模块33,用于当字符匹配且当前状态为输出状态时,查询字符在前置字符表对应的预设跳转距离;选择预设跳转距离作为跳转距离;

第一确定模块33,用于当字符不属于坏字符表或前置字符表时,确定跳转距离为双向自动机中最短模式串的第二长度。

图4是根据另一示例性实施例示出的一种网络攻击字符匹配装置的框图,如图4所示,该装置还包括:

获取模块34,用于获取双向自动机中最长模式串的第一长度和最短模式串的第二长度;获取字符在双向自动机中的深度;

第二确定模块35,用于当字符的深度大于第二长度时,确定字符对应的预设跳转距离为第二长度加1;当字符的深度小于或等于第二长度时,确定字符对应的预设跳转距离为字符的深度;当字符在双向自动机中出现至少2次时,选择字符对应的至少2个预设跳转距离中的最小值作为字符对应的预设跳转距离;

生成模块36,用于根据字符及字符对应的预设跳转距离生成前置字符表。

图5是根据另一示例性实施例示出的一种网络攻击字符匹配装置的框图,如图5所示,该装置还包括:

第三确定模块37,用于根据待检测文本串的第三长度和双向自动机中最长模式串的第一长度确定双向自动机的匹配范围为:

当第一长度为奇数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

当第一长度为偶数时,双向自动机中一个自动机的匹配范围为:另一个自动机的匹配范围为:

其中,n表示第三长度,maxlen表示第一长度。

本实施例中,通过双向自动机分别从待检测字符串左右两侧分别进行字符匹配,保证正、逆向自动机都只用查找一半左右的文本串就可以完成匹配,大大降低匹配阶段的时间消耗,又可以保证当最长模式串在文本串中间部位出现时能够成功完成匹配,降低漏报率。

另外,根据预设的坏字符表和前置字符表来增大当字符比匹配时的移动距离,使最大移动距离为最短模式串长度minlen加1,而并非最短模式串长度minlen,并且,当成功匹配到一个模式串后,仍然可以通过预读前置字符进行跳跃式移动,而并非只机械地移动一个字符的距离,这样当文本串长度较长时,极大地减少比较次数,有效降低了匹配阶段的时间消耗。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1