CN116248337A - 一种基于测试用例自动化生成的协议模糊测试方法及装置 - Google Patents

一种基于测试用例自动化生成的协议模糊测试方法及装置 Download PDF

Info

Publication number
CN116248337A
CN116248337A CN202211663267.XA CN202211663267A CN116248337A CN 116248337 A CN116248337 A CN 116248337A CN 202211663267 A CN202211663267 A CN 202211663267A CN 116248337 A CN116248337 A CN 116248337A
Authority
CN
China
Prior art keywords
protocol
test
state
message
test case
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.)
Pending
Application number
CN202211663267.XA
Other languages
English (en)
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.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
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 Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN202211663267.XA priority Critical patent/CN116248337A/zh
Publication of CN116248337A publication Critical patent/CN116248337A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

本发明提供一种基于测试用例自动化生成的协议模糊测试方法及装置。该方法包括:步骤1:捕获协议正常通信时的网络流量并对其进行过滤;步骤2:使用多序列比对方法对齐报文序列;步骤3:确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;步骤4:根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;步骤5:根据推断出的协议状态机模型,生成测试路径;步骤6:根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。

Description

一种基于测试用例自动化生成的协议模糊测试方法及装置
技术领域
本发明涉及网络安全技术领域,尤其涉及一种基于测试用例自动化生成的协议模糊测试方法及装置。
背景技术
网络协议描述了两个通信实体相互传递数据的规范,在计算机网络中发挥着重要的作用。然而,在实现过程中由于开发人员理解上的偏差,会在其实现中引入漏洞。一些黑客利用协议中的漏洞传播病毒,甚至在不需要访问物理主机的发起远程攻击,导致数千上万的网络设备面临灾难性的威胁。根据NVD数据库统计,2022年上半年协议中高危漏洞占比超过70%,因此及时发现并修补协议中存在的安全漏洞极为重要。
作为当前主流的协议漏洞发掘方法,模糊测试具有操作简单、效率高的特点。自1989提出了以来已经被广泛用于多个领域的安全测试。模糊测试根据测试用例的生成方式可以分为:基于突变的模糊测试技术和基于生成的模糊测试技术。基于突变的模糊测试技术不需要掌握协议的先验知识,降低了创建状态机的努力。然而,该方式生成的测试用例往往无法通过格式校验。基于生成的模糊测试技术,通过对协议的分析获取协议的格式以及状态机模型,生成尽可能符合协议规范的测试用例。该技术生成的测试用例更容易被协议实现程序所接受,然而该方法需要大量的人工分析以及对协议有着足够的了解,并且难以根据新的协议特性进行扩展。另一方面,现有的黑盒模糊测试工具不关心协议程序执行时的信息,很难探测到协议的深层次状态空间。由于基于突变的协议模糊测试工具不了解协议的状态转换关系,因此同样难以到达深层次的状态。此外,灰盒协议模糊测试工具往往会选择更短的状态迁移路径,从而忽略达到该状态的其他路径,造成测试不够完备的问题。
发明内容
为了解决或者部分地解决传统协议模糊测试方法存在的种子构造代价高,难以扩展到新的协议,以及难以探测到深层次协议状态空间的问题,本发明提供一种基于测试用例自动化生成的协议模糊测试方法及装置。
一方面,本发明提供一种基于测试用例自动化生成的协议模糊测试方法,包括:
步骤1:捕获协议正常通信时的网络流量并对其进行过滤;
步骤2:使用多序列比对方法对齐报文序列;
步骤3:确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;
步骤4:根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;
步骤5:根据推断出的协议状态机模型,生成测试路径;
步骤6:根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。
进一步地,步骤2具体包括:
步骤2.1:计算所有初始报文序列中的最长报文序列长度lmax和最短报文序列长度lmin;针对每个初始报文序列,执行步骤2.2至步骤2.6;
步骤2.2:以字节为单位将初始报文序列划分为静态字段和动态字段;
步骤2.3:初始化字段偏移;
步骤2.4:在当前字段偏移值下,判断相邻的两个静态字段是否相同,若相同,则将两个相邻静态字段合并一个长静态字段;
步骤2.5:更新字段偏移值,判断字段偏移值是否超过最短报文序列长度lmin,若否,则执行步骤2.4;若是,则执行步骤2.6;
步骤2.6:将字段偏移位于(lmin,lmax)之间的字段定义为数据字段,并在数据字段插入对齐符号。
进一步地,步骤3中具体包括:
针对每个候选关键词,设定采用其进行聚类后得到N个集群;
针对每个候选关键词,根据其对应的聚类结果计算报文相似度评分和集群内报文间结构相似性评分;
分别选取报文相似度评分最高和集群内报文间结构相似性评分最高的关键词,并计算选取的关键词对应的关键词位置字段评分;
针对每个候选关键词,计算报文相似度评分、集群内报文间结构相似性评分和关键词位置字段评分的乘积,将乘积值最高的候选关键词作为最终的关键词;
基于最终的关键词的聚类结果来推断出协议的格式以及状态机模型。
进一步地,按照公式(1)计算报文相似度评分P1
Figure BDA0004014832650000031
其中,edit_distance(mk,mt)表示将任意两个报文序列mk和mt转变成两个相同的报文序列所需要的最少操作次数,所述操作是指增加、删除和替换中的一种或多种;max_len(mk,mt)表示两个报文序列mk和mt中较长的报文序列的长度。
进一步地,按照公式(2)计算集群内报文间结构相似性评分P2
Figure BDA0004014832650000032
其中,number_gapi表示第i个集群中所有报文在对齐过程中被插入的对齐符号的数量。
进一步地,按照公式(3)计算关键词位置字段评分P3
Figure BDA0004014832650000033
其中,dc、ds表示客户端、服务端候选关键词字段偏移值,lc、ls表示候选关键词字段长度。
进一步地,步骤4具体包括:
在模板中将字段分为静态字段和动态字段;
在生成测试用例时,生成规则包括:
规则1:在确保静态字段不被解析异常的情况下,保持静态字段不变;
规则2:对于不同类型的动态字段,则采用不同的生成方式生成动态字段,具体包括:针对文本类型动态字段,对分隔符执行替换、扩充和减少中的一种操作或多种操作;其中,替换是指将分隔符替换为其他特殊字符,扩充是指对分隔符进行n倍重复,减少是指将分隔符进行随机删除;
针对二进制类型动态字段,对长度较短的二进制字段进行逐位取反操作;对长度较长的二进制字段进行字节级的取反、右移和与其他动态字段互换中的一种操作或多种操作。
进一步地,步骤5具体包括:
定义协议的初始状态和终止状态;
将初始状态存放入状态迁移路径中,然后从初始状态开始遍历协议状态图中所有的协议状态,具体为:判断当前状态是否被遍历过,若否,则标记该状态为新状态并将其放入状态迁移路径中,然后继续遍历当前状态的后继状态;若是,则跳过当前状态,继续遍历下一个状态;直至遍历完成终止状态或不存在后继状态时完成遍历,此时获取到完整的状态迁移路径。
进一步地,步骤6具体包括:
设置超时阈值,然后根据测试路径的指示向目标程序发送测试用例;
当发送完测试用例之后,在达到超时阈值之后未接收到目标程序的返回消息,则重复发送t次该测试用例,若t次达到超时阈值之后均未收到目标程序的返回消息,则重新启动目标程序,并再次发送该测试用例,若在达到超时阈值之后仍未接收到目标程序的返回消息,则记录崩溃和该测试用例,并继续发送下一个测试用例。
另一方面,本发明提供一种基于测试用例自动化生成的协议模糊测试装置,包括:
捕获模块,用于捕获协议正常通信时的网络流量并对其进行过滤;
报文对齐模块,用于使用多序列比对方法对齐报文序列;
协议格式以及状态机推断模块,用于确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;
测试用例生成模块,用于根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;
测试路径生成模块,用于根据推断出的协议状态机模型,生成测试路径;
网络监测模块,用于根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。
本发明的有益效果:
本发明通过捕获协议程序正常通信时的网络流量,逆向推断出协议格式及状态模型,然后依据协议格式在模板中定义生成规则,自动化生成符合规范的测试用例,从而可以在没有协议先验知识的情况下,生成符合协议规范的测试用例,能够提高模糊器生成有效测试用例的速度,快速开始一个模糊测试过程,并且具有更好的可扩展性。此外,通过状态机指导测试路径的生成以及消息链的发送,探测深层次的状态空间,实现深层次的协议状态覆盖以及到达该状态的所有路径,具有更好的漏洞发现能力。
附图说明
图1为本发明实施例提供的一种基于测试用例自动化生成的协议模糊测试方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本发明实施例提供一种基于测试用例自动化生成的协议模糊测试方法,包括以下步骤:
S101:捕获协议正常通信时的网络流量并对其进行过滤;
具体地,通过协议嗅探工具(例如wireshark)来捕获网络流量;然后根据IP地址以及端口号对网络流量进行过滤得到想要的网络流量。
S102:使用多序列比对方法对齐报文序列;
具体地,使用改进的多序列对比方法将所有的报文序列通过插入自定义对齐符号来实现报文序列的对齐,本实施例中,采用“-”符号作为对齐符号。
所述改进的多序列对比方法具体包括以下步骤:
S1021:计算所有初始报文序列中的最长报文序列长度lmax和最短报文序列长度lmin;针对每个初始报文序列,执行步骤S1022至步骤S1026;
S1022:以字节为单位将初始报文序列划分为静态字段和动态字段;
S1023:初始化字段偏移;
S1024:在当前字段偏移值下,判断相邻的两个静态字段是否相同,若相同,则将两个相邻静态字段合并一个长静态字段;
S1025:更新字段偏移值,判断字段偏移值是否超过最短报文序列长度lmin,若否,则执行步骤S1024;若是,则执行步骤S1026;
S1026:将字段偏移位于(lmin,lmax)之间的字段定义为数据字段,并在数据字段插入对齐符号,即“-”符号。
使用上述改进的多序列对比方法对齐报文后将其划分为不同的字段,并且将连续的多个静态字段合并成为一个长静态字段。相较于传统的Needleman-Wunsch算法,本实施例给出的改进的多序列对比方法更加简单高效。
S103:确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;
具体地,作为报文聚类的依据,关键词的推断尤为重要。关键词通常在报文序列中的动态字段中产生,对于简单协议,报文格式具有相同的结构,关键词所在的偏移位置也相同;而对于复杂协议,报文具有不同的长度,关键词所在的偏移位置会有偏差。考虑到关键词一定在动态字段中产生,因此将报文对齐后的动态字段作为候选关键词。本实施例主要基于以下三个方面对候选关键词进行度量,进一步确定这些字段作为关键词的概率,概率最大的字段被确定为协议的关键词:1)基于关键词聚类后,同一集群中报文序列应当具有高相似度性,对应报文相似度评分;2)同一集群内的报文之间应当具有相同的结构,对应集群内报文间结构相似性评分;3)关键词在所有的报文序列中同时出现,且长度固定,对应关键词位置字段评分。基于上述内容,本步骤具体包括以下子步骤:
针对每个候选关键词,设定采用其进行聚类后得到N个集群;
针对每个候选关键词,根据其对应的聚类结果计算报文相似度评分和集群内报文间结构相似性评分;
分别选取报文相似度评分最高和集群内报文间结构相似性评分最高的关键词,并计算选取的关键词对应的关键词位置字段评分;
针对每个候选关键词,计算报文相似度评分、集群内报文间结构相似性评分和关键词位置字段评分的乘积,将乘积值最高的候选关键词作为最终的关键词;
基于最终的关键词的聚类结果来推断出协议的格式以及状态机模型。
其中,对于复杂协议包含较多的字段,使用简单的报文序列比较可能会错误得到报文间的相似度。因此在本实施例中引入编辑距离edit_distance来确定报文间的相似度,即:按照公式(1)计算报文相似度评分P1
Figure BDA0004014832650000071
其中,edit_distance(mk,mt)表示将任意两个报文序列mk和mt转变成两个相同的报文序列所需要的最少操作次数,所述操作是指增加、删除和替换中的一种或多种;max_len(mk,mt)表示两个报文序列mk和mt中较长的报文序列的长度。
在同一集群内,所有的报文应当具有相同的结构,在报文对齐阶段会尽可能少的使用“-”符号。此外,集群的总数量不应该过多。因此,本实施例使用平均每个集群中的对齐符号(本实施例中指“-”符号)的数量确定结构相似度,即:按照公式(2)计算集群内报文间结构相似性评分P2
Figure BDA0004014832650000072
其中,number_gapi表示第i个集群中所有报文在对齐过程中被插入的对齐符号的数量。
按照公式(3)计算关键词位置字段评分P3
Figure BDA0004014832650000073
其中,dc、ds表示客户端、服务端候选关键词字段偏移值,lc、ls表示候选关键词字段长度。
S104:根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;
具体地,测试用例的质量直接影响到最终的模糊测试结果,高质量测试用例有更大的机率触发目标程序中存在的漏洞。协议程序往往对输入有着严格的校验,当协议程序收到一个外部输入时,首先会对输入进行解析,并依据规则进行匹配,如果解析之后匹配错误,输入会被直接拒绝;在匹配成功后,根据输入数据字段匹配执行的功能,执行完成后向客户端发送相应的响应。
本步骤的目的是根据推断出的协议格式以及语义构建模板,在模板中将字段分为静态字段以及动态字段。同时,根据语义信息,定义动态字段的长度等。在测试用例生成时,对协议格式以及静态字段不改变或者很微少的改动,进而防止模糊器发送的测试用例在开始阶段被待测的目标程序拒绝,无法起到漏洞挖掘的作用。本步骤具体包括以下子步骤:
在模板中将字段分为静态字段和动态字段;
在生成测试用例时,生成规则包括:
规则1:在确保静态字段不被解析异常的情况下,保持静态字段不变;
具体地,对于静态字段在通信过程几乎保持原值,但是该字段解析异常情况下仍有触发漏洞的可能性,因此对其使用边界值比如-1,0,2n-1,-2n进行填充。
规则2:对于不同类型的动态字段,则采用不同的生成方式生成动态字段;
具体地,对于动态字段生成方式则比较丰富,从而为模糊测试构建大量的测试报文,增强漏洞触发能力。具体包括:
针对文本类型动态字段,对分隔符执行替换、扩充和减少中的一种操作或多种操作;其中,替换是指将分隔符替换为其他特殊字符(例如,将“/”“r/n”,替换为“%”、“/n”等);扩充是指对分隔符进行n倍重复,这样可能检测到越界错误;减少是指将分隔符进行随机删除。此外,还可以设置一个字典,用预定义的字符串如“true”“play”“%d”对分隔符进行替换,以扩大测试数据的覆盖范围。
针对二进制类型动态字段,对长度较短的二进制字段进行逐位取反操作;对长度较长的二进制字段进行字节级的取反、右移和与其他动态字段互换中的一种操作或多种操作。这种方式可以检测目标程序中的解析器以及功能代码中潜在的漏洞。
需要说明的是,对于变长字段可以使用灵活的方式对其进行随机填充数据。
上述内容主要是以某单个字段的生成规则进行举例,一次仅涉及生成一个字段。然而,在实际应用中,由于漏洞的触发条件比较复杂,可能需要同时对多个不同的数据字段进行填充,因此,可以根据需要采用多字段变异,即:在报文序列中随机选择多个动态字段,并对每个选择的字段按照上述生成规则进行生成即可。可以理解的是,在接收到新的响应或目标协议程序崩溃之前,多字段变异将会一直进行下去。
传统的测试用例生成方法需要研究人员掌握协议的先验知识,在人工分析的基础上定义报文的格式,这种方式生成测试用例的效率低,且难以扩展到新的协议。而本实施例基于协议流量,根据关键词推断报文的格式,这种方式适用性强且易于扩展。此外,在实际的通信过程中,客户端或者服务端在接收到消息时,通过关键字确定报文的类型,因此也能够获取准确的逆向结果。根据推断出的格式,在模板中为不同的字段定义不同的生成规则。这样可以在没有协议先验知识的情况下生成尽可能符合协议规范的测试用例。
S105:根据推断出的协议状态机模型,生成测试路径;
具体地,现有的协议模糊测试工具,难以测试到深层次的协议状态,且会忽略较长的协议状态迁移路径。状态迁移路径越长,需要发送和接收报文的时间开销就越多。大多数模糊器更倾向于能够更快地到达目标状态的报文序列,以减少消息的发送和接收时间。因此使得模糊器很难覆盖深层状态,最终无法找到深层路径中的bug。另一方面,模糊测试执行的时间通常有限,应当将主要的时间和精力花费在更可能发现漏洞的状态迁移路径上。因此,本实施例根据推断出的协议状态机模型,对协议状态迁移路径进行删减,将几乎不可能存在漏洞的状态迁移路径删除,删除的路径主要包含以下两种:直接迁移到终止状态的路径;以及回退到初始状态的路径。
为了得到完整的状态迁移路径,基于深度优先算法遍历状态机中的所有状态,具体包括以下步骤:
定义协议的初始状态和终止状态;
将初始状态存放入状态迁移路径中,然后从初始状态开始遍历协议状态图中所有的协议状态,具体为:判断当前状态是否被遍历过,若否,则标记该状态为新状态并将其放入状态迁移路径中,然后继续遍历当前状态的后继状态;若是,则跳过当前状态,继续遍历下一个状态;直至遍历完成终止状态或不存在后继状态时完成遍历,此时获取到完整的状态迁移路径。
S106:根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。
具体地,设置超时阈值,然后根据测试路径的指示向目标程序发送测试用例;当发送完测试用例之后,在达到超时阈值之后未接收到目标程序的返回消息,则重复发送t(例如t=3)次该测试用例,若t次达到超时阈值之后均未收到目标程序的返回消息,则重新启动目标程序,并再次发送该测试用例,若在达到超时阈值之后仍未接收到目标程序的返回消息,则记录崩溃和该测试用例,并继续发送下一个测试用例。
传统的协议模糊测试方法仅通过发送连续的报文序列,探测深层次的状态,这种方式不易实现且会忽略达到深层次状态更长的状态迁移路径,造成测试不够完备的问题。而本实施例在状态探测方面,根据推断的状态机模型基于深度优先算法,对所有的协议状态以及状态迁移路径进行遍历,生成测试路径,然后根据该测试路径的指示来发送测试用例,因此可以在测试时覆盖到深层的状态以及更长的测试路径。
实施例2
对应上述的方法,本发明实施例提供一种基于测试用例自动化生成的协议模糊测试装置,包括:捕获模块、报文对齐模块、协议格式以及状态机推断模块、测试用例生成模块、测试路径生成模块和网络监测模块;
其中,捕获模块用于捕获协议正常通信时的网络流量并对其进行过滤;报文对齐模块用于使用多序列比对方法对齐报文序列;协议格式以及状态机推断模块用于确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;测试用例生成模块用于根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;测试路径生成模块用于根据推断出的协议状态机模型,生成测试路径;网络监测模块用于根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。
需要说明的是,本发明实施例提供的装置是为了实现上述方法实施例的,其功能具体可参考上述方法实施例,此处不再赘述。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,包括:
步骤1:捕获协议正常通信时的网络流量并对其进行过滤;
步骤2:使用多序列比对方法对齐报文序列;
步骤3:确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;
步骤4:根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;
步骤5:根据推断出的协议状态机模型,生成测试路径;
步骤6:根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。
2.根据权利要求1所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,步骤2具体包括:
步骤2.1:计算所有初始报文序列中的最长报文序列长度lmax和最短报文序列长度lmin;针对每个初始报文序列,执行步骤2.2至步骤2.6;
步骤2.2:以字节为单位将初始报文序列划分为静态字段和动态字段;
步骤2.3:初始化字段偏移;
步骤2.4:在当前字段偏移值下,判断相邻的两个静态字段是否相同,若相同,则将两个相邻静态字段合并一个长静态字段;
步骤2.5:更新字段偏移值,判断字段偏移值是否超过最短报文序列长度lmin,若否,则执行步骤2.4;若是,则执行步骤2.6;
步骤2.6:将字段偏移位于(lmin,lmax)之间的字段定义为数据字段,并在数据字段插入对齐符号。
3.根据权利要求1所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,步骤3中具体包括:
针对每个候选关键词,设定采用其进行聚类后得到N个集群;
针对每个候选关键词,根据其对应的聚类结果计算报文相似度评分和集群内报文间结构相似性评分;
分别选取报文相似度评分最高和集群内报文间结构相似性评分最高的关键词,并计算选取的关键词对应的关键词位置字段评分;
针对每个候选关键词,计算报文相似度评分、集群内报文间结构相似性评分和关键词位置字段评分的乘积,将乘积值最高的候选关键词作为最终的关键词;
基于最终的关键词的聚类结果来推断出协议的格式以及状态机模型。
4.根据权利要求3所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,按照公式(1)计算报文相似度评分P1
Figure FDA0004014832640000021
其中,edit_distance(mk,mt)表示将任意两个报文序列mk和mt转变成两个相同的报文序列所需要的最少操作次数,所述操作是指增加、删除和替换中的一种或多种;max_len(mk,mt)表示两个报文序列mk和mt中较长的报文序列的长度。
5.根据权利要求3所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,按照公式(2)计算集群内报文间结构相似性评分P2
Figure FDA0004014832640000022
其中,number_gapi表示第i个集群中所有报文在对齐过程中被插入的对齐符号的数量。
6.根据权利要求3所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,按照公式(3)计算关键词位置字段评分P3
Figure FDA0004014832640000023
其中,dc、ds表示客户端、服务端候选关键词字段偏移值,lc、ls表示候选关键词字段长度。
7.根据权利要求1所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,步骤4具体包括:
在模板中将字段分为静态字段和动态字段;
在生成测试用例时,生成规则包括:
规则1:在确保静态字段不被解析异常的情况下,保持静态字段不变;
规则2:对于不同类型的动态字段,则采用不同的生成方式生成动态字段,具体包括:针对文本类型动态字段,对分隔符执行替换、扩充和减少中的一种操作或多种操作;其中,替换是指将分隔符替换为其他特殊字符,扩充是指对分隔符进行n倍重复,减少是指将分隔符进行随机删除;
针对二进制类型动态字段,对长度较短的二进制字段进行逐位取反操作;对长度较长的二进制字段进行字节级的取反、右移和与其他动态字段互换中的一种操作或多种操作。
8.根据权利要求1所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,步骤5具体包括:
定义协议的初始状态和终止状态;
将初始状态存放入状态迁移路径中,然后从初始状态开始遍历协议状态图中所有的协议状态,具体为:判断当前状态是否被遍历过,若否,则标记该状态为新状态并将其放入状态迁移路径中,然后继续遍历当前状态的后继状态;若是,则跳过当前状态,继续遍历下一个状态;直至遍历完成终止状态或不存在后继状态时完成遍历,此时获取到完整的状态迁移路径。
9.根据权利要求1所述的一种基于测试用例自动化生成的协议模糊测试方法,其特征在于,步骤6具体包括:
设置超时阈值,然后根据测试路径的指示向目标程序发送测试用例;
当发送完测试用例之后,在达到超时阈值之后未接收到目标程序的返回消息,则重复发送t次该测试用例,若t次达到超时阈值之后均未收到目标程序的返回消息,则重新启动目标程序,并再次发送该测试用例,若在达到超时阈值之后仍未接收到目标程序的返回消息,则记录崩溃和该测试用例,并继续发送下一个测试用例。
10.一种基于测试用例自动化生成的协议模糊测试装置,其特征在于,包括:
捕获模块,用于捕获协议正常通信时的网络流量并对其进行过滤;
报文对齐模块,用于使用多序列比对方法对齐报文序列;
协议格式以及状态机推断模块,用于确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;
测试用例生成模块,用于根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;
测试路径生成模块,用于根据推断出的协议状态机模型,生成测试路径;
网络监测模块,用于根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。
CN202211663267.XA 2022-12-23 2022-12-23 一种基于测试用例自动化生成的协议模糊测试方法及装置 Pending CN116248337A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211663267.XA CN116248337A (zh) 2022-12-23 2022-12-23 一种基于测试用例自动化生成的协议模糊测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211663267.XA CN116248337A (zh) 2022-12-23 2022-12-23 一种基于测试用例自动化生成的协议模糊测试方法及装置

Publications (1)

Publication Number Publication Date
CN116248337A true CN116248337A (zh) 2023-06-09

Family

ID=86630466

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211663267.XA Pending CN116248337A (zh) 2022-12-23 2022-12-23 一种基于测试用例自动化生成的协议模糊测试方法及装置

Country Status (1)

Country Link
CN (1) CN116248337A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991743A (zh) * 2023-09-01 2023-11-03 浙江大学 一种基于协议逆向的工控设备黑盒模糊测试方法
CN117667749A (zh) * 2024-01-31 2024-03-08 中兴通讯股份有限公司 一种模糊测试用例优化方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991743A (zh) * 2023-09-01 2023-11-03 浙江大学 一种基于协议逆向的工控设备黑盒模糊测试方法
CN117667749A (zh) * 2024-01-31 2024-03-08 中兴通讯股份有限公司 一种模糊测试用例优化方法及系统

Similar Documents

Publication Publication Date Title
CN116248337A (zh) 一种基于测试用例自动化生成的协议模糊测试方法及装置
CN110505241B (zh) 一种网络攻击面检测方法及系统
Gascon et al. Pulsar: Stateful black-box fuzzing of proprietary network protocols
US7725510B2 (en) Method and system for multi-character multi-pattern pattern matching
US8442931B2 (en) Graph-based data search
CN107666468B (zh) 网络安全检测方法和装置
JP6200101B2 (ja) 分析装置、分析システム、分析方法、および、分析プログラム
CN112261052B (zh) 基于流规则分析的sdn数据平面异常行为检测方法及系统
CN113821793A (zh) 一种基于图卷积神经网络的多阶段攻击场景构建方法及系统
Wang et al. Protocol formats reverse engineering based on association rules in wireless environment
CN112235254B (zh) 一种高速主干网中Tor网桥的快速识别方法
Hammerschmidt et al. Efficient learning of communication profiles from ip flow records
Özdel et al. Payload-based network traffic analysis for application classification and intrusion detection
CN116094850B (zh) 基于系统状态追踪图引导的网络协议漏洞检测方法及系统
CN112235242A (zh) 一种c&c信道检测方法及系统
Shu et al. A formal methodology for network protocol fingerprinting
CN113760753B (zh) 基于灰盒模糊技术的quic协议测试方法
Zolotukhin et al. Detection of anomalous http requests based on advanced n-gram model and clustering techniques
Fan et al. Automatic reverse engineering of unknown security protocols from network traces
Huang et al. Automatic Field Extraction of Extended TLV for Binary Protocol Reverse Engineering
Huang Automatic Field Extraction of Extended TLV for Binary Protocol Reverse
CN117792967B (zh) 一种基于差异度反馈的摄像头模糊测试方法
CN116455798B (zh) 协议程序测试模型自动生成方法及装置
CN116170357B (zh) 一种区块链共识协议的模糊测试方法和装置
CN116633865B (zh) 网络流量控制方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination