转载自FreeBuf.COM

本文将以SNMP协议为例介绍如何使用beSTORM进行网络协议Fuzz。

实验环境

Windows 7 X64 (IP:192.168.0.123)

beSTORM 3.7

被测机器:Centos (IP:192.168.0.120)

Perl 5

一、beSTORM架构简介

beSTORM的架构分为两个部分,一部分为Client,另一部分为Monitor。其中Client用于向被测程序发送畸形数据包;Monitor用于监控被测程序的状态,一旦发现被测程序出现异常立即记录下来,并发送给Client端,如下图所示。

二、配置Monitor

通常在Windows环境下的对被测程序的监控使用GUI版本的Monitor,如下图所示。

在Linux环境下对被测程序的监控利用gdb调试工具,gdb可以在被测程序发生异常时通知beSTORM的Client端。beSTORM提供一个Perl脚本(gdb_monitor.pl文件),该脚本将gdb作为被测程序的调试器,并且将运行信息通过UDP发送给beSTORM的Client端。

首先在beSTORM的安装目录下找到gdb_monitor.pl文件。该脚本共有4个参数,分别是:(1)host,指定beSTORM client的host。(2)port,指定beSTORM的client的UDP端口用于接收异常信息。(3)file,指定被测程序。(4)pid,指定需要附加进程的PID。

本文对远程服务器的SNMP协议进行Fuzz,首先查看SNMP协议161端口对应的进程,如下图所示,对应进程的PID为4670。

故pl脚本的执行命令如下:

perl gdb_monitor.pl --host 192.168.0.123 --pid 4670

0×3 配置beSTORM

(1)向导步骤1。首先新建beSTORM的工程,向导第一步如下图所示。这里选择“Advanced”。

(2)向导步骤2。注意在predefined modules中选择SNMP协议,Hostname or IP address编辑框中填写被测服务器的IP地址192.168.0.120。

(3)向导步骤3。

选中“Run in batch mode”(以批处理模式运行)复选框时,beSTORM发现首个错误后会继续运行。注意,在这种情况下,无论采用重新启动还是其他方法,都应从之前的错误中恢复被测程序。

选中“Make sure monitor is up before starting”(确保开始前开启监控器)复选框时,beSTORM收到测试环境发出的约定信号后才会开始测试。这样,beSTORM就可确定测试环境是否运行正常。

选中“Report connectivity issues as exceptions”(报告异常连接问题)复选框时,如果beSTORM无法接收测试环境发出的网络流量,即视为存在潜在问题或漏洞。这一功能会将所有网络问题识别为潜在漏洞,因此对于测试监控难度较大的环境(例如专用硬件设备)大有帮助。通过这种方式,beSTORM可以在后续的处理中轻松地发现同样的问题,并找出原因。

选中“Periodically test connection and report vulnerability upon failure”(定期测试连接并在出现故障时报告漏洞)复选框时,beSTORM会测试被测程序的操作,并对于非正常流量做出回应。如果没有出现预期响应,beSTORM会生成异常报告。

(4)向导步骤4。在步骤4可以查看本工程中的已有配置,可以手动修改相关配置。

(5)向导步骤5。SPS(Session per Second)即为每秒连接次数,请根据服务器性能设置。Host or IP address需要填写Monitor的IP地址,一般情况下,Monitor的IP地址与被测目标程序所在IP地址是一致的。

(6)向导步骤6。

beSTORM Client运行界面如下图所示。

0×4 Fuzz测试

配置完毕后,可以查看的此次Fuzz测试的架构,如下图所示。

当beSTORM Client开始发送畸形数据包时,可以配置tcpdump抓取到beSTROM发送到161端口的畸形数据包,tcpdump抓取结果如下图所示,抓取命令为:tcpdump –nn –i eth0 port 161。

此时可以坐等被测程序出现异常,Monitor可以检测到异常,并将异常发送给beSTORM Client。

ref: 《beSTORM – User Guide》

*本文作者:dolphin,转载自FreeBuf.COM

beSTORM之网络协议Fuzz入门教程的更多相关文章

  1. TCP/IP网络协议基础入门及实验

    TCP/IP简介 提到网络协议栈结构,最著名的当属 OSI 七层模型,但是 TCP/IP 协议族的结构则稍有不同,它们之间的层次结构有如图对应关系: 可见 TCP/IP 被分为 4 层,每层承担的任务 ...

  2. 网络协议 HTTP入门学习

    概述 Web 的诞生,源于三大技术的诞生,它们都是当年 Web 之父 Tim Berners-Lee 自己 开发的,世界上第一个网站诞生的时间是 1991 年,三大技术的诞生也就是在此之前的不久: 1 ...

  3. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  4. 【RL-TCPnet网络教程】第22章 RL-TCPnet之网络协议IP

    第22章      RL-TCPnet之网络协议IP 本章节为大家讲解IP(Internet Protocol,网络协议),通过前面章节对TCP和UDP的学习,需要大家对IP也有个基础的认识. (本章 ...

  5. 用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学

    首发于:用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=428 给软 ...

  6. GAN网络从入门教程(一)之GAN网络介绍

    GAN网络从入门教程(一)之GAN网络介绍 稍微的开一个新坑,同样也是入门教程(因此教程的内容不会是从入门到精通,而是从入门到入土).主要是为了完成数据挖掘的课程设计,然后就把挖掘榔头挖到了GAN网络 ...

  7. GAN网络从入门教程(二)之GAN原理

    在一篇博客GAN网络从入门教程(一)之GAN网络介绍中,简单的对GAN网络进行了一些介绍,介绍了其是什么,然后大概的流程是什么. 在这篇博客中,主要是介绍其数学公式,以及其算法流程.当然数学公式只是简 ...

  8. GAN网络从入门教程(三)之DCGAN原理

    目录 DCGAN简介 DCGAN的特点 几个重要概念 下采样(subsampled) 上采样(upsampling) 反卷积(Deconvolution) 批标准化(Batch Normalizati ...

  9. GAN网络之入门教程(五)之基于条件cGAN动漫头像生成

    目录 Prepare 在上篇博客(AN网络之入门教程(四)之基于DCGAN动漫头像生成)中,介绍了基于DCGAN的动漫头像生成,时隔几月,序属三秋,在这篇博客中,将介绍如何使用条件GAN网络(cond ...

随机推荐

  1. mysql查询表中最后一条记录

    查询全部的记录:            select * from test_limit ; 查第一条记录:             select * from test_limit limit 1; ...

  2. IP分组

    IP 分组为了更准确地讨论 I n t e r n e t协议处理,我们必须定义一些名词.图 显示了在不同的I n t e r n e t层之间传递数据时用来描述数据的名词.我们把传输协议交给 I P ...

  3. BZOJ3122 随机数生成器——BSGS

    题意 链接 给定 $p,\ a,\ b, \ x_1$,现有一数列 $$x_{i+1} \equiv (ax_i + b) \ mod \ p$$ 求最小的 $i$ 满足 $x_i = t$ 分析 代 ...

  4. 5、组件注册-@Scope-设置组件作用域

    5.组件注册-@Scope-设置组件作用域 IOC容器默认都是单实例的 /** * * {@link ConfigurableBeanFactory#SCOPE_SINGLETON SCOPE_SIN ...

  5. mysql 数据库练习题

    前面学习了MySQL的语句的基本用法,这里就开始做一些MySQL练习,这套题目一共45题,属于比较简单的,初学先试着做这个. 参考链接:https://www.cnblogs.com/SJP666/p ...

  6. Appium自动化测试教程-自学网-Package与Activity

    Package Package 包.只是在我们的app中这个Package是唯一的,就像你身份证号码一样.在我们做app自动化时,我们就需要知道他的Package,我们知道了Package那么也就知道 ...

  7. Turbo编码

    在做项目时,观察到师兄代码中的Turbo编码过程,不是很理解,把实现过程分享出来,原理则参考引用链接: 以512长原始数据为例,按照LTE标准的1/3码率对其编码,编码后的数据为(1548,512), ...

  8. stark项目流程

    1 创建Django项目 2 创建app python manage.py startapp app名 3 文件配置 app配置 静态文件配置 创建文件夹,下载bootstrap,jquery 归档文 ...

  9. linux中fork--子进程是从哪里开始运行

    转自  http://blog.csdn.net/koches/article/details/7787468 fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值 ...

  10. Applications (ZOJ 3705)

    题解:就是题目有点小长而已,可能会不想读题,但是题意蛮好理解的,就是根据条件模拟,计算pts.(送给队友zm. qsh,你们不适合训练了.) #include <iostream> #in ...