hacktricks/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md

109 lines
8 KiB
Markdown
Raw Normal View History

# Exploiter une application débogable
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Supportez HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
# **Contourner les vérifications de root et débogage**
2022-04-28 16:01:33 +00:00
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**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
2022-04-28 16:01:33 +00:00
## Étapes pour rendre une application Android débogable et contourner les vérifications
2022-04-28 16:01:33 +00:00
### **Rendre l'application débogable**
Contenu basé sur https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
1. **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.
2. **Installer l'application modifiée :**
- Utilisez la commande : `adb install <application_name>`.
2022-04-28 16:01:33 +00:00
3. **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.
2022-04-28 16:01:33 +00:00
4. **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>`.
5. **Préparer le débogage dans Android Studio :**
- Naviguez dans Android Studio vers _File -> Open Profile or APK_.
- Ouvrez l'APK recompilé.
6. **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éthode `onCreate`), `b.java`, et `ContextWrapper.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 :
1. **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` est `11000011100111011110`, indiquant que le "Flag_debuggable" est actif.
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
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.
2022-02-06 12:11:27 +00:00
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 fichier `AndroidManifest.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` et `methods <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` et `set` 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.
2022-04-28 16:01:33 +00:00
## Références
* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](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](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Supportez HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}