Contournement des protections modernes contre la rétro-conception sous Android (In French / On Site)

May 23 & 24, 2023

Course Abstract

De nos jours, les applications mobiles modernes Android sont souvent protégées contre la rétro-conception par des outils de protection industriels. Que l’on cherche des vulnérabilités durant un test d’intrusion, ou que l’on souhaite identifier un protocole de communication avec un CnC dans une application malveillante, la première étape - la rétro conception - peut se transformer en véritable obstacle qui siphonnera votre temps. Grace à cet atelier, vous apprendrez à identifier rapidement les mécanismes de sécurité en place et à créer des contournements universels que vous pourrez réutiliser dans vos futurs projets.

La formation couvre les implémentations Java et native de la plupart des mécanismes y compris l’attestation distante, le « device binding », le « device fingerprint », etc.

Outline

Objectif pédagogique :

A l’issue de la formation, chaque participant sera capable de :

  • de participer à l’implémentations de protections d’application Android ou de RASP
  • d’identifier les fonctions de sécurité en place
  • de contourner statiquement et dynamiquement des mécanismes de sécurité.
  • de participer à des évaluations de la sécurité des applications

Les participants recevront :

  • plusieurs scripts universels Frida et Ghidra exclusifs
  • un support par mail après la formation pour continuer à vous accompagner sur demande
  • un lot de règles Yara pour trouver des malwares sur lesquels développer vos compétences
  • une copie de tout le contenu de la formationObjectif pédagogique :
  • le code source des applications de tests quand celui-ci existe
  • un accès limité à Dexcalibur Pro pour les étudiants (Mac/Linux)

Sujets abordés

  1. Revue des mécanismes de protections Android : de l’obfuscation à l’attestation distante
  2. Instrumentation dynamique des instructions et des appels systèmes avec Frida
  3. Code lifting par emulation du p-code Ghidra
  4. Limite et contournements des fonctions de sécurité Android
  5. Détection parallélisée : multi-threading, multi-process, contraintes de temps
  6. Mise en pratique sur des applications durcies

Jour 1

Partie 1: Cours théorique

  • Introduction a l’obfuscation et aux protections contre la rétro conception
  • Les protections locales et distantes
  • Les différents types d’obfuscation : code, données, communications
  • Rappels sur les appels systèmes
  • Préparation des outils : Ghidra et scripts

Partie 2: Deobfuscation de la partie Java

  • Cycle de vie de l’application du point de vue d’un attaquant
  • Chargement dynamique de bytecode : appComponentFactory, custom class loaders,etc.
  • Obfuscation des appels de méthodes : proxy, invoke handlers, reflection,etc.
  • Emulation et simplification de bytecode Dalvik (SmaliVM, DexcaliburVM)
  • Identification des mécanismes de protections : SSLpining, anti-tampering,etc.

Partie 3: Analyse statique de la partie native avec Ghidra

  • Typologie de l’obfuscation
  • Identification de techniques de packing
  • Identification des mécanismes de protections (liste non exhaustive):
  • Détection de root : magisk, zygisk, …
  • Anti-hook : frida, *posed, …
  • Anti-tampering du flot d’exécution
  • Detection d’émulateur
  • Check d’intégrité du package (sans utiliser l’API Android)

Partie 4: Code lifting / Emulation de code natif

  • Introduction à l’émulation de code : Qiling vs Ghidra
  • Automatisation par émulation du p-code Ghidra :
    • Dé-obfuscation des chaines de caractères
    • Simplification du flot d’exécution

Jour 2: Contournement dynamique des protections

Partie 1: Cours théorique

  • Rappel sur le chargement des libraries
  • Les protections locales et distantes
  • Les fonction : device binding
  • Présentation de Frida et Interruptor
  • Hooking de fonction versus hooking des instructions

Partie 2: Unpacking dynamique

  • Instrumentation avec le Stalker Frida et Interruptor
  • Java / natif / Ressources

Partie 3: Contournement Java & natif (liste non exhaustive)

  • Anti hook
  • Anti root
  • Vérification de l’intégrité du package
  • Attestation distance / « device fingerprint »
  • SSL Pining
  • Local Safety-Net

Who Should Attend

Cette formation s’adresse à toute personne désireuse de progresser en rétro conception d’application Android modernes, durcies et obfusquées. Une précédente expérience en reverse Android (CTF, pentest, …) ou en développement mobile est recommandé, pour couvrir l’intégralité du programme dans le temps imparti. Les participants n’étant pas arrivé au bout dans les 2 jours, pourrons continuer à me contacter après la fin de la formation

What You Need

  • Un téléphone Android physique ou virtuel root avec Android >= 7
  • Un ordinateur portable (idéalement sous Linux/Mac):
    • Capable de se connecter à un réseau filaire et sans-fil
    • Avec les droits administrateurs
    • Ghidra >= 10.1
    • Frida >= 14.x
    • Minimum 8Gb de RAM ( 16Gb+ recommandé)
  • Connaissance basique de la ligne de commande
  • Connaissance basique de l’assembleur ARM / arm64
  • Connaissance basique de Javascript (Frida)

Bio

Georges-Bastien Michel Reverse Engineer / Security Researcher, Reversense

Georges-B Michel is the founder and principal security researcher at Reversense. He worked on many security topics including deobfuscation, DBI, Android RASPs bypass, TEE/TA reversing, web application security, and secure coding. Since 2018, he develops several public OSS and private projects such as Interruptor (a Frida library to improve syscall hooking) and Dexcalibur (a mobile reverse engineering and instrumentation automation software). He talked at several security conferences including Insomni'hack, SSTIC, THC, and PassTheSalt.

Return to training sessions