In this 5-day course, students will learn the basics of introductory hardware hacking and interfacing with IoT devices to gain console access, dump firmware, and debug IoT devices. Additionally, they will learn the techniques for performing vulnerability research by firmware analysis using emulation, fuzzing, decompilation, static analysis, and code review. For many of the physical interfacing labs, the BUSSide hardware hacking tool, created by the trainer, will be used for interfacing. Students will learn practical skills, tool usage, vulnerability research techniques, and some underlying theory.
Day 1 (Electronics and Interfacing)
Lectures
· Introduction to Practical Electronics
· Introduction to Hardware Hacking
· UART
· Interfacing with SPI
Labs
· Soldering and Assembly of an Electronics Kit
· Building the BUSSide
· Interfacing with UART
· Interfacing with SPI
· Interfacing with SPI – Chip Off Techniques
Day 2 (Embedded Development)
Lectures
· Introduction to Embedded Development
· Software UART on the NodeMCU
· PWM and DACs
· SPI
Labs
· Embedded Development with the Arduino IDE
· Defeating an IR Controlled Alarm with Arduino
· Interfacing with UART Using the NodeMCU
· PWM and DACs
· SPI
Day 3 (Interfacintg with IoT)
Lectures
· Electronics Prototyping
· I2C
· JTAG
Labs
· SPI Fuzzing
· Desoldering and Dumping NAND Flash
· Interfacing with I2C
· I2C
· JTAG Debugging
Day 4 (Firmware)
Lectures and Labs
· Firmware Filesystem Extraction
· Emulating Executables using QEMU
· Whole System Firmware Emulation
· Running Kali on an IoT Device
· Binary Fuzzing with AFL
Day 5 (Vulnerability Research)
Lectures and Labs
· Source Code Fuzzing with AFL
· In-memory Source Code Fuzzing with Clang
· Static Analysis with Coccinelle
· Decompilation with Ghidra