网络协议模糊测试_第1页
网络协议模糊测试_第2页
网络协议模糊测试_第3页
网络协议模糊测试_第4页
网络协议模糊测试_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络协议模糊测试1. 网络协议模糊测试网络协议模糊器的测试对象主要是各类网络产 品中的网络协 议解析模块 ,目的是测试其在组装、解 析网络协议过程中是否存 在漏洞。其思想是模糊器通过 Socket 与被测目标之间进行通信 , 向被测目标 应用发送变异或包含错误的模糊值 , 并监视目标应 用以发现错误。使用网络协议模糊器进行模糊测试 , 需要首先 研 究各类协议的规范和标准 ,以便创建合理的测试 数据。目前,最常见的网络协议模糊测试实施方案有两种:方案I为客户端和服务端测试模式 , 即模糊器和被测对象分别为测试过 程的两个端点。此时, 模糊器可充当客户端的角色 , 用来测试服务 端程序的安全性

2、, 例如 Web 服务程序。同 时 ,模糊器也可以充 当服务端的角色 ,用来测试客户 端程序的安全性 . 模糊器中的监 控模块用来对被测对象的行为进行收集、分析以判断是否存在异 常情况。方案H网络协议模糊测试的实施方案是为了测试防火墙、路由 器、安全网关等等部署在网络中间的设备。模糊器构造的数据被 发送至协议服务器的过程中 , 位于模糊器和协议服务器之间的被 测对象对其起到了重组和解析的作用,一旦重组和解析过程中出错,可能造成被测对象出现异常状态。模糊器中的监控模块用来对 被测对象的异常状态进行收集、分析 ,最终定位漏洞所在。通过此方法可发现被测对象在网络协议处理过程中的安全漏洞2. 测试对象

3、理论上,潜在测试目标包括任何能够接受网络数据的任务软件。 0SI7层模型中从数据链路层到应用层每一层都有可能存在实现问 题,再对测试目标进行全面审计时,每一层都要进行测试。3. 测试方法3.1 强制(基于变异)模糊测试先使用嗅探器抓取合法的协议数据, 随后对抓到的数据进行变异,将其发送给目标应用。但在目标应用实现了基本回放攻击保 护或协议包含校验码的两种情况下,这种模糊测试无法达到期望 的测试效果。3.2 智能强制(基于生成)模糊测试智能强制模糊测试首先需要实际研究协议规范。 智能模糊测试 器仍然依靠强制性攻击,可以依赖用户提供的配置文件,使模糊 测试的过程更智能。3.3 通过修改客户端进行变

4、异模糊测试将测试嵌入到已经实现了用我们期望的协议与服务进行通信 的应用中,这样就不用实现在模糊测试器中实现整个协议,给模 糊测试器的开发者带来好处,最小化所需投入的经历。4. 错误检测4.1 手工方式(基于调试器)在进程上附加使用调试器4.2自动化方式(基于代理)设计一个方案来代替手工调试过程。不使用调试器,由模糊测试者编写一个面向目标平台的调试代理并在目标应用上运行之。监视目标进程中发生的异常,并于远程系统上的模糊测试器进行通信。5. UNIX平台自动化网络协议模糊测试5.1使用SPIKE莫糊测试框架SPIKE用模糊字符串库中的内容迭代模糊变量, 达成模糊测试。模糊此符传可以是任何数据类型,

5、甚至是 XDR编码的二进制数据 数组。SPIKE是一个GPL的API和一套工具,它使你可以快速创建 任何网络协议压力测试的测试器。大多数协议都是围绕着非常类 似的数据格式化建立的。这些协议中的许多都已经在SPIKE中得到支持。其他的协议也很快会得到支持。SPIKE使用C语言编写,运行平台UNIX,框架结构如下图所示I W HWW E ” IVII 1惜改日嘲大小£015/5/1 S£0:04文帳dc#dump?01 5/5/10 30=04docu mentation201 5/5/1 fl 20:04encrypted2015/5/18 20:04iricludr2015

6、/5/18 20;04arc?015W18 20:Q4_ CHANGELCG.txt2004/1/15 8:2614 KB13 cleanup.sh2004/1/15 &:26sh vn1 ICBCOMPLTNG,txt200-1/1/1 5 S:261 KB_ GPL.M2004/1/15 e:26文本立档15 KBKtAUMt.tXi2004/1/1 5 8:262 KB_ TODO.txti004/1/15 S1Z6文本文1 KB_ us i n g_th e_sp i lke_a pi-txt2004/1/15 &:26文本加6 ICB也 win2kolexeg20Q4

7、<1/1 5 8;26注曰表取73 KB框架试图方便逆向工程师和安全研究人员复制一个未知的协议, 框架 包括模糊测试器和支持代码,包括以下内容:(1) .webfuzz,提供一许多小工具,以组合一个灵活而全面的web应用程序模糊测试工具。Webfuzz完全依赖于浏览器来生成它的要求, 它总是正确解析 java 和脚本语言。(2) . Msrpcfuzz:尝试运行ncan_tcp程序,它基本上是随机发送参 数,如果端口突然关闭,就发现了一个潜在的严重错误。5.2 针对协议的模糊测试器SPIKE包含一部分预先写好的针对具体协议的模糊测试器,以 下是这些模糊测试器的列表:HTTP模糊测试器Mi

8、crosoft RPC模糊测试器X11 模糊测试器Citrix模糊测试器Sun RPC模糊测试器针对协议的模糊测试脚本SPIKE还包含一些可以嵌入到多个 SPIKE内涵的通用模糊测试器中的脚本。脚本列表如下所示偿改日期大小B7TALK20002015/5/1 fi 20:04文收 CIFS2015/5/18 2004COMPAQ2015/5/1B 2&04文彳垛2015/5/18 20;04文恢FTPD2015/5/18 2004丈件娈 H323£ IMAP2015/5/18 20:04占 lotus2015/5/18 20:<M,.匚ontentM anagement

9、Seruer2O15/5/1S 20:04MESQL2015/5/1S 20:04山 ORACLE2015/5/18 20:04文恢J, POP32015/5/16 20:04文收PPTP2015/5/18 20;04RealServer2015/5/18 20:04文作SMTP2015/5/18 20;04文頤i丸L2015/5/18 20:04.UPMP5.3基于脚本的通用模糊测试器SPIKE有几个通用模糊测试器,他们接收脚本作为输入,下面列出能 在SPIKE中找到的通用模糊测试器:TCP监听模糊测试器(客户端)TCP/UDP发送模糊测试器行缓冲TCP发送模糊测试器5.4 Pop3模糊测试

10、脚本在pop3中可以查看pop3.spk查看pop3模糊测试脚本s_stri ng_variable("USER");s_stri ng("");s_stri ng_variable("Admi nistrator");s_stri ng("rn");s_stri ng("PASS ");s_stri ng_variable("jb on e");s_stri ng_variable("rn");s_stri ng_variable("STAT&

11、quot;);s_stri ng("rn");s_string("LIST "); s_string_variable("1"); s_string("rn");s_string("RETR ");s_string_variable("1");s_string("rn");s_string("DELE ");s_string_variable("1");s_string("rn");s_strin

12、g_variable("NOOPrn");s_string_variable("RSETrn"); s_string_variable("QUITrn");5.5 常用 APIs_string(char *listring):该函数将一个固定字符串添加到 SPIKE被加入 的字符串的值不会被修改。s_stri ng_variable(u nsig ned char *variable):该函数将一个可变字符串添加到SPIKE这个字符串在相应的ibanliang被处理的时候会被模糊字 符串替换掉。s_binary(char * inst

13、ring):该函数将二进制数据添加到 SPIKE加入的数据值不会被修改。6. Windows 平台上的网络协议的模糊测试在windows下使用C#进行模糊测试工具开发,可以创建友好的用户界面。直接调用。 Net 封装函数,节省工作量。6.1 构建数据包利用数据包变异方法, 用户基于已有的合法数据包创建一个模板, 在模板中知名需要修改的部分,从而满足模糊测试的需要。6.2 抓取数据WinPcap使用c语言编写,所以在C#环境下,使用Metro Packet库来 抓取数据包。6.3 解析数据在抓取到数据后, 对被抓取的数据进行解析, 以易于被理解的格式展 现数据都的内容。6.4 模糊测试变量在观察

14、和抓取到网络数据后, 我们需要允许用户表示数据包中适合进 行变异的位置, 以便进行模糊测试。 为此我们允许用户在以十六进制 方式显示的数据内容中加入简单的标签,表明进行模糊测试的部分。ProtoFuzz工具使用下面这些标签:XX-表示强制,将使用所有可能的字节值用方括号括起来的字节 进行模糊测试。将每一个字节模糊测试 256 次。<XX >表示字符串,从用户控制的文本文件中获得预定义的,可变 长的,以十六进制方式表示的字符串进行模糊测试。6.5 发送数据 创建一个可以有用户指定数据包中任何字节的值的裸数据包, 由程序 员来保证数据包符合RFC定义的结构,提供更好的细节控制能力,是 的用户可以对协议头进行模糊测试6.6 ProtoFuzz工具代码结构UpgradeReport Files2015/5/18 21:33文朕Backup2015/5/18 21:33文磁ProtoFuzz2006/11/6 22:14文缺色 Metro.dll2006/11/6 3:48应用程序扩屋92 KBSj ProtoFu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论