• Stars
    star
    702
  • Rank 62,026 (Top 2 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created almost 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

the Network Protocol Fuzzer that we will want to use.

Fuzzowski

       β–ˆ      β–ˆ       
       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ       
      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ      
     β–ˆβ–ˆ  β–ˆβ–ˆβ–ˆβ–ˆ  β–ˆβ–ˆ     
     β–ˆβ–ˆ  β–ˆβ–ˆβ–ˆβ–ˆ  β–ˆβ–ˆ     
    β–ˆβ–ˆβ–ˆβ–ˆ      β–ˆβ–ˆβ–ˆβ–ˆ    
   β–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆ   
   β–ˆ  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  β–ˆ   Fuzzowski Network Fuzzer
   β–ˆ    β–ˆ     β–ˆ   β–ˆ           πŸ„―  Fuzzers, inc.
       β–ˆβ–ˆ     β–ˆβ–ˆ                by Mario Rivas

Travis

The idea is to be the Network Protocol Fuzzer that we will want to use.

The aim of this tool is to assist during the whole process of fuzzing a network protocol, allowing to define the communications, helping to identify the "suspects" of crashing a service, and much more

Last Changes

[16/12/2019]

  • Data Generation modules fully recoded (Primitives, Blocks, Requests)
    • Improved Strings fuzzing libraries, allowing also for custom lists, files and callback commands
    • Variable data type, which takes a variable set by the session, the user or a Response
  • Session fully recoded. Now it is based on TestCases, which contains all the information needed to perform the request, check the response, store data such as errors received, etc.
  • Responses added. Now you can define responses with s_response(), This allows to check the response from the server, set variables and even perform additional tests on the response to check if something is wrong
  • Monitors now automatically mark TestCases as suspect if they fail
  • Added the IPP (Internet Printing Protocol) Fuzzer that we used to find several vulnerabilities in different printer brands during our printers research project (https://www.youtube.com/watch?v=3X-ZnlyGuWc&t=7s)

Features

  • Based on Sulley Fuzzer for data generation [https://github.com/OpenRCE/sulley]
  • Actually, forked BooFuzz (which is a fork of Sulley) [https://github.com/jtpereyda/boofuzz ]
  • Python3
  • Not random (finite number of possibilities)
  • Requires to β€œcreate the packets” with types (spike fuzzer style)
  • Also allows to create ""Raw"" packets from parameters, with injection points (quite useful for fuzzing simple protocols)
  • Has a nice console to pause, review and retest any suspect (prompt_toolkit ftw)
  • Allows to skip parameters that cause errors, automatically or with the console
  • Nice print formats for suspect packets (to know exactly what was fuzzed)
  • It saves PoCs as python scripts for you when you mark a test case as a crash
  • Monitor modules to gather information of the target, detecting odd behaviours and marking suspects
  • Restarter modules that will restart the target if the connection is lost (e.g. powering off and on an smart plug)

Protocols implemented

  • LPD (Line Printing Daemon): Fully implemented
  • IPP (Internet Printing Protocol): Partially implemented
  • BACnet (Building Automation and Control networks Protocol): Partially implemented
  • Modbus (ICS communication protocol): Partially implemented

Installation

virtualenv venv -p python3
source venv/bin/activate
pip install -r requirements.txt

Help

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.
       β–ˆβ–ˆ     β–ˆβ–ˆ       

positional arguments:
  host                  Destination Host
  port                  Destination Port

optional arguments:
  -h, --help            show this help message and exit

Connection Options:
  -p {tcp,udp,ssl}, --protocol {tcp,udp,ssl}
                        Protocol (Default tcp)
  -b BIND, --bind BIND  Bind to port
  -st SEND_TIMEOUT, --send_timeout SEND_TIMEOUT
                        Set send() timeout (Default 5s)
  -rt RECV_TIMEOUT, --recv_timeout RECV_TIMEOUT
                        Set recv() timeout (Default 5s)
  --sleep-time SLEEP_TIME
                        Sleep time between each test (Default 0)
  -nc, --new-conns      Open a new connection after each packet of the same test
  -tn, --transmit-next-node
                        Transmit the next node in the graph of the fuzzed node

RECV() Options:
  -nr, --no-recv        Do not recv() in the socket after each send
  -nrf, --no-recv-fuzz  Do not recv() in the socket after sending a fuzzed request
  -cr, --check-recv     Check that data has been received in recv()

Crashes Options:
  --threshold-request CRASH_THRESHOLD_REQUEST
                        Set the number of allowed crashes in a Request before skipping it (Default 9999)
  --threshold-element CRASH_THRESHOLD_ELEMENT
                        Set the number of allowed crashes in a Primitive before skipping it (Default 3)
  --ignore-aborted      Ignore ECONNABORTED errors
  --ignore-reset        Ignore ECONNRESET errors
  --error-fuzz-issues   Log as error when there is any connection issue in the fuzzed node

Fuzz Options:
  -c CALLBACK, --callback CALLBACK
                        Set a callback address to fuzz with callback generator instead of normal mutations
  --file FILENAME       Use contents of a file for fuzz mutations

Fuzzers:
  -f {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}, --fuzz {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}
                        Available Protocols
  -r FUZZ_REQUESTS [FUZZ_REQUESTS ...], --requests FUZZ_REQUESTS [FUZZ_REQUESTS ...]
                        Requests of the protocol to fuzz, default All
                          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 options:
  --restart module_name [args ...]
                        Restarter Modules:
                          run: '<executable> [<argument> ...]' (Pass command and arguments within quotes, as only one argument)
                          smartplug: It will turn off and on the Smart Plug
                          teckin: <PLUG_IP>
  --restart-sleep RESTART_SLEEP_TIME
                        Set sleep seconds after a crash before continue (Default 5)

Monitor options:
  --monitors {IPPMon} [{IPPMon} ...], -m {IPPMon} [{IPPMon} ...]
                        Monitor Modules:
                          IPPMon: Sends a get-attributes IPP message to the target

Other Options:
  --path PATH           Set path when fuzzing HTTP based protocols (Default /)
  --document_url DOCUMENT_URL
                        Set Document URL for print_uri

Examples

Fuzz the get_printer_attribs IPP operation with default options:

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

asciicast

Use the raw feature of IPP to fuzz the finger protocol:

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

asciicast

Use the raw feature of IPP to fuzz the finger protocol, but instead of using the predefined mutations, use a file:

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

Stateful Fuzzer example, demonstrating the use of s_response and s_variable to obtain a token that is needed to fuzz a request. This example is based on the mock http server test case

asciicast

More Repositories

1

ScoutSuite

Multi-Cloud Security Auditing Tool
Python
6,173
star
2

Scout2

Security auditing tool for AWS environments
Python
1,728
star
3

sobelow

Security-focused static analysis for the Phoenix Framework
Elixir
1,601
star
4

Winpayloads

Undetectable Windows Payload Generation
Python
1,519
star
5

demiguise

HTA encryption tool for RedTeams
Python
1,326
star
6

house

A runtime mobile application analysis toolkit with a Web GUI, powered by Frida, written in Python.
JavaScript
1,321
star
7

PMapper

A tool for quickly evaluating IAM permissions in AWS.
Python
1,279
star
8

redsnarf

RedSnarf is a pen-testing / red-teaming tool for Windows environments
PowerShell
1,182
star
9

featherduster

An automated, modular cryptanalysis tool; i.e., a Weapon of Math Destruction
Python
1,074
star
10

SocksOverRDP

Socks5/4/4a Proxy support for Remote Desktop Protocol / Terminal Services / Citrix / XenApp / XenDesktop
C++
990
star
11

singularity

A DNS rebinding attack framework.
JavaScript
962
star
12

exploit_mitigations

Knowledge base of exploit mitigations available across numerous operating systems, architectures and applications and versions.
812
star
13

AutoRepeater

Automated HTTP Request Repeating With Burp Suite
Java
742
star
14

aws-inventory

Discover resources created in an AWS account.
Python
690
star
15

BurpSuiteHTTPSmuggler

A Burp Suite extension to help pentesters to bypass WAFs or test their effectiveness using a number of techniques
Java
654
star
16

Sniffle

A sniffer for Bluetooth 5 and 4.x LE
C
648
star
17

nmap-nse-vulnerability-scripts

NMAP Vulnerability Scanning Scripts
Lua
618
star
18

TriforceAFL

AFL/QEMU fuzzing with full-system emulation.
C
615
star
19

LoggerPlusPlus

Advanced Burp Suite Logging Extension
Java
608
star
20

nccfsas

Information released publicly by NCC Group's Full Spectrum Attack Simulation (FSAS) team.
C
598
star
21

sadcloud

A tool for standing up (and tearing down!) purposefully insecure cloud infrastructure
HCL
593
star
22

freddy

Automatically identify deserialisation issues in Java and .NET applications by using active and passive scans
Java
570
star
23

phantap

Phantom Tap (PhanTap) - an β€˜invisible’ network tap aimed at red teams
C
560
star
24

tracy

A tool designed to assist with finding all sinks and sources of a web application and display these results in a digestible manner.
JavaScript
549
star
25

azucar

Security auditing tool for Azure environments
PowerShell
546
star
26

VCG

VisualCodeGrepper - Code security scanning tool.
Visual Basic .NET
506
star
27

Cyber-Defence

Information released publicly by NCC Group's Cyber Incident Response Team
Python
470
star
28

autochrome

This tool downloads, installs, and configures a shiny new copy of Chromium.
HTML
431
star
29

scrying

A tool for collecting RDP, web and VNC screenshots all in one place
Rust
425
star
30

wssip

Application for capturing, modifying and sending custom WebSocket data from client to server and vice versa.
JavaScript
425
star
31

blackboxprotobuf

Blackbox protobuf is a Burp Suite extension for decoding and modifying arbitrary protobuf messages without the protobuf type definition.
Python
380
star
32

autopwn

Specify targets and run sets of tools against them
Python
374
star
33

idahunt

idahunt is a framework to analyze binaries with IDA Pro and hunt for things in IDA Pro
Python
373
star
34

CrossSiteContentHijacking

Content hijacking proof-of-concept using Flash, PDF and Silverlight
HTML
372
star
35

Solitude

Solitude is a privacy analysis tool that enables anyone to conduct their own privacy investigations. Whether a curious novice or a more advanced researcher, Solitude makes the process of evaluating user privacy within an app accessible for everyone.
CSS
370
star
36

vlan-hopping---frogger

Easy 802.1Q VLAN Hopping
Shell
346
star
37

DriverBuddy

DriverBuddy is an IDA Python script to assist with the reverse engineering of Windows kernel drivers.
Python
331
star
38

shocker

A tool to find and exploit servers vulnerable to Shellshock
Python
330
star
39

WMIcmd

A command shell wrapper using only WMI for Microsoft Windows
C#
319
star
40

acCOMplice

Tools for discovery and abuse of COM hijacks
PowerShell
272
star
41

umap

The USB host security assessment tool
Python
265
star
42

SusanRTTI

Another RTTI Parsing IDA plugin
Python
258
star
43

metasploitavevasion

Metasploit AV Evasion Tool
Shell
257
star
44

keimpx

Check for valid credentials across a network over SMB
Python
257
star
45

UPnP-Pentest-Toolkit

UPnP Pentest Toolkit for Windows
C#
244
star
46

umap2

Umap2 is the second revision of NCC Group's python based USB host security assessment tool.
Python
240
star
47

GTFOBLookup

Offline command line lookup utility for GTFOBins (https://github.com/GTFOBins/GTFOBins.github.io), LOLBAS (https://github.com/LOLBAS-Project/LOLBAS), WADComs (https://wadcoms.github.io), and HijackLibs (https://hijacklibs.net/).
Python
238
star
48

G-Scout

Google Cloud Platform Security Tool
Python
232
star
49

asatools

Main repository to pull all NCC Group Cisco ASA-related tool projects.
Shell
223
star
50

cisco-SNMP-enumeration

Automated Cisco SNMP Enumeration, Brute Force, Configuration Download and Password Cracking
Shell
216
star
51

depthcharge

A U-Boot hacking toolkit for security researchers and tinkerers
Python
212
star
52

thetick

A simple embedded Linux backdoor.
Python
195
star
53

AWS-recipes

A number of Recipes for AWS
Python
195
star
54

kube-auto-analyzer

Kubernetes Auto Analyzer
HTML
192
star
55

TPMGenie

TPM Genie is an I2C bus interposer for discrete Trusted Platform Modules
C++
189
star
56

BinProxy

BinProxy is a proxy for arbitrary TCP connections. You can define custom message formats using the BinData gem.
Ruby
172
star
57

DetectWindowsCopyOnWriteForAPI

Enumerate various traits from Windows processes as an aid to threat hunting
C++
168
star
58

TriforceLinuxSyscallFuzzer

A linux system call fuzzer using TriforceAFL
C
167
star
59

BKScan

BlueKeep scanner supporting NLA
Shell
167
star
60

pybeacon

A collection of scripts for dealing with Cobalt Strike beacons in Python
Python
167
star
61

typofinder

A finder of domain typos showing country of IP address
Python
166
star
62

BLESuite

BLESuite is a Python package that provides an easier way to test Bluetooth Low Energy (BLE) device
Python
165
star
63

tcpprox

A small command-line TCP proxy utility written in Python
Python
156
star
64

libslub

Python
155
star
65

LazyDroid

bash script to facilitate some aspects of an Android application assessment
Shell
151
star
66

chuckle

An automated SMB relay exploitation script.
Shell
151
star
67

requests-racer

Small Python library that makes it easy to exploit race conditions in web apps with Requests.
Python
150
star
68

whalescan

Whalescan is a vulnerability scanner for Windows containers, which performs several benchmark checks, as well as checking for CVEs/vulnerable packages on the container
Python
143
star
69

gitpwnd

GitPwnd is a network penetration tool that lets you use a git repo for command and control of compromised machines
Python
139
star
70

CollaboratorPlusPlus

Java
139
star
71

Carnivore

Tool for assessing on-premises Microsoft servers authentication such as ADFS, Skype, Exchange, and RDWeb
C#
139
star
72

Change-Lockscreen

Offensive tool to trigger network authentications as SYSTEM
C#
134
star
73

Decoder-Improved

Improved decoder for Burp Suite
Java
134
star
74

Wubes

Qubes containerization on Windows
Python
131
star
75

OutlookLeakTest

The Outlook HTML Leak Test Project
C#
131
star
76

port-scan-automation

Automate NMAP Scans and Generate Custom Nessus Policies Automatically
Shell
128
star
77

Hodor

Hodor! Fuzzer..
Python
126
star
78

Zulu

The Zulu fuzzer
Python
125
star
79

WinShareEnum

Windows Share Enumerator
C#
121
star
80

memscan

Searches for strings, regex, credit card numbers of magnetic stripe card tracks in a Windows process's memory space
C#
120
star
81

ebpf

eBPF - extended Berkeley Packet Filter tooling
Python
116
star
82

cq

Python
115
star
83

argumentinjectionhammer

A Burp Extension designed to identify argument injection vulnerabilities.
Python
114
star
84

DroppedConnection

Python
113
star
85

SCOMDecrypt

SCOMDecrypt is a tool to decrypt stored RunAs credentials from SCOM servers
C#
112
star
86

GOATCasino

This is an intentionally vulnerable smart contract truffle deployment aimed at allowing those interested in smart contract security to exploit a wide variety of issues in a safe environment.
JavaScript
112
star
87

OneLogicalMyth_Shell

A HTA shell to assist with breakout assessments.
HTML
111
star
88

BLE-Replay

BLE-Replay is a Bluetooth Low Energy (BLE) peripheral assessment tool
Python
110
star
89

ccs

Python
107
star
90

web3-decoder

Python
106
star
91

WindowsDACLEnumProject

A collection of tools to enumerate and analyse Windows DACLs
C++
105
star
92

DIBF

Windows NT ioctl bruteforcer and modular fuzzer
C++
103
star
93

raccoon

Salesforce object access auditor
Python
103
star
94

go-pillage-registries

Pentester-focused Docker registry tool to enumerate and pull images
Go
103
star
95

cloud_ip_ranges

Identify IP addresses owned by public cloud providers
Python
101
star
96

DatajackProxy

Datajack Proxy allows you to intercept TLS traffic in native x86 applications across platforms
JavaScript
100
star
97

pcap-burp

Pcap importer for Burp
Java
100
star
98

jwt-reauth

Java
100
star
99

KilledProcessCanary

A canary designed to minimize the impact from certain Ransomware actors
C#
99
star
100

Berserko

Burp Suite extension to perform Kerberos authentication
Java
99
star