一种基于模糊测试的网络协议自动化分析漏洞挖掘装置转让专利

申请号 : CN202111506440.0

文献号 : CN114189382B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张先国杨天长任传伦徐军化尹誉衡唐然

申请人 : 中国电子科技集团公司第十五研究所中电科网络空间安全研究院有限公司中国电子科技集团公司第三十研究所

摘要 :

本发明公开了一种基于模糊测试的网络协议自动化分析漏洞挖掘装置,将网络数据流输入本装置后,本装置通过对网络数据流进行分析,生成包含网络协议格式的规则树,以规则树为导向对测试目标进行模糊测试,将模糊测试结果反馈到规则树中,实现对测试目标的协议格式遍历,从而对未知协议格式的网络协议实现漏洞挖掘。本发明实现了对未知协议格式的自动化分析,引导模糊测试的执行路径,不需要依赖目标程序,操作简便,通用性强。本发明以规则树为导向对测试目标进行模糊测试,将模糊测试结果反馈到规则树中,实现对测试目标的协议格式遍历,能够方便地对未知协议格式的网络协议实现漏洞挖掘,满足了网络安全工作者对网络协议安全分析的需求。

权利要求 :

1.一种基于模糊测试的网络协议自动化分析漏洞挖掘装置,其特征在于,将网络数据流输入本装置后,本装置通过对网络数据流进行分析,生成包含网络协议格式的规则树,以规则树为导向对测试目标进行模糊测试,将模糊测试结果反馈到规则树中,实现对测试目标的协议格式遍历,从而对未知协议格式的网络协议实现漏洞挖掘;

本装置包括数据包捕获模块、背景流量过滤模块、流量特征提取模块、规则树构造模块、模糊测试畸形数据生成模块、流量识别模块和底层发包模块,上述七个模块依次连接;

模糊测试畸形数据生成模块与底层发包模块相连接;

所述的数据包捕获模块,其使用两种方式来捕获数据包,一种方式是调用libpcap库函数对互联网流量数据进行截包,把截包得到的每个数据包中的五元组信息保存下来,作为原始输入数据输入至背景流量过滤模块,另一种方式是使用wireshark自带的数据包截获保存工具,直接对流经网卡的互联网流量数据进行截包,将截包得到的数据,保存成各种类型的数据包文件;

所述的背景流量过滤模块,用于对截获到的数据包进行过滤处理,将不需要的干扰网络流量去除;背景流量过滤模块首先获得网络流量和进程之间的对应关系,将网络数据包中对应的五元组信息与对应关系进行对比,保存目标进程中的五元组信息;最后根据保存的五元组信息对截获到的数据包进行过滤和包重组,形成分析报文;

所述的流量特征提取模块,用于对两种流量特征进行提取,根据截获到的数据包的次序来对相应的分析报文进行分层,把同一层的分析报文进行特征提取;两种流量特征包括长度特征和包内byte_jump特征,流量特征提取模块检查每一层的具有同一五元组信息的分析报文长度是否相同,如果相同则认为该分析报文的长度为长度特征;所述的包内byte_jump特征,指数据包内长度特征的跳转;

所述的规则树构造模块,采用有限状态自动机来实现,其采用聚类算法将网络流量进行分类,对属于同一类的分析报文进行特征提取,按照分析报文的类别的粒度聚类划分报文层次,在对一层分析报文进行聚类划分完毕后,聚类划分下一层分析报文时,在上一层聚类划分的结果上进行再分配,对一类分析报文所提取的特征,作为一个节点,利用所有类分析报文所提取的特征构成一颗规则树;

所述的模糊测试畸形数据生成模块,首先生成符合互联网通信协议的数据包,生成该符合互联网通信协议的数据包后,在互联网通信协议没有规定的部分生成畸形数据,再利用生成的畸形数据对数据包进行填充,最后将填充后的数据包提交给底层发包模块,用于进行模糊测试的交互;畸形数据包括:超长字符串,整数溢出字符和格式化字符串;超长字符串用于检测字符串溢出;由畸形数据构成的模糊测试样本构成规则树的节点的模糊测试数据池;

所述的流量识别模块,使用模式识别算法来进行底层发包模块提交的数据包中的字符串的模式匹配,根据模式匹配结果确定规则树中与模式匹配结果相一致的节点,检查规则树的本节点的模糊测试数据池是否为空;如果为空,选择规则树的下一个节点的特征发送给模糊测试畸形数据生成模块,来生成畸形数据;如果不为空,再把该节点对应的特征发送给模糊测试畸形数据生成模块,并生成下一步要发送的畸形数据;

所述的底层发包模块用于实现网络客户端和服务端的数据发送和接收功能,将接收到目标主机发过来的分析报文提供给流量识别模块,由流量识别模块确定规则树中该分析报文相应节点的位置,底层发包模块接收模糊测试畸形数据生成模块生成的畸形数据并发送给目标主机,底层发包模块进行模糊测试。

2.如权利要求1所述的基于模糊测试的网络协议自动化分析漏洞挖掘装置,其特征在于,

底层发包模块的工作具体流程包括:判断要发送给目标主机的数据包类型;初始化客户端和服务端信息;发送模糊测试畸形数据生成模块提交的数据给目标主机;接收对端服务器返回的消息,并将该消息提交给流量识别模块。

3.如权利要求1所述的基于模糊测试的网络协议自动化分析漏洞挖掘装置,其特征在于,

所述的特征提取,是一种提取两个字符串的最大公共子串的算法,可用于计算两个字符串的相似度。

4.如权利要求1所述的基于模糊测试的网络协议自动化分析漏洞挖掘装置,其特征在于,

所述的规则树构造模块根据协议、端口、分析报文的相似度来进行分析报文的分类,其具体步骤包括:

根据TCP/UDP协议对分析报文进行分组,将分析报文划分为用于命令字传输的TCP报文组和用于语音视频传输的UDP报文组;

根据端口对分析报文进行分组,从而区分不同功能的分析报文;

根据无监督聚类算法对分析报文进行分组,使用字符串距离作为衡量标准,设定阈值来进行分析报文进行分组,由所有分析报文组成一个报文矩阵,报文矩阵的每一列代表的是一条链接,报文矩阵的行代表了同一层的分析报文;对第一层分析报文进行聚类划分,划分完毕后再对第二层分析报文开始划分,第二层的划分会继承上一层分析报文的划分结果,在上一层划分的结果之上继续划分,依次类推,在所有层的分析报文进行聚类划分后,利用所有类分析报文所提取的特征形成一颗规则树。

5.如权利要求4所述的基于模糊测试的网络协议自动化分析漏洞挖掘装置,其特征在于,

所述的无监督聚类算法,其采用密度聚类算法来实现,以数据集的空间分布上的稠密程度为依据对数据集进行分类,无需预先设定簇的数量;密度聚类算法的步骤是,只要数据集空间的一个区域中的点的密度大于某个阈值,就把该区域加到与之相近的聚类中去。

6.如权利要求1所述的基于模糊测试的网络协议自动化分析漏洞挖掘装置,其特征在于,

所述的五元组信息包括源IP、目的IP、源端口、目的端口、TCP/UDP的信息。

7.如权利要求1所述的基于模糊测试的网络协议自动化分析漏洞挖掘装置,其特征在于,

所述的模糊测试,是一种向测试目标发送若干个经过构造的测试用例,引起测试目标崩溃而发现测试目标漏洞的漏洞挖掘方法。

说明书 :

一种基于模糊测试的网络协议自动化分析漏洞挖掘装置

技术领域

[0001] 本发明涉及网络安全技术领域,尤其涉及一种基于模糊测试的网络协议自动化分析漏洞挖掘装置。

背景技术

[0002] 随着互联网的兴起,网络安全已经成为热议话题,作为安全工作者,应当及时查找漏洞、发布补丁,保卫网络空间安全。传统的手动分析协议方法存在如下问题:手动分析协议和手动写测试路径效率低下、测试路径不全、畸形数据交互无效、无法深入测试漏洞。网络协议自动化分析漏洞挖掘工具的出现,弥补了传统手动分析方法的不足,实现了模式化的协议处理与分析,能高效快捷地解析与处理网络协议格式,为模糊测试漏洞挖掘打下坚实基础,满足了安全工作者对网络协议安全分析的需求。
[0003] 在网络协议漏洞挖掘领域中,对网络协议格式的自动化分析一直是一个重要的研究点,但其通常聚焦于在模糊测试执行之前对网络协议格式进行分析,这种方法通常以数据流为输入,按照TCP/IP协议簇格式划分数据报文并提取传输数据内容。发明(CN103209173B)需要通过劫持目标系统调用、对特征数据动态变异、检测目标运行状态来判断目标程序是否有安全漏洞,需要对目标取得一定的控制权,实现难度较大。论文《网络协议的自动化模糊测试漏洞挖掘方法》采用了基于遗传算法的迭代比对算法来获取网络协议格式的方法,该方法能够达到较高的准确度,但在实现上开销较大,对使用人员有较高的要求,同时对输入数据也有较为苛刻的条件,不普遍适用于常用网络协议。

发明内容

[0004] 针对现有的网络协议漏洞挖掘领域中对网络协议格式的自动化分析方法所存在的实现难度大、开销较大的问题,本发明公开了一种基于模糊测试的网络协议自动化分析漏洞挖掘装置,将网络数据流输入本装置后,本装置通过对网络数据流进行分析,生成包含网络协议格式的规则树,以规则树为导向对测试目标进行模糊测试,将模糊测试结果反馈到规则树中,实现对测试目标的协议格式遍历,从而对未知协议格式的网络协议实现漏洞挖掘。
[0005] 本装置包括数据包捕获模块、背景流量过滤模块、流量特征提取模块、规则树构造模块、模糊测试畸形数据生成模块、流量识别模块和底层发包模块,上述七个模块依次连接;模糊测试畸形数据生成模块与底层发包模块相连接。
[0006] 所述的数据包捕获模块,其使用两种方式来捕获数据包,一种方式是调用libpcap库函数对互联网流量数据进行截包,把截包得到的每个数据包中的五元组信息保存下来,作为原始输入数据输入至背景流量过滤模块,另一种方式是使用wireshark自带的数据包截获保存工具,直接对流经网卡的互联网流量数据进行截包,将截包得到的数据,保存成各种类型的数据包文件。
[0007] 所述的五元组信息包括源IP、目的IP、源端口、目的端口、TCP/UDP的信息。
[0008] 所述的背景流量过滤模块,用于对截获到的数据包进行过滤处理,将不需要的干扰网络流量去除;背景流量过滤模块首先获得网络流量和进程之间的对应关系,将网络数据包中对应的五元组信息与对应关系进行对比,保存目标进程中的五元组信息。最后根据保存的五元组信息对截获到的数据包进行过滤和包重组,形成分析报文。
[0009] 所述的流量特征提取模块,用于对两种流量特征进行提取,根据截获到的数据包的次序来对相应的分析报文进行分层,把同一层的分析报文进行特征提取。两种流量特征包括长度特征和包内byte_jump特征,流量特征提取模块检查每一层的具有同一五元组信息的分析报文长度是否相同,如果相同则认为该分析报文的长度为长度特征;所述的包内byte_jump特征,指数据包内长度特征的跳转。
[0010] 所述的规则树构造模块,采用有限状态自动机来实现,其采用聚类算法将网络流量进行分类,对属于同一类的分析报文进行特征提取,按照分析报文的类别的粒度聚类划分报文层次,在对一层分析报文进行聚类划分完毕后,聚类划分下一层分析报文时,在上一层聚类划分的结果上进行再分配,对一类分析报文所提取的特征,作为一个节点,利用所有类分析报文所提取的特征构成一颗规则树。
[0011] 所述的规则树构造模块根据协议、端口、分析报文的相似度来进行分析报文的分类,其具体步骤包括:
[0012] 根据TCP/UDP协议对分析报文进行分组,将分析报文划分为用于命令字传输的TCP报文组和用于语音视频传输的UDP报文组;
[0013] 根据端口对分析报文进行分组,从而区分不同功能的分析报文。
[0014] 根据无监督聚类算法对分析报文进行分组,使用字符串距离作为衡量标准,设定阈值来进行分析报文进行分组,由所有分析报文组成一个报文矩阵,报文矩阵的每一列代表的是一条链接,报文矩阵的行代表了同一层的分析报文。对第一层分析报文进行聚类划分,划分完毕后再对第二层分析报文开始划分,第二层的划分会继承上一层分析报文的划分结果,在上一层划分的结果之上继续划分,依次类推,在所有层的分析报文进行聚类划分后,利用所有类分析报文所提取的特征形成一颗规则树。
[0015] 所述的模糊测试畸形数据生成模块,首先生成符合互联网通信协议的数据包,生成该符合互联网通信协议的数据包后,在互联网通信协议没有规定的部分生成畸形数据,再利用生成的畸形数据对数据包进行填充,最后将填充后的数据包提交给底层发包模块,用于进行模糊测试的交互。畸形数据包括:超长字符串,整数溢出字符和格式化字符串。超长字符串用于检测字符串溢出。由畸形数据构成的模糊测试样本构成规则树的节点的模糊测试数据池;
[0016] 所述的流量识别模块,使用模式识别算法来进行底层发包模块提交的数据包中的字符串的模式匹配,根据模式匹配结果确定规则树中与模式匹配结果相一致的节点,检查规则树的本节点的模糊测试数据池是否为空;如果为空,选择规则树的下一个节点的特征发送给模糊测试畸形数据生成模块,来生成畸形数据;如果不为空,再把该节点对应的特征发送给模糊测试畸形数据生成模块,并生成下一步要发送的畸形数据。
[0017] 所述的底层发包模块用于实现网络客户端和服务端的数据发送和接收功能,将接收到目标主机发过来的分析报文提供给流量识别模块,由流量识别模块确定规则树中该分析报文相应节点的位置,底层发包模块接收模糊测试畸形数据生成模块生成的畸形数据并发送给目标主机,底层发包模块进行模糊测试;
[0018] 底层发包模块的工作具体流程包括:判断要发送给目标主机的数据包类型;初始化客户端和服务端信息;发送模糊测试畸形数据生成模块提交的数据给目标主机;接收对端服务器返回的消息,并将该消息提交给流量识别模块。
[0019] 所述的模糊测试,是一种向测试目标发送若干个经过构造的测试用例,引起测试目标崩溃而发现测试目标漏洞的漏洞挖掘方法。
[0020] 所述的特征提取,是一种提取两个字符串的最大公共子串的算法,可用于计算两个字符串的相似度。
[0021] 所述的无监督聚类算法,其采用密度聚类算法来实现,以数据集的空间分布上的稠密程度为依据对数据集进行分类,无需预先设定簇的数量。密度聚类算法的步骤是,只要数据集空间的一个区域中的点的密度大于某个阈值,就把该区域加到与之相近的聚类中去。
[0022] 本发明的有益效果为:
[0023] 本发明提出了一个基于流量聚类和协议规则树实现的技术方案,实现了对未知协议格式的自动化分析,引导模糊测试的执行路径,不需要依赖目标程序,操作简便,通用性强。
[0024] 本发明提供了一种基于模糊测试的网络协议自动化分析漏洞挖掘装置,利用特征提取算法、流量分析无监督算法和深度检测技术,实现了对网络协议的自动化分析,再通过构造规则树的方式引导模糊测试的执行,设计并实现了基于模糊测试利用网络流量自动化分析实现漏洞挖掘的工具。
[0025] 本发明提供一整套的针对网络协议格式进行自动化分析与漏洞挖掘的解决方案,使用本发明提供的解决方案能够以数据流为输入,自动生成包含网络协议格式的规则树,以规则树为导向对测试目标进行模糊测试,将模糊测试结果反馈到规则树中,实现对测试目标的协议格式遍历,能够方便地对未知协议格式的网络协议实现漏洞挖掘,满足了安全工作者对网络协议安全分析的需求。

附图说明

[0026] 图1为本发明的网络协议自动化分析模糊测试基本流程。

具体实施方式

[0027] 为了更好的了解本发明内容,这里给出一个实施例。
[0028] 图1为本发明的网络协议自动化分析模糊测试基本流程。
[0029] 本发明公开了一种基于模糊测试的网络协议自动化分析漏洞挖掘装置,将网络数据流输入本装置后,本装置通过对网络数据流进行分析,生成包含网络协议格式的规则树,以规则树为导向对测试目标进行模糊测试,将模糊测试结果反馈到规则树中,实现对测试目标的协议格式遍历,从而对未知协议格式的网络协议实现漏洞挖掘。
[0030] 本装置包括数据包捕获模块、背景流量过滤模块、流量特征提取模块、规则树构造模块、模糊测试畸形数据生成模块、流量识别模块和底层发包模块,上述七个模块依次连接;模糊测试畸形数据生成模块与底层发包模块相连接。
[0031] 所述的数据包捕获模块,其使用两种方式来捕获数据包,一种方式是调用libpcap库函数对互联网流量数据进行截包,把截包得到的每个数据包中的五元组信息保存下来,作为原始输入数据输入至背景流量过滤模块,另一种方式是使用wireshark自带的数据包截获保存工具,直接对流经网卡的互联网流量数据进行截包,将截包得到的数据,保存成各种类型的数据包文件。
[0032] 所述的五元组信息包括源IP、目的IP、源端口、目的端口、TCP/UDP的信息。
[0033] 所述的背景流量过滤模块,用于对截获到的数据包进行过滤处理,将不需要的干扰网络流量去除;背景流量过滤模块首先获得网络流量和进程之间的对应关系,将网络数据包中对应的五元组信息与对应关系进行对比,保存目标进程中的五元组信息。最后根据保存的五元组信息对截获到的数据包进行过滤和包重组,形成分析报文。使用了操作系统自带的命令(如windows的netstat‑nbo)来获得网络流量和进程之间的对应关系。
[0034] 所述的流量特征提取模块,用于对两种流量特征进行提取,根据截获到的数据包的次序来对相应的分析报文进行分层,把同一层的分析报文进行特征提取。两种流量特征包括长度特征和包内byte_jump特征,流量特征提取模块检查每一层的具有同一五元组信息的分析报文长度是否相同,如果相同则认为该分析报文的长度为长度特征;所述的包内byte_jump特征,指数据包内长度特征的跳转,一个数据包的前两个字节代表的是数据包的长度。
[0035] 所述的规则树构造模块,采用有限状态自动机来实现,其采用聚类算法将网络流量进行分类,对属于同一类的分析报文进行特征提取,按照分析报文的类别的粒度聚类划分报文层次,在对一层分析报文进行聚类划分完毕后,聚类划分下一层分析报文时,在上一层聚类划分的结果上进行再分配,对一类分析报文所提取的特征,作为一个节点,利用所有类分析报文所提取的特征构成一颗规则树。
[0036] 因为对于软件来说,不同的功能函数会对应不同类型的报文,在不同功能之间报文的提取特征是没有意义的,因此本发明没有采用传统的根据数据报长度、发包速度等来进行分类,所述的规则树构造模块根据协议、端口、分析报文的相似度来进行分析报文的分类,其具体步骤包括:
[0037] 根据TCP/UDP协议对分析报文进行分组,将分析报文划分为用于命令字传输的TCP报文组和用于语音视频传输的UDP报文组;
[0038] 根据端口对分析报文进行分组,不同的功能通常对应不同的端口,从而区分不同功能的分析报文。
[0039] 根据无监督聚类算法对分析报文进行分组,使用字符串距离作为衡量标准,设定阈值来进行分析报文进行分组,避免噪声对特征提取的影响。但分类结果的准确性很大程度上依赖于阈值的设定,所以需要一定的协议分析经验才能设定该阈值。具体过程为:由所有分析报文组成一个报文矩阵,报文矩阵的每一列代表的是一条链接,报文矩阵的行代表了同一层的分析报文。对第一层分析报文进行聚类划分,划分完毕后再对第二层分析报文开始划分,第二层的划分会继承上一层分析报文的划分结果,在上一层划分的结果之上继续划分,依次类推,在所有层的分析报文进行聚类划分后,利用所有类分析报文所提取的特征形成一颗规则树。
[0040] 所述的模糊测试畸形数据生成模块,首先生成符合互联网通信协议的数据包,生成该符合互联网通信协议的数据包后,在互联网通信协议没有规定的部分生成畸形数据,再利用生成的畸形数据对数据包进行填充,最后将填充后的数据包提交给底层发包模块,用于进行模糊测试的交互。畸形数据包括:超长字符串,整数溢出字符和格式化字符串。超长字符串用于检测字符串溢出。整数溢出使用\x00,\xff来进行填充。由畸形数据构成的模糊测试样本构成规则树的节点的模糊测试数据池;
[0041] 所述的流量识别模块,使用模式识别算法来进行底层发包模块提交的数据包中的字符串的模式匹配,根据模式匹配结果确定规则树中与模式匹配结果相一致的节点,检查规则树的本节点的模糊测试数据池是否为空;如果为空,选择规则树的下一个节点的特征发送给模糊测试畸形数据生成模块,来生成畸形数据;如果不为空,再把该节点对应的特征发送给模糊测试畸形数据生成模块,并生成下一步要发送的畸形数据。
[0042] 所述的底层发包模块用于实现网络客户端和服务端的数据发送和接收功能,将接收到目标主机发过来的分析报文提供给流量识别模块,由流量识别模块确定规则树中该分析报文相应节点的位置,底层发包模块接收模糊测试畸形数据生成模块生成的畸形数据并发送给目标主机,底层发包模块进行模糊测试;
[0043] 底层发包模块的工作具体流程包括:判断要发送给目标主机的数据包类型;初始化客户端和服务端信息;发送模糊测试畸形数据生成模块提交的数据给目标主机;接收对端服务器返回的消息,并将该消息提交给流量识别模块。
[0044] 所述的模糊测试,是一种向测试目标发送若干个经过构造的测试用例,引起测试目标崩溃而发现测试目标漏洞的漏洞挖掘方法。模糊测试方法具备不依赖源码、准确度高、可扩展性强的优点,在网络协议漏洞挖掘上有较好的表现。
[0045] 所述的特征提取算法,是一种提取两个字符串的最大公共子串的算法,可用于计算两个字符串的相似度。在网络协议中每一个报文实际上都是一个字符串,而报文和报文之间的相似度和公共的字符串就可以视作一种特征,这也是LCS算法应用于网络协议解析的原理。
[0046] 流量分析无监督算法,其采用密度聚类算法来实现,以数据集的空间分布上的稠密程度为依据对数据集进行分类,无需预先设定簇的数量,因此特别适合针对位置内容的数据集进行分类。而网络流量的分类未知,两个样本之间相似度是可以衡量的,所以密度聚类方法适用于网络流量的分类。密度聚类算法的步骤是,只要数据集空间的一个区域中的点的密度大于某个阈值,就把该区域加到与之相近的聚类中去。对于区域内的每个对象,就是在给定的半径e的领域中至少要包含的对象的最小数目。
[0047] 深度检测(Deep Packet Inspection,DPI)技术是一种对应用层流量进行检测和控制的技术。当数据流量通过防火墙或者其他流量网管时,网络流量设备会读取数据报的应用层报文进行模式匹配,当匹配到某种规则时,说明它是对应的某种预先设定的策略,是一种应用或一种攻击。网络设备会根据用户配置和模式匹配结果来触发相应的动作。
[0048] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。