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.
$4,299.00
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 |
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.
Attack surface analysis Effective mutation engines Effective corpus generation Protocol and file format grammars Crash detection
Fuzz any Ubuntu/Debian package with AFL Modifying targets and writing harnesses with LibFuzzer Fuzzing closed source parsers with QEMU and Dyninst
System configuration Corpus generation techniques Cross-fuzzing difficult parsers
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
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
Understanding grammars and object models Fuzzing object models with dynamic grammar fuzzing Improving grammar fuzzers with feedback metrics
Introduction to time travel debugging Crash analysis with reverse debugging on Linux Crash analysis with reverse debugging on Windows
Introduction to dynamic taint analysis Taint slicing for root cause analysis
Introduction to constraint solving Concolic execution for test case generation Hybrid fuzzing with concolic execution
“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.”