Book Image

Fuzzing Against the Machine

By : Antonio Nappa, Eduardo Blázquez
Book Image

Fuzzing Against the Machine

By: Antonio Nappa, Eduardo Blázquez

Overview of this book

Emulation and fuzzing are among the many techniques that can be used to improve cybersecurity; however, utilizing these efficiently can be tricky. Fuzzing Against the Machine is your hands-on guide to understanding how these powerful tools and techniques work. Using a variety of real-world use cases and practical examples, this book helps you grasp the fundamental concepts of fuzzing and emulation along with advanced vulnerability research, providing you with the tools and skills needed to find security flaws in your software. The book begins by introducing you to two open source fuzzer engines: QEMU, which allows you to run software for whatever architecture you can think of, and American fuzzy lop (AFL) and its improved version AFL++. You’ll learn to combine these powerful tools to create your own emulation and fuzzing environment and then use it to discover vulnerabilities in various systems, such as iOS, Android, and Samsung's Mobile Baseband software, Shannon. After reading the introductions and setting up your environment, you’ll be able to dive into whichever chapter you want, although the topics gradually become more advanced as the book progresses. By the end of this book, you’ll have gained the skills, knowledge, and practice required to find flaws in any firmware by emulating and fuzzing it with QEMU and several fuzzing engines.
Table of Contents (18 chapters)
Part 1: Foundations
Part 2: Emulation and Fuzzing
Part 3: Advanced Concepts
Chapter 12: Conclusion and Final Remarks

Reverse engineering DMA peripherals

Avatar2 provides a basic interface for DMA peripherals, such as in the case of reverse engineering part of the booting code for Samsung Baseband, for example.

With this information, we load modem.bin in Ghidra to check the code:

Figure 6.3: The boot_RESET exception

Figure 6.3: The boot_RESET exception

The code of the BOOT section is responsible for setting up the exceptions vector to handle errors and interrupts, as well as initializing registers, stack pointers, variables, and calling the main application.

The public scripts from the previous Shannon baseband works, available at, are helpful for the reverse engineering process and can be loaded into Ghidra or IDA Pro. These scripts provide advantages and facilities such as annotating any Shannon modem image with legible function names and a deeper understanding of code and task identification. They also help collect and set up debug strings, which are vital...