beSTORM之网络协议Fuzz入门教程
转载自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入门教程的更多相关文章
- TCP/IP网络协议基础入门及实验
TCP/IP简介 提到网络协议栈结构,最著名的当属 OSI 七层模型,但是 TCP/IP 协议族的结构则稍有不同,它们之间的层次结构有如图对应关系: 可见 TCP/IP 被分为 4 层,每层承担的任务 ...
- 网络协议 HTTP入门学习
概述 Web 的诞生,源于三大技术的诞生,它们都是当年 Web 之父 Tim Berners-Lee 自己 开发的,世界上第一个网站诞生的时间是 1991 年,三大技术的诞生也就是在此之前的不久: 1 ...
- 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代码方式来 ...
- 【RL-TCPnet网络教程】第22章 RL-TCPnet之网络协议IP
第22章 RL-TCPnet之网络协议IP 本章节为大家讲解IP(Internet Protocol,网络协议),通过前面章节对TCP和UDP的学习,需要大家对IP也有个基础的认识. (本章 ...
- 用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学
首发于:用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=428 给软 ...
- GAN网络从入门教程(一)之GAN网络介绍
GAN网络从入门教程(一)之GAN网络介绍 稍微的开一个新坑,同样也是入门教程(因此教程的内容不会是从入门到精通,而是从入门到入土).主要是为了完成数据挖掘的课程设计,然后就把挖掘榔头挖到了GAN网络 ...
- GAN网络从入门教程(二)之GAN原理
在一篇博客GAN网络从入门教程(一)之GAN网络介绍中,简单的对GAN网络进行了一些介绍,介绍了其是什么,然后大概的流程是什么. 在这篇博客中,主要是介绍其数学公式,以及其算法流程.当然数学公式只是简 ...
- GAN网络从入门教程(三)之DCGAN原理
目录 DCGAN简介 DCGAN的特点 几个重要概念 下采样(subsampled) 上采样(upsampling) 反卷积(Deconvolution) 批标准化(Batch Normalizati ...
- GAN网络之入门教程(五)之基于条件cGAN动漫头像生成
目录 Prepare 在上篇博客(AN网络之入门教程(四)之基于DCGAN动漫头像生成)中,介绍了基于DCGAN的动漫头像生成,时隔几月,序属三秋,在这篇博客中,将介绍如何使用条件GAN网络(cond ...
随机推荐
- .Net优秀应用界面大PK!DevExpress年度大赛,群雄逐鹿花落谁家
DevExpress 优秀界面图片火热征集中! 只要您晒出来,慧都就为您颁奖! 角逐前三,百度AI音箱.小米行李箱等惊喜大礼等您Pick! 活动时间:12月1日-12月31日 立即参与 活动详情 活动 ...
- 双击bin/startup.bat启动tomcat常见错误
双击bin/startup.bat启动tomcat常见错误: 常见错误:可能与其他服务的端口号冲突. tomcat的默认端口号8080,此端口号较为常见,建议修改此端口号. 修改方法: 点击conf文 ...
- MySQL Data Directory -- Creating file-per-table tablespaces outside the data directory
Creating file-per-table tablespaces outside the data directory 一. Data Directory 1.应对情况 当数据库所在空间不足的时 ...
- Try-Catch-Finally代码块中的return
测试类的原型是这样子的 public class TryCatchFinallyToReturn { public static void main(String[] args) { System.o ...
- 前端逼死强迫症系列之javascript
JavaScript 和Python.C#.Java.Ruby一样,都是一门独立的编程语言. 像python.C.Java等都需要解释器,学习它们的语法.而浏览器本身就是javascript的解释器. ...
- 利用 force index优化sql语句性能
[转自:https://blog.csdn.net/bruce128/article/details/46777567]并进行总结 今天写了一个统计sql,在一个近亿条数据的表上执行,200s都查不出 ...
- Oracle导入数据时出错ORA-39143:转储文件可能是原始的转储文件
dmp文件是使用exp命令导出的,所以使用impdp导入则会报错误. 正确的导入语句为:imp sde/salis@orcl file='E:\sde.dmp' full=y;
- jvm方法栈
调用栈 先入后出 栈是一个只有一个口的容器,先进入栈的会落到栈底,出栈的时候最后出.最后进入栈的,在栈顶,出栈时先出. 方法调用时,需要在内存中开辟一块存储空间做为线程栈空间 每个线程都由自己的栈 调 ...
- Qt configure 参数
在编译QT前,可加各种参数来定制自己想要的QT库.这对需要裁减QT库的朋友来说非常重要.对于如何编译QT,可以参考:http://hi.baidu.com/agassi%5Fp/blog/item/4 ...
- arcgis python 标注
import arcpy mxd = arcpy.mapping.MapDocument("current") lyr = arcpy.mapping.ListLayers(mxd ...