Grinder Version 0.3 released

Grinder is a system to automate the fuzzing of web browsers and the management of a large number of crashes. Grinder Nodes provide an automated way to fuzz a browser, and generate useful crash information (such as call stacks with symbol information as well as logging information which can be used to generate reproducible test cases at a later stage). A Grinder Server provides a central location to collate crashes and, through a web interface, allows multiple users to login and manage all the crashes being generated by all of the Grinder Nodes.

Changelog Version 0.3 2012
* Added a Fuzzer tab to allow users to view statistics (bar charts) about the fuzzers that have been run in the system. You can also drill down in to individual fuzzers to view what targets they are generating crashes on. Added bar chart support via jqPlot.
* Added a Settings tab. Moved the user account management features from the System tab into this new Settings tab.

* Add in initial work for automated testcase reduction via .nodereduction.rb
* Added IE10 support (As seen in Windows 8 Consumer Preview) (grindernodebrowserinternetexplorer.rb).
* Added a –fuzzer parameter to grinder.rb. When bringing up a node you can now specify a single fuzzer to load instead of loading all the fuzzers in the nodes fuzzer directory. Usefull for testing a specific fuzzer (e.g. >ruby grinder.rb –fuzzer=DOMBlaster2000 FF)
* Added a –help and –version parameter to grinder.rb and testcase.rb.
* grinder_logger.dll is now thread safe and can handle log messages of an arbitrary size.
* Changed the server.rb 301 reditect to a 307 temporary redirect.
* Many small bug fixes!

Grinder Server features:

  1. Multi user web application. User can login and manage all crashes reported by the Grinder Nodes. Administrators can create more users and view the login history.
  2. Users can view the status of the Grinder system. The activity of all nodes in the system is shown including status information such as average testcases being run per minute, the total crashes a node has generated and the last time a node generated a crash.
  3. Users can view all of the crashes in the system and sort them by node, target, fuzzer, type, hash, time or count.
  4. Users can view crash statistics for the fuzzers, including total and unique crashes per fuzzer and the targets each fuzzer is generating crashes on.
  5. Users can hide all duplicate crashes so as to only show unique crashes in the system in order to easily manage new crashes as they occur.
  6. Users can assign crashes to one another as well as mark a particular crash as interesting, exploitable, uninteresting or unknown.
  7. Users can store written notes for a particular crash (viewable to all other users) to help manage them.
  8. Users can download individual crash log files to help debug and recreate testcases.

Users can create custom filters to exclude uninteresting crashes from the list of crashes.
Users can create custom e-mail alerts to alert them when a new crash comes into the system that matches a specific criteria.
Users can change their password and e-mail address on the system as well as view their own login history.

Grinder Node features:

  1. A node can be brought up and begin fuzzing any supported browser via a single command.
  2. A node injects a logging DLL into the target browser process to help the fuzzers perform logging in order to recreate testcases at a later stage.
  3. A node records usefull crash information such as call stack, stack dump, code dump and register info and also includes any available symbol information.
  4. A node can automatically encrypt all crash information with an RSA public key.
  5. A node can automaticaly report new crashes to a remote Grinder Server.
  6. A node can run largely unatended for a long period of time.

Grinder does not include any fuzzers for the Grinder Nodes and you will need to write your own. However a very simple example fuzzer is included (.grindernodefuzzerSimpleExample.html) to show how to begin writing suitable fuzzers for use with Grinder.

Installing a Grinder Server

  • Installing a Grinder server requires a web server with PHP and MySQL.
  • Copy the contents of .grinderserver over the the webserver.
  • Create a MySQL database and associated user.
  • Surf over to the install.php page to complete the installation.
  • When installing, the ‘Grinder Key’ used must be the same as the one written in all the Grinder Nodes config.rb files (see below).
  • After successful installation, you can login and view all of the running nodes and all of the crashes generated.

Installing a Grinder Node

  • Note: Grinder nodes are intended to be installed on Windows systems, but as they are written primarily in Ruby it should be possible to get Linux/Mac support with some modifications.
  • For a detailed step by step guide to install a Grinder Node please refer to the following wiki page:
  • For a quick start, the steps for installing a node are as follows:
  • Install the latest stable version of Ruby (
  • Copy ‘.grindernodedatagrinder_logger.dll’ to ‘c:windowssystem32’ (Or ‘c:windowssyswow64’ on an x64 system)
  • Create a folder for symbol files to be stored, e.g. ‘c:symbols’
  • Edit the config.rb file to suit your setup. Please see the default config.rb file for a description of the various options. You may create multiple config files if you intend on running more than one node on a system, (e.g. config_g1.rb, config_g2.rb). You can then specify on the command line which config file to use when bringing up the node. If you have setup a Grinder server, use the same Grinder Key and the appropriate server URL so the node can communicate with the Grinder server.
  • Finally to run the node issue a Ruby command as shown below where the browser parameter is the browser you want to fuzz (e.g. IE, FF or CM).
  • .grindernode>ruby grinder.rb [–config=c:pathtoalternativeconfig.rb] –browser=BROWSER

Download : (1.9 MB) (1.9 MB)
Read more in here :