《Metasploit渗透测试手册》—第8章8.7节 使用Metasploit进行模糊测试

8.7 使用Metasploit进行模糊测试
Metasploit渗透测试手册
模糊测试是一种软件测试技术,包括使用随机的数据注入检测软件中的漏洞。模糊测试脚本生成畸形数据时,将其传送给特定的目标软件以验证其是否会导致溢出。Metasploit提供中包含某些模糊测试模块,可用于漏洞利用代码开发。下面探索一下模糊测试的基础,以及怎样将Metasploit模块用作潜在的模糊测试器。

准备
在介绍Metasploit模糊测试模块之前,首先对模糊测试及其类型进行简单的了解。

模糊测试被视为是一种黑盒测试技术,用于发现软件中的溢出问题,这一技术广泛地应用于应用程序漏洞挖掘。

模糊测试器可用于测试软件、协议和文件格式中的漏洞,可自动化实现测试数据生成和注入的过程,用户可控制用于注入的数据或数据包的大小。

模糊测试器一般测试如下攻击组合。

数字(有符号/无符号证书、浮点数等)

字符(URL和命令行输入)

元数据:用户输入的文本(id3标签)

纯粹的二进制序列

根据待测试的应用程序或协议的类型,可以相应地建立模糊测试器,以生成数据/数据包测试其是否导致溢出。Metasploit中包含了一些模糊测试模块,可以利用黑盒测试方法测试应用程序和协议。这些模块存储在modules/auxiliary/fuzzers目录中。

怎样实现
下面运行一个基于协议的模糊器模块,Metasploit中包含一个名为client_ftp.rb的FTP模块,其作用是充当FTP服务器,并向FTP客户端发送回应信息。

msf > use auxiliary/fuzzers/ftp/client_ftp
msf auxiliary(client_ftp) > show options
Module options:
   Name   Current Setting   Required     Description
   ----   ---------------   --------     -----------
  CYCLIC       true           yes       Use Cyclic pattern instead..
  ENDSIZE     200000          yes       Max Fuzzing string size.
  ERROR        false          yes       Reply with error codes only
  EXTRALINE    true           yes       Add extra CRLF's in..
  FUZZCMDS     LIST..         yes       Comma separated list..
  RESET        true           yes       Reset fuzzing values after..
  SRVHOST     0.0.0.0         yes       The local host to listen on.
  SRVPORT       21            yes       The local port to listen on.
  SSL          false          no        Negotiate SSL for incoming..
  SSLVersion   SSL3           no        Specify the version of SSL..
  STARTSIZE    1000           yes       Fuzzing string startsize.
  STEPSIZE     1000           yes       Increment fuzzing string..

从结果可以看到该模块包含很多有用的参数,下面看一下每个参数代表的功能。

CYCLIC选项用于建立模糊测试数据的循环模式,确保每隔4个字节的偏移量。如果该选项设置为false,则模糊器将使用字母A组成的字符串作为模糊测试数据。

ENDSIZE选项用于定义返回给FTP客户端的模糊测试数据的最大长度。默认情况下,该数值设置为20000字节。

ERROR选项如果被设置为true,将使用错误代码对FTP客户端进行响应。

EXTRALINE选项用于模糊测试目录列表。在收到过多的目录名请求时,有些FTP客户端会崩溃。

FUZZCMDS选项用于定义对哪些响应信息进行模糊测试,可能的请求包括LIST、NLST、LS和RETR,也可以将其设置为*,以便对所有命令进行模糊测试。

SRVHOST选项用于指定模糊测试器将使用哪个IP地址与FTP服务器进行绑定。对于本地机器,这个值可以设置为0.0.0.0。

SRVPORT选项用于定义FTP服务器端口,默认值为21。

STARTSIZE选项用于定义模糊测试数据的初始化数据长度。

STEPSIZE选项用于定义溢出失败时,模糊测试数据每次的增量。

在使用模糊测试器时,需要注意如果没有传递正确的参数值,可能会导致模糊测试失败。要对模糊器有更深入的理解,可以查看模块的源代码。下面运行FTP客户端模糊测试器,并查看其返回结果。

msf auxiliary(client_ftp) > run
[*] Server started.
[*] Client connected : 192.168.56.102
[*]  - Set up active data port 20
[*] Sending response for 'WELCOME' command, arg
[*] Sending response for 'USER' command, arg test
[*] Sending response for 'PASS' command, arg test
[*]  - Set up active data port 16011
[*] Sending response for 'PORT' command, arg 192,168,0,188,62,139
[*] Handling NLST command
[*]  - Establishing active data connection
[*]  - Data connection set up
[*] * Fuzzing response for LIST, payload length 1000
[*] (i) Setting next payload size to 2000
[*]  - Sending directory list via data connection

输出信息中有几点需要特别注意,首先,FTP服务器在攻击机器上启动,之后回连FTP客户端,并向客户端机器发送不同的响应命令。模糊测试过程从NLST命令开始,之后是LIST等命令。

上面是模糊测试模块工作方式的一个小示例,下节中我们将构建自己的模糊测试模块,并对协议模糊测试进行深入理解。

怎样工作
模糊测试器会根据目标应用程序创建不同的测试用例,在上面的示例中,FTP服务器的模糊测试是通过发送随机数据包之后对响应消息进行分析实现的,数据包可以对网络流量中的如下属性进行模糊测试。

数据包头:模糊测试器可以将任意长度和取值的随机数据插入到数据包头部,并对响应消息进行分析。

数据校验和:使用模糊测试器可以在特定的条件下对校验和值进行操纵。

数据包大小:可以将任意长度的数据包发送给网络应用程序以判断是否会引发崩溃。

发生溢出或崩溃后,模糊测试器可以返回测试用例当做溢出数据使用。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-08-03 15:13:48

《Metasploit渗透测试手册》—第8章8.7节 使用Metasploit进行模糊测试的相关文章

《Metasploit渗透测试手册》—第8章8.8节编写FileZilla FTP模糊测试器

8.8 编写FileZilla FTP模糊测试器Metasploit渗透测试手册前面已分析过模糊测试模块的工作过程,本节中将进一步构建自己的小型FTP模糊测试器,用于对FileZilla FTP服务器进行模糊测试. 怎样实现构建模糊测试器的基本模板与前面开发辅助模块所用的模板类似,基本模板应具有如下的形式. require 'msf/core' class Metasploit3 < Msf::Auxiliary include Msf::Auxiliary::Scanner def initi

《Metasploit渗透测试手册》—第1章1.8节在Metasploit框架中建立数据库

1.8 在Metasploit框架中建立数据库 Metasploit渗透测试手册 Metasploit的重要特点是包括用于存储渗透测试结果的数据库.渗透测试涉及大量信息,并且持续数天,因此存储中间结果是必要的.因此,好的渗透测试工具应该正确地整合数据库,以便快速高效地存储结果. 准备 默认情况下,Metasploit将自带的PostgreSQL作为基础数据库.在BackTrack上,还有另外一种选择,也就是MySQL数据库.用户可以使用这两种数据库中的任一种.我们先来看一下PostgreSQL数

《高度安全环境下的高级渗透测试》—第1章1.2节渗透测试开始之前

1.2 渗透测试开始之前在渗透测试开始之前,必须考虑一些需求:你需要界定测试的范围.时间限制和约束条件.测试的类型(白盒测试.黑盒测试).如何处理第三方的设备以及IP地址空间.渗透测试执行标准(PTES)列出一些界定范围的条款作为"前期互动"阶段的部分内容.我强烈建议你在http://www.pentest-standard.org/index.php/Pre-engagement查看这一部分的内容. 尽管这本书不直接遵循PTES进行讲解,但是我将试着将本书与PTES相关的部分关联起来

《高度安全环境下的高级渗透测试》—第1章1.1节什么是高级渗透测试

第1章 计划和界定一次成功的渗透测试高度安全环境下的高级渗透测试本章将介绍在对一个复杂和加固环境进行渗透测试时,该如何进行计划和准备.本章将讲解下述主题: 什么是高级渗透测试:如何成功地界定渗透测试目标:渗透测试之前需要出现哪些情况:设定你的测试范围--凡事总有结束的时候:制定执行计划:利用MagicTree进行精细管理:使用MagicTree导出各种格式的测试结果:使用Dradis进行基于团队的数据收集和信息共享:在Dradis中创建可重用的模板.1.1 什么是高级渗透测试渗透测试能有效检测你

《高度安全环境下的高级渗透测试》—第1章1.8节总结

1.8 总结在这一章中,我们讲解了一次成功的渗透测试之前所有必要的准备和计划.我们讨论了渗透测试和漏洞评估之间的区别. 详细阐述了界定恰当范围的具体步骤,这些步骤确保了在渗透测试前应该收集的信息,值得注意的是,恰当的界定范围和制定计划与测试中发现最新重大漏洞一样重要. 我们同时也讨论了如何安装VitualBox和BackTrack,不仅给出了从ISO文件安装BackTrack的必要指导,还给出了如何保持更新的指令.除此之外,我们也提供了在BackTrack上安装OpenOffice的指令. 最后

《高度安全环境下的高级渗透测试》—第1章1.7节Dradis框架介绍

1.7 Dradis框架介绍Dradis框架是一个Rails应用程序,它可以用于管理在渗透测试时出现的数据过载情况.Dradis基于Web的用户界面体验良好,它简化了渗透测试周期的数据收集过程,并且能够将数据方便地分享给团队其他成员. 在结合不同的数据源,例如Nmap.Nessus,甚至Metasploit时,你通常需要构造某种数据库,然后使用各种方法管理导入的数据.Dradis可以让你单击几下鼠标,就能通过插件导入这些数据.Dradis也允许你上传附件(例如截图),或将你自己的注释添加至数据库

《高度安全环境下的高级渗透测试》—第1章1.4节探索BackTrack

1.4 探索BackTrack 恭喜,你现在已经拥有了世界上最强大的渗透工具集,并且已经安装好供你使用了.整本书将致力于介绍BackTrack--Linux平台上最优秀的工具集,该工具集无疑将会为你在渗透测试阶段节省大量的时间. 1.4.1 登录 安装的默认登录信息如下所示: bt login:root bt password:toor 1.4.2 修改默认密码 登录后,我们应该尽快修改默认密码.通过终端输入passwd,将密码替换为例子中的1NewPassWordHere这个密码作为你的安全密

《高度安全环境下的高级渗透测试》—第1章1.3节制订执行计划

1.3 制订执行计划一旦开始测试,你需要准备一些东西.这需要一个执行计划,你的所有设备和脚本都需要启动并处于运行状态,你还需要制定一些机制来记录所有的步骤和操作.这样也能为你自己和团队其他成员提供一个参考.你可能现在还记得绕过某台防火墙的步骤,但是当你在4个月之后面对同样的防火墙时,你还记得住么?做好记录对一次成功的渗透测试而言至关重要. 对于本书而言,我们将使用VirtualBox来回顾BackTrack套件的安装过程.VirtualBox是在GNU通用公共许可协议(GPL)保护下,由Orac

《高度安全环境下的高级渗透测试》—第1章1.5节安装OpenOffice

1.5 安装OpenOffice有时你需要打开电子表格查看IP的范围,或者需要迅速查看你的ROE.很多时候,在BackTrack中,最好让你的数据收集工具所导出的数据直接生成一个文字处理文件.目前,有很多与Microsoft Word 类似的开源软件,OpenOffice 就是一个非常好的选择.OpenOffice已经被很多公司采用,它可以输出各种文件格式.在BackTrack上安装OpenOffice只需要打开一个终端,并输入下述命令即可: # apt-get update # apt-get