01
QEMU+AFL = Vulnerabilities?
1. Is it so easy to find vulnerabilities? β
β’ Downloading and installing AFL++
β’ Preparing a vulnerable VLC instance
β’ VLC exploit
2. Full-system fuzzing β introducing TriforceAFL β
β’ Understanding full-system fuzzing concepts
β’ Installing TriforceAFL
β’ Setting up the fuzzing environment
3. Final Test
4. Further reading
5. Appendix
02
QEMU Primer
1. Adding a new CPU
2. Emulating an embedded firmware
3. Reverse engineering DMA peripherals
4. Emulating UART with Avatar2 for firmware debugging
5. Final Test
03
Baseband Emulation
1. A crash course on mobile phone architecture β
β’ Baseband
β’ Baseband CPU family
β’ Application processor and baseband interface
β’ A talk with Shannon
β’ A note on GSM/3GPP/LTE protocol specifications
2. Setting up FirmWire for vulnerability validation β
β’ CVE-2020-25279 β emulator fuzzing
β’ CVE-2020-25279 β OTA exploitation
3. Final Test
04
Router Emulation x86
1. OpenWrt on x86
2. Building the firmware β
β’ Testing the firmware in QEMU
β’ Extracting and preparing the kernel
3. Fuzzing the kernel
4. Post-crash core dump triaging
05
Router Emulation ARM32
1. Emulating the ARM architecture to run an OpenWrt system
2. Installing TriforceAFL for ARM
3. Running TriforceAFL in OpenWrt for ARM
4. Obtaining a crash
5. Final Test
β
Bonus: Evolving to recent harnesses
1. Using a more recent version of AFL++
2. Harnessing techniques
3. libqemu
4. device trees, nand, nor
06
iOS14/16 Emulation and Fuzzing of iPhone11
1. A brief history of iOS emulation
2. iOS basics β
β’ What it takes to boot iOS
β’ Code signatures
β’ Plist files and entitlements
β’ Binaries compilation
β’ IPSW formats and research kernels
3. Setting up an iOS emulator β
β’ Preparing the environment
β’ Building the emulator
β’ Boot prepping
β’ Booting iOS in QEMU
4. Preparing your harness to start fuzzing
5. Triforce's driver mod for iOS
6. Final Test
07
Android Emulation and Fuzzing
1. Introducing the Android OS and its architecture β
β’ Android system architecture overview
β’ Understanding the Android stack
β’ Key components for fuzzing
2. Fuzzing Android libraries with Sloth β
β’ Setting up Sloth framework
β’ Targeting Android libraries
β’ Analysis and vulnerability discovery
3. Final Test
π―
Certification Exam
π― Fuzzing
β‘ Basic Emulation
π Vulnerability hunting