为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究

2017-09-27 8页 doc 21KB 24阅读

用户头像

is_554469

暂无简介

举报
基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究 基于启发式搜索和分类树的网络协议模糊 测试用例生成方法研究 基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究 引 言 随着现代软件产业的发展~软件规模不断扩大~其内部逻辑也变得更加复杂[1]。为了保证软件的质量~软件测试环节在软件生命周期中占据非常重要的地位~但仍然不可能彻底消灭软件中所有的逻辑缺陷。模糊测试通过向目标系统提供非预期的输入并异常监视结果发现软件漏洞~是安全检测和漏洞挖掘的有效方法~也是近年来信息安全领域的研究热点之一。网络协议模糊测试发现的...
基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究
基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究 基于启发式搜索和分类树的网络协议模糊 测试用例生成方法研究 基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究 引 言 随着现代软件产业的发展~软件规模不断扩大~其内部逻辑也变得更加复杂[1]。为了保证软件的质量~软件测试环节在软件生命周期中占据非常重要的地位~但仍然不可能彻底消灭软件中所有的逻辑缺陷。模糊测试通过向目标系统提供非预期的输入并异常监视结果发现软件漏洞~是安全检测和漏洞挖掘的有效方法~也是近年来信息安全领域的研究热点之一。网络协议模糊测试发现的漏洞通常具有非常高的危险程度~所以被认为是多数安全研究者最感兴趣的模糊测试类型[2]。在模糊测试的过程中~模糊测试数据生成和异常监视这两个关键环节需要研究者给予特别关注。本文对网络协议模糊测试用例生成方法[3]进行研究。 1 启发式网络协议模糊测试用例生成方法 网络协议分类树的构建过程 一棵网络协议分类树可以用五元组[=]示。其中根节点[]代本文由联盟:收集整理表测试目标网络协议,[]代表目标网络协议的协议域~[=1~2~3~…~,][]代表协议域互不相交的属性~[=1?2?…?][=11~ 12~ …~ 11~ …~ 1~][2~…~,][] 10 代表协议域的属性值~[=][11?12?…11?21?22?…?1?2?…?][=][?且=1~2~…~~=1~2~…~,][]代表协议分类树中父节点和子节点之间的关系~包括目标协议[]与协议域[]之间的关系、协议域[]与属性[]之间的关系、属性[]与属性值[]之间的关系等~[=][1~2~3~]其中[1=] [1??~][2=1??~1??~][3=1??~1??~?*。] 1.网络协议模糊测试数据生成过程 基于分类树的网络协议模糊测试数据生成过程可以概括为四个步骤: 选定测试目标网络协议[~]并根据其规范划分得到协议域集合[=1~2~3~…~~]该目标协议可以用[]元序组[]表示。 针对步骤中得到的每个协议域的属性进行分类~得到描述协议域[]的属性集合[=1~][2~…~~]其中每个属性[]分别在离散的属性值集合[]中取值[。] 对每个协议域[]不同属性的属性值进行相互组合~得到面向该协议域的测试数据集合[=1×][2×…× 。] 依次从面向协议域[]的测试数据集合[]中取值~对描述目标协议的[]元序组进行展开~得到面向目标网络协议的测试用例。 1.启发算子在网络协议分类树中的引入 10 启发式网络协议模糊测试用例生成方法基于分类树的网络协议模糊测试数据生成过程中加入了启发算子的定义~利用启发算子演变得到启发式规则~用于指导每个协议域的测试数据生成过程[4]。 结合文中给出的基于分类树的网络协议模糊测试数据生成的具体过程~需要在步骤中增加获取启发算子的操作~用于对协议域属性值集合[]的精简。由于应用启发算子后并未对步骤产生影响~而且该步骤的实现难度比较小~通常只需要对协议规范进行解读便可以获取用于描述目标协议的[]元序组。 启发算子的定义可以用映射关系[:?*]描述。启发算子的定义可以源于协议分类树中父节点与子节点之间的关系集合[~]也可以源于对目标网络协议的协议规范~或者可以借助第三方工具进行提取[5]。 1.启发式网络协议模糊测试用例生成过程 启发式网络协议模糊测试用例生成过程需要利用启发算子[]实现协议域属性值集合的精简~为了方便具体的实现过程~可以把启发算子写入相应的配置文件[6]。 在配置文件启发算子定义的基础上可以演变得到形如“…~…”的启发规则~用于剔除属性值集合[]中的无效值~从而得到精简的属性值集合[*。] 面向协议域[]的测试数据集合[]的生成过程可以视 10 作协议域的属性值集合~进行笛卡尔乘积运算的过程~即[=1×2×…×]。属性值集合在应用启发算子进行精简之后元素个数减少~即[* 任取[]元序组?*~]对[]元序组中的协议域[]进行替换~得到面向目标协议的一个测试用例~直至遍历完每个协议域的测试数据集合。至此~得到面向测试目标网络协议的测试用例的总数为[=1*=*1+*2+*3???+*]。 模糊测试用例生成方法的实现 验证平台网络协议模糊器的选取 根据各网络协议模糊器与验证平台选取标准的匹配结果可知~模糊器和相对于而言~更加符合本文对验证平台的选取标准。考虑到模糊器相对于而言对测试执行前的准备工作要求更为简单~而其维护更新情况更加频繁~最终选取模糊器作为启发式网络协议模糊测试用例生成方法的验证平台。 2.启发式网络协议模糊测试用例生成 目标协议与实施的选取 根据每个请求与之前的请求是否相关~可以把网络协议分为无状态协议和有状态协议[7]。无状态协议是指网络协议的相邻数据包之间没有上下文的关联性,有状态协议是指相邻的数据包之间具有上下文的关联性。 在实际运用中~有状态协议比无状态协议的应用更加普遍。本文选取有状态协议的典型代表协议作为目标协议~ 10 对启发式模糊测试用例生成方法进行实例验证。协议采用客户端服务器的工作模式~在现实世界具有极为广泛的应用~选取作为模糊测试目标协议不仅具有普遍的现实意义~同时还能与本文对启发式模糊测试用例生成方法的描述结合起来~避免出现针对相同步骤的多次重复分析[8]。 从客户端连接远程服务程序的过程可以分为建立连接、传送数据、释放连接三个阶段~具体的通信过程可以描述为: 首先建立连接~客户端向服务器发送命令表明身份, 然后服务器要求客户端输入密码~客户端发送命令将密码发送给服务器~服务器对客户端进行身份认证, 身份认证通过后客户端可以传输其他命令进行文件操作~需要结束此次连接时用命令退出。 客户端与服务器进行通信的过程中~首先生成一个虚拟连接用于验证控制信息~然后再生成一个单独的连接用于数据传输。具体如图1所示。 图1 通信使用的两个连接 目标协议分类树的构建 命令可以表示为三元序组~协议域集合[=]{1~2~3}。 10 为了简化处理过程~本文不再针对命令三个协议域的各自特点进行研究~在划分过程中做相同处理~得到内容和长度两个属性~即三个协议域1~2~3均可以用二元组进行描述。也就是说~11=21=31=内容~12=22=32=长度~那么不难得到三个协议域的属性集合[1=2=3=]{属性~长度}。 启发算子的抽取与启发规则的定义 文中选取作为目标协议对启发式网络协议模糊测试用例生成方法进行验证~实现启发算子的提取和定义之前~需要首先对协议传输过程中的数据单位信息有所了解[9]。在计算机网络中~对等层之间传递的数据单位称为协议数据单元~七层参考模型中的各层协议数据单元具体如表1所示。 目标协议属于七层参考模型中的应用层协议~其协议数据单元是数据~针对协议的测试需要依托利用协议进行通信的程序完成。本文借助 工具实现针对测试目标程序的启发算子的提取。利用 工具提取启发算子的具体操作步骤示意图如图2所示。 利用启发算子指导测试数据的生成 启发式网络协议模糊测试用例生成方法中~启发算子的引入是为了减小测试用例生成过程的搜索空间~实现网络协议模糊测试用例生成过程的优化[10]。启发算子配置文件和与具体的启发规则之间的关系如图3所示。 10 图启发算子及其配置文件与启发规则的关系示意图 在验证平台模糊器完成对启发算子配置文件的处理之后~就可以开始利用具体的启发规则指导协议域测试数据的具体生成过程。启发式的协议域测试数据由格式化字符串、普通字符串、整型值、不同编码方式的字符串四个部分组成。 网络协议模糊测试用例生成方法的验证 模糊测试方案与环境要求 启发式网络协议模糊测试用例生成方法的实例验证过程在操作系统环境下进行。利用模糊器源码在平台下执行模糊测试所依赖的工具或者库~主要包括网络封包抓取工具、调试工具、扩展等~要求在测试开始之前完成相应的安装准备工作。 测试示意图如图4所示。从图4中可知~模糊器扮演客户端的角色对服务端程序的安全性进行测试~而模糊器所集成的监控模块在测试过程中用于收集测试目标的行为并分析判断测试目标是否出现异常。 鉴于?存在已知的安全漏洞~更适合作为模糊测试效果实例验证的测试目标程序。采用该服务端程序作为测试目标程序~在模糊器的平台上对启发式网络协议模糊测试用例生成方法的有效性进行验证。考虑到模糊测试的执行时间~实例验证过程只选择命令中最常用的命令进行测试~以简化 10 测试环节的处理。 利用模糊器开始测试前~首先需要针对服务端程序?定义相应的文件~从而构造出完整的模糊器。文件中元素用于对数据模型进行定义~包括数据结构和数据关系等~一个文件中可以定义多个数据模型。 文件中的元素用于定义测试配置信息~用于指定测试中所用的状态模型~等信息。其中状态模型用于描述如何与目标程序进行通信~而用于定义模糊器的连接~构造网络协议数据流或者文件流等。 文件中的元素用于定义代理和监视器信息~指定模糊器在测试执行过程中用于监视测试目标程序异常的调试器。每个文件中可以定义多个元素~每个元素中可以定义多个。 3.实验验证与结果分析 模糊测试效率分析 利用模糊器的语法命令“?_x_[_]”分别对应用启发式模糊测试用例生成方法前后所生成的测试用例数量进行计算。根据运行结果可知~改进前的测试用例为1966个~而改进后的数量减少到232个~仅为原有测试用例总数的%~证明启发式模糊测试用例生成方法有效地减少了用例生成的总数量。 模糊测试通过向目标程序注入大量的畸形数据试图发现测试目标中存在的漏洞~测试用例的数量直接关系到模 10 糊测试的执行时间~亦即模糊测试的效率。根据实验结果可知~改进前的测试执行时间为10小时16分钟28秒~而改进后的执行时间降低到22分钟16秒~仅为改进前的测试执行时间的约%~显著提升了模糊测试的效率。 发现漏洞能力分析 针对执行模糊测试在应用启发式模糊测试用例生成方法前后~均捕获到的漏洞包括 和 两种类型~证明改进后的测试用例的有效性并没有因为总数量的减少而削弱。 在能够触发测试目标程序异常的模糊测试用例数量方面~应用启发式模糊测试用例生成方法前模糊器触发 异常的用例数量为2个~触发 异常的用例数量为18个。 应用启发式模糊测试用例生成方法前模糊器触发 异常的用例数量为12个~触发 异常的用例数量为22个。 改进前触发测试目标程序异常的测试用例总数为20个~占测试用例总数量的比例为[201966?]%,改进后触发测试目标程序异常的测试用例总数为34个~占测试用例总数量的比例为[34232?]%~有效测试用例的比例约为改进前的9倍~证明了启发式模糊测试用例生成方法的有效性。 测试用例详细分析 针对应用启发式模糊测试用例生成方法前后的有效测试用例做详细比较~可以把改动前后有效测试用例的存在 10 情况分为三种情况~具体如表2所示。 结 论 本文在启发式搜索算法和分类树思想的基础上提出了启发式网络协议模糊测试用例生成方法~并对该方法的可行性和有效性进行了实例验证。文中对启发式网络协议模糊测试用例生成方法的研究仍然存在很多不足之处~目前尚未对参考模型中其他层的网络协议进行具体实现与验证~需要在后续的研究过程中进行更加深入的探讨~在具体实现和实例验证的基础上总结提取启发式算子的常用方法。 10
/
本文档为【基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索