TRAINING 7 – Advanced Windows Fuzzing and Triage

DURATION: 2 DAYS

CAPACITY: 20 pax


USD2299 (early bird)

USD3299 (normal)

Early bird registration rate ends on the 30th of September


Overview

This class is designed to introduce students to the best tools and technology available for automating vulnerability discovery and crash triage on Windows with a focus on delivering a practical approach to applying the latest technology in real deployments.

First we take a deep dive into fuzzing, covering all aspects of this practical approach to finding bugs. As the most approachable and versatile of the available tools, the student will apply various fuzzing techniques to several real-world pieces of software. 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 also approach crash analysis through the lens of program analysis and time travel debugging. We will once again look at properties of how memory corruption manifests in a crashing condition. We will apply tools like reverse debugging and memory debugging scripts 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.

This class will focus on x86/x64 architecture and closed source binary targets on Windows 10.

Who Should Attend

This class is meant for professional developers or security researchers looking to add an efficient fuzzing and triage 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 and strategies for file and network fuzzing
  • Leverage dynamic binary translation for efficient tracing and deep program inspection
  • Learn grammar fuzzing, evolutionary fuzzing, in-memory fuzzing, and symbolic fuzzing
  • Best practices for corpus generation, fuzzer deployment, and targeting
  • Apply powerful techniques like taint analysis and graph slicing towards crash analysis

Preequisite Knowledge

Students should be prepared to tackle challenging and diverse subject matter and be comfortable writing functions in in C/C++ and python to complete exercises involving completing plugins for the discussed platforms. Attendees should have basic experience with debugging native x86/x64 memory corruption vulnerabilities on Windows and be familiar with IDA and WinDBG.

Hardware / Software Requirements

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

Agenda

Day 1:

  • Attack surface analysis for blackbox vulnerability research
    • Leveraging graph reachability analysis
    • Identifying hook locations with Debuggers and DBI
  • Fuzzing 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
  • Corpus generation techniques
    • Cross-fuzzing embedded parsers
    • Concolic execution for test case generation

Day 2:

  • Fuzzing browsers with evolutionary grammar fuzzing
    • Understanding grammars and object models
    • Improving grammar fuzzers with feedback metrics
  • Time Travel Debugging with WinDBG
    • Introduction to TTD
    • Crash analysis with reverse debugging
  • Taint assisted root cause analysis with moflow
    • Introduction to Dynamic Taint Analysis
    • Taint slicing for for root cause analysis

Location: Date: November 25, 2018 Time: 9:00 am - 6:00 pm Richard Johnson