4-DAY TRAINING 2 – Advanced Fuzzing & Crash Analysis




CAPACITY: 15 pax




This class is designed to introduce students to the best tools and technology available for automating vulnerability discovery and crash triage with a focus on delivering a practical approach to finding vulnerabilities in real world targets.

Take a deep dive into fuzzing targeting real-world parsers, codecs, DOMs, and scripting engines used in the top web browsers and learn strategies for analyzing attack surface, writing grammars, and generating effective inputs. We will explore in detail the latest innovations such as harnessing code coverage for guided evolutionary fuzzing and symbolic reasoning for concolic fuzzing.

We approach crash analysis through the lens of advanced debuggers and program analysis. We will apply tools like time-travel (reverse) debugging and memory sanitizers to assist in interactively diagnosing the root cause of crashes. Then we will leverage the power of dynamic taint tracking and graph slicing to help isolate the path of user controlled input in the program and identify the exact input bytes influencing a crash.

This class will focus on x86/x64 architecture and target file parsers, network parsers and browsers on Windows and Linux environments.


Who Should Attend

This class is meant for professional developers or security researchers looking to add an automation component to their software security analysis. Students wanting to learn a programmatic and tool driven approach to analyzing software vulnerabilities and crash triage will benefit from this course.


Key Learning Objectives

  • Learn an effective strategy for using the latest tools & technology to discover vulnerabilities
  • Master the latest fuzzing techniques for file, network, and browser fuzzing
  • Learn grammar fuzzing, evolutionary fuzzing, in-memory fuzzing, and symbolic fuzzing
  • Best practices for corpus generation, fuzzer deployment, and targeting
  • Leverage dynamic binary translation for efficient tracing and deep program inspection
  • Learn how to leverage time travel debugging for crash triage on Linux and Windows
  • Introduction to intermediate languages for program analysis
  • Apply powerful techniques like taint analysis and graph slicing towards crash analysis


Prerequisite Knowledge

Students should be prepared to tackle challenging and diverse subject matter and be comfortable writing functions in C/C++ and Python to complete exercises. Attendees should have basic experience with debugging native x86/x64 memory corruption vulnerabilities on Linux or Windows.


Hardware / Software Requirements

Cloud based VMs will be provided for the class. Students will be able to download the VMs for offline use outside of class.


Agenda / Topics 

Fuzzing Linux file and network parsers 

Targeted blind network fuzzing

Grammar fuzzing network protocols

Fuzz any Ubuntu/Debian package with AFL

Modifying targets and writing harnesses with LibFuzzer

Fuzzing closed source parsers with QEMU

Concolic test case generation for closed source parsers


Fuzzing Windows parsers with WinAFL

Optimizing harnesses for exported APIs

Hooking closed source command line applications

Deep hooks into private library functions with global state

Fuzzing internal data streams in complex OLE objects


Crash Analysis

Introduction to time travel debugging

Crash analysis with rr debugger on Linux

Crash analysis with Time Travel Debugger on Windows

Automatic crash slicing for root cause analysis


Fuzzing browser scripting environments

Understanding grammars and object models

Fuzzing object models with dynamic grammar fuzzing

Improving grammar fuzzers with feedback metrics

Location: Training Rooms Date: July 20, 2020 Time: 9:00 am - 6:00 pm Richard Johnson