Android Kernel Security

Skill level: Intermediate to Advanced

Duration: 4 days

Instructor: Vitaly Nikolenko


Note:

Please note we can only offer this training in Australia at the moment. We've experienced some issues with customs when bringing in HiKey boards and a large number of test mobile devices.

Course description:

Kernel exploitation on Android devices still presents a relatively new unexplored research area due to its diverse range of hardware options and hardware/software exploitation mitigations implemented by vendors or the Linux kernel itself. Similar to other operating systems, Android provides several common user-space exploitation mitigations and attacking the kernel is an appealing option to obtain full access on the device bypassing any user-space exploitation mitigations.

This course starts by enumerating the Android kernel attack surface (from an LPE perspective) describing any sandboxing options that may limit this attack surface. Though the course is mostly self-contained and there's a brief refresher on arm64 architecture, attendees should be already familiar with this architecture / instruction set.

The main focus is on common kernel vulnerability classes and exploitation techniques on Android (Google Pixel 2/3 and Samsung S9/S10 devices). The training is hands-on and assumes some familiarity with Linux kernel exploit development. Common hardware/software kernel exploitation mitigations on Google and Samsung devices will be discussed and several bypass techniques will be presented. The course will also provide some introduction to fuzzing and crash analysis on Android devices.

This course is largely self-contained but please ensure you meet the entry requirements detailed below.

Android kernel exploitation

Prerequisites:

  • Familiarity with arm64 architecture
  • Fundamental knowledge of common classes of vulnerabilities (e.g., stack and heap overflows, integer type conversion vulnerabilities and overflows, etc.) and user-space exploitation techniques
  • Some experience in Linux kernel exploitation / knowledge of common Linux kernel vulnerability classes (consider taking Linux kernel exploitation techniques (x86_64) first)
  • C and assembly programming knowledge
  • Familiarity with GDB (GNU Debugger)

Who should attend:

  • Reverse engineers, bug hunters and exploit developers
  • Information security professionals experienced in user-land exploitation

Hardware and software:

  • Base OS - Windows, macOS, Linux
  • Virtualisation software that allows you to import VMs in standard OVA/OVF format
  • At least 40GB of free disk space
  • At least 8 GB of RAM
  • ** HiKey 960 boards will be provided

Key learning objectives:

  • Android kernel attack surface
  • Privilege escalation techniques
  • Exploitation of common Android kernel vulnerability classes
  • Android kernel exploitation mitigation bypasses
  • Introduction to Android kernel fuzzing

Course agenda:

  • ARM64 architecture refresher
  • Bootloaders and boot process
  • Rooting / test environment setup
  • Kernel debugging options
  • Introduction to root cause analysis
  • Android kernel attack surface / Sandboxing / SELinux
  • Baseband hardware driver
  • Privilege separation model and common privilege escalation techniques
  • Fixating the system and recovering the kernel state
  • Common classes of kernel vulnerabilities
  • Kernel race conditions
  • Double fetch vulnerabilities
  • Dynamic memory management and heap related vulnerabilities (heap overflows, UAF, off-by-X)
  • Current UAF exploitation countermeasures and bypasses
  • Kernel security on Google Pixel and Samsung devices
  • Latest kernel exploitation mitigations
  • Bypassing kernel protections
  • Kernel fuzzing on Android devices