Important : This workshop is french speaking
FR
Aujourd'hui, l'audit d'application Android protégées contre la rétro-conception par des outils commerciaux modernes (essentiellement les RASPs) peut se révéler fastidieuse. Même si certaines astuces fonctionnent toujours, il existe de nombreuses façons de ralentir la découverte de l'application et son instrumentation. Pendant cet atelier, nous reverserons avec Ghidra et contournerons dynamiquement avec Frida certaines implémentations modernes de mécanismes tels que : packer, anti-frida, anti-debugger, detection de magisk, ...
L'atelier se déroulera selon le plan suivant :
- 1/ Introduction aux outils de protection des applications Android à l'exécution (RASP) : heuristiques et workflow
- 2/ Rappel des limitations de Frida dans le cadre d'une utilisation "out-of-the-box" et comment s'en affranchir, par exemple les contextes difficiles à hooker, deoptimisation de ART, Stalker et multi-thread, process externes, etc ..
- 3/ Installation et prise en main de l'environnement de test
- 4/ Cas pratique : Automatisation de la deobfuscation statique de chaine de caractères contigües, non-délimitée par des octets nuls et déchiffrée à la volée à l'éxécution par du code diversifié, grace à l'émulation de p-code Ghidra.
- 5/ Cas pratique : Ecriture de contournement universels de quelques mécanismes (anti-hook, anti-magisk, ...) par l'instrumentation dynamique (avec Frida) d' instructions / syscalls / fonctions / méthodes chargées dynamiquement dans différents contexte. Tels que : l'instrumentation avant/aprés des appels système déclenchés par des instruction SVC (en utilisant Interruptor) hook de méthodes définies dynamiquement hook précoces (avant l'entrypoint) des bibliothèques partagées (*.so) sans patch suivre les threads avec les Stalker
Pré-requis :
- Installer frida >= 14.x , frida-compile, ghidra, apktool, baksmali
- Préparer une VM Android ou une device physique arm64 avec Android >= 9
EN
Today, reverse engineering of Android application protected by modern & industrial-grade Runtime Application Security Protection (RASP) is challenging and time consuming. Even if some old tricks are still working, there is numerous ways to slow down the RE and to detect hooking. In this workshop, an hands-on case will introduce static deobfuscation thank to Ghidra p-code emulation, and continue by writing of universal bypasses using advanced hooking with Frida and Interruptor. You will deobfuscate string hook instructions with Frida into several contexts as multi-thread, multi-process, isolated process or at different early stages.
Workshop should go as follows:
- 1/ Quick review of the RASP internal worflow and detection functions
- 2/ Remember about Frida limitations when it is used "out-of-the-box" (Stalker, Java.classFactory, deoptimize, ..)
- 3/ Setting up hands-on case and test environment
- 4/ Use case : Deobfuscation of non-null terminated strings deciphered by inlined and diversified function thank to Ghidra's p-code emulation
- 5/ Use case : Writing instruction / syscall / functions / methods hooks deployed at very different moment. Such as hooking before/after syscall done through SVC instruction, hook of dynamically define method, hook of shared library entrypoint without patch, implementing a follow thread for Frida's Stalker, and so
Requirements:
- Install frida >= 14.x , frida-compile, ghidra >= 10.1
- Setup a virtual Android device (using AVD) or a physical device running Android >=9 on arm64
Pre-requisites/assumed knowledge:
This workshop is best suited for intermediate to advanced reverse engineers/researchers on Android/arm64. Basically, you need to be at ease in a Unix environment, able to write JavaScript code, to read/write Frida hooks and to understand basic arm64 assembly.
Participants should prepare by:
A laptop with Android Studio and a working android emulator able to emulate arm64 device (or a rooted physical device). Linux OS / MacOS are prefered, no support will be provided for Windows (if issue is specific to this OS).
Participants must have the following equipment:
A laptop with Android Studio and a working android emulator able to emulate arm64 device (or a rooted physical device). Linux OS / MacOS are prefered, no support will be provided for Windows (if issue is specific to this OS).