SULLEY安装与使用

article/2025/10/7 17:20:02

0x00 原理

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

0x01 安装

         安装指导请参见https://github.com/OpenRCE/sulley/wiki/Windows-Installation#

         安装环境: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与端口,发送报文开始fuzzing
sess = 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 参考

http://blog.csdn.net/cogbee/article/details/34861451

http://blog.sina.com.cn/s/blog_714c124f01015391.html

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


http://chatgpt.dhexx.cn/article/g8YjS4VG.shtml

相关文章

安装sulley注意点

其主要是安装libdasm容易出错&#xff0c;在安装libdasm的时候必须先安装extension模块&#xff0c;而且python版本位数必须要分清&#xff0c;不然在安装模块的时候会一直报错

Sulley安装手记

Sulley折腾手记 序言&#xff1a;sulley是有名的模糊测试架构&#xff0c;可是他的安装十分繁琐&#xff0c;容易出错&#xff0c;以致这么好的工具不被太多人关注&#xff0c;本人大一小白一枚&#xff0c;想入坑sulley&#xff0c;可是网上资料太少&#xff0c;且不连贯&…

PYTHON SULLEY HACKING War-ftpd

走过路过&#xff0c;不要错过这个公众号哦&#xff01; 目 的 1 Sulley是一个使用PYTHON编写的模糊测试框架。与其他FUZZING测试软件相比&#xff0c;Sulley兼顾网络抓包&#xff0c;崩溃信息报告生成以及自动化VMWARE管理功能。 本次我们将部署Sulley&#xff0c;并且使用该框…

【网络协议模糊测试实战】使用sulley对PCManFTP进行模糊测试

0x01 准备工作 1、首先需要安装好sulley&#xff0c;具体安装流程可以参考https://blog.csdn.net/u012397189/article/details/76084919 这篇文章介绍的很详细&#xff0c;按照上面的安装步骤即可安装好sulley 2、准备好两台机器或者安装虚拟机&#xff0c;如果只使用一台机器…

利用Sulley测试easyftp服务器

测试easyftp 这次的目标就是easyftp。直接运行easyftp.exe就能启动FTP服务了。让我们先了解下FTP协议的工作流程。 1、FTP FTP是一个简单轻便的文件传输协议&#xff0c;被广泛的使用于各种环境中&#xff0c;从Web服务器到网络打印机。FTP服务器默认在端口21上监听客户端发…

模糊测试工具Sulley开发指南(2)——与Peach比较

基于已知漏洞的ftp服务器的漏洞挖掘 我们的测试对象是EasyFTP 1.7.0.11,已知漏洞如下(github)&#xff1a; 命令个数CWD1LIST1…11 Peach 简介 MichaelW Eddington等人开发的Peach是一个遵守MIT开源许可证的模糊测试框架&#xff0c;最初采用Python语言编写&#xff0c;发布…

我的sulley安装过程

好了&#xff0c;最开始是在freebuf上看到的一个附录上有这个sulley的安装过程&#xff0c;我欣喜若狂。之后才知道这个就是人家的官方文档。 废话不多说。来贴上google安装源路劲&#xff1a;https://github.com/OpenRCE/sulley/wiki/Windows-Installation# 自己在贴出来看看…

Fuzzing及Sulley简介

一、模糊测试&#xff08;Fuzzing&#xff09; 1、泛化定义&#xff1a; Fuzzing是一种软件漏洞检测技术&#xff0c;通过提供非预期的、随机的或者错误的数据作为输入来检测软件漏洞&#xff0c;在软件出现崩溃时监视异常结果来找出其存在的潜在漏洞。 2、类比理解 可以将…

模糊测试工具Sulley开发指南(3)——整体介绍

我们开始来讲一些Sulley里面的整体介绍&#xff0c;方便我们能系统地了解Sulley的架构&#xff0c;了解Fuzzing的思路&#xff0c;最后能生成py文件来具体运行fuzzing。这章主要是整体印象&#xff0c;下一章开始会讲具体的模块以及如何写代码。 1.Sulley现在的情况 先说说现在…

模糊测试工具Sulley开发指南(1)——安装Sulley(多图,超详细)

本教程是针对的是windows上面的安装&#xff0c;至于其他系统的安装有时间的话会贴出来&#xff0c;本教程翻译自OpenRCE/Sulley-GitHub-Wiki官网教程&#xff0c;但是里面有一些错误我会更正指出。值得一提是&#xff0c;我是在win10 64位系统下面完成本次安装和运行(64位系统…

网络socket编程(c语言)

一.socket通信简介 Socket是对TCP/IP协议的封装&#xff0c;Socket本身并不是协议&#xff0c;而是一个调用接口&#xff08;API&#xff09;&#xff0c;通过Socket&#xff0c;我们才能使用TCP/IP协议,主要利用三元组【ip地址&#xff0c;协议&#xff0c;端口】。 socket起…

Socket的通信原理和使用

目录 一、什么是 Socket&#xff1f; 二、Socket 通信过程 2.1 通信过程介绍 2.2 实现TCP建立连接的三次握手过程 三、 使用Socket进行通信【php】 3.1 PHP中Socket常量和函数介绍 3.2 php实现Socket通信过程 一、什么是 Socket&#xff1f; Socket 的中文翻译过来就是“套接…

linux 网络编程socket

前言 socket&#xff08;套接字&#xff09;是linux下进程间通信的一种方式&#xff0c;通常使用C-S&#xff08;客户端-服务端&#xff09;的方式通信&#xff0c;它可以是同一主机下的不同进程间通信或者不同主机的进程通信。 socket是夹在应用层和TCP/UDP协议层间的软件抽象…

什么是socket?socket详解

“一切皆Socket&#xff01;” 话虽些许夸张&#xff0c;但是事实也是&#xff0c;现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。 我们深谙信息交流的价值&#xff0c;那网络中进程之间如何通信&#xff0c;如我们每天打开浏览器浏览网页时&#xff…

【Python】Socket的简单应用

前言 今天“出差在外”&#xff0c;晚上又琐事缠身&#xff0c;实在也没办法特别沉下心去学什么内容&#xff0c;但还是不希望一天一篇的flag就此倒下&#xff0c;只能多多参考别人的博客浅浅学习一下python的socket应用&#xff0c;后续课内做实验了&#xff0c;学习更深入的…

http和socket关系

一、先说下HTTP网络协议栈 二、连接过程 三、重点来了&#xff0c;TCP套接字编程&#xff0c;也就是所谓的socket 四、通过比较发现http和socket完全是两个不同的概念&#xff0c;http是应用层的&#xff0c;socket是传输层和网络层的&#xff0c;http要基于socket实现。httpcl…

SOCKET函数详解

socket原理 1.socket socket位于应用层和TCP/IP协议通信中间&#xff0c;抽象成一组接口 1.服务端首先初始化Socket(),然后和接口进行绑定bind()和监听listen(),然后调用accept()进行阻塞。 2.客户端初始化socket(),然后调用connect&#xff08;&#xff09;与服务端进行连接…

用大白话解释什么是Socket

好好学习&#xff0c;天天向上 本文已收录至我的Github仓库DayDayUP&#xff1a;github.com/RobodLee/DayDayUP&#xff0c;欢迎Star&#xff0c;更多文章请前往&#xff1a;目录导航 前言 我在去年就学习过Java中Socket的使用&#xff0c;但对于Socket的理解一直都是迷迷糊糊…

Socket详解

“一切皆Socket&#xff01;” 话虽些许夸张&#xff0c;但是事实也是&#xff0c;现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。 我们深谙信息交流的价值&#xff0c;那网络中进程之间如何通信&#xff0c;如我们每天打开浏览器浏览网页时&#xff…

Java socket详解

整理和总结了一下经常遇到的问题&#xff1a; 1. 客户端socket发送消息后&#xff0c;为什么服务端socket没有收到&#xff1f; 2. 使用while 循环实现连续输入&#xff0c;是不是就是多线程模式&#xff1f; 3. 对多线程处理机制不是很明白&#xff0c;希望详细讲解…