🌳Setup environnement
Outils
Android Studio IDE
Android Studio est l'IDE officiel pour le développement Android et comprend tout ce dont vous avez besoin pour créer des applications Android.
ressource: https://developer.android.com/studio/releases
Pen-Andro
Script permettant d'automatiser l'intallations d'applications, frida-server et le certificat burp suite.
ressource: https://github.com/raoshaab/Pen-Andro
Scrcpy
Scrcpy est un outil pratique de mirroring d'écran d'appareil android vers un PC utile pour manipuler son appareil physique depuis un PC.
Ressource: https://github.com/Genymobile/scrcpy
PixelFlasher
PixelFlasher est un outil permettant de flash des firmwares sur les modèles Google Pixel. Il est très interessant notamment pour rooter facilement et rapidement des appareils physiques et dispose d'autres fonctionnalités comme la possibilité d'ouvrir des shells adb, d'ouvrir un mirroring d'écran avec Scrcpy, de servir d'app manager etc directement depuis sont interface graphique.
Ressource: https://github.com/badabing2005/PixelFlasher
Rootage
Simple et efficace
Un moyen simple, rapide et efficace d'avoir un appareil rooté pour les tests d'intrusion se trouve dans les smartphone Google Pixel.
Google est beaucoup moins restrictif sur le dévérouillage de bootloader que la majoriter des autres producteurs d'appareils sous Android.
De plus, la communauté Google/Android est très active est il existe aujourd'hui des outils comme PixelFlasher qui permettent d'automatiser quasiment intégralement la procédure de rootage des Google Pixel ce qui permet d'avoir un appareil rooté en quelques minutes seulement avec Magisk.
Etape 1: Unlock bootloader
Attention:
Débloquer le bootloader efface les données de l'appareil (prenez soin de faire une sauvegarde complète de celui-ci s'il n'est pas déjà vide)
Débloquer le bootloader annule toute garantie constructeur si l'appareil en bénéficie
Activer le mode développeur (Settings ⇒ About Phone ⇒ Taps sur "Build number" jusqu'à activation)
Aller ensuite dans l'onglet System ⇒ Developer options,
Activer les options OEM unlocking et USB debugging
Redémarrer sur le bootloader
adb reboot bootloader
Ou manuellement, Power Off ⇒ Volume Down + Power
Débloquer le bootloader
fastboot flashing unlock
Utiliser le bouton de volume bas et selectionner "UNLOCK THE BOOTLOADER" avec le bouton Power
Etape 2: Choix de l'image
L'image à patcher sera évidemment différente selon l'appareil à rooter.
Pixel 7/8/9/10
All versions
init_boot.img
Pixel 6
Android 13+
init_boot.img
Pixel 6
Android 12
boot.img
Pixel 5 and older
All versions
boot.img
Etape 3: Laisser PixelFlasher faire le boulot
Connecter l'appareil par cable (avec l'option USB debugging activée)
Cliquer "Scan" en haut à droite de la fenêtre pour détecter l'appareil
Importer l'image dans l'outil
Cliquer sur "Process" toujours en haut à droite pour extraire le .img et traiter le firmware
Cliquer sur l'image dans le tableau puis sur Patch ⇒ Patch with Magisk
Selectionner l'image patchée et cliquer sur "Flash Device"
PixelFlasher s'occupe alors du reste et une fois l'appareil redémarré, il devrait être rooté.
Voir le Guide suivant pour plus de détails et plus de méthodes de rootage sur Google Pixel et sur d'autres modèles.
Setup
lancement du service adb (Android Debug Bridge)
$ adb start-server
Lancer une emulation
Créer un nouvel émulateur en utilisant le périphérique virtuel Android (AVD) Manager, qui est inclus dans Android Studio.
Accéder à AVD
Télécharger la version Android souhaitée
Installer la version choisie
Nommez l'émulateur
Exécuter l'emulateur
Lancer un emulateur en ligne de commandes
$ ./emulator -list-avds //Permet de lister les AVDs disponibles
$ ./emulator -avd <AVD_NAME> [-writable-system] [-snapshot <SnapName>] //Permet de lancer l'AVD sélectionné (avec droits d'écriture sur le système et depuis un snapshot spécifique)
Faire un snapshot d'un emulateur
$ adb emu avd snapshot save <SnapName>
Lister les emulateurs disponibles
$ adb devices
Installer une application
APK simple:
$ adb -s <emulator name> install exemple.apk
APK split:
$ adb -s <emulator name> install-multiple *.apk
Extraire un apk
$ adb shell pm list packages #lister les packages
$ adb shell pm path <package>
$ adb pull /path/to/package==/exemple.apk
Merge un APK split
$ java -jar /path/to/APKEditor-X.X.X.jar m -i /path/to/<split apk repo>
puis,
$ java -jar /path/to/uber-apk-signer-X.X.X.jar --apks target_merged.apk
Setup Burp Proxy
Dans burp suite
Aller dans "Proxy > Options" puis cliquer sur "Import / export CA certificate"
Importer le certificat au format DER
Retourner dans "Options" et créer un nouveau listener sur le port souhaité et écoutant sur toutes les interfaces.

Sur l'appareil Android
Méthode 1: Proxy via paramètres WIFI
Aller dans les parametres WIFI avancés et ajouter un proxy à l'adresse de votre machine hôte et au port choisi dans burp.
Méthode 2: Global proxy
Ajouter un proxy:
$ adb shell settings put global http_proxy <IP>:<Port>
Supprimer le proxy:
$ adb shell settings put global http_proxy :0
Sur l'appareil hôte
Convertir le fichier cacert.der importé en format accepté par l'appareil mobile comme ceci:
Copier le certificat dans l'appareil android
Patch APK
Cette étape permet d'ajouter les gadgets frida à une application afin de pouvoir hook l'application plus facilement. Pour cela il existe deux solutions...
Solution automatique
Objection permet de faire ce patch automatiquement via la commande suivante:
$ objection patchapk -s example.apk [-t com.example.xyz.SpecificClass]
Note: Si il y a une erreur disant qu'il est impossible de décoder la ressource, il faut ajouter l'argument --use-aapt2 à la commande.
Objection ajoutera alors la lib frida adaptée à l'architecture du device dans les libs et dans le code puis signera le nouvel apk (example.objection.apk). Une fois cela fait, il ne reste plus qu'a remplacer l'apk original par le nouvel apk sur l'appareil.
Solution manuelle
Si la solution automatique ne fonctionne pas, il est nécessaire de faire la manipulation manuellement. Pour cela, suivre les instructions du site suivant:
Outils
Frida
Frida est une boîte à outils d'instrumentation de code dynamique. Il vous permet d'injecter des extraits de code JavaScript ou votre propre bibliothèque dans des applications natives sur Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD et QNX.
ressource: https://frida.re/docs/installation/
Objection
Objection est une boîte à outils d'exploration mobile d'exécution, optimisée par Frida =, conçue pour vous aider à évaluer l'état de sécurité de vos applications mobiles, sans avoir besoin d'un jailbreak.
ressource: https://github.com/sensepost/objection/
Mis à jour