A Genetic File, Syscall and Network Fuzzer for modern systems.
[![Build Status](https://travis-ci.org/hbowden/nextgen.svg?branch=master)](https://travis-ci.org/hbowden/nextgen)Currently only 64bit versions of FreeBSD, Linux, MacOS and Windows with Cygwin are supported.
To build nextgen
on FreeBSD
you will need to install a few dependencies and have the FreeBSD
source tree installed at /usr/src
as well. Use the command below to install the needed dependencies.
sudo pkg install gmake autotools cmake
Use the command below if you don't have the FreeBSD
source tree installed. The command below assumes your running FreeBSD
10.3, if you are not change the command accordingly.
sudo svnlite co https://svn0.us-west.freebsd.org/base/release/10.3.0/ /usr/src
Next run the setup script, this will build any dependencies needed for nextgen on FreeBSD
.
./setup.sh
Create a directory called build and change to it.
mkdir build && cd build
Run cmake
and pass the path to the main source directory.
cmake ..
Finally use make
or gmake
to build nextgen
.
make
To build nextgen on OSX
or macOS
you will need to install command line tools if they are not already installed on your system. Run the command below in terminal to install the command line tools. Note this command only works for OSX
10.9 and later.
xcode-select --install
Now you will need to install a few dependencies before building nextgen. The recommended way to get these dependencies is to use homebrew. To install homebrew use.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Next install cmake and automake using homebrew.
brew install cmake automake
Run the setup script to build the nextgen dependencies.
./setup.sh
Create a directory called build and change to it.
mkdir build && cd build
Run cmake
and pass the path to the main source directory.
cmake ..
Finally use make
or gmake
to build nextgen
.
make
To build nextgen on Linux
you will first need to install aclocal-1.15
. If your distributions packgage manager doesn't
have aclocal-1.15
, the easiest way to get it is to run the get-aclocal script that comes packaged with nextgen. This script
needs to be run with root privileges and installs the automake-1.15
package to /usr/local/bin/
and includes aclocal-1.15
.
sudo ./get-aclocal.sh
Next run the setup script, this will build any dependencies needed for nextgen on Linux
.
./setup.sh
Create a directory called build and change to it.
mkdir build && cd build
Run cmake
and pass the path to the main source directory.
cmake ..
Finally use make
to build nextgen
.
make
On some distributions of Linux
such as ubuntu you will have to raise the ulimit on your system because it is set low.
ulimit -n 15743
Finally after building nextgen for your platform you can install nextgen with sudo make install
. This will install the required dynamic libraries built earlier.
To run nextgen use the binary in the nextgen directory, if you run nextgen outside its directory, nextgen won't find its plugin directory. This limitation will be fixed later.
To build the documentation for nextgen you will need doxygen
installed on your system, then just run...
doxygen Doxyfile
Then you can open the file index.html in the newly generated folder html in your browser.
Below is an example of running nextgen as a syscall fuzzer.
sudo ./nextgen --syscall --out /file/path/to/create/output/directory
To use the syscall fuzzer without probes and the genetic algo pass --dumb.
sudo ./nextgen --syscall --dumb --out /file/path/to/create/output/directory
Nextgen will be ported to other operating systems besides FreeBSD
, Linux
and OSX
and will be implemented in this order illumos
, OpenBSD
, and finally NetBSD
. Porting Nextgen
is mainly a matter of having a working libdtrace available on your platform.