博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SULLEY安装与使用
阅读量:4629 次
发布时间:2019-06-09

本文共 3153 字,大约阅读时间需要 10 分钟。

0x00 原理

         Sulley适合于网络协议的fuzzing,通过分析网络协议的交互过程,编写python脚本,定制协议报文的格式,大量发送变异报文,对目标进行模糊测试。模糊测试的效率取决于对测试协议的了解与深入分析。

0x01 安装

         安装指导请参见

         安装环境:win7 + python2.7.10

         安装指导中,大部分步骤都能顺利进行,这里对里面使用到的库及安装过程中遇到的一些问题进行说明,其他按指导中进行即可。

MinGW

Windows下对linux下工具的支持,这里主要对编译器gcc等

Git

Github工具,为了下载安装其他工具与库

Pydbg

Python写的调试器工具

Libdasm

反汇编库

Sulley

Sulley主程序

Pcapy

Python通过pcapy调用winpcap的接口

Winpcap dev kit

编译pcapy所需要的头文件与lib文件

Winpcap

Windows下的抓包工具,安装wireshark会默认安装

Impacket

提供访问网络数据包的类

        

依赖关系:sulley中有两个重要的监控程序process_monitor.py与network_monitor.py

process_monitor.py依赖于pydbg与libdasm

network_monitor.py依赖于pcapy与impacket、winpcap

libdasm与pcapy安装需要依赖于MinGW下的编译器。

         可能遇到的问题:

  1. Libdasm的编译

指定MinGW为编译器(可能会遇到版本问题)来解决

安装Microsoft Visual C++ Compiler Package for Python 2.7来解决

直接网上下载编译好的pydasm.pyd放到对应的目录中

从安装指导来看,最主要的就是site-packages下有pydasm.pyd文件,所以可以直接从网上下载该文件放到对应目录下。

2. Pcapy的编译

如果指定MinGW安装遇到编译问题,可以安装Microsoft Visual C++ Compiler Package for Python 2.7, 然后通过pip install pcapy进行安装。(pip 工具也需要安装的,网上搜索一下即可)。 找不到头文件需要指定Winpcap dev kit的include与lib路径,或者将里面的文件拷贝到python对应的文件夹下。

         验证:process_monitor.py与network_monitor.py能正常运行

0x02 编写测试脚本,开始fuzzing

编写测试脚本:

from sulley import *def get_greeting_msg(sock):    greet_message = sock.recv(10000)#sessions.session.log("Greeting Message -->%s" % get_greeting_msg, 2)def callback(sessions, node, edge, sock):    #sessions.session.log("Data sent -->%s" % node.render(), 2)    pass#通过分析协议交互报文,编写报文格式s_initialize("helo")if s_block_start("helo"):    s_static("helo")    s_delim(" ")    s_static("test.com")    s_static("\r\n")    s_block_end()s_initialize("ehlo")if s_block_start("ehlo"):    s_static("ehlo")    s_delim(" ")    s_random("xxx.com", 5, 10)    s_static("\r\n")    s_block_end()s_initialize("mail from")if s_block_start("mail from"):    s_static("mail from: ")    s_delim("")    s_delim("<")    s_static("haha@ims.com")    s_delim(">")    s_static("\r\n")    s_block_end()s_initialize("rcpt to")if s_block_start("rcpt to"):    s_static("RCPT TO")    s_delim(":")    s_static("alice@test.com")    s_static("\r\n")    s_block_end()    s_initialize("pre_data")if s_block_start("pre_data"):    s_static("DATA\r\n")    s_block_end()    s_initialize("data_content")if s_block_start("data_content"):    s_static("Receive:")    s_string("Whatever")    s_static("\r\n")    s_static("Subject:")    s_string("GOGOGOA"*2)    s_static("\r\n")    s_static("\r\n")    s_string("haha")    s_static("\r\n.\r\n")    s_block_end()#构建session,指定目标IP与端口,发送报文开始fuzzingsess = sessions.session(log_level=100)target = sessions.target("192.168.1.115",25)sess.add_target(target)sess.connect(sess.root, s_get("helo"), callback)sess.connect(sess.root, s_get("ehlo"), callback)sess.connect(s_get("helo"), s_get("mail from"), callback)sess.connect(s_get("ehlo"), s_get("mail from"), callback)sess.connect(s_get("mail from"), s_get("rcpt to"), callback)sess.connect(s_get("rcpt to"), s_get("pre_data"), callback)sess.connect(s_get("pre_data"), s_get("data_content"), callback)sess.fuzz()

执行程序:

0x03 总结

         Sulley模糊测试的效率取决于对测试协议的了解程度,需要对测试协议有深入的了解,编写对应的报文格式。 sulley作者已经停止开发,有一些版本问题,网上的一些示例可能在调用方式上有一些改变,对python熟悉可以查看sulley的源代码调整函数的调用。

0x04 参考

转载于:https://www.cnblogs.com/alert123/p/4916517.html

你可能感兴趣的文章
【12.16】VC++调用Word OLE进行自动化生成报表
查看>>
用Maven创建第一个web项目
查看>>
php中的抽象类(abstract class)和接口(interface)
查看>>
linux安装ActiveMQ
查看>>
面向对象与软件工程---团队作业1
查看>>
认识一下Kotlin语言,Android平台的Swift
查看>>
hdu5389 Zero Escape
查看>>
【转】android电池(四):电池 电量计(MAX17040)驱动分析篇
查看>>
android中的回调
查看>>
redis启动、清缓存命令
查看>>
Java的Clone
查看>>
CSS 弹出层 支持IE/FF/OP
查看>>
maven的配置-2019-4-13
查看>>
进程调度
查看>>
百练 2973 Skew数 解题报告
查看>>
C# 温故而知新:Stream篇(二)
查看>>
回首2016,展望2017
查看>>
你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!
查看>>
HashMap源码分析(一)
查看>>
玩转Android之二维码生成与识别
查看>>