GithubHelp home page GithubHelp logo

acidghost / uberfuzz2 Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 135 KB

A Cooperative Fuzzing Framework - Implementation of my Master project

Makefile 0.23% C 40.93% Shell 10.56% Rust 41.78% Gnuplot 1.71% R 4.01% Awk 0.78%

uberfuzz2's Introduction

uberfuzz2

Dependencies and Compilation

Master

  • deps - rust toolchain, library deps provisioned by cargo
  • build - run the following in the master directory cargo build --release

Driver:

  • deps - zeromq (install from distro repository), Collections-C
  • build - use the provided Makefile in the driver folder

Usage

First you have to create a configuration file for the fuzzer you want to run in the work folder. The file name must be of the kind fuzzer_id.fuzzer_type.conf where fuzzer_id is the identifier of the configuration and fuzzer_type is one of afl, hongg or vu. The configuration file contains the path to the fuzzer executable and all its parameters, separated line by line.

Before running, you should setup the work directory accordingly. Within that folder, run the setup_dir.sh script; this will setup directories for each configuration file present. The script accepts one argument that can be a string to be used as seed or a directory which contents are to be copied and used as seed.

Based on the fuzzers you're planning to use, you may need to setup you system or some environment variables: this can be done within the uberenv.sh script to later be sourced in the shell from which you'll run the fuzzers. Remember that regardless of what fuzzer you're going to use it is advised that you turn off ASLR.

The master executable accepts the following options:

usage: ./master/target/release/master [options] -- target [args]

Options:
    -h, --help          Print this help
    -f, --fuzzer aflfast
                        Fuzzer id (from id.type.conf in work directory)
    -H, --high          High or low winning strategy
    -t, --winning-threshold 0.42
                        Winning strategy threshold
    -s, --stdin         Target reads from standard input
    -B, --basic-blocks  Drivers use basic blocks from static analysis
    -S, --section       Drivers use only the .text section of the target

The -f flag identifies a configuration file. If the target reads from a file, use the flag --stdin and a @@ as a placeholder for the input file name. For example:

./master/target/release/master -f aflfst -f vuzzer -f honggfuzz -H -s -- djpeg @@

Setting-up VUzzer

Start VM with vagrant up (set up vuzzer directory in work first), then vagrant provision --provision-with vu-setup.

Run standalone drivers

timeout -k 3 $((60 * 60 * 4)) ./driver/driver -i vuzzer -f ./work/vuzzer.vu.conf \
  -c ./work/vuzzer/special -d ./work/vuzzer/driver \
  -l ./work/vuzzer.fuzz.log -L ./work/vuzzer.fuzz.err.log \
  -- ../libjpeg-turbo-1.5.1/djpeg ./work/.vuzzer.input

timeout -k 3 $((60 * 60 * 4)) ./driver/driver -i honggfuzz -f ./work/honggfuzz.hongg.conf \
  -c ./work/honggfuzz/in -d ./work/honggfuzz/driver \
  -l ./work/honggfuzz.fuzz.log -L ./work/honggfuzz.fuzz.err.log \
  -- ../libjpeg-turbo-1.5.1/djpeg ./work/.honggfuzz.input

timeout -k 3 $((60 * 60 * 4)) ./driver/driver -i fairfuzz -f ./work/fairfuzz.afl.conf \
  -c ./work/fairfuzz/out/fairfuzz/queue -d ./work/fairfuzz/driver \
  -l ./work/fairfuzz.fuzz.log -L ./work/fairfuzz.fuzz.err.log \
  -- ../libjpeg-turbo-1.5.1/djpeg ./work/.fairfuzz.input

timeout -k 3 $((60 * 60 * 4)) ./driver/driver -i aflfast -f ./work/aflfast.afl.conf \
  -c ./work/aflfast/out/aflfast/queue -d ./work/aflfast/driver \
  -l ./work/aflfast.fuzz.log -L ./work/aflfast.fuzz.err.log \
  -- ../libjpeg-turbo-1.5.1/djpeg ./work/.aflfast.input

uberfuzz2's People

Stargazers

 avatar  avatar Josh Bundt avatar

Watchers

James Cloos avatar Andrea Jemmett avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.