/pcap-mitm-fuzz0r

Fuzz servers and clients using pcaps or mitm based approaches

Primary LanguagePython

pcap-mitm-fuzz0r

Fuzz (multiplayer) servers and clients using pcaps or mitm based approaches. This is UDP only as it was developed to fuzz games in the first place.

It supports fuzzing based on a pre-captured pcap file that will serve as a base for fuzzing. The packets will be read, modified and replayed in order to cause crashes of the server. The second mode involves a man-in-the-middle (MITM) setup where fuzz0r.py acts as a proxy that fuzzes network packets on-the-fly to target the client and the server at once. The fuzzer creates a fuzzer and error log file to debug things and recreate crashes. You can also use wireshark to capture the traffic generated by this fuzzer for easier replay.

Please refer to the Pipfile and use it to install the Python2.7 dependencies using pipenv Additionally, get and compile radamsa.

Client/Server Settings

Edit the RADAMSA_PATH, HOST, PORT and CLIENT settings of fuzz0r.py to get started.

pcap Mode

First, create a pcap file, for example by joining a CS:GO server and capturing all related packets. This can cover packets originating from and going to the client/server -- however at the moment only the packets sent to the server are being replayed in this mode. After that edit the settings part of fuzz0r.py to use the desired pcap file. Call pcapFuzz in the main method to start the fuzzing process.

MITM Mode

Use the following iptables rules to make fuzz0r.py a proxy between the client and the server:

sudo iptables -A OUTPUT -d <Server-IP> -j NFQUEUE --queue-num 1 # Fuzz the server
sudo iptables -A INPUT  -s <Server-IP> -j NFQUEUE --queue-num 1 # Fuzz the client

After that, edit fuzz0r.py's main method to call mitmFuzz and run it as root. This ultimately fuzzes the client and the server while you play the game.