Fuzzowski:一款功能强大的网络协议模糊测试工具

枫少@KillBoy
枫少@KillBoy
管理员
220
文章
0
粉丝
资源分享318,6511字数 2113阅读7分2秒阅读模式
AI智能摘要
想快速发现网络协议中的隐藏漏洞?Fuzzowski这款强大的Python3模糊测试工具,融合Sulley与BooFuzz精髓,支持多协议自动化测试,提供可视化崩溃分析与PoC脚本导出。它不仅能精准定位服务异常,还可自定义数据包与注入点,配合监控模块实现高效漏洞挖掘。无论是安全研究员还是渗透测试新手,都能通过它简化 fuzzing 流程,大幅提升漏洞发现效率。
— AI 生成的文章内容摘要

Fuzzowski:一款功能强大的网络协议模糊测试工具-图片1

Fuzzowski

Fuzzowski的设计核心理念,就是想让任何一个网络安全从业人员都会第一选择去使用它,该工具可以帮助研究人员对网络协议进行模糊测试,并且能够在整个测试过程中给我们提供帮助。除此之外,该工具还允许研究人员定义链接,并帮助识别服务的崩溃。

功能介绍

1、基于Sulley Fuzzer实现数据收集功能【GitHub传送门

2、基于BooFuzz部分功能【GitHub传送门

3、Python3

4、非随机性

5、需要指定创建数据包的类型(SPIKE fuzzer风格)

6、允许使用参数创建元数据包,可指定注入点

7、提供功能强大的命令行终端

8、允许跳过引起错误的参数

9、自动化

10、提供完整可视化的可疑数据包内容

11、可将PoC存储为Python脚本

12、提供监控模块帮助实现数据收集

协议实现

1、LPD(Line Printing Daemon):完整实现

2、IPP (Internet Printing Protocol):部分实现

3、BACnet(Building Automation&Control networks Protocol):部分实现

4、Modbus(ICS communication protocol):部分实现

Fuzzowski:一款功能强大的网络协议模糊测试工具-图片3

工具安装

virtualenv venv -p python3

source venv/bin/activate

pip install -r requirements.txt

工具使用帮助

usage: python -m fuzzowski [-h] [-p {tcp,udp,ssl}] [-b BIND] [-st SEND_TIMEOUT]

                    [-rt RECV_TIMEOUT] [--sleep-time SLEEP_TIME] [-nc] [-tn]

                    [-nr] [-nrf] [-cr]

                    [--threshold-request CRASH_THRESHOLD_REQUEST]

                    [--threshold-element CRASH_THRESHOLD_ELEMENT]

                    [--ignore-aborted] [--ignore-reset] [--error-fuzz-issues]

                    [-c CALLBACK | --file FILENAME] -f

                    {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}

                    [-r FUZZ_REQUESTS [FUZZ_REQUESTS ...]]

                    [--restart module_name [args ...]]

                    [--restart-sleep RESTART_SLEEP_TIME]

                    [--monitors {IPPMon} [{IPPMon} ...]] [--path PATH]

                    [--document_url DOCUMENT_URL]

                    host port

       █      █       

       ████████       

      ██████████      

     ██  ████  ██     

     ██  ████  ██     

    ████      ████    

   █ ████████████ █   

   █  ██████████  █   Fuzzowski Network Fuzzer

   █    █     █   █           �  Fuzzers, inc.

       ██     ██       

位置参数:

  host                  目的主机

  port                  目的端口

可选参数:

  -h, –help            显示帮助信息与退出

连接参数:

  -p {tcp,udp,ssl}, –protocol {tcp,udp,ssl}

                        协议(默认为tcp)

  -b BIND, –bind BIND     端口绑定

  -st SEND_TIMEOUT, –send_timeout SEND_TIMEOUT

                        设置send() 超时(默认为5s)

  -rt RECV_TIMEOUT, –recv_timeout RECV_TIMEOUT

                        设置recv() 超时(默认为5s)

  –sleep-time SLEEP_TIME

                        测试睡眠间隔 (默认为0)

  -nc, –new-conns      数据包测试后建林新的连接

  -tn, –transmit-next-node

                        发送模糊节点图中的下一个节点

崩溃选项:

  –threshold-request CRASH_THRESHOLD_REQUEST

                        在跳过请求之前设置请求中允许的崩溃数 (默认为9999)

  –threshold-element CRASH_THRESHOLD_ELEMENT

                        在跳过原语之前,设置该原语中允许的崩溃次数 (默认为3)

  –ignore-aborted      忽略ECONNABORTED 错误

  –ignore-reset        忽略ECONNRESET 错误

  –error-fuzz-issues   当模糊节点中存在任何连接问题时作为错误记录

模糊测试选项:

  -c CALLBACK, –callback CALLBACK

                        用回调生成器将回调地址设置为fuzz而不是普通的突变

  –file FILENAME       使用文件内容进行模糊变异

模糊测试器:

  -f {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}, –fuzz {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}

                        可用协议

  -r FUZZ_REQUESTS [FUZZ_REQUESTS ...], –requests FUZZ_REQUESTS [FUZZ_REQUESTS ...]

                        待测协议,默认为全部

                          dhcp: [opt82]

                          ipp: [http_headers, get_printer_attribs, print_uri_message, send_uri, get_jobs, get_job_attribs]

                          lpd: [long_queue, short_queue, ctrl_file, data_file, remove_job]

                          telnet_cli: [commands]

                          tftp: [read]

                          raw: ['/x01string/n' '/x02request2/x00' ...]

重启选项:

  –restart module_name [args ...]

                        重启模块:

                          run: ‘<executable> [<argument> ...]‘                           smartplug: 开启或关闭smartplug

                          teckin: <PLUG_IP>

  –restart-sleep RESTART_SLEEP_TIME

                        设置崩溃后的睡眠秒数 (默认为5)

监控器选项:

  –monitors {IPPMon} [{IPPMon} ...], -m {IPPMon} [{IPPMon} ...]

                        监控器模块:

                          IPPMon: 向目标发送get-attributes IPP消息

其它选项:

  –path PATH           设置基于HTTP的待测协议路径 (默认为/)

  –document_url DOCUMENT_URL

                        为print_uri设置Document URL

工具使用样例

使用默认参数,对get_printer_attribs IPP操作进行模糊测试:

python -m fuzzowski printer1 631 -f ipp -r get_printer_attribs --restart smartplug

演示视频:https://asciinema.org/a/0RMDMrJWiFo4RoRwAjx61BXDY

使用IPP的元功能来对指纹协议(Finger Protocol)进行模糊测试:

python -m fuzzowski printer 79 -f raw -r '{{root}}/n'

演示视频:https://asciinema.org/a/Pch0JbkNK97dgrCUMK8iIfJv5

使用IPP的元功能来对指纹协议(Finger Protocol)进行模糊测试,但使用的是一个文件:

python -m fuzzowski printer 79 -f raw -r '{{root}}/n' --file 'path/to/my/fuzzlist'

项目地址

Fuzzowski:【GitHub传送门

https://www.freebuf.com/sectool/227869.html

 
枫少@KillBoy
  • it2021
  • it2021.com
  • Python安全工具
  • 协议模糊测试
  • 工业协议安全
  • 渗透测试工具
  • 网络安全
评论  31  访客  31
    • 云间小鹤
      云间小鹤 0

      这工具看着挺专业,就是不知道上手难不难😅

      • 灵感之源
        灵感之源 1

        之前用过BooFuzz,感觉这个像是升级版?

        • 可可酱
          可可酱 0

          要是能支持更多工业协议就更好了,比如S7

            • 墨香阁主
              墨香阁主 0

              @ 可可酱 S7确实是个热门需求,后期看能否贡献驱动进去吧。

            • 星星棉花
              星星棉花 0

              我刚试了LPD模块,结果跑着跑着断连了,有人遇到吗?

              • 怡红快雪
                怡红快雪 0

                非随机性设计其实挺关键的,不然漏洞根本定位不了

                • 星图漫步
                  星图漫步 1

                  监控模块加得好,省得自己写脚本抓崩溃了

                    • 果敢前行
                      果敢前行 0

                      @ 星图漫步 监控模块直接把崩溃信息抓出来,省了自己写日志的麻烦,赞。

                    • 深林语
                      深林语 1

                      前几天刚搞完协议模糊测试,真是头大,早知道等这工具了

                      • 心湖
                        心湖 0

                        命令行参数这么多,能不能整个小抄或者cheat sheet?

                          • 星辰拾荒者
                            星辰拾荒者 1

                            @ 心湖 可以自己把常用的参数写成一个小脚本,或者在项目里加个README,省事。

                          • 袁静
                            袁静 0

                            Python3写的太对了,至少不用折腾环境依赖

                            • Quirk Queen
                              Quirk Queen 0

                              raw模式玩起来应该很爽,适合自定义协议测试

                              • DapperDolphin
                                DapperDolphin 0

                                刚试了下IPP模块,监控部分挺好用的

                                • 时光旅者
                                  时光旅者 0

                                  这工具真的挺好用,直接上手。

                                  • 幽兰语
                                    幽兰语 1

                                    参数列表太杂,实在不友好。

                                    • 啪唧唧
                                      啪唧唧 0

                                      有人说raw模式会炸服务器,真的假的?

                                      • 琉璃幻梦
                                        琉璃幻梦 0

                                        非随机设计很关键。

                                        • 摩卡云
                                          摩卡云 1

                                          这个工具在Mac M1上跑得稳吗?

                                          • 雾隐狐
                                            雾隐狐 0

                                            可以配合Suricata一起用,捕获的流量更完整,还能实时分析,真的很方便。

                                            • 迷雾隐士
                                              迷雾隐士 0

                                              前几天刚用Fuzzowski跑Modbus,卡在连接重置那儿,花了半天才定位问题。

                                              • 勇敢的犀牛
                                                勇敢的犀牛 0

                                                如果想把结果导出成CSV,官方有没有提供脚本?或者手动写也行。

                                                • Mystery Maven
                                                  Mystery Maven 0

                                                  有人说跳过错误参数会导致漏报,大家有没有遇到类似情况?请分享经验。

                                                  • 孔雀羽羽
                                                    孔雀羽羽 0

                                                    真心觉得Fuzzowski把很多繁琐的配置都封装好了,尤其是监控模块和可视化界面,省了我不少手工写脚本的时间,推荐给所有做协议模糊测试的同事们!👍

                                                    • 墨色禅
                                                      墨色禅 1

                                                      这工具上手难度咋样?

                                                      • 星见
                                                        星见 1

                                                        协议支持再多点就好了。

                                                        • 妖梦客
                                                          妖梦客 0

                                                          上手试了下,命令行参数确实多,要是能有个图形界面配置就好了。

                                                          • 梦回荒村
                                                            梦回荒村 0

                                                            这工具对LPD支持完整,正好我们打印机协议测试用得上。

                                                            • RiddleOfSleep
                                                              RiddleOfSleep 1

                                                              这名字有点意思。

                                                                • Serene Cloud
                                                                  Serene Cloud 1

                                                                  @ RiddleOfSleep Fuzz +owski,组合起来挺带感

                                                                • 暗夜魔导师
                                                                  暗夜魔导师 0

                                                                  看文档好像没提Python版本要求,3.6以上都能跑吗?

                                                                匿名

                                                                发表评论

                                                                匿名网友

                                                                拖动滑块以完成验证