欢迎来到咨信网! | 成为共赢成为共赢 咨信网助力知识提升 | 自信网络旗下运营:咨信网 自信AI创作助手 自信AI导航
咨信网
全部分类
  • 包罗万象   教育专区 >
  • 品牌综合   考试专区 >
  • 管理财经   行业资料 >
  • 环境建筑   通信科技 >
  • 法律文献   文学艺术 >
  • 学术论文   百科休闲 >
  • 应用文书   研究报告 >
  • ImageVerifierCode 换一换
    首页 咨信网 > 资源分类 > PDF文档下载
    分享到微信 分享到微博 分享到QQ空间

    网络协议模糊测试综述.pdf

    • 资源ID:728781       资源大小:1.02MB        全文页数:9页
    • 资源格式: PDF        下载积分:10金币
    微信登录下载
    验证码下载 游客一键下载
    账号登录下载
    三方登录下载: QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    验证码: 获取验证码
    温馨提示:
    支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    VIP下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    声明    |    会员权益      获赠5币      写作写作
    1、填表:    下载求助     索取发票    退款申请
    2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
    6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    7、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

    网络协议模糊测试综述.pdf

    1、模糊测试作为最有效的漏洞挖掘方法,在网络协议安全检测领域应用广泛,并且诞生了大量的研究成果。目前还没有工作对协议模糊测试技术进行全面的总结和分析。首先回顾了协议模糊测试的发展历程,按照其工作流程(预处理,种子生成,执行过程监测以及结果分析)总结现有协议模糊测试所做的工作以及不足;之后,分析了不同环境下协议模糊测试技术的挑战以及解决方法;最后讨论了当前协议测试方法存在的局限性,以及未来的发展方向。关键词:协议;模糊测试;漏洞挖掘;工作流程;固件设备安全中图分类号:文献标志码:文章编号:():,(,;,;,):,:,:;网络协议描述了两个通信实体相互传递数据的规范,在计算机网络中发挥着重要的作用。

    2、然而,在实现过程中由于开发人员理解上的偏差,会在其实现中引入漏洞。一些黑客利用协议中的漏洞传播病毒对互联网中的设备发起远程攻击。例如,年 病毒感染了全球超过 万台主机,造成了 亿美元的经济损失 。该病毒正是利用了 协议中的 漏洞在全球范围大肆传播。本文根据 数据库进行统计,最近半年协议中高危漏洞占比超过 ,因此及时发现并修补协议中存在的安全漏洞极为重要。模糊测试自 年提出以来 ,经过 多年的发展已经成为一种广泛使用的漏洞检测方法。模糊测试通过发送大量随机的输入,检测程序中存在的漏洞。据 一项调查显示,超过 的漏洞是通过模糊测试发现的。模糊测试作为目前最常见、最有效的漏洞检测技术,在协议的安全测

    3、试领域得到了广泛的应用。年诞生的首个实用性模糊测试工具 就是针对协议开发的,这也说明协议是模糊测试的重要目标。在此之后,协议模糊测试一直作为网络和信息安全的热点领域出现了大量的研究成果,其中具有代表性的工作包括 、等。然而,现有的综述文章要么缺乏最近的研究工作 ,要么分析得并不全面 ,因此需要对协议模糊测试领域取得的成果进行重新梳理和总结。本文从以下四个方面对协议模糊测试研究领域进行总结:)以具有代表性的工具诞生时间节点,分析回顾协议模糊测试发展历程,比如 以自动化的方式对协议进行模糊测试,在此之前的研究需要大量的手工工作以及待测协议的先验知识;)以协议模糊测试的流程为脉络,针对每个环节总结出

    4、其面临的挑战以及现有的研究成果解决这些问题采用的方法;)在不同的应用场景下,比如物联网、工业控制系统开发协议有着独特的要求,对这些场景下的协议进行模糊测试取得的成果进行总结;)分析目前协议模糊测试技术存在的不足,并指出未来的研究方向,最后对全文进行总结。协议模糊测试发展历程自 诞生以来,协议模糊测试技术经过 多年的发展,出现了大量的研究成果。如图 所示,本文根据具有重要意义研究成果出现的时间,对协议模糊测试工具发展历程进行了梳理。其中以 的诞生作为划分节点,在此之前协议模糊测试主要采用黑盒的方法,之后灰盒协议模糊测试技术出现了大量的研究成果。黑盒协议模糊测试阶段黑盒模糊测试技术仅考虑程序的输入

    5、以及输出,不关心执第 卷第 期 年 月计 算 机 应 用 研 究 行过程中内部的状态信息。根据输出结果以及执行输入后程序是否正常运行来判断目标的状态。黑盒模糊测试技术具有以下优势:)不需要程序的源码,这对协议来说尤为重要,因为在工控以及互联网场景下有大量的私有协议;)设计相对简单,便于研究人员开发;)因为其不考虑目标程序的内部状态信息,执行速度较快。图 协议模糊测试关键阶段 年,协议模糊测试发展初期没有考虑被测协议复杂的状态信息,模糊器发送完全随机的输入。这个阶段出现的代表性协议模糊测试工具有 、等。由奥尼大学的安全团队开发,根据协议规范生成错误的输入触发特定的漏洞,如格式化字符串、缓冲区溢出

    6、漏洞。年 开发的 框架提供了一系列允许快速和高效开发网络协议模糊测试器的 。将协议分组为不同的块,每个块都可以单独进行模糊测试。但是,由于 提供的块抽象过于简略,开发人员难以轻松地建模有状态协议和复杂消息及其依赖关系。此外,基于 的模糊器必须使用 语言编写,因此开发过程可能比使用更复杂。是 年开发的一款用于测试 服务的黑盒模糊测试工具,它将 服务的 文件作为输入,并使用专门制作的有效负载测试特定的 服务。年 开发出 ,通过手动构建 文件定义生成的数据模型。时至今日,仍是工业界广泛使用的一款模糊测试工具。年,研究人员开始通过构建协议的状态机模型,开发有状态的协议模糊测试工具。根据协议状态机简洁地

    7、表示了协议实现的关键状态和转换条件,可用于系统地指导模糊测试的过程,探测深层次的漏洞。年,等人 构建了第一个有状态的黑盒协议模糊测试工具 。需要测试人员从 文档中手动提取协议规范,进而得到协议的字段特征、协议中信息交换的语法以及状态机。测试人员根据状态机发送特定序列的消息到达待测定的状态,在该状态下根据协议规范生成大量随机的输入测试目标程序中的漏洞。但是,在开启一个模糊测试进程之前,需要有经验的研究人员花费大量的精力完成协议规范提取工作。同年,等人 开发了 ,依据应用程序层协议规范生成符合格式要求的测试报文。该规范描述了状态的定义、迁移路径以及可以在每个状态下发送消息的语法。其输入基于启发式生

    8、成,以查找特定的漏洞,如缓冲区溢出、格式字符串漏洞等。在每一个状态下,都会生成能被协议程序接受但参数无效的测试报文。是广泛使用的网络协议模糊测试框架,目前已停止维护,继承了它的工作。具体包括数据定义、数据驱动、会话管理、监视代理、辅助工具和文件系统六大模块。测试人员只需关注数据生成模块中测试报文模板的编写,其他部分都可以自动完成。年 等人 开发了 ,以解决多数模糊器仅依赖随机注入生成测试数据,但没有考虑目标协议程序的语法、语义以及状态问题。通过一个无上下文的 描述协议的确切语法。此外,基于捕获到的通信流量,利用机器学习的方法,构建协议状态机用于模拟系统中的状态转换。是第一个能够生成复杂随机输入

    9、的 协议模糊器。上述模糊器都依赖研究人员从协议规范中提取协议格式以及状态机模型,生成符合格式的输入。此外 、需要突变字段以及发送特定的报文序列到达测试场景。这种方式需要研究人员过多地参与且模糊测试的效率较低。为了解决 等协议模糊测试工具目标单一,严重依赖对协议的先验知识和大量手工操作的问题。研究人员尝试使用自动化的方式推断协议格式以及状态机模型,指导模糊测试的执行。年 等人 开发了 ,通过充当客户端与被测试程序的中间人,获取通信流量,在此基础上自动化地推断协议规范。使用基于 算法 的 工具 将静态数据字段和动态数据字段分开,并将动态数据字段与类型和长度信息关联起来获取语法信息,构建通用报文序列

    10、。年文献 采用类似的方法,从获取的网络流量中推断出协议的报文格式以及状态模型,检测协议中的漏洞。年文献 开发了 ,并将其与 集成。通过模型提取器获取 中定义的模型,区分报文中的静态字段以及可变字段。之后,通过模糊测试引擎将可变字段设置成特殊值进行测试。等人 通过对协议规范进行分析,构建有规则的协议状态机。与之前的工作不同,在构建完成后不对所有的状态迁移路径进行测试,而是首先进行一个判断:如果从一种状态到另一种状态的转换过程中不会发生异常,那么该状态迁移路径是安全的。安全路径对于漏洞探测是没有意义的,因此可以将其忽略,从而提高模糊测试的效率。年文献 等人使用 库,通过改进的 算法 从 协议中实现

    11、自动提取状态机。通过分析这些状态机,可以发现协议流中的逻辑缺陷。年文献 基于文献 ,的工作,利用自然语言处理技术从 文档中自动获取协议状态机。上述工作减少了研究人员的手工工作,在一定程度上提升了自动化水平。然而这种方式的准确性以及可扩展性仍需进一步提高。此外,对私有协议进行模糊测试时,由于缺乏协议的描述文档,需要通过逆向的方法获取其协议格式以及状态转换模型。所以,上述通过 文档构建协议状态机模型的方法无法直接适用于私有协议。年 等人 将协议逆行技术与模糊测试技术相结合,构建了一款针对私有协议的模糊测试工具 。采用一种基于概率的方法,从获取到的流量中自动提取协议格式以及一个二阶马尔可夫模型,该模

    12、型提供了一个真实状态机的概率近似。以字节为单位推断协议格式,更适用于文本类协议的模糊测试,对二进制协议逆向结果不够准确。年文献 将 作为最小的单元推断协议的格式,实现了一个通用的协议模糊测试框架 。可以快速分析出协议的特征,自动生成测试用例以及自动进行模糊测试。计 算 机 应 用 研 究第 卷 灰盒协议模糊测试阶段 年诞生了第一个灰盒协议模糊测试工具 ,之后出现了许多类似的研究成果,如 、等。相较于黑盒模糊测试技术,灰盒模糊测试技术一方面省去了协议格式推断以及协议状态模型的构建过程;另一方面,通过反馈信息指导测试用例的生成,并且可以保留有价值的种子对其进行进一步测试,提高测试效率。年文献 在

    13、的基础上实现了第一个有状态的灰盒协议模糊测试工具 。捕获客户端与服务端通信时的流量作为初始种子,在模糊测试过程将状态码以及代码覆盖率作为反馈信息,保留有价值的种子对其进行进一步测试。将响应中的状态码作为状态信息,指导模糊器探索协议的状态空间。之后出现了大量的研究工作,对 存在的不足进行改进。如前文所述,依赖响应报文的内容推断协议状态,因此必须使用特定的解析器从响应中提取状态码。对于响应中不包含状态码的协议,无法推断出其状态信息进行有效的模糊测试。在 的基础上设计并实现了 ,通过适用性更强且粒度更细的长生命周期变量识别网络协议的状态。等人 认为不是所有的协议状态都同等重要,并且模糊测试的时间有限

    14、,需要一个有效的状态选择算法优先考虑渐进的状态。为此在 的基础上实现了 算法,对协议的状态进行评估。年文献 针对 通信速度慢,深层次状态无法直接到达,以及难以覆盖到深层的状态空间的问题,在其基础上设计并实现了 。保存了网络协议程序的进程上下文(即进程快照),以便在模糊器第一次发送前缀消息后进行模糊处理。当需要模糊一个特定的状态时,只需要恢复快照,并发送随后的突变消息。此外,设计了一种消息链分析算法来探索更深层次的协议状态。将缓慢的异步网络通信转换为基于 域套接字的快速同步通信,并且加快所有文件操作重定向到内存文件系统的过程,提高灰盒协议模糊测试的速度。协议模糊测试工作流程协议模糊测试如图 所示

    15、,可以分为预处理、种子生成、执行过程检测、结果分析四个步骤。在协议模糊测试中预处理主要是为了获取规范或者对源码进行插装。种子生成是协议模糊测试中最为关键的一个步骤,因为不符合规则的种子会在开始阶段被拒绝。依据种子生成方式的不同有基于生成以及基于突变两种方式。灰盒模糊测试中,根据执行过程中的反馈信息得到被测程序的当前状态,保留有价值的种子以及调整输入队列中种子的优先级,节省模糊测试的时间;另一方面,存储输出的异常信息以及造成此次异常的测试用例。结果分析阶段则是对测试过程中出现的异常行为进行调试,确定漏洞成因。图 协议模糊测试工作流程 预处理预处理有以下两种目的:)通过协议文档手动提取、协议逆向方

    16、式自动获取和协议实现动态获取三种方式获取协议的格式以及状态转换模型;)在灰盒协议模糊测试中,对程序进行插桩获取反馈信息。获取协议规范)从协议规范中获取协议模糊测试初期,研究人员针对特定的协议开发模糊测测试工具。、等工具从该协议的公开文档中手动提取协议格式以及状态转换模型。这种方法需要研究人员花费大量的时间,并且不适用于没有公开文档的私有协议。为了克服手动提取带来的人工开销,研究人员开始关注通过自动化的方式,从协议文档中获取协议规范。这种自动化的方法往往与机器学习、人工智能相结合,尽量减少人工参与。比如,使用特殊语言描述 文档,获取协议格式以及状态转换模型。文献 将自然语言处理技术应用于协议规范

    17、的提取,并使用零次学习(,)提高准确率,还可以方便适用于不同的协议。上述方法在一定程度上增加了自动化的程度,然而,这些方法仅适用于具有协议规范文档的开源协议。)通过协议逆向技术自动获取协议逆向技术不依靠文档规范,以自动化的方式获取协议格式以及状态转换模型。协议格式逆向过程中,首先要使用 、等嗅探工具作为辅助捕获大量的网络流量,并且,这些流量要尽可能覆盖协议的不同状态,这样才能够对程序进行充分的测试以保证逆向结果的准确性。在逆向时,通常按照报文聚类、序列对比或者概率推断的过程获取协议格式以及协议状态机模型。、以及 都是采用协议逆向的方法通过网络流量获取协议的格式以及状态转换关系。以及 更适用基于

    18、文本的协议,以 为基本单元,针对二进制协议的逆向结果更加准确,并且具有良好的拓展性。张蔚瑶等人 基于协议特征库推断出协议格式,并且使用循环比对法识别语义信息,提高逆向结果的准确性。上述通过协议通信流量获取到的协议适用性更高,但有部分研究工作采用基于指令序列的方法获取协议格式结果。等人 使用指令追踪的方法构建会话图表示协议状态转换。然后,通过展开策略将其转换为有向无环图,避免模糊测试器长时间陷入一个循环。这种方式能够在协议逆向中获取到更为准确的结果,不过指令追踪需要有良好的执行环境,这在测试嵌入式设备时往往是不可行的。)通过协议实现动态获取动态获取的方式可以分为一致性测试以及构建测试驱动程序两种

    19、方式。采用一致性测试的工具,比如 通过构建唯一输入输出序列,确定完整的协议状态转换模型;另一种方式则是通过协议实现程序的源码,构建测试驱动程序。此外,这种方式还需提供一个可以发送到被测试的服务(,)的消息列表(也称为输入字母表),以及一个将 重置为其初始状态的命令。构建的测试驱动程序能够将输入的字符解析为可以发送到测试服务的具体报文。依据 的响应作出假设,并给出假设的判定条件,尽可能地推断出准确的协议状态机。如 、使用 算法的改进版本 获取 协议状态机。首先依据 接收到的响应为状态机作出假设,之后验证这些假设与实际状态机的等价性。如果模型不等价,则返回一个反例,并重新定义假设。在进行等价检查时

    20、,使用 的改进版本为等价检查指定一个深度。该算法只寻找不超过深度上界的反例轨迹,如果找不到,则认为状态机的当前假设与已实现的假设等价。第 期徐威,等:网络协议模糊测试综述 使用的方法可以在一定程度上避免状态空间爆炸问题,得到尽可能近似的结果。然而,它需要提前假定一个 角色,此步骤在实施过程中通常比较困难。相比较而言,通过一致性测试确定唯一输入输出序列,其相关理论更为成熟,有着很高的路径覆盖率,可以确保结果的正确性,但是需要大量的测试时间。构建测试驱动程序的方式,自动化的程度更高,但是需要对协议程序源码有着很好的理解,并且仅能得到近似的结果。除了上述方法外还有一些其他的方法,如 通过集成的 框架

    21、自动提取协议模型;等人 使用脚本将实际的通信流量自动转换为协议和关系描述格式;使用预定义的格式描述状态格式,之后通过深度优先算法来获取协议的状态迁移路径。解决了状态机中存在循环,造成的状态空间覆盖低的问题。然而,这种方法要求研究人员掌握待测协议的先验知识,并且需要一定的手工操作。表 对不同的协议规范获取方式进行了总结:通过文本规范手动获取的方式,推断出的结果可能更加准确。然而,这种方法不仅需要掌握协议的先验知识,还会消耗研究人员大量的精力;通过自然语言处理获取的方式,在一定程度上提高了自动水平,但其准确性有待进一步的提升。此外,以上两种方法仅支持公开的协议。通过协议逆向技术获取,自动化程度更高

    22、,能够同时支持开源协议与私有协议,但是逆向结果不够准确或者执行条件比较严苛;通过协议实现程序动态获取,需要在理解程序源码的基础上编写 ,进而推断出与实际情况近似的协议状态机。执行一致性测试构建唯一输入输出序列能够得到更加准确的结果,但是执行时间较长。表 协议规范获取方法总结 获取方法工具支持类型对比分析通过协议文档获取 、等开源协议从协议文档中手动获取,推断的结果准确度高,但依赖研究人员的经验 开源协议使用特殊语言描述 文档,实现了一定的自动化,结果不够准确文献 开源协议将自然语言处理技术应用于协议规范的提取,准确性较高通过协议逆向技术自动获取 文本类协议其只利用协议头部报文 进行聚类,存在较

    23、多冗余,序列对齐结果并不准确 通用使用二阶马尔可夫链推断协议状态机,但更适合文本类协议,二进制协议推断结果不够准确 通用以 为基本单位,更适合二进制类协议的格式推断通过协议实现动态获取 开源协议通过构建唯一输入输出序列,得到协议状态模型,结果更准确,需要花费的时间长,以及一定的人工参与 开源协议自动化程度较高,但是需要基于协议程序源码的理解手动构建 ,推断到近似的结果 插桩对于灰盒模糊测试工具来说,在测试程序执行之前需要对源代码进行插桩获取程序执行过程中的反馈信息,如路径覆盖率信息、内存信息、函数变量取值等。根据反馈信息的不同,插桩方式也不同,以 为代表的工具,沿用了 的插桩思想,采用静态的方

    24、式对程序源码进行插桩。这种插桩方式仅仅可以统计代码的覆盖率信息,无法直接获取协议的状态信息。后来的研究人员发现,网络服务应用程序都是基于网络事件循环,当接收到客户端发来的消息时,网络事件循环对该消息进行处理,完成后,重新等待新消息的到来。在此循环过程中,长生命周期变量的更新在一定程度上能够反映程序的状态,而短生命周期变量仅在循环内有效,因此可以使用更加容易获取的长生命周期变量来表示状态。使用这种方式时,为了获取长周期变量,需要在编译时进行插桩。此类协议模糊测试工具不仅在代码分支处插入原生 提供的用于统计覆盖率信息的桩代码,还在内存分配 释放处插入一套新设计的桩代码。因此,这种方式也引入了昂贵的

    25、插桩开销以及计算开销。通过使用轻量级的状态变量来表示更细粒度的状态,降低了插桩带来的开销,提高了执行效率。种子生成根据种子生成方式的不同可以将协议模糊测试分为基于生成的和基于变异的两类。基于生成的模糊测试方法根据预处理获取的协议规范,生成尽可能符合要求的种子。基于突变的模糊测试方法,从一个合法的样本出发,通过变异算法不断地修改其中一些数据,生成一批畸形的种子。)基于生成的方法基于生成的模糊测试主要是对目标程序或协议的规范有了一定掌握的前提下使用的。协议格式具有高度结构化的特点,因此基于生成的方法构建的测试用例更可能被测试目标所接受。基于生成的方法可以手动构建输入模型,或者自动化地生成模板构建测

    26、试用例。比如,使用最小化模型的方法,根据协议格式以及消息发送顺序,针对特定目标中格式化字符串或者栈溢出等特定类型的漏洞构建测试模型。然后,根据此模型启发式地生成测试样本。与 不同,利用提供的编程接口来对样本格式进行约束,使用特定的源语测试应用程序。上述两种工具都无法灵活地生成种子,并且实现的算法复杂度很高,此外也没有考虑到相邻报文间字段的关系,如序号、等语义信息。之后的研究人员采用手动编写脚本文件的方式,定义协议的格式以及状态转换关系,提高了测试用例生成的速度,并且这些测试用例更符合协议规范。、等工具基于上述方法,在生成器中事先编写脚本文件对样本格式进行约束,生成初始种子。之后,变异器针对不同

    27、的数据类型采用不同的变异策略获取大量的测试用例。、等工作,依据推测出的协议规则构建输入模板,填充模板中的相应字段生成初始种子。确保测试用例生成过程中不会随意突变,提高了测试样例被目标程序接受的概率。但是也正因为模板化的变异规则,导致突变的畸形度不足,有些潜在的漏洞无法触发。为了获取到的种子在符合格式之外有着更高的畸形度,以达到提高发现漏洞几率的效果,根据模板构建种子之外,还会向服务器发送异常的消息序列进行模糊测试。为了获取更高效的种子,等人使用基于规则的状态机和有状态规则树生成测试用例。使用结构变异算法定期突变初始测试用例,生成大量状态消息路径相同但是初始值不同的种子,构成最后的测试数据集。)

    28、基于突变的方法基于突变的模糊测试方法通过随机变异目标程序正常的输入,生成新的测试用例对目标程序进行测试。这种方法不需要掌握协议的先验知识,避免了格式推断以及状态机构建工作,可以快速地开启一个模糊测试进程。使用客服端与服务器之间的流量作为初始输入,使用自动化脚本将其转换为 格式。之后,通过 模型表示协议字段的关系,对初始输入进行变异。这种突变方式能够快速地生成大量测试用例,但是往往会由于随机的突变严重破坏测试用例的结构,导致被测试程序拒绝。计 算 机 应 用 研 究第 卷一些研究工作如 ,将上述方法与 的变异引擎相结合,制定了一个包括头部、内容和序列突变策略在内的三级突变策略,在能够尽可能满足协

    29、议规范的同时提高代码覆盖率。以上的突变方式需要大量的输入,并且这些输入应当覆盖协议的不同功能,这样才可能测试到协议的全部状态。为此 提出协议中的输入与服务端的配置相关,可以通过修改配置文件或者修改命令行参数的形式获取到大量的初始种子。之后,使用模糊器的变异算子对种子进行变异得到新的测试用例。文献 针对 协议库开发出 ,允许测试人员创建自定义 的报文序列并使用简单的接口任意修改报文内容。这种方式可以检测到加密失败以及缓存区溢出漏洞。然而,适用对象单一,仅支持 协议,并且无法对客户端进行测试。上述方法可以快速地生成大量测试用例,能够适用于不同的执行环境。然而,由于这些工具没有收集程序执行过程中的反

    30、馈信息,造成测试存在一定的盲目性,很难到达深层次的状态空间。此外,无法保留有价值的测试用例对其作进一步测试。及其改进工作 、等灰盒协议模糊测试工具,同样使用客户端与服务端交互的正常流量作为初始输入。不过这些模糊测试工具在进行测试之前需要对协议程序的源码进行插桩,从而在执行过程中获取反馈信息。在测试时,如果一个种子能够提升代码覆盖率或者进入一个新的状态,那么这个测试用例将会被保留,并再次对其进行测试;反之,无效的测试用例会被直接剔除。保留下的测试用例根据不同的调度算法进行优先级排序。在 中采取和 相同的度量方式,将更小并且执行时间更短的种子排在输入序列的前面。这样的方式可以将有限的测试时间尽可能

    31、多地用在价值更高的输入上,提升触发潜在漏洞的几率。为了探测到深层次的状态空间,赋予能够到达深层次路径测试用例更高的优先级。对种子进行突变的同时,还需考虑新生成的测试用例是否符合协议规范。胡志濠等人 利用准循环神经网络学习协议的格式以及语义,过滤无效的测试用例。引入了多种突变操作符,对所选的种子文件进行简单突变和结构化突变,具体包括消息序列突变、消息突变、二进制字段突变以及变量字符串突变。在测试队列调度方面使用的方式和 相同。基于生成的方法,依据预处理后获取的协议格式指导测试用例的生成。这种方式获取的测试用例有利于通过语法检查,到达协议程序内部的功能代码。然而,这种方法一方面需要研究人员花费大量

    32、的时间从公开文档中提取协议格式;另一方面不利于扩展,测试不同的协议程序时,需要重新进行格式推断。使用预定义的模板生成测试用时,能够快速生成大量符合格式的测试用例。但是采用这种方式生成的测试用例灵活性较差,难以触发条件比较严苛的漏洞。协议逆向技术降低了格式推断以及状态机模型构建所需的时间,然而测试用例生成的质量依赖逆向结果的准确性,目前仍有很大的提升空间。基于突变的方法通过突变客户端与服务端交互过程中产生的流量,自动化地生成测试用例。但是,由于突变的随机性,往往会产生大量无法通过格式校验的冗余测试用例。基于突变的灰盒模糊器需要插装才能获取所需的反馈信息,这在一定程度上增加了开销。此外,对于有状态

    33、的协议,深层的状态空间需要一个特定的合法输入序列才可到达,因此通常难以覆盖到。表 对上述研究的工作进行了总结。表 种子获取方法概述 种子获取方法工具人工 自动化对比分析基于生成的方法 人工使用特定的模糊测试源语替换协议中的字段,能够发现的漏洞种类少,灵活性较差 人工使用基于块的方法生成种子,不能用于测试有状态的协议 ,等人工通过人工分析协议格式,编写种子生成规则文件。这种方式构建的种子更符合规范,但需要大量的人工分析 自动化通过按照定义的规则填充模板,生成种子质量依赖生动化构建模板的准确性 自动化通过流量推断出协议的格式以及状态模型生成种子,但是需要大量的通信流量样本基于突变的方法 人工按照协

    34、议字段的关系对初始种子进行突变,需要提前构建 脚本 自动化作为内置代理依据推断的协议格式,改变消息的特定字段作为种子,但是推断的准确性偏低 人工制定了一个三级突变策略,变异方式更加灵活,但制定的协议格式规范不能涵盖所有的情况 等自动化此类灰盒模糊测试工具,依据反馈信息变异正常的样本。这种方式自动化程度高,但是测试速度较慢,难以覆盖到所有的状态空间 执行过程监测执行过程监测用于得到测试用例后在特定的监视环境中执行目标程序,并对测试过程中出现的指定异常情况进行记录。该步骤可以在前一个阶段结束之后启动,也可以和前一个阶段形成一个反馈回路。执行过程监测主要进行两个方面的工作:)监控当前测试用例是否会导

    35、致目标程序异常;)判断测试用例是否增加了代码覆盖率,或者触发到新的状态。对于黑盒模糊测试工具仅监测程序执行过程的异常情况。、等工作通过监测模块监视程序执行的状态,记录崩溃以及是否可以和服务器正常通信。程序崩溃有很大的可能性是因为触发了漏洞,因此这种方式得到的漏洞准确率较高。为了更好地监测以及控制模糊测试进程的执行,使用多个代理监测模糊测试执行时的信息。网络监控代理负责监控网络通信,并将其记录到磁盘上。进程监视器代理监视目标,以检查它在模糊过程中是否可能出错。如果有,将这个错误记录到一个崩溃日志中。控制代理提供了一组与虚拟机映像交互的 ,它还可以启动、停止、暂停或重置虚拟机镜像。其他一些研究人员

    36、将 与动态内存分析工具一起执行,这些工具可以帮助其轻松地识别漏洞,因此它们有着很高的漏洞准确率。另外一些模糊测试技术通过将漏洞与正常输入进行比较来识别漏洞。在 中使用的内存分析工具可以帮助其轻松地检测出确切的漏洞、产生的异常情况以及造成这种情况的原因。此外,这些工具还评估了 在每种情况下的性能。这种方式不可避免地会引入大量的开销,当使用动态内存分析工具时,的性能降低了 。上述方法能够发现内存破坏类漏洞,如栈溢出、堆溢出等,协议中还存在大量的漏洞并不会引发内存错误。因此需要其他的判断方法,、和 通过对比执行时与正常情况下的输出,这种方法的漏洞准确率比较低,必须人工确认漏洞的存在。灰盒协议模糊器在

    37、异常监测方面,将内存错误视为漏洞触发条件,因此这些工具同样具有较高的漏洞准确率。此外,它们使用模糊测试执行过程中监测到的信息反馈给种子生成步第 期徐威,等:网络协议模糊测试综述骤,指导种子的变异与调度。协议模糊测试除了需要监测常规的代码覆盖率,更重要的是监测能够反映协议状态的信息。因此,使用不同方法的模糊测试工具,需要监测的反馈信息也不同。这些方法都有着一定的优点以及局限性。一些研究工作将服务器发送消息中的响应码作为反馈信息,保留能够提高代码覆盖率以及探测到不同协议状态的测试用例。但是,这种方式反映协议状态颗粒度过粗,并且不具有通用性。部分研究工作将程序执行的变量作为反馈信息,这种方法能够支持

    38、更多的协议种类以及数量。比如 使用长内存的变量作为程序的状态反馈,但是这种方式的准确性偏低,并且使用的插桩方式带来的开销更大。为了解决模糊器需要添加延时与测试程序进行消息同步的问题,注意到网络应用程序的本质是使用一个网络事件循环来监听收到的消息,然后对消息进行处理。基于上述发现,模糊器能在服务端完成消息处理后立即发送下一条消息,从而提高模糊测试的吞吐量。在统计代码覆盖率的基础上,做了进一步的改进用于反映状态的改变。在 中定义了分支转换的概念,首先将获取到的程序路径覆盖信息转换为向量,比较当前输入的向量序列与前一个输入的向量序列是否相同。使用分支转换来指示状态的转变。在异常监测方面,不同于传统的

    39、方式仅监测内存相关错误,同时执行不同的 协议实现程序,通过比较相同输入下所有实现程序的输出是否相同,探测被测程序中的语义错误。这种方式更能检测到漏洞,但是语义错误需要研究人员花费大量的时间确认,因此漏洞检测率较低。研究人员根据执行过程监测到的信息,能够推断出程序中可能存在的漏洞。不同的工具需要监测的内容不同。如表 所示,分别概述了黑盒以及灰盒模糊测试技术执行过程中的监测内容。其中,黑盒技术更关心程序的执行结果,灰盒技术则需要关心覆盖率以及状态信息。黑盒模糊器仅监测程序的输出以及异常情况,这种方式漏洞准确率较低,之后需要测试人员手工分析造成此次异常的真正原因。采用内存工具辅助,有助于复现以及确定

    40、漏洞触发的位置,漏洞准确率较高,但是会引入额外的开销。灰盒模糊测试工具需要对程序的源码进行插桩,之后才能获取所需的反馈信息,这种方法无法用于不开源的私有协议。这些工具大多以内存中存在的异常情况作为判定漏洞是否存在的依据,都有着较高的漏洞准确率。能够检测出大量的语义问题,但是漏洞准确率较低。上述工具使用不同的方式表示协议状态信息,但协议状态通常十分复杂,这些信息都仅能表示所有状态的子集,因此无法保证测试到全部的协议状态。表 监测内容总结 方法工具监测内容对比分析黑盒模糊测试方法 ,等程序输出以及内存异常情况漏洞准确率很高,但是需要内存工具辅助降低了运行效率 ,等被测试协议程序的输出漏洞准确率较高

    41、,但需要手工分析异常的结果,发现存在的漏洞灰盒模糊测试方法 等代码覆盖率信息,状态信息,内存异常情况能有效检测协议漏洞,有着较高的漏洞准确率,但是粒度过粗且适用范围有限 代码覆盖的变化信息,多个 协议实现的输出能够检测出语义错误漏洞,但是需要大量的手工操作分析异常信息,漏洞准确率较低文献 程序执行过程的长状态变量,内存异常情况漏洞准确率较高,适用范围很广,但是带来的开销更大 轻量级的状态变量,内存异常情况漏洞准确率较高,可以表示细粒度的程序状态,减少了等待时间 结果分析结果分析作为模糊测试的最后一个环节,对得到的异常信息进行分类、去重等工作,确定漏洞触发的根本原因以及危害程度。协议模糊测试中部

    42、分研究工作依据崩溃信息定位漏洞的方法,存在一定局限性,因为这无法检测到不会造成崩溃的语义漏洞。因此一些研究工作通过对比测试时接收到的响应与正常情况下的响应,采用人工分析的方式找到漏洞。协议模糊测试中在触发漏洞时还存在无法接收到响应更不会引起崩溃的情况。因此,研究人员通过发送探测报文,判断被测试程序是否存活,检测漏洞是否存在。这种方式需要大量的人工分析确定触发漏洞的根本原因。该步骤是模糊测试不可或缺的一部分,但模糊测试更多的是关注其他步骤的工作,因此本文不对此环节做过多的讨论。物联网与工控场景下的协议模糊测试技术近年来随着网络技术的不断发展,移动支付、智能家居、智能终端等智能产品不断融入到人们的

    43、生活当中,通信网络、铁路控制系统、军事指挥系统、工业控制系统已经成为国家至关重要的基础设施。因此,物联网与工控设备中的网络协议漏洞已经成为网络安全中不可忽视的一环。将模糊测试用于物联网与工控领域具有以下挑战:)模糊测试的执行效率低。固件的操作环境相对恶劣,厂商通常不发布自己的固件产品,因此需要建立一个复杂的固件模拟器,而这种模拟器本身的效率也很低。另一个更重要的原因是物联网设备对接收到数据包的协议格式有严格的要求。一些常见的黑盒模糊工具生成的大多数测试用例很可能是无效的。)固件设备中运行的程序难以直接提取,因为这些程序与其运行的硬件配置有着高度的依赖性。此外,部分厂商还会对其产品进行加密处理,

    44、这大大增加了逆向分析的难度。)缺乏反馈信息。由于固件通常没有源代码,它们的模糊测试只能使用黑盒技术。这种方法只能根据其自身的突变策略持续执行,并且不能判断每个测试用例的质量。物联网协议模糊测试 提出可以通过与物联网设备交互的手机端应用程序获取通信使用的协议信息。之后,对配套应用程序进行静态分析,找到向物联网设备发送控制命令的功能,并改变特定变量的值,在不破坏消息格式的情况下进行模糊测试。不需要掌握协议的先验知识,能够在不访问固件的情况下,发现物联网设备中存在的内存类损坏漏洞。经过大量的工具同步和信息集成,可以有效地监控固件程序的执行状态,并在固件崩溃时获得大量的系统信息。结合了 和 的工作实现

    45、了第一个用于模糊物联网固件中的有状态协议的灰盒模糊器。针对物联网固件中的多个关键协议(如 、),解决了基于物联网固件运行时监控的多阶段消息生成机制的状态计 算 机 应 用 研 究第 卷调度问题。等人 通过构建符合规范的测试用例对用于医疗器械的 协议进行模糊测试。这种方法不适用于测试报文类型多、状态转换复杂的协议。实现了一种轻量级的高效黑盒模糊测试方法。使用一种新的启发式算法检测输入报文中每个字节的语义信息。首先,逐个改变输入序列中的字节生成探测报文,并将从设备中收集到的响应进行分类。具有相同语义的相邻字节形成初始报文片段并将其作为突变的基本单元。此外,利用相似度得分以及层次聚类策略,减少了响应

    46、因随机性和固件内部机制导致的错误分类。因此,作为一种黑盒模糊器,仍然可以在没有协议规范和设备内部执行信息的情况下,有效地测试物联网设备中的协议程序。工控协议模糊测试技术 是工业上一种应用非常广泛的协议,可以用于家庭的空气监视器,或者在工厂中用于机械臂的通信。为了更有效地测试 ,研究人员找到许多好的方法。为了获得有效的测试用例,大多数突变方法都使用基于语法的突变来改变数据内容。可以测试八个 的实现。为了避免太多无效的测试数据点,首先调查被测试的设备(,)具有哪些函数代码,然后测试特定类型的突变。等人 为了减少测试的次数,首先确认 有哪些功能代码,然后不发送相关的测试数据。这两个方法的缺点是,用户

    47、在开始执行突变和测试之前,都需要遍历所有的功能代码。对 进行了改进 。与随机生成的数据相比,使用一些特殊值来触发这些漏洞。测试用例生成的质量是许多工控协议研究人员关注的重点,他们通过动态分析、逆向分析、深度学习等方法推断协议格式,按照定义的规则自动化地生成测试用例。杨亚辉等人 针对工控协议开发了 ,采用基于流量分析的逆向方法推断出协议格式并构建状态机,高效地生成测试用例。等人 使用程序执行中获取的动态信息以及找到输入的语法信息生成测试数据。等人 使用 模式识别算法来分析工控私有协议的格式,并创建测试数据包,它可以确定设备之间特定的交互过程。姜亚光等人 使用长短期记忆神经网络学习西门子 协议的格

    48、式,进而区分出输入序列中的静态字段以及动态字段,通过仅对动态字段进行变异生成符合格式的测试用例。王田原等人 通过深度学习技术推断协议格式,开发了一款通用的工控协议模糊测试框架 。李文轩等人 提出相较于深度学习模型,树模型能够更好地体现出协议字段间的存在相关性以及嵌套关系。在此基础上,又通过提取协议字段的优先级信息,生成高质量的测试用例,提高漏洞发现几率。张冠宇等人 通过加入动态适应度函数改善遗传算法过早收敛的问题,降低了测试用例之间的相似度,从而提高测试用例覆盖率。物联网与工控设备环境下的协议模糊测试工作是当前研究的重点方向。因为在这些固件设备中存在大量为适应特殊环境而构建的私有协议,这为格式

    49、推断带来了很大的挑战。为了尽快推出新产品,开发人员总是倾向于在固件开发中使用开源组件,但是缺乏很好的更新计划 。这无疑牺牲了固件设备的安全性,暴露出安全团队无法迅速补救的漏洞。由于物联网设备没有可靠的网络连接,即使供应商计划修复其产品中的漏洞,固件设备也很难获取补丁,所以开发固件的协议模糊测试工具是当前的迫切需求。分析与展望协议作为网络通信的基础设施,一直是模糊测试的重点目标。前文对协议模糊测试研究方法进行了对比分析,本章将阐述目前协议模糊测试技术存在的不足,并指出未来的研究方向。主要问题协议模糊测试目前已经取得了大量的研究成果,但仍然存在以下几个方面的问题:)当前基于生成的协议模糊器自动化程度普遍不高。这些工具大多依赖推断出的协议格式以及状态机生成测试用例。手工化的推断方式虽然可以获取准确的结果


    注意事项

    本文(网络协议模糊测试综述.pdf)为本站上传会员【自信****多点】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表




    页脚通栏广告
    关于我们 - 网站声明 - 诚招英才 - 文档分销 - 服务填表 - 联系我们 - 成长足迹

    Copyright ©2010-2024   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:4008-655-100    投诉/维权电话:4009-655-100   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-2024(办理中)    



    关注我们 :gzh.png  weibo.png  LOFTER.png