4-Day Training | 1-4 Mar

Advanced Fuzzing and Crash Analysis [March 2021]

Duration 4 days
Seats Available 2
Difficulty advanced

$4,299.00

Register Now

Overview

DELIVERY: VIRTUAL LIVE STREAM 

DATE: 1-4 March 2021 (Mon-Thu)

TIME: 10:00 to 18:00 PST/GMT-8

Date Day Time Duration
1 March Monday 10:00-18:00 PST/GMT-8 8 Hours
2 March Tuesday 10:00-18:00 PST/GMT-8 8 Hours
3 March Wednesday 10:00-18:00 PST/GMT-8 8 Hours
4 March Thursday 10:00-18:00 PST/GMT-8 8 Hours
(Course timing not suitable? Let us know!) 

 


This virtual training will also be conducted on 24 – 27 May 2021 at 10:00 to 18:00 CEST


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.

 

Through an applied understanding of introductory program analysis and binary translation, techniques for finding various bug classes and methods for improved crash debugging will be discussed. We will 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 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 browsers on both Windows and Linux environments.

 

Why should you take this course?

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 matters 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.

 

 

What Students Say About This Training

“Richard was awesome! Very knowledgeable and professional. I learned a ton”

 

“This training is what I wanted. – Thank you for great training!”

 

“As expected, Richard has a solid hold on the subject and was very helpful to share information with lots of examples. Jaewon was helpful in assisting the exercises. Good experience.”

 

” Knowledgable and passionate about the subject. Easy to discuss topics regarding fuzzing with instructor. Great to see him doing live demos to see his thought process.”

 

“Richard Johnson did a very good job. Communication is clear and effective, demonstrations and explanations make sense and I managed to learn alot.”

 

“I would definitely recommend the class to my peers, Richard is really great in explaining the subjects and for me it’s tremendously helpful in viewing his workflow in analyzing and debugging everything.”

 

“I would definitely recommend this training. I learned allot of new techniques and i am very happy that we have still access to the trainer after the training since its advanced material.”

 

“This was a very interesting experience. Extremely complex subjects presented in approachable manner. A lot of practical examples. Plenty of material for further study. I would definitely recommend this or any class with this trainer.”

Hardware / Software Requirements

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

Agenda

Expand All

Analysis of generational and mutational fuzzing

Attack surface analysis
Effective mutation engines
Effective corpus generation
Protocol and file format grammars
Crash detection

Fuzzing file and network parsers with coverage guided fuzzing

Fuzz any Ubuntu/Debian package with AFL
Modifying targets and writing harnesses with LibFuzzer
Fuzzing closed source parsers with QEMU and Dyninst

Best practices for high performance fuzzing

System configuration
Corpus generation techniques
Cross-fuzzing difficult parsers

Dynamic Binary Translation for Fuzzing and Triage

Effectively instrument Linux and Windows with binary translation
Introduction to Valgrind, Dr. Memory, and Address Sanitizer
Introduction to PIN, DynamoRIO, and Dyninst internals
Identifying hook locations with Debuggers and DBI
Fuzzing kernels and other architectures with QEMU

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

Fuzzing browsers with evolutionary grammar fuzzing

Understanding grammars and object models
Fuzzing object models with dynamic grammar fuzzing
Improving grammar fuzzers with feedback metrics

Time Travel Debugging

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

You may also like…

Sign Up For an Account

to track your favorites

Sign Up

Want a Training Not Seen Here?

Write to Us

Contact Us