• Stars
    star
    115
  • Rank 305,916 (Top 7 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated about 6 years ago

Reviews

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

Repository Details

A fuzzing framework for network servers

FFW - Fuzzing For Worms

Fuzzes network servers/services by intercepting valid network communication data, then replay it with some fuzzing.

FFW can fuzz open source applications and supports feedback driven fuzzing by instrumenting honggfuzz, for both open- and closed source apps.

In comparison with the alternatives, FFW is the most advanced, feature-complete and tested network fuzzer.

Features:

  • Fuzzes all kind of network protocol (HTTP, MQTT, SMTP, you name it)
  • No modification of the fuzzing target needed (at all)
  • Has feedback-driven fuzzing (with compiler support, or hardware based)
  • Can fuzz network clients too (wip)
  • Fast fuzzing setup (no source code changes or protocol reversing needed!)
  • Reasonable fuzzing performance

Presentation

Presented at security conference Area 41 2018.

Docker

Easiest way to start is to use the docker image:

By doing so:

docker run -ti --privileged -lxc-conf="aa_profile=unconfined" dobin/ffw:0.1

Examples are located in /ffw-examples.

Manual Installation

Get FFW

git clone https://github.com/dobin/ffw.git
cd ffw/

Note: Manually installed dependencies are expected to live in the ffw/ directory (e.g. honggfuzz, radamsa).

Install FFW dependencies

If its a fresh Ubuntu, install relevant packages for FFW:

apt-get install python python-pip gdb

For honggfuzz:

apt-get install clang binutils-dev libunwind8-dev

And python dependencies:

pip install -r requirements.txt

Install Radamsa fuzzer

$ git clone https://github.com/aoh/radamsa.git
$ cd radamsa
$ make

Default Radamsa directory specified in ffw is ffw/radamsa.

Setup a project

Steps involved in setting up a fuzzing project:

  • Create directory structure for that fuzzing project by copying template folder
  • Copy target binary to bin/
  • Specify all necessary information in the config file fuzzing.py
  • Start interceptor-mode to record traffic
  • Start test-mode to verify recorded traffic (optional)
  • Start fuzz-mode to fuzz
  • Start verify-mode to verify crashed from the fuzz mode (optional)
  • Start upload-mode to upload verified crashes to the web (optional)

For a step-by-step guide:

Unit Tests

Test all:

python -m unittest discover

Test a single module:

python -m unittest test.test_interceptor

Alternatives

Fuzzotron

Available via https://github.com/denandz/fuzzotron. "Fuzzotron is a simple network fuzzer supporting TCP, UDP and multithreading."

Support network fuzzing, also uses Radamsa. Can use coverage data, but it is experimental.

Con's:

  • Does not restart target server
  • Unreliable crash detection
  • Experimental code coverage

Mutiny

Available via https://github.com/Cisco-Talos/mutiny-fuzzer. "The Mutiny Fuzzing Framework is a network fuzzer that operates by replaying PCAPs through a mutational fuzzer."

Con's:

  • No code coverage
  • Only one commit (no development?)
  • Rudimentary crash detection

More Repositories

1

avred

Analyse your malware to surgically obfuscate it
Python
367
star
2

lxd-webgui

A lightweight web frontend for LXD
JavaScript
168
star
3

BurpSentinel

GUI Burp Plugin to ease discovering of security holes in web applications
Java
145
star
4

antnium

A C2 framework for initial access in Go
Go
125
star
5

yookiterm-slides

Exploitation and Mitigation Slides
HTML
116
star
6

yookiterm-challenges

The challenge writeups and solutions for yookiterm-challenge-files
36
star
7

yookiterm-challenges-files

Challenge files which are deployed in the container for the user
C
23
star
8

avred-server

The AMSI server for Avred
Python
22
star
9

clang-cfi-safestack-analysis

C
21
star
10

antniumui

TypeScript
18
star
11

ace-firefist

Attack chain emulator. Write recipes for initial access easily
Python
14
star
12

rosenbridge

A graphical user interface for Magic Wormhole file transfer
Go
12
star
13

SentinelTestbed

Vulnerable web site. Used to test sentinel features.
PHP
9
star
14

yookiterm-server

Main yookiterm backend
Go
4
star
15

ffw-docker

Docker image of FFW
3
star
16

ffweb

A webgui to view crash information of fuzzing runs (FFW)
Python
3
star
17

tinysploit2-writeup

Solution and writeup for tinysploit2 challenge
Perl
3
star
18

waasa

Windows Application Attack Surface Analyzer
C#
2
star
19

xrop-esp32

Patched xrop to support ESP32 architecture for gadget aquisition
C
2
star
20

nkeyrollover

ASCII side-scrolling beat-em-up game
Python
2
star
21

yookiterm

yookiterm web frontend
JavaScript
2
star
22

yookiterm-lxdserver

Yookiterm LXD backend server
Go
2
star
23

dmsr

Does My Shit Run - Linux Monitoring Solution
Python
2
star
24

ipsctrainor

arduino IPSC trigger trainer
C
1
star
25

ROPNotepadNG

Exploitlab ROPNotepad extended
JavaScript
1
star
26

zeroballistics

JavaScript
1
star
27

xtarget

Python OpenCL project to use with Laser bullets including augmented reality
Python
1
star
28

asanparser

Python
1
star
29

proxybypasser

Bypass proxy download restrictions with JavaScript download
Python
1
star
30

godot-srcvis

Python
1
star