Fuzzware was designed to be a convenient and flexible tool for testing software. Specifically Fuzzware is a fuzzing tool, so it tests software by creating negative, mutated, malformed or malicious testcases. The are many fuzzing tools available online, some are very specific while others are like Fuzzware, a generic framework. However Fuzzware has some features that are not shared by all the other frameworks: - Fuzzware can automatically convert the data format to be fuzzed into XML. Most fuzzing frameworks require you to manually convert an example of the data format (known as the template) into a form the fuzzing framework understands. Given an XSD file describing the data format, Fuzzware can automatically convert it to XML. This process is sometimes limited by complicated data formats or badly defined XSD files. Fuzzware comes with numerous examples showing how this process works and detailed help documentation is available on this site.
- Fuzzware separates the data from its definition. Most fuzzing frameworks use one file that contains the data, the data format and how the data format will be fuzzed. Fuzzware uses separate files for the data (XML file) the data format (XSD file) and how they are fuzzed (configuration files). Since data formats are often complicated and no one file represents all aspects of the format, this separation minimises the work required to test all aspects of a data format.
- Fuzzware uses standardised language to describe the data format. Most fuzzing frameworks invent their own language or format for describing data and its types and structures. Fuzzware uses XML and XSD files, a standardised format that any tool or API for XML or XSD will be able to read. If you are already comfortable with XML and XSD then using Fuzzware will be easy, otherwise there is a vast amount of information and tutorials (XML, XSD) available online.
Here are some other features of Fuzzware - Can fuzz file formats, network packets (including those saved in PDML format from Wireshark, Web Services (given a WSDL file) and ActiveX controls.
- Fuzzware can be extended using .Net to allow for completely custom input.
- Can output testcases to a directory, send them over a network, run an executable on them, send them to a Web Service or as script invoking an ActiveX control.
- Fuzzware can be extended using .Net to allow for completely custom output.
- Uses different fuzzing techniques for Strings, Integers, Decimals and Byte type data, giving a total of 21 different types of fuzzing techniques for data types.
- Supports fuzzing data structures by manipulating the number of times particular data structures occur and their order.
- When fuzzing XML, XML attributes are fuzzed just like XML node data and special occurrence fuzzing is applied to them.
- Default values for use with the different fuzzing techniques are given but these are completely customisable. Some fuzzing techniques create random values for use.
- The fuzzing techniques can be individualised for specific parts of the data format.
- Comes with its own debugger that can be used as either a post-mortem debugger or be used to run executables in. Any crash dump of any crashes is saved to file along with the testcase that caused it.
- The Event Log can be monitored for lists of keywords either locally or remotely.
- Monitoring of process terminating either locally or remotely is also supported.
- Fuzzware is completely stateful, supporting both start states and end states and so every testcase has a unique state that can be reproduced individually.
- There is a test mode to check the input and output configuration of Fuzzware, and optionally a binary comparison with a file can be performed to ensure the output is a perfect copy of the input.
|