4-DAY TRAINING 2 – Intro to Modern Binary Exploitation

DURATION: 4 DAYS

CAPACITY: 20 pax

SEATS AVAILABLE: 20


EUR3499 (early bird)

EUR4299 (normal)

Early bird registration rate ends on the 31st of January


Overview

This four-day training will teach students without prior experience how to develop exploits for modern binary software, taking them from 1990s style buffer overflows through exploitation of use-after-frees in programs protected by NX, ASLR and other exploit mitigation technology. The training will focus on exploiting Linux user mode x86/x64 binaries, but the lessons learned from the class are widely applicable to other platforms and architectures.

This course will train students how to reason about the fundamental structures that give rise to software vulnerabilities, underlie various exploitation techniques, and drive mitigation development. Students will leave with hands-on experience writing exploits, and the theoretical knowledge necessary to exploit vulnerabilities discovered in the wild.

This training is designed to teach exploitation to individuals with little to no prior background in the field. Students with prior experience are also encouraged to attend to learn different approaches and methods for exploit development.

Agenda

DAY 1 – Fundamentals

  • Program structure
  • Disassembly and debugging
  • User mode x86
  • Bug classes
  • Hijacking control flow
  • Crash triage
  • Linux syscall interface

DAY 2 – Classic Exploitations

  • Integer overflow
  • Stack buffer overflow
  • Heap buffer overflow
  • Use after free (UAF)
  • Shellcode
  • Pointer corruption
  • Heap grooming

DAY 3 – Overcoming Exploit Mitigations

  • Stack cookies
  • Address Space Layout Randomization (ASLR)
  • No eXecute (NX)
  • Ret2libc
  • Return oriented programming (ROP)

DAY 4 – Putting It All Together

  • Combining primitives
  • Reasoning about mitigations and bypasses
  • Exploitation on other platforms and architectures
  • Continuity of execution
  • Reliability engineering
  • Weird machines

Prerequisite Knowledge

Students are expected to have experience programming in C or C++, and basic knowledge of the Linux command line. Prior experience with reverse-engineering is nice to have, but not required.

Hardware / Software Requirements for Attendees

  • The ability to run a Linux VM (all exercises and necessary software will be in the Linux VM).

TRAININGS
Location: Training Rooms Date: April 20, 2020 Time: 9:00 am - 6:00 pm Evan Jensen