CN117155831A - 基于源码的网络协议模糊测试方法、装置、设备及介质 - Google Patents
基于源码的网络协议模糊测试方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117155831A CN117155831A CN202310990363.3A CN202310990363A CN117155831A CN 117155831 A CN117155831 A CN 117155831A CN 202310990363 A CN202310990363 A CN 202310990363A CN 117155831 A CN117155831 A CN 117155831A
- Authority
- CN
- China
- Prior art keywords
- test
- target
- test case
- code
- sample
- 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
Links
- 238000010998 test method Methods 0.000 title claims abstract description 24
- 238000012360 testing method Methods 0.000 claims abstract description 207
- 230000035772 mutation Effects 0.000 claims abstract description 49
- 238000012795 verification Methods 0.000 claims abstract description 44
- 238000000034 method Methods 0.000 claims abstract description 41
- 230000008569 process Effects 0.000 claims abstract description 24
- 230000006870 function Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013499 data model Methods 0.000 claims description 12
- 230000014509 gene expression Effects 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000007639 printing Methods 0.000 claims description 3
- 230000009466 transformation Effects 0.000 claims description 3
- 238000006467 substitution reaction Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/18—Protocol analysers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/06—Generation of reports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
本申请涉及模糊测试技术领域,揭露了一种基于源码的网络协议模糊测试方法、装置、设备及介质,该方法包括:选取样本队列中的目标原始样本,对目标原始样本进行多样性变异;对变异后的测试用例进行规范校验;将规范后的测试用例发送至目标对象内进行执行,采集规范测试用例执行过程中的运行反馈数据;统计运行反馈数据中的新路径信息,将新路径信息对应的目标新样本更新至样本队列中,并返回至选取样本队列中的目标原始样本的步骤,直至样本队列的测试覆盖率大于覆盖率阈值时,生成模糊测试报告。通过本申请的实施,路径引导和路径反馈相结合、变异和校验相结合,可以使测试更加全面和高效,提高模糊测试的全面性。
Description
技术领域
本申请涉及模糊测试技术领域,尤其涉及一种基于源码的网络协议模糊测试方法、装置、设备及介质。
背景技术
在互联网的服务中使用协议,使得用户可以有效和可靠的方式互相交流,协议规定了两个或多个网络参与者之间可以交换的消息的正确顺序和结果,但网络协议的安全缺陷是至关重要的,因此,需要通过模糊测试技术进行网络安全测试。
现有的基于源码的网络协议模糊测试技术是基于覆盖指引的灰盒测试,主要关注路径引导和路径反馈,但在生成有效的协议测试用例方面存在一定的局限性;而SFuzz专注于变异和校验,但缺乏路径引导的能力,从而在进行模糊测试时全面性较低。
发明内容
本申请提供一种基于源码的网络协议模糊测试方法、装置、设备及介质,其主要目的在于解决相关技术中提供的模糊测试时的全面性较低的问题。
为实现上述目的,本申请提供的一种基于源码的网络协议模糊测试方法,包括:选取预设的样本队列中的目标原始样本,对目标原始样本进行多样性变异,生成测试用例;对测试用例进行规范校验,得到规范测试用例;将规范测试用例发送至目标对象内进行执行,采集规范测试用例执行过程中的运行反馈数据;利用AFL的代码插桩统计运行反馈数据中的新路径信息,将新路径信息对应的目标新样本更新至样本队列中,并返回至选取预设的样本队列中的目标原始样本的步骤,直至样本队列的测试覆盖率大于预设的覆盖率阈值时,生成模糊测试报告。
为了解决上述问题,本申请还提供一种基于源码的网络协议模糊测试装置,包括:测试用例生成模块,用于选取预设的样本队列中的目标原始样本,对目标原始样本进行多样性变异,生成测试用例;测试用例校验模块,用于对测试用例进行规范校验,得到规范测试用例;运行反馈数据采集模块,用于将规范测试用例发送至目标对象内进行执行,采集规范测试用例执行过程中的运行反馈数据;模糊测试报告生成模块,用于利用AFL的代码插桩统计运行反馈数据中的新路径信息,将新路径信息对应的目标新样本更新至样本队列中,并返回至选取预设的样本队列中的目标原始样本的步骤,直至样本队列的测试覆盖率大于预设的覆盖率阈值时,生成模糊测试报告。
为了解决上述问题,本申请还提供一种设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器能够执行上述的基于源码的网络协议模糊测试方法。
为了解决上述问题,本申请还提供一种介质,介质中存储有至少一个计算机程序,至少一个计算机程序被设备中的处理器执行以实现上述的基于源码的网络协议模糊测试方法。
本申请实施例通过对目标原始样本进行变异和规范操作,将变异和校验相结合,生成多样化的测试用例,有利于确保测试用例符合规范和预期行为;将生成的测试用例发送给目标对象进行执行,并监控执行过程中的运行情况,有利于实时掌握测试用例的运行情况,并根据运行结果反馈的路径信息确定新路径,从而将路径引导和路径反馈相结合,能够更好地探索目标软件的潜在路径和漏洞;通过不断执行测试过程,不断改进路径引导和变异校验策略,可以逐步提高测试的效率和漏洞发现能力,使测试更加全面和高效。因此本申请提出的基于源码的网络协议模糊测试方法、装置、设备及介质,可以解决模糊测试时的全面性较低的问题。
附图说明
图1为本申请一实施例提供的基于源码的网络协议模糊测试方法的结构示意图;
图2为本申请一实施例提供的基于源码的网络协议模糊测试方法的流程示意图;
图3为本申请一实施例提供的基于源码的网络协议模糊测试装置的功能模块图;
图4为本申请一实施例提供的实现基于源码的网络协议模糊测试方法的设备的结构示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
现有技术中的模糊测试中基于覆盖指引的灰盒测试AFL(American Fuzzy Lop)主要关注路径引导和路径反馈,但在生成有效的协议测试用例方面有一定的局限性;又如模糊测试的SFuzz专注于变异和校验,但缺乏路径引导的能力,本申请一实施例提供了一种基于源码的网络协议模糊测试方法,及集成了路径引导、路径反馈、变异和校验功能的综合测试方法,可以使测试更加全面和高效,提高测试的适应性和效果。
参照图1所示,为本申请一实施例提供的基于源码的网络协议模糊测试方法的结构示意图,包括:AFL处理模块及SFuzz处理模块。
具体地,AFL处理模块将原始测试用例样本下载至样本队列中,并从样本队列中选取任一原始样本;SFuzz处理模块将选取的原始样本进行变异,得到变异文件,并将变异文件发送至执行对象中进行执行,实时监控执行过程中运行情况,收集运行结果和覆盖率信息,将变异文件中得到新路径信息更新至AFL处理模块中的样本队列中,从而一直迭代测试过程,通过不断改进路径引导和变异校验变异策略,逐步提高测试的效率和漏洞发现能力。
参照图2所示,为本申请一实施例提供的基于源码的网络协议模糊测试方法的流程示意图。在本实施例中,该基于源码的网络协议模糊测试方法包括:
S21、选取预设的样本队列中的目标原始样本,对目标原始样本进行多样性变异,生成测试用例。
本申请实施例中,目标原始样本是根据协议控制规范或者捕获工业控制网络协议数据流来构造正常的数据包,则从预先构建的样本队列中选取一个样本作为当前输入,即目标原始样本。
进一步地,为了生成多样化的测试用例,需要利用SFuzz对选定的目标原始样本对数据模型初始化,然后进行变异操作,以生成多样化的测试用例。
本申请其中一个实际应用场景中,SFuzz是模糊测试工具,专注于变异和校验,可检测出各种软、硬件***部件里的漏洞,但缺乏路径引导的能力,而AFL(American FuzzyLop,灰盒测试)主要关注路径引导和路径反馈,但在生成有效的协议测试用例方面存在一定的局限性,如难以模拟复杂的网络环境、缺乏协议语义理解、高度结构化的协议数据、不适合测试协议的状态机、无法对各层协议进行Fuzz,因此,需要一种集中了路径引导、路径反馈、变异和校验功能的综合测试。
本申请实施例中,测试用例是对目标原始样本进行变异之后所生成的具有多样性的测试用例。此外,网络协议通常是高度结构化的,包括复杂的数据格式和字段,而AFL的变异技术主要基于位翻转和随机变异,难以精确地生成符合协议格式和语义的有效测试输入,则可利用SFuzz对选定的目标原始样本对数据模型初始化,然后进行变异操作,生成多样性测试用例。
本申请实施例中,对目标原始样本进行多样性变异,生成测试用例,包括:根据目标原始样本的数据结构定义测试数据模型;根据测试数据模型的变异约束和变异结构生成变异策略;将目标原始样本作为初始变异种子,根据变异策略对初始变异种子进行多样性变异,得到目标变异种子;根据目标变异种子生成测试用例。
详细地,SFuzz根据目标原始样本的协议格式,通过对协议的解析分析,生成报文数据包,即种子输入,并根据目标原始样本的数据结构中的字段定义测试数据模型,有利于生成有意义的变异测试用例,其中测试数据模型是指测试用例包括目标原始样本的数据结构、数据操作和数据约束,是数据特征的抽象,如需要测试一个接收用户名和密码的登录功能,其中用户名是一个字符串,密码是一个字符串,则数据模型为用户名(Username):字符串,通常由字母和数字组成,长度在6到20个字符之间;密码(Password):整数,通常是一个6位,其定义的两个字段,包括字段类型和字段约束,根据数据模型生成测试用例,可以确保生成的输入数据符合预期的输入类型和格式。
具体地,可按照测试数据模型的字段变异约束和字段变异结构生成有效的变异策略,则变异应该遵循数据模型的约束和结构,进而将目标原始样本作为初始变异种子输入至SFuzz中进行变异操作,以生成变异之后的多样性目标变异种子,进而根据目标变异种子生成多样化的测试用例。
进一步地,在模式测试循环过程中,将对输入目标原始样本进行变异,则变异策略是根据变异约束和变异结构所生成的有效变异,以得到多样化测试用例。
本申请实施例中,变异策略包括位翻转、添加或删除数据、数值变换、字符替换、字符串拼接、截断数据及随机化排序。
详细地,变异策略中的位翻转是在输入数据中随机翻转一个或多个位,如将二进制数据的某些位从0变为1或从1变为0;添加或删除数据是添加或删除随机数量的数据,如在字符串中添加字符或删除字符;数值变换是对数字类型的输入进行随机数值变换,如将整数加上一个随机值或将浮点数减去一个随机小数;字符替换是子将输入数据中的一个或多个字符替换为其他字符,如将字符串中的一个字母替换为随机字母;字符串拼接是将不同的输入数据片段组合在一起形成新的输入,如将用户名和密码拼接在一起;截断数据是从输入数据中随机截断掉一部分数据,如从字符串的中间截断一段字符;随机化排序是对输入数据中的元素进行随机化排序,如将数组中的元素重新排列。
进一步地,在变异过程中,SFuzz可以通过校验算法对生成的测试用例进行验证,确保测试用例符合规范和预期行为。
S22、对测试用例进行规范校验,得到规范测试用例。
本发明其中一个实际应用场景中,AFL是基于模糊测试的技术,其目标是通过生成大量的随机输入来发现程序中的错误,然而,网络协议通常具有复杂的语义和约束(如校验和、哈希函数、数字签名等),AFL无法理解协议的语义,难以生成具有协议语义正确性的有效测试用例,因此,需要利用SFuzz中的校验方法对生成的测试用例进行验证,确保其符合规范和预期行为。
本申请实施例中,在模糊测试中,生成的测试用例可能包含一些无效或不符合规范的输入,这些输入可能无法被目标程序正确处理,甚至可能导致程序异常或崩溃。因此,对测试用例需要进行规范校验,以筛选出符合规范的、有效的测试用例,得到规范测试用例。
本申请实施例中,对测试用例进行规范校验,得到规范测试用例,包括:根据预设的校验需求生成校验正则表达式;按照校验正则表达式逐一对测试用例进行规范校验,得到规范测试用例。
详细地,校验需求是指对测试用例进行规范校验的需求,包括测试用例的约束和结构,进而根据约束和结构生成对测试用例进行校验的校验正则表达式,此外,可以根据在配置文件或命令行参数中设置的参数来控制校验行为,可能会包括数据类型验证、长度验证、字符范围验证、特殊字符验证。其中,对于测试用例的校验算法包括但不限于编程语言的验证函数、正则表达式、自定义规则。则验证函数是指许多编程语言都提供了内置的验证函数,用于检查字符串是否符合特定的格式或约束。如在Python中,可以使用isalpha()函数来验证字符串是否只包含字母;自定义规则是根据目标程序的特定要求编写自定义的规则来验证测试用例。
具体地,正则表达式是一种文本匹配工具,可以用于定义字符串的模式,可以使用正则表达式来检查测试用例是否符合预期的格式。如使用正则表达式‘^\d{6}$’来验证测试用例中是否为6个数字,或者‘^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$’来验证电子邮箱地址。
进一步地,逐一将测试用例与校验正则表达式进行匹配,筛选出符合规范的测试用例,从而得到规范测试用例,从大量生成的测试用例中筛选出有效的、合法的输入,从而提高模糊测试的效率和有效性。
S23、将规范测试用例发送至目标对象内进行执行,采集规范测试用例执行过程中的运行反馈数据。
本申请实施例中,将生成的规范测试用例发送至目标对象内进行执行,即将测试用例发送给目标软件***进行执行,并监控目标软件***的运行情况,收集测试的运行结果和覆盖率信息。
本申请实施例中,将规范测试用例发送至目标对象内进行执行,包括:通过预设的网络协议及目标对象的目标端口号构建数据包发包工具;利用数据包发包工具将规范测试用例发送至目标对象内进行执行。
详细地,AFL无法对各层网络协议进行Fuzz,针对不同网络层的协议数据包需要相应的发包器,因此,需要构建数据包发包工具,其中数据包发包工具是用于将规范测试用例发送至对象中进行执行,其中规范测试用例相当于数据包。此外,通常使用特定的通信协议进行数据交换,则需要根据网络协议选择合适的编程语言实现工业控制网络协议数据包发包工具,根据协议规范,编写代码来构造符合通信协议格式的数据包。在构造数据包时,要注意字节序、数据类型、校验和等细节,如果通信协议使用TCP/IP或UDP进行数据传输,您可能需要选择适合的网络库来处理网络通信。如在Python中可以使socket库,而在Java中可以使用Socket或DatagramSocket类。
进一步地,提取目标对象的目标端口号,通过计算机语句Python用于使用socket库发送自定义数据包至指定目标地址和端口,从而通过数据包发包工具将规范测试用例发送至目标对象内进行执行,通过目标程序自动执行规范测试用例,并通过监视器监视目标***的运行情况。
本申请实施例中,运行反馈数据是指执行规范测试用例的运行结果和测试覆盖率信息,其中运行结果包括执行时间、测试结果判断、错误数量统计及输出结果;测试覆盖率信息包括总体覆盖率统计、被覆盖的代码行、未被覆盖的代码行、分支覆盖信息、函数覆盖信息。
本申请实施例中,采集规范测试用例执行过程中的运行反馈数据,包括:通过预设的网络监视器监视规范测试用例执行过程中的运行状况;根据预设的代码覆盖率命令行提取运行状况中的代码覆盖率;根据预设的打印函数提取运行状况中的测试运行结果;将代码覆盖率及测试运行结果确定为运行反馈数据。
详细地,通过网络监视器监视规范测试用例执行过程中的运行状况,其运行状况包括日志记录、异常处理、运行结果输出、覆盖率数据、性能指标检测及自定义检测,进而根据预设的代码覆盖率命令提取运行状况中的代码覆盖率,则可通过Coverage.py或pytest-cov提取代码覆盖率,其中代码覆盖率包括总体覆盖率、行覆盖率信息、分支覆盖信息、函数覆盖信息,则分支覆盖信息是衡量代码中的分支覆盖情况;行覆盖率信息度量多少行代码已经被执行过;函数覆盖信息是度量多少函数已经被执行过。
具体地,通过编程语言提供的打印函数或日志库来输出运行状况中的测试运行结果,则测试运行结果包括执行时间、测试结果判断、错误数量统计及输出结果,其中执行时间是指在测试用例开始执行前记录当前时间戳,然后在测试用例执行完毕后再记录一次当前时间戳,通过计算时间差,即可得到测试用例的执行时间;测试结果判断是根据测试用例的预期结果和实际执行结果,判断测试是否通过,如果测试用例的期望输出与实际输出一致,则测试通过;如果存在不符合预期的情况,则测试不通过;错误数量统计是在测试用例执行过程中,可以记录发生的错误数量,包括断言失败、异常抛出等情况;输出结果是将收集到的运行结果输出到控制台、日志文件或报告中。
进一步地,将测试的运行结果反馈至AFL,AFL会统计有没有触发新的路径,以便可以高效地进行模糊测试。
S24、利用AFL的代码插桩统计运行反馈数据中的新路径信息,将新路径信息对应的目标新样本更新至样本队列中;然后返回执行上述S21。
S25、当样本队列的测试覆盖率大于预设的覆盖率阈值时,生成模糊测试报告。
本申请实施例中,AFL会对目标程序进行代码插桩,即在目标程序的关键位置***代码,以便在运行时收集运行反馈数据,插桩过程可以通过静态或动态分析完成,在运行测试用例时,***桩的目标程序会记录代码块的覆盖情况和执行路径,并将处理结果反馈给AFL,AFL会统计处理结果中的新路径信息。
本申请实施例中,在利用AFL的代码插桩统计运行反馈数据中的新路径信息之前,还包括:利用AFL对预设的目标程序进行代码插桩,得到目标插桩代码块;根据目标插桩代码块记录运行反馈数据。
详细地,利用AFL对目标程序的关键位置进行代码插桩,从而得到具有插桩的目标插桩代码块,并在运行测试用例时,***桩的目标程序会记录代码块的覆盖情况和执行路径,每次程序执行过程中,AFL会检查代码块是否被执行,并记录下被执行的代码块,即目标插桩代码会记录运行反馈数据。
进一步地,根据反馈至AFL的运行反馈数据,AFL会统计有没有触发新的路径,若触发新的路径,则将新路径更新至样本队列中。
本申请实施例中,新路径信息是指若当前测试用例触发了一些之间未曾触发的代码块,则AFL会将这些新的执行路径信息标记位新路径。
本申请实施例中,利用AFL的代码插桩统计运行反馈数据中的新路径信息,包括:利用AFL的代码插桩统计运行反馈数据中的覆盖代码块;将覆盖代码块与目标原始样本中的目标代码块进行对比,得到目标新代码块;将目标新代码块作为新路径信息。
详细地,利用AFL进行代码插桩后,统计运行反馈数据中的覆盖代码块,即在测试过程中,每次执行一个代码块后,该代码块会被标记为已执行,可以使用计数器或者位图的方式记录哪些代码被执行,哪些代码未被执行,并将覆盖代码块与目标原始样本中的目标代码块进行对比,从而可得到新路径信息,实现路径引导。
示例性地,若目标原始样本中的目标代码块为A,B,C,而经过AFL代码插桩之后的覆盖代码块为A,B,C,D,进而将目标代码块与覆盖代码块进行对比,从而得到D为目标新代码块,将D作为新路径信息,并将D更新至样本队列中,则此时的样本队列中的样本为A,B,C,D;若无新路径信息产生,则将目标原始样本进行丢弃。
进一步地,通过不断迭代执行测试过程,即不断返回至选取预设的样本队列中的目标原始样本的步骤,直至样本队列的测试覆盖率大于预设的覆盖率阈值时,生成模糊测试报告,其中模糊测试报告是指测试用例的覆盖率。但SFuzz通过随机化序列技术,只要Fuzzing一直在运行,可以不断不断的生成测试用例,通过对这些测试用例的执行,最终得到测试报告。因此,通过不断改进路径引导和变异校验策略,逐步提高测试的效率和漏洞发现能力。
如图3所示,是本申请一实施例提供的基于源码的网络协议模糊测试装置的功能模块图。
本申请基于源码的网络协议模糊测试装置300可以安装于设备中。根据实现的功能,基于源码的网络协议模糊测试装置300可以包括测试用例生成模块301、测试用例校验模块302、运行反馈数据采集模块303及模糊测试报告生成模块304。本申请模块也可以称之为单元,是指一种能够被设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
测试用例生成模块301,用于选取预设的样本队列中的目标原始样本,对目标原始样本进行多样性变异,生成测试用例;
测试用例校验模块302,用于对测试用例进行规范校验,得到规范测试用例;
运行反馈数据采集模块303,用于将规范测试用例发送至目标对象内进行执行,采集规范测试用例执行过程中的运行反馈数据;
模糊测试报告生成模块304,用于利用AFL的代码插桩统计运行反馈数据中的新路径信息,将新路径信息对应的目标新样本更新至样本队列中,并返回至选取预设的样本队列中的目标原始样本的步骤,直至样本队列的测试覆盖率大于预设的覆盖率阈值时,生成模糊测试报告。
详细地,本申请实施例中基于源码的网络协议模糊测试装置300中的各模块在使用时采用与上述图1至图2中的基于源码的网络协议模糊测试方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图4所示,是本申请一实施例提供的实现基于源码的网络协议模糊测试方法的设备的结构示意图。
设备可以包括处理器401、存储器402、通信总线403以及通信接口404,还可以包括存储在存储器402中并可在处理器401上运行的计算机程序,如基于源码的网络协议模糊测试程序。
其中,处理器401在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器101是设备的控制核心(Control Unit),利用各种接口和线路连接整个设备的各个部件,通过运行或执行存储在存储器402内的程序或者模块(例如执行基于源码的网络协议模糊测试程序等),以及调用存储在存储器402内的数据,以执行设备的各种功能和处理数据。
存储器402至少包括一种类型的介质,介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器402在一些实施例中可以是设备的内部存储单元,例如该设备的移动硬盘。存储器402在另一些实施例中也可以是设备的外部存储设备,例如设备上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器402还可以既包括设备的内部存储单元也包括外部存储设备。存储器402不仅可以用于存储安装于设备的应用软件及各类数据,例如基于源码的网络协议模糊测试程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
通信总线403可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。总线被设置为实现存储器402以及至少一个处理器401等之间的连接通信。
通信接口404用于上述设备与其他设备之间的通信,包括网络接口和用户接口。可选地,网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该设备与其他设备之间建立通信连接。用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备中处理的信息以及用于显示可视化的用户界面。
图中仅示出了具有部件的设备,本领域技术人员可以理解的是,图中示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与至少一个处理器401逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。设备还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
具体地,处理器401对上述指令的具体实现方法可参考附图对应实施例中相关步骤的描述,在此不赘述。
进一步地,设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个介质中。介质可以是易失性的,也可以是非易失性的。例如,计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本申请还提供一种介质,介质存储有计算机程序,计算机程序在被设备的处理器所执行时,可以实现上述实施例的基于源码的网络协议模糊测试方法。需要说明的是,介质可以是易失性的,也可以是非易失性的。例如,介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。***权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。
Claims (11)
1.一种基于源码的网络协议模糊测试方法,其特征在于,所述方法包括:
选取预设的样本队列中的目标原始样本,对所述目标原始样本进行多样性变异,生成测试用例;
对所述测试用例进行规范校验,得到规范测试用例;
将所述规范测试用例发送至目标对象内进行执行,采集所述规范测试用例执行过程中的运行反馈数据;
利用AFL的代码插桩统计所述运行反馈数据中的新路径信息,将所述新路径信息对应的目标新样本更新至所述样本队列中,并返回至所述选取预设的样本队列中的目标原始样本的步骤,直至所述样本队列的测试覆盖率大于预设的覆盖率阈值时,生成模糊测试报告。
2.如权利要求1所述的基于源码的网络协议模糊测试方法,其特征在于,所述对所述目标原始样本进行多样性变异,生成测试用例,包括:
根据所述目标原始样本的数据结构定义测试数据模型;
根据所述测试数据模型的变异约束和变异结构生成变异策略;
将所述目标原始样本作为初始变异种子,根据所述变异策略对所述初始变异种子进行多样性变异,得到目标变异种子;
根据所述目标变异种子生成所述测试用例。
3.如权利要求2所述的基于源码的网络协议模糊测试方法,其特征在于,所述变异策略包括位翻转、添加或删除数据、数值变换、字符替换、字符串拼接、截断数据及随机化排序。
4.如权利要求1所述的基于源码的网络协议模糊测试方法,其特征在于,所述对所述测试用例进行规范校验,得到规范测试用例,包括:
根据预设的校验需求生成校验正则表达式;
按照所述校验正则表达式逐一对所述测试用例进行规范校验,得到规范测试用例。
5.如权利要求1所述的基于源码的网络协议模糊测试方法,其特征在于,所述将所述规范测试用例发送至目标对象内进行执行,包括:
通过预设的网络协议及所述目标对象的目标端口号构建数据包发包工具;
利用所述数据包发包工具将所述规范测试用例发送至目标对象内进行执行。
6.如权利要求1所述的基于源码的网络协议模糊测试方法,其特征在于,所述采集所述规范测试用例执行过程中的运行反馈数据,包括:
通过预设的网络监视器监视所述规范测试用例执行过程中的运行状况;
根据预设的代码覆盖率命令行提取所述运行状况中的代码覆盖率;
根据预设的打印函数提取所述运行状况中的测试运行结果;
将所述代码覆盖率及所述测试运行结果确定为所述运行反馈数据。
7.如权利要求1所述的基于源码的网络协议模糊测试方法,其特征在于,在所述利用AFL的代码插桩统计所述运行反馈数据中的新路径信息之前,还包括:
利用AFL对预设的目标程序进行代码插桩,得到目标插桩代码块;
根据所述目标插桩代码块记录所述运行反馈数据。
8.如权利要求7所述的基于源码的网络协议模糊测试方法,其特征在于,所述利用AFL的代码插桩统计所述运行反馈数据中的新路径信息,包括:
利用AFL的代码插桩统计所述运行反馈数据中的覆盖代码块;
将所述覆盖代码块与所述目标原始样本中的目标代码块进行对比,得到目标新代码块;
将所述目标新代码块作为所述新路径信息。
9.一种基于源码的网络协议模糊测试装置,其特征在于,所述装置包括:
测试用例生成模块,用于选取预设的样本队列中的目标原始样本,对所述目标原始样本进行多样性变异,生成测试用例;
测试用例校验模块,用于对所述测试用例进行规范校验,得到规范测试用例;
运行反馈数据采集模块,用于将所述规范测试用例发送至目标对象内进行执行,采集所述规范测试用例执行过程中的运行反馈数据;
模糊测试报告生成模块,用于利用AFL的代码插桩统计所述运行反馈数据中的新路径信息,将所述新路径信息对应的目标新样本更新至所述样本队列中,并返回至所述选取预设的样本队列中的目标原始样本的步骤,直至所述样本队列的测试覆盖率大于预设的覆盖率阈值时,生成模糊测试报告。
10.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至8中任意一项所述的基于源码的网络协议模糊测试方法。
11.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任意一项所述的基于源码的网络协议模糊测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310990363.3A CN117155831A (zh) | 2023-08-07 | 2023-08-07 | 基于源码的网络协议模糊测试方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310990363.3A CN117155831A (zh) | 2023-08-07 | 2023-08-07 | 基于源码的网络协议模糊测试方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117155831A true CN117155831A (zh) | 2023-12-01 |
Family
ID=88907068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310990363.3A Pending CN117155831A (zh) | 2023-08-07 | 2023-08-07 | 基于源码的网络协议模糊测试方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117155831A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648262A (zh) * | 2024-01-29 | 2024-03-05 | 中兴通讯股份有限公司 | 模糊测试方法、存储介质和电子装置 |
CN117827676A (zh) * | 2023-12-18 | 2024-04-05 | 北京水木羽林科技有限公司 | 一种基于qemu的黑盒覆盖率引导协议模糊测试的方法和*** |
-
2023
- 2023-08-07 CN CN202310990363.3A patent/CN117155831A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117827676A (zh) * | 2023-12-18 | 2024-04-05 | 北京水木羽林科技有限公司 | 一种基于qemu的黑盒覆盖率引导协议模糊测试的方法和*** |
CN117648262A (zh) * | 2024-01-29 | 2024-03-05 | 中兴通讯股份有限公司 | 模糊测试方法、存储介质和电子装置 |
CN117648262B (zh) * | 2024-01-29 | 2024-06-07 | 中兴通讯股份有限公司 | 模糊测试方法、存储介质和电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117155831A (zh) | 基于源码的网络协议模糊测试方法、装置、设备及介质 | |
CN111901327B (zh) | 云网络漏洞挖掘方法、装置、电子设备及介质 | |
CN112131115B (zh) | 一种智能合约模糊测试的方法、装置及存储介质 | |
CN101853200B (zh) | 一种高效动态软件漏洞挖掘方法 | |
KR20090065747A (ko) | 부하 테스트를 위한 패킷의 부하 재생성 시스템 및 그 방법 | |
Sun et al. | Mutation testing for integer overflow in ethereum smart contracts | |
CN108470003A (zh) | 模糊测试方法、装置和*** | |
CN111159012A (zh) | 一种基于深度学习的智能合约漏洞检测方法 | |
CN114742529B (zh) | 一种实验室设备维修管理*** | |
CN115729815A (zh) | 基于加权随机的模糊测试方法、装置、设备及存储介质 | |
CN110287700A (zh) | 一种iOS应用安全分析方法及装置 | |
CN115119197B (zh) | 基于大数据的无线网络风险分析方法、装置、设备及介质 | |
CN116366512A (zh) | 测试用例生成方法、装置及计算机可读存储介质 | |
CN110084971A (zh) | 自助服务终端的操作方法及自助服务终端 | |
CN113449034B (zh) | 一种基于区块链网络的智能合约数据安全管理方法、***及存储介质 | |
Whalen et al. | Hidden markov models for automated protocol learning | |
CN114116488A (zh) | 测试覆盖率信息获取方法、装置、设备及存储介质 | |
CN114978964A (zh) | 基于网络自检的通信公告配置方法、装置、设备及介质 | |
CN114036068A (zh) | 基于隐私安全的更新检测方法、装置、设备及存储介质 | |
Sabahi-Kaviani et al. | Behavioral model identification and classification of multi-component systems | |
CN105446857A (zh) | 一种故障诊断方法及*** | |
Heßeling et al. | Reversible network covert channel by payload modulation in streams of decimal sensor values | |
CN113360398B (zh) | 混合应用程序测试方法、装置、设备及介质 | |
CN111294350B (zh) | 一种快速适应协议变化的数据处理*** | |
CN112613254B (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 |