8 KiB
Exploiter une application débogable
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Supportez HackTricks
- Consultez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs aux HackTricks et HackTricks Cloud dépôts github.
Contourner les vérifications de root et débogage
Cette section du post est un résumé du post https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
Étapes pour rendre une application Android débogable et contourner les vérifications
Rendre l'application débogable
Contenu basé sur https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- Décompiler l'APK :
- Utilisez l'outil APK-GUI pour décompiler l'APK.
- Dans le fichier android-manifest, insérez
android:debuggable=true
pour activer le mode débogage. - Recompilez, signez et zipalign l'application modifiée.
- Installer l'application modifiée :
- Utilisez la commande :
adb install <application_name>
.
- Récupérer le nom du package :
- Exécutez
adb shell pm list packages –3
pour lister les applications tierces et trouver le nom du package.
- Configurer l'application pour attendre la connexion du débogueur :
- Commande :
adb shell am setup-debug-app –w <package_name>
. - Remarque : Cette commande doit être exécutée chaque fois avant de démarrer l'application pour s'assurer qu'elle attend le débogueur.
- Pour la persistance, utilisez
adb shell am setup-debug-app –w -–persistent <package_name>
. - Pour supprimer tous les drapeaux, utilisez
adb shell am clear-debug-app <package_name>
.
- Préparer le débogage dans Android Studio :
- Naviguez dans Android Studio vers File -> Open Profile or APK.
- Ouvrez l'APK recompilé.
- Définir des points d'arrêt dans des fichiers Java clés :
- Placez des points d'arrêt dans
MainActivity.java
(spécifiquement dans la méthodeonCreate
),b.java
, etContextWrapper.java
.
Contourner les vérifications
L'application, à certains moments, vérifiera si elle est débogable et vérifiera également la présence de binaires indiquant un appareil rooté. Le débogueur peut être utilisé pour modifier les informations de l'application, désactiver le bit débogable et altérer les noms des binaires recherchés pour contourner ces vérifications.
Pour la vérification débogable :
- Modifier les paramètres de drapeau :
- Dans la section des variables de la console du débogueur, naviguez vers :
this mLoadedAPK -> mApplicationInfo -> flags = 814267974
. - Remarque : La représentation binaire de
flags = 814267974
est11000011100111011110
, indiquant que le "Flag_debuggable" est actif.
Ces étapes garantissent collectivement que l'application peut être déboguée et que certaines vérifications de sécurité peuvent être contournées à l'aide du débogueur, facilitant une analyse ou une modification plus approfondie du comportement de l'application.
L'étape 2 consiste à changer une valeur de drapeau à 814267972, qui est représentée en binaire comme 110000101101000000100010100.
Exploiter une vulnérabilité
Une démonstration a été fournie en utilisant une application vulnérable contenant un bouton et un textview. Au départ, l'application affiche "Crack Me". L'objectif est de modifier le message de "Try Again" à "Hacked" à l'exécution, sans modifier le code source.
Vérification de la vulnérabilité
- L'application a été décompilée à l'aide de
apktool
pour accéder au fichierAndroidManifest.xml
. - La présence de
android_debuggable="true"
dans le AndroidManifest.xml indique que l'application est débogable et susceptible d'exploitation. - Il convient de noter que
apktool
est utilisé uniquement pour vérifier le statut débogable sans modifier de code.
Préparation de la configuration
- Le processus a impliqué le lancement d'un émulateur, l'installation de l'application vulnérable et l'utilisation de
adb jdwp
pour identifier les ports Dalvik VM à l'écoute. - Le JDWP (Java Debug Wire Protocol) permet de déboguer une application s'exécutant dans une VM en exposant un port unique.
- Le transfert de port était nécessaire pour le débogage à distance, suivi de l'attachement de JDB à l'application cible.
Injection de code à l'exécution
- L'exploitation a été réalisée en définissant des points d'arrêt et en contrôlant le flux de l'application.
- Des commandes comme
classes
etmethods <class_name>
ont été utilisées pour découvrir la structure de l'application. - Un point d'arrêt a été défini dans la méthode
onClick
, et son exécution a été contrôlée. - Les commandes
locals
,next
etset
ont été utilisées pour inspecter et modifier les variables locales, en particulier en changeant le message "Try Again" en "Hacked". - Le code modifié a été exécuté à l'aide de la commande
run
, modifiant avec succès la sortie de l'application en temps réel.
Cet exemple a démontré comment le comportement d'une application débogable peut être manipulé, soulignant le potentiel d'exploits plus complexes comme l'obtention d'un accès shell sur l'appareil dans le contexte de l'application.
Références
- https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Supportez HackTricks
- Consultez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs aux HackTricks et HackTricks Cloud dépôts github.