SULLEY安装与使用-程序员宅基地

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("[email protected]")
    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("[email protected]")
    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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30652271/article/details/97345489

智能推荐

鸿蒙系统电池耗电,都说iPhone是伪后台,不用关闭程序,一点不耗电,为什么电池里头看使用情况后台耗电这么多?...-程序员宅基地

文章浏览阅读4.4k次。如果说伪后台=单任务,那ios已经死很久了。iOS是支持后台管理的,但是并不是所有的应用程序,也就支持音乐,下载APP,消息推送以及通知会后台运行。例如当你点击home键切换到桌面的时候,你之前运行的程序大多数都会断掉,如果再切换回来,就会出现重新加载的画面,当然,如果你切换回来的时间并不长的话是不会重新加载的。如果是视频或者游戏,当你切换出去的时候它们会自动暂停在那里,不会进行缓冲等后台运行。这..._鸿蒙是伪后台吗

十折交叉验证python_Python实现K折交叉验证法的方法步骤-程序员宅基地

文章浏览阅读1.2k次。##一个简单的2折交叉验证from sklearn.model_selection import KFoldimport numpy as npX=np.array([[1,2],[3,4],[1,3],[3,5]])Y=np.array([1,2,3,4])KF=KFold(n_splits=2) #建立4折交叉验证方法 查一下KFold函数的参数for train_index,test_ind..._python十折交叉验证结果解读

默认ip_基于EtherNet/IP实现欧姆龙NX系列PLC通信-程序员宅基地

文章浏览阅读2.6k次。1、引言工业以太网协议 (Ethernet/IP) 是由ODVA所开发并得到了罗克韦尔自动化的强大支持。它使用已用于ControlNet和DeviceNet的控制和信息协议 (CIP) 为应用层协议。 CIP提供了一系列标准的服务,提供“隐式”和“显示”方式对网络设备中的数据进行访问和控制。CIP数据包必须在通过以太网发送前经过封装,并根据请求服务类型而赋予一个报文头。这个报文头指示了..._欧姆龙plc默认ip

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母_起诉星期几的第一个字用来判断星期几如果第一层膜一样则继续判断第二个字伊一-程序员宅基地

文章浏览阅读2.8k次。char a = '0'; printf("请输入当前星期数的首字母:\n"); scanf("%c", &a); getchar(); if (a == 'm') { printf("星期一\n"); } else if (a =='w') { printf("星期三\n"); } else if_起诉星期几的第一个字用来判断星期几如果第一层膜一样则继续判断第二个字伊一

maven-程序员宅基地

文章浏览阅读580次。1.下载,配置bin目录到path中,mvn -v 测试是否配置成功2.F:\apache-maven-3.5.0-bin\apache-maven-3.5.0\conf\setting.xml里面配置本地仓库的地址 F:\mavenresp3.maven项目的约定的目录结构src/main/java 存放项目的java文件src/main/resources

Unix传奇(下篇)-程序员宅基地

文章浏览阅读78次。Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《Unix 40年:Unix年鉴》、《Unix 40年:昨天,今天和明天》)。由它引发的思想变革,对当今计算机文化造成的深远影响。这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回..._unix传奇

随便推点

android----下载android-4.2源码_5g天天奭5g运动免费入口-程序员宅基地

文章浏览阅读5k次。官网指南:http://source.android.com/source/building-running.html1、安装git和curl 进入Linux ,打开终端,在终端窗口敲下面的命令: sudo apt-get install git-core curl 2、安装repo脚本 首先安装repo。在当前用户:~目录下新建一个bin目录。然后,向PATH_5g天天奭5g运动免费入口

CISCN PWN签到题 task_note_service_easypwn addnote deletenote editnote-程序员宅基地

文章浏览阅读1.6k次。序言 比赛中这道差那么一点点就做出来了程序运行1.menu---------menu---------1. add note2. show note3. edit note4. del note5. exityour choice&gt;&gt;2. add1. add note2. show note3. edit note4. del..._easypwn addnote deletenote editnote

大语言模型?生成式AI?分不清楚的话可以看aws这个例子_生成式ai 大语言模型-程序员宅基地

文章浏览阅读468次。Amazon Bedrock汇聚了众多领先的大语言模型,用户只需通过单一API就能利用来自AI21 Labs、Anthropic、Cohere、Meta Llama2、Stability AI等公司的先进大语言模型来构建自己的应用。除此之外,大语言模型还可应用于舆情分析、自动代码生成、自动问答系统等多个领域,随着技术的不断进步和应用领域的不断拓展,大语言模型具有巨大的潜力和广泛的应用前景。文本生成:大语言模型可以根据给定的上下文或提示,生成连贯、富有创意的文本内容,如文章、故事、诗歌等。_生成式ai 大语言模型

PAT——甲级1046(最短路径)-程序员宅基地

文章浏览阅读421次。英文题,看终于看懂了,要逐字一个个地翻译一开始以为是要用到图的知识后来发现 就先简单的相减求最小值#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;#define maxn 100005int main(){ int m,n,i,j; int sum=0; int a..._甲级1046

Python常见实战问题解析与解决方案_python问题-程序员宅基地

文章浏览阅读1k次,点赞19次,收藏19次。在本文中,深入研究了Python中的常见实战问题及其解决方案,为大家提供了全面的解决方案和实例代码。首先,探讨了内存泄漏问题,并演示了如何通过使用弱引用等手段来有效地解决这类问题,确保程序的内存使用得到良好的管理。其次,重点关注了性能优化,介绍了数据结构的优化、生成器的应用,以及多线程的实际使用,旨在更好地理解和运用这些技术以提高程序效率。异常处理和调试作为开发中不可避免的一环,也在文章中得到充分关注。演示了如何使用try和except处理异常,以及如何利用Python内置的调试工具pdb。_python问题

基于C++实现视频聊天软件(一)_视频通话cpp-程序员宅基地

文章浏览阅读1.4w次,点赞14次,收藏104次。初来乍到,接触到音视频领域,在这期间参考开源代码和项目代码,用C++做了一个类似QQ的视频聊天Demo,这里将其中开源的视频通讯技术分享给大家。 工具: vs2010,MFC制作界面,网络传输机制(Socket等), VFW视频采集,FFmpeg编解码器,SDL播放_视频通话cpp

推荐文章

热门文章

相关标签