All Projects → trailofbits → Sienna Locomotive

trailofbits / Sienna Locomotive

Licence: agpl-3.0
A user-friendly fuzzing and crash triage tool for Windows

Projects that are alternatives of or similar to Sienna Locomotive

Aflplusplus
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Stars: ✭ 2,319 (+1683.85%)
Mutual labels:  fuzzing, fuzzer
Angora
Angora is a mutation-based fuzzer. The main goal of Angora is to increase branch coverage by solving path constraints without symbolic execution.
Stars: ✭ 669 (+414.62%)
Mutual labels:  fuzzing, fuzzer
Afl Utils
Utilities for automated crash sample processing/analysis, easy afl-fuzz job management and corpus optimization
Stars: ✭ 383 (+194.62%)
Mutual labels:  fuzzing, fuzzer
Syzkaller
syzkaller is an unsupervised coverage-guided kernel fuzzer
Stars: ✭ 3,841 (+2854.62%)
Mutual labels:  fuzzing, fuzzer
Crlf Injection Scanner
Command line tool for testing CRLF injection on a list of domains.
Stars: ✭ 91 (-30%)
Mutual labels:  fuzzing, fuzzer
Pyjfuzz
PyJFuzz - Python JSON Fuzzer
Stars: ✭ 342 (+163.08%)
Mutual labels:  fuzzing, fuzzer
Jsfuzz
coverage guided fuzz testing for javascript
Stars: ✭ 532 (+309.23%)
Mutual labels:  fuzzing, fuzzer
fuzza
Customizable TCP fuzzing tool to test for remote buffer overflows.
Stars: ✭ 29 (-77.69%)
Mutual labels:  fuzzing, fuzzer
Afl Patches
Patches to afl to fix bugs or add enhancements
Stars: ✭ 76 (-41.54%)
Mutual labels:  fuzzing, fuzzer
Example Go
Go Fuzzit Example
Stars: ✭ 39 (-70%)
Mutual labels:  fuzzing, fuzzer
Fuzzdicts
Web Pentesting Fuzz 字典,一个就够了。
Stars: ✭ 4,013 (+2986.92%)
Mutual labels:  fuzzing, fuzzer
Fuzzing Survey
The Art, Science, and Engineering of Fuzzing: A Survey
Stars: ✭ 116 (-10.77%)
Mutual labels:  fuzzing, fuzzer
crusher
No description or website provided.
Stars: ✭ 21 (-83.85%)
Mutual labels:  fuzzing, binary-analysis
Clusterfuzz Tools
Bugs are inevitable. Suffering is optional.
Stars: ✭ 111 (-14.62%)
Mutual labels:  fuzzing, fuzzer
fuzzuf
Fuzzing Unification Framework
Stars: ✭ 263 (+102.31%)
Mutual labels:  fuzzing, fuzzer
Dharma
Generation-based, context-free grammar fuzzer.
Stars: ✭ 416 (+220%)
Mutual labels:  fuzzing, fuzzer
nozaki
HTTP fuzzer engine security oriented
Stars: ✭ 37 (-71.54%)
Mutual labels:  fuzzing, fuzzer
doona
Network based protocol fuzzer
Stars: ✭ 64 (-50.77%)
Mutual labels:  fuzzing, fuzzer
Dirsearch
Web path scanner
Stars: ✭ 7,246 (+5473.85%)
Mutual labels:  fuzzing, fuzzer
Ansvif
A Not So Very Intelligent Fuzzer: An advanced fuzzing framework designed to find vulnerabilities in C/C++ code.
Stars: ✭ 107 (-17.69%)
Mutual labels:  fuzzing, fuzzer

Sienna Locomotive

Build Status

Sienna Locomotive is a fuzzing and crash triage platform that aims to make fuzzing accessible to developers with limited security expertise. Its user-oriented features make it easy to configure, easy to run, and easy to interpret the results. For more information, see our blog post.

Features

  • Target individual function calls for fuzzing instead of entire files
  • Automatically triage and deduplicate crashes
  • One-button reporting of code coverage and performance stats
  • Fully configurable from a GUI
  • Supports 64-bit Windows binaries, even without source code

Getting Started

Watch this demo video.

Check out the user manual.

High level architecture

A diagram of SL's architecture.

Installation

IMPORTANT: Sienna Locomotive makes changes to the system it runs on in order to facilitate its instrumentation. It may require you to disable Windows Error Reporting as it interferes with the triage process. For these reasons, Sienna Locomotive will run best when installed on its own machine (including virtual machines).

Pre-built binaries are available on the releases page. To install from a pre-built binary, extract the zip file, then right-click on install.ps1 and click "Run with Powershell"

To build Sienna Locomotive for yourself, continue reading.

Building

First, clone the repository: git clone https://github.com/trailofbits/sienna-locomotive.git (or download a zip)

Dependencies

Building SL requires the following:

  • Supported Windows 10 Build
  • CMake
  • Visual Studio 2017 (Install components for Windows Console dev)
  • DynamoRIO (Automatically installed with make.ps1)
  • Python (3.7+)

Build Commands

Compilation, deployment, and cleanup is done via make.ps1 in Sienna Locomotive's root directory.

To install DynamoRIO and build the project:

PS C:\proj\sl2\sienna-locomotive> .\make.ps1

If any part of the build complains about missing tools or libraries, try running under the Visual Studio Developer Command Prompt.

To clean the project of build artifacts, run .\make.ps1 clean.

Try make.ps1 help for more options and information.

Internal API Documentation

SL's internals are documented using Doxygen.

If you want to build the doxygen documents.

  1. Install doxygen from http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.14-setup.exe
  2. ./make.ps1 doc
  3. Open doc/html/index.html in your browser

Running

Via the GUI

Running sl2 will start the Qt frontend for the fuzzer.

This frontend is the default user interface, and should suffice for most use cases.

Via the CLI

For more advanced users, sl2-cli can be used to configure and run each SL component individually.

sl2-cli -h will print out a listing of all available options.

Triage

The triage system is a separate executable, triager.exe that is run by the harness. It takes care of ranking exploitability, uniqueness, and binning of crashes.

Winchecksec

Read the winchecksec README.

Exploitability

The Exploitability ranking is a score for the potential ability to exploit a crash based on 3 engines. The ranks, ranging from High (4) to None (0), in order of likelyhood are:

  • High (4): The mostly likely case of a crash being exploitable.
  • Medium (3): Between High and Low.
  • Low (2): At or above the cutoff for low exploitability.
  • Unknown (1): Unknown cases are below the cutoff for low, but still have the potential to be of interest.
  • None (0): Very unlikely the crash is exploitable.

Engines

  • Google's Breakpad: This engine uses Google's Breakpad library, which parses minidump files and return an exploitability between High and None as well.
  • Microsoft's !exploitable: A reimplementation and approxmiation of the !exploitable command for windbg, built on top of breakpad.
  • SL Tracer: Uses the score from our own SL tracer, which takes taint information into consideration.

License

Sienna Locomotive is licensed and distributed under the AGPLv3 license. Contact us if you're looking for an exception to the terms.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].