Professional Information Security Training

The below classes are available at industry leading information security conferences listed on our event schedule.

For private training inquiries, please contact [email protected].

Advanced Fuzzing and Crash Analysis

Overview

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 applying this technology in real deployments.

We will take a deep dive into fuzzing, covering all aspects of this practical approach to finding bugs including targeting open source libraries, binary targets, network protocols, and OS kernels with full system snapshot fuzzing. Class attendees will learn to use the best tools and techniques available to fuzz several real-world pieces of software on both Windows and Linux. Students will learn strategies for analyzing attack surface, writing grammars, and generating effective corpus. 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 scriptable debuggers and program analysis. We will apply tools like reverse debugging and memory debuggers to assist in interactively diagnosing 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. Lastly, we will look at possible ways to determine the impact of a vulnerability.

This class will focus on x86/x64 architecture and target file parsers, network parsers and kernel attack surface on both 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
  • Learn to fuzz anything with emulation based full system snapshot fuzzing (new!)
  • 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
  • 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++ to complete exercises involving completing plugins for the discussed platforms. Attendees should have basic experience with debugging native x86/x64 memory corruption vulnerabilities on Linux or Windows.

Hardware / Software Requirements

Students should have the latest VMware Player, Workstation, or Fusion working on their machine.

Class Topics

Analysis of generational and mutational fuzzing

  • Fuzzing history and theory
  • Grammar generators and mutation fuzzing
  • Protocol and file format grammars
  • Crash detection and memory debuggers

Fuzzing file and network parsers on Linux

  • Targeted packet fuzzing with Mutiny
  • Deep dive on coverage guided fuzzing
  • Fuzz any Ubuntu/Debian package with AFL
  • Modifying targets and writing harnesses with LibFuzzer
  • Fuzzing closed source parsers with QEMU
  • Extending mutation fuzzing with grammars (new!)

Fuzzing Windows Applications

  • Optimizing harnesses for fuzzing public APIs
  • Hooking closed source command line applications
  • Deep hooks into private library functions with global state
  • Reverse Engineering C++ classes to fuzz internal functions
  • Fuzzing internal data streams in complex OLE objects

Full System Coverage Guided Snapshot Fuzzing (new!)

  • Introduction to full system snapshot fuzzing
  • Fuzzing Windows desktop application internal parsers with snapshot fuzzing
  • Fuzzing network protocols with snapshot fuzzing
  • Understanding Windows Kernel Attack Surface
  • Fuzzing Windows IOCTL sequences with snapshot fuzzing

Crash Analysis

  • Introduction to time travel debugging
  • Crash analysis with reverse debugging on Linux
  • Crash analysis with reverse debugging on Windows

Taint assisted root cause analysis

  • Introduction to dynamic taint analysis
  • Taint slicing for root cause analysis

Symbolic and Concolic Execution

  • Introduction to constraint solving
  • Concolic execution for test case generation
  • Hybrid fuzzing with concolic execution

Bonus Self-Guided Material

  • Fuzzing Browsers with Domato
    • Self learning workbook and coding exercise

Note: Attendees will receive all materials for the above topics, however new snapshot fuzzing material may limit the time available to cover some of the later topics and the browser fuzzing module has been converted to self-learning. The topics are covered in sequential order.

Last Updated: December 20, 2023