网络协议模糊测试综述.pdf
《网络协议模糊测试综述.pdf》由会员分享,可在线阅读,更多相关《网络协议模糊测试综述.pdf(9页珍藏版)》请在咨信网上搜索。
1、模糊测试作为最有效的漏洞挖掘方法,在网络协议安全检测领域应用广泛,并且诞生了大量的研究成果。目前还没有工作对协议模糊测试技术进行全面的总结和分析。首先回顾了协议模糊测试的发展历程,按照其工作流程(预处理,种子生成,执行过程监测以及结果分析)总结现有协议模糊测试所做的工作以及不足;之后,分析了不同环境下协议模糊测试技术的挑战以及解决方法;最后讨论了当前协议测试方法存在的局限性,以及未来的发展方向。关键词:协议;模糊测试;漏洞挖掘;工作流程;固件设备安全中图分类号:文献标志码:文章编号:():,(,;,;,):,:,:;网络协议描述了两个通信实体相互传递数据的规范,在计算机网络中发挥着重要的作用。
2、然而,在实现过程中由于开发人员理解上的偏差,会在其实现中引入漏洞。一些黑客利用协议中的漏洞传播病毒对互联网中的设备发起远程攻击。例如,年 病毒感染了全球超过 万台主机,造成了 亿美元的经济损失 。该病毒正是利用了 协议中的 漏洞在全球范围大肆传播。本文根据 数据库进行统计,最近半年协议中高危漏洞占比超过 ,因此及时发现并修补协议中存在的安全漏洞极为重要。模糊测试自 年提出以来 ,经过 多年的发展已经成为一种广泛使用的漏洞检测方法。模糊测试通过发送大量随机的输入,检测程序中存在的漏洞。据 一项调查显示,超过 的漏洞是通过模糊测试发现的。模糊测试作为目前最常见、最有效的漏洞检测技术,在协议的安全测
3、试领域得到了广泛的应用。年诞生的首个实用性模糊测试工具 就是针对协议开发的,这也说明协议是模糊测试的重要目标。在此之后,协议模糊测试一直作为网络和信息安全的热点领域出现了大量的研究成果,其中具有代表性的工作包括 、等。然而,现有的综述文章要么缺乏最近的研究工作 ,要么分析得并不全面 ,因此需要对协议模糊测试领域取得的成果进行重新梳理和总结。本文从以下四个方面对协议模糊测试研究领域进行总结:)以具有代表性的工具诞生时间节点,分析回顾协议模糊测试发展历程,比如 以自动化的方式对协议进行模糊测试,在此之前的研究需要大量的手工工作以及待测协议的先验知识;)以协议模糊测试的流程为脉络,针对每个环节总结出
4、其面临的挑战以及现有的研究成果解决这些问题采用的方法;)在不同的应用场景下,比如物联网、工业控制系统开发协议有着独特的要求,对这些场景下的协议进行模糊测试取得的成果进行总结;)分析目前协议模糊测试技术存在的不足,并指出未来的研究方向,最后对全文进行总结。协议模糊测试发展历程自 诞生以来,协议模糊测试技术经过 多年的发展,出现了大量的研究成果。如图 所示,本文根据具有重要意义研究成果出现的时间,对协议模糊测试工具发展历程进行了梳理。其中以 的诞生作为划分节点,在此之前协议模糊测试主要采用黑盒的方法,之后灰盒协议模糊测试技术出现了大量的研究成果。黑盒协议模糊测试阶段黑盒模糊测试技术仅考虑程序的输入
5、以及输出,不关心执第 卷第 期 年 月计 算 机 应 用 研 究 行过程中内部的状态信息。根据输出结果以及执行输入后程序是否正常运行来判断目标的状态。黑盒模糊测试技术具有以下优势:)不需要程序的源码,这对协议来说尤为重要,因为在工控以及互联网场景下有大量的私有协议;)设计相对简单,便于研究人员开发;)因为其不考虑目标程序的内部状态信息,执行速度较快。图 协议模糊测试关键阶段 年,协议模糊测试发展初期没有考虑被测协议复杂的状态信息,模糊器发送完全随机的输入。这个阶段出现的代表性协议模糊测试工具有 、等。由奥尼大学的安全团队开发,根据协议规范生成错误的输入触发特定的漏洞,如格式化字符串、缓冲区溢出
6、漏洞。年 开发的 框架提供了一系列允许快速和高效开发网络协议模糊测试器的 。将协议分组为不同的块,每个块都可以单独进行模糊测试。但是,由于 提供的块抽象过于简略,开发人员难以轻松地建模有状态协议和复杂消息及其依赖关系。此外,基于 的模糊器必须使用 语言编写,因此开发过程可能比使用更复杂。是 年开发的一款用于测试 服务的黑盒模糊测试工具,它将 服务的 文件作为输入,并使用专门制作的有效负载测试特定的 服务。年 开发出 ,通过手动构建 文件定义生成的数据模型。时至今日,仍是工业界广泛使用的一款模糊测试工具。年,研究人员开始通过构建协议的状态机模型,开发有状态的协议模糊测试工具。根据协议状态机简洁地
7、表示了协议实现的关键状态和转换条件,可用于系统地指导模糊测试的过程,探测深层次的漏洞。年,等人 构建了第一个有状态的黑盒协议模糊测试工具 。需要测试人员从 文档中手动提取协议规范,进而得到协议的字段特征、协议中信息交换的语法以及状态机。测试人员根据状态机发送特定序列的消息到达待测定的状态,在该状态下根据协议规范生成大量随机的输入测试目标程序中的漏洞。但是,在开启一个模糊测试进程之前,需要有经验的研究人员花费大量的精力完成协议规范提取工作。同年,等人 开发了 ,依据应用程序层协议规范生成符合格式要求的测试报文。该规范描述了状态的定义、迁移路径以及可以在每个状态下发送消息的语法。其输入基于启发式生
8、成,以查找特定的漏洞,如缓冲区溢出、格式字符串漏洞等。在每一个状态下,都会生成能被协议程序接受但参数无效的测试报文。是广泛使用的网络协议模糊测试框架,目前已停止维护,继承了它的工作。具体包括数据定义、数据驱动、会话管理、监视代理、辅助工具和文件系统六大模块。测试人员只需关注数据生成模块中测试报文模板的编写,其他部分都可以自动完成。年 等人 开发了 ,以解决多数模糊器仅依赖随机注入生成测试数据,但没有考虑目标协议程序的语法、语义以及状态问题。通过一个无上下文的 描述协议的确切语法。此外,基于捕获到的通信流量,利用机器学习的方法,构建协议状态机用于模拟系统中的状态转换。是第一个能够生成复杂随机输入
9、的 协议模糊器。上述模糊器都依赖研究人员从协议规范中提取协议格式以及状态机模型,生成符合格式的输入。此外 、需要突变字段以及发送特定的报文序列到达测试场景。这种方式需要研究人员过多地参与且模糊测试的效率较低。为了解决 等协议模糊测试工具目标单一,严重依赖对协议的先验知识和大量手工操作的问题。研究人员尝试使用自动化的方式推断协议格式以及状态机模型,指导模糊测试的执行。年 等人 开发了 ,通过充当客户端与被测试程序的中间人,获取通信流量,在此基础上自动化地推断协议规范。使用基于 算法 的 工具 将静态数据字段和动态数据字段分开,并将动态数据字段与类型和长度信息关联起来获取语法信息,构建通用报文序列
10、。年文献 采用类似的方法,从获取的网络流量中推断出协议的报文格式以及状态模型,检测协议中的漏洞。年文献 开发了 ,并将其与 集成。通过模型提取器获取 中定义的模型,区分报文中的静态字段以及可变字段。之后,通过模糊测试引擎将可变字段设置成特殊值进行测试。等人 通过对协议规范进行分析,构建有规则的协议状态机。与之前的工作不同,在构建完成后不对所有的状态迁移路径进行测试,而是首先进行一个判断:如果从一种状态到另一种状态的转换过程中不会发生异常,那么该状态迁移路径是安全的。安全路径对于漏洞探测是没有意义的,因此可以将其忽略,从而提高模糊测试的效率。年文献 等人使用 库,通过改进的 算法 从 协议中实现
11、自动提取状态机。通过分析这些状态机,可以发现协议流中的逻辑缺陷。年文献 基于文献 ,的工作,利用自然语言处理技术从 文档中自动获取协议状态机。上述工作减少了研究人员的手工工作,在一定程度上提升了自动化水平。然而这种方式的准确性以及可扩展性仍需进一步提高。此外,对私有协议进行模糊测试时,由于缺乏协议的描述文档,需要通过逆向的方法获取其协议格式以及状态转换模型。所以,上述通过 文档构建协议状态机模型的方法无法直接适用于私有协议。年 等人 将协议逆行技术与模糊测试技术相结合,构建了一款针对私有协议的模糊测试工具 。采用一种基于概率的方法,从获取到的流量中自动提取协议格式以及一个二阶马尔可夫模型,该模
12、型提供了一个真实状态机的概率近似。以字节为单位推断协议格式,更适用于文本类协议的模糊测试,对二进制协议逆向结果不够准确。年文献 将 作为最小的单元推断协议的格式,实现了一个通用的协议模糊测试框架 。可以快速分析出协议的特征,自动生成测试用例以及自动进行模糊测试。计 算 机 应 用 研 究第 卷 灰盒协议模糊测试阶段 年诞生了第一个灰盒协议模糊测试工具 ,之后出现了许多类似的研究成果,如 、等。相较于黑盒模糊测试技术,灰盒模糊测试技术一方面省去了协议格式推断以及协议状态模型的构建过程;另一方面,通过反馈信息指导测试用例的生成,并且可以保留有价值的种子对其进行进一步测试,提高测试效率。年文献 在
13、的基础上实现了第一个有状态的灰盒协议模糊测试工具 。捕获客户端与服务端通信时的流量作为初始种子,在模糊测试过程将状态码以及代码覆盖率作为反馈信息,保留有价值的种子对其进行进一步测试。将响应中的状态码作为状态信息,指导模糊器探索协议的状态空间。之后出现了大量的研究工作,对 存在的不足进行改进。如前文所述,依赖响应报文的内容推断协议状态,因此必须使用特定的解析器从响应中提取状态码。对于响应中不包含状态码的协议,无法推断出其状态信息进行有效的模糊测试。在 的基础上设计并实现了 ,通过适用性更强且粒度更细的长生命周期变量识别网络协议的状态。等人 认为不是所有的协议状态都同等重要,并且模糊测试的时间有限
14、,需要一个有效的状态选择算法优先考虑渐进的状态。为此在 的基础上实现了 算法,对协议的状态进行评估。年文献 针对 通信速度慢,深层次状态无法直接到达,以及难以覆盖到深层的状态空间的问题,在其基础上设计并实现了 。保存了网络协议程序的进程上下文(即进程快照),以便在模糊器第一次发送前缀消息后进行模糊处理。当需要模糊一个特定的状态时,只需要恢复快照,并发送随后的突变消息。此外,设计了一种消息链分析算法来探索更深层次的协议状态。将缓慢的异步网络通信转换为基于 域套接字的快速同步通信,并且加快所有文件操作重定向到内存文件系统的过程,提高灰盒协议模糊测试的速度。协议模糊测试工作流程协议模糊测试如图 所示
15、,可以分为预处理、种子生成、执行过程检测、结果分析四个步骤。在协议模糊测试中预处理主要是为了获取规范或者对源码进行插装。种子生成是协议模糊测试中最为关键的一个步骤,因为不符合规则的种子会在开始阶段被拒绝。依据种子生成方式的不同有基于生成以及基于突变两种方式。灰盒模糊测试中,根据执行过程中的反馈信息得到被测程序的当前状态,保留有价值的种子以及调整输入队列中种子的优先级,节省模糊测试的时间;另一方面,存储输出的异常信息以及造成此次异常的测试用例。结果分析阶段则是对测试过程中出现的异常行为进行调试,确定漏洞成因。图 协议模糊测试工作流程 预处理预处理有以下两种目的:)通过协议文档手动提取、协议逆向方
16、式自动获取和协议实现动态获取三种方式获取协议的格式以及状态转换模型;)在灰盒协议模糊测试中,对程序进行插桩获取反馈信息。获取协议规范)从协议规范中获取协议模糊测试初期,研究人员针对特定的协议开发模糊测测试工具。、等工具从该协议的公开文档中手动提取协议格式以及状态转换模型。这种方法需要研究人员花费大量的时间,并且不适用于没有公开文档的私有协议。为了克服手动提取带来的人工开销,研究人员开始关注通过自动化的方式,从协议文档中获取协议规范。这种自动化的方法往往与机器学习、人工智能相结合,尽量减少人工参与。比如,使用特殊语言描述 文档,获取协议格式以及状态转换模型。文献 将自然语言处理技术应用于协议规范
17、的提取,并使用零次学习(,)提高准确率,还可以方便适用于不同的协议。上述方法在一定程度上增加了自动化的程度,然而,这些方法仅适用于具有协议规范文档的开源协议。)通过协议逆向技术自动获取协议逆向技术不依靠文档规范,以自动化的方式获取协议格式以及状态转换模型。协议格式逆向过程中,首先要使用 、等嗅探工具作为辅助捕获大量的网络流量,并且,这些流量要尽可能覆盖协议的不同状态,这样才能够对程序进行充分的测试以保证逆向结果的准确性。在逆向时,通常按照报文聚类、序列对比或者概率推断的过程获取协议格式以及协议状态机模型。、以及 都是采用协议逆向的方法通过网络流量获取协议的格式以及状态转换关系。以及 更适用基于
18、文本的协议,以 为基本单元,针对二进制协议的逆向结果更加准确,并且具有良好的拓展性。张蔚瑶等人 基于协议特征库推断出协议格式,并且使用循环比对法识别语义信息,提高逆向结果的准确性。上述通过协议通信流量获取到的协议适用性更高,但有部分研究工作采用基于指令序列的方法获取协议格式结果。等人 使用指令追踪的方法构建会话图表示协议状态转换。然后,通过展开策略将其转换为有向无环图,避免模糊测试器长时间陷入一个循环。这种方式能够在协议逆向中获取到更为准确的结果,不过指令追踪需要有良好的执行环境,这在测试嵌入式设备时往往是不可行的。)通过协议实现动态获取动态获取的方式可以分为一致性测试以及构建测试驱动程序两种
19、方式。采用一致性测试的工具,比如 通过构建唯一输入输出序列,确定完整的协议状态转换模型;另一种方式则是通过协议实现程序的源码,构建测试驱动程序。此外,这种方式还需提供一个可以发送到被测试的服务(,)的消息列表(也称为输入字母表),以及一个将 重置为其初始状态的命令。构建的测试驱动程序能够将输入的字符解析为可以发送到测试服务的具体报文。依据 的响应作出假设,并给出假设的判定条件,尽可能地推断出准确的协议状态机。如 、使用 算法的改进版本 获取 协议状态机。首先依据 接收到的响应为状态机作出假设,之后验证这些假设与实际状态机的等价性。如果模型不等价,则返回一个反例,并重新定义假设。在进行等价检查时
20、,使用 的改进版本为等价检查指定一个深度。该算法只寻找不超过深度上界的反例轨迹,如果找不到,则认为状态机的当前假设与已实现的假设等价。第 期徐威,等:网络协议模糊测试综述 使用的方法可以在一定程度上避免状态空间爆炸问题,得到尽可能近似的结果。然而,它需要提前假定一个 角色,此步骤在实施过程中通常比较困难。相比较而言,通过一致性测试确定唯一输入输出序列,其相关理论更为成熟,有着很高的路径覆盖率,可以确保结果的正确性,但是需要大量的测试时间。构建测试驱动程序的方式,自动化的程度更高,但是需要对协议程序源码有着很好的理解,并且仅能得到近似的结果。除了上述方法外还有一些其他的方法,如 通过集成的 框架
21、自动提取协议模型;等人 使用脚本将实际的通信流量自动转换为协议和关系描述格式;使用预定义的格式描述状态格式,之后通过深度优先算法来获取协议的状态迁移路径。解决了状态机中存在循环,造成的状态空间覆盖低的问题。然而,这种方法要求研究人员掌握待测协议的先验知识,并且需要一定的手工操作。表 对不同的协议规范获取方式进行了总结:通过文本规范手动获取的方式,推断出的结果可能更加准确。然而,这种方法不仅需要掌握协议的先验知识,还会消耗研究人员大量的精力;通过自然语言处理获取的方式,在一定程度上提高了自动水平,但其准确性有待进一步的提升。此外,以上两种方法仅支持公开的协议。通过协议逆向技术获取,自动化程度更高
22、,能够同时支持开源协议与私有协议,但是逆向结果不够准确或者执行条件比较严苛;通过协议实现程序动态获取,需要在理解程序源码的基础上编写 ,进而推断出与实际情况近似的协议状态机。执行一致性测试构建唯一输入输出序列能够得到更加准确的结果,但是执行时间较长。表 协议规范获取方法总结 获取方法工具支持类型对比分析通过协议文档获取 、等开源协议从协议文档中手动获取,推断的结果准确度高,但依赖研究人员的经验 开源协议使用特殊语言描述 文档,实现了一定的自动化,结果不够准确文献 开源协议将自然语言处理技术应用于协议规范的提取,准确性较高通过协议逆向技术自动获取 文本类协议其只利用协议头部报文 进行聚类,存在较
23、多冗余,序列对齐结果并不准确 通用使用二阶马尔可夫链推断协议状态机,但更适合文本类协议,二进制协议推断结果不够准确 通用以 为基本单位,更适合二进制类协议的格式推断通过协议实现动态获取 开源协议通过构建唯一输入输出序列,得到协议状态模型,结果更准确,需要花费的时间长,以及一定的人工参与 开源协议自动化程度较高,但是需要基于协议程序源码的理解手动构建 ,推断到近似的结果 插桩对于灰盒模糊测试工具来说,在测试程序执行之前需要对源代码进行插桩获取程序执行过程中的反馈信息,如路径覆盖率信息、内存信息、函数变量取值等。根据反馈信息的不同,插桩方式也不同,以 为代表的工具,沿用了 的插桩思想,采用静态的方
24、式对程序源码进行插桩。这种插桩方式仅仅可以统计代码的覆盖率信息,无法直接获取协议的状态信息。后来的研究人员发现,网络服务应用程序都是基于网络事件循环,当接收到客户端发来的消息时,网络事件循环对该消息进行处理,完成后,重新等待新消息的到来。在此循环过程中,长生命周期变量的更新在一定程度上能够反映程序的状态,而短生命周期变量仅在循环内有效,因此可以使用更加容易获取的长生命周期变量来表示状态。使用这种方式时,为了获取长周期变量,需要在编译时进行插桩。此类协议模糊测试工具不仅在代码分支处插入原生 提供的用于统计覆盖率信息的桩代码,还在内存分配 释放处插入一套新设计的桩代码。因此,这种方式也引入了昂贵的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 协议 模糊 测试 综述
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。