mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's
This commit is contained in:
parent
40e6082717
commit
124ae823d5
@ -337,6 +337,7 @@
|
||||
- [Manual DeObfuscation](mobile-pentesting/android-app-pentesting/manual-deobfuscation.md)
|
||||
- [React Native Application](mobile-pentesting/android-app-pentesting/react-native-application.md)
|
||||
- [Reversing Native Libraries](mobile-pentesting/android-app-pentesting/reversing-native-libraries.md)
|
||||
- [Shizuku Privileged Api](mobile-pentesting/android-app-pentesting/shizuku-privileged-api.md)
|
||||
- [Smali - Decompiling, Modifying, Compiling](mobile-pentesting/android-app-pentesting/smali-changes.md)
|
||||
- [Spoofing your location in Play Store](mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md)
|
||||
- [Tapjacking](mobile-pentesting/android-app-pentesting/tapjacking.md)
|
||||
|
@ -13,7 +13,7 @@ android-applications-basics.md
|
||||
## ADB (Android Debug Bridge)
|
||||
|
||||
C'est l'outil principal dont vous avez besoin pour vous connecter à un appareil Android (émulé ou physique).\
|
||||
**ADB** permet de contrôler les appareils soit via **USB** soit via **réseau** depuis un ordinateur. Cet utilitaire permet le **copie** de fichiers dans les deux sens, **installation** et **désinstallation** d'applications, **exécution** de commandes shell, **sauvegarde** de données, **lecture** de journaux, entre autres fonctions.
|
||||
**ADB** permet de contrôler les appareils soit via **USB** soit via **réseau** depuis un ordinateur. Cette utilité permet le **copie** de fichiers dans les deux sens, **installation** et **désinstallation** d'applications, **exécution** de commandes shell, **sauvegarde** de données, **lecture** de journaux, entre autres fonctions.
|
||||
|
||||
Consultez la liste suivante de [**Commandes ADB**](adb-commands.md) pour apprendre à utiliser adb.
|
||||
|
||||
@ -25,6 +25,7 @@ Parfois, il est intéressant de **modifier le code de l'application** pour accé
|
||||
## Autres astuces intéressantes
|
||||
|
||||
- [Usurpation de votre emplacement dans le Play Store](spoofing-your-location-in-play-store.md)
|
||||
- [API privilégiée Shizuku (accès privilégié non-root basé sur ADB)](shizuku-privileged-api.md)
|
||||
- **Télécharger des APK** : [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
|
||||
- Extraire l'APK de l'appareil :
|
||||
```bash
|
||||
@ -69,7 +70,7 @@ Les **vulnérabilités** identifiées dans le **Manifest.xml** incluent :
|
||||
- **Sécurité réseau** : Les configurations de sécurité réseau personnalisées (`android:networkSecurityConfig="@xml/network_security_config"`) dans _res/xml/_ peuvent spécifier des détails de sécurité comme les certificats et les paramètres de trafic HTTP. Un exemple est de permettre le trafic HTTP pour des domaines spécifiques.
|
||||
- **Activités et services exportés** : Identifier les activités et services exportés dans le manifeste peut mettre en évidence des composants qui pourraient être mal utilisés. Une analyse plus approfondie lors des tests dynamiques peut révéler comment exploiter ces composants.
|
||||
- **Fournisseurs de contenu et FileProviders** : Les fournisseurs de contenu exposés pourraient permettre un accès ou une modification non autorisés des données. La configuration des FileProviders doit également être examinée.
|
||||
- **Receveurs de diffusion et schémas d'URL** : Ces composants pourraient être exploités, en prêtant une attention particulière à la gestion des schémas d'URL pour les vulnérabilités d'entrée.
|
||||
- **Receveurs de diffusion et schémas d'URL** : Ces composants pourraient être exploités, en prêtant une attention particulière à la manière dont les schémas d'URL sont gérés pour les vulnérabilités d'entrée.
|
||||
- **Versions SDK** : Les attributs `minSdkVersion`, `targetSDKVersion` et `maxSdkVersion` indiquent les versions Android prises en charge, soulignant l'importance de ne pas prendre en charge des versions Android obsolètes et vulnérables pour des raisons de sécurité.
|
||||
|
||||
À partir du fichier **strings.xml**, des informations sensibles telles que des clés API, des schémas personnalisés et d'autres notes de développeur peuvent être découvertes, soulignant la nécessité d'un examen attentif de ces ressources.
|
||||
@ -122,7 +123,7 @@ Lorsqu'il s'agit de fichiers sur le **stockage externe**, comme les cartes SD, c
|
||||
|
||||
Le stockage externe peut être **accédé** dans `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> À partir d'Android 4.4 (**API 17**), la carte SD a une structure de répertoire qui **limite l'accès d'une application au répertoire spécifiquement destiné à cette application**. Cela empêche une application malveillante d'obtenir un accès en lecture ou en écriture aux fichiers d'une autre application.
|
||||
|
||||
**Données sensibles stockées en texte clair**
|
||||
@ -149,7 +150,7 @@ Certains développeurs enregistrent des données sensibles dans le stockage loca
|
||||
|
||||
**Utilisation d'algorithmes non sécurisés et/ou obsolètes**
|
||||
|
||||
Les développeurs ne devraient pas utiliser des **algorithmes obsolètes** pour effectuer des **vérifications d'autorisation**, **stocker** ou **envoyer** des données. Certains de ces algorithmes sont : RC4, MD4, MD5, SHA1... Si des **hashs** sont utilisés pour stocker des mots de passe par exemple, des hashs résistants à la **force brute** devraient être utilisés avec du sel.
|
||||
Les développeurs ne devraient pas utiliser **d'algorithmes obsolètes** pour effectuer des **vérifications d'autorisation**, **stocker** ou **envoyer** des données. Certains de ces algorithmes sont : RC4, MD4, MD5, SHA1... Si des **hashs** sont utilisés pour stocker des mots de passe par exemple, des hashs résistants à la **force brute** devraient être utilisés avec du sel.
|
||||
|
||||
### Autres vérifications
|
||||
|
||||
@ -181,7 +182,7 @@ Selon ce [**post de blog**](https://clearbluejar.github.io/posts/desuperpacking-
|
||||
|
||||
### Analyse statique automatisée du code
|
||||
|
||||
L'outil [**mariana-trench**](https://github.com/facebook/mariana-trench) est capable de trouver des **vulnérabilités** en **scannant** le **code** de l'application. Cet outil contient une série de **sources connues** (qui indiquent à l'outil les **endroits** où l'**entrée** est **contrôlée par l'utilisateur**), des **sinks** (qui indiquent à l'outil des **endroits dangereux** où une entrée malveillante pourrait causer des dommages) et des **règles**. Ces règles indiquent la **combinaison** de **sources-sinks** qui indique une vulnérabilité.
|
||||
L'outil [**mariana-trench**](https://github.com/facebook/mariana-trench) est capable de trouver des **vulnérabilités** en **scannant** le **code** de l'application. Cet outil contient une série de **sources connues** (qui indiquent à l'outil les **endroits** où l'**entrée** est **contrôlée par l'utilisateur**), des **sinks** (qui indiquent à l'outil les **endroits dangereux** où une entrée malveillante pourrait causer des dommages) et des **règles**. Ces règles indiquent la **combinaison** de **sources-sinks** qui indique une vulnérabilité.
|
||||
|
||||
Avec cette connaissance, **mariana-trench examinera le code et trouvera les vulnérabilités possibles.**
|
||||
|
||||
@ -218,7 +219,7 @@ content-protocol.md
|
||||
|
||||
### Analyse dynamique en ligne
|
||||
|
||||
Vous pouvez créer un **compte gratuit** sur : [https://appetize.io/](https://appetize.io). Cette plateforme vous permet de **télécharger** et **d'exécuter** des APK, ce qui est utile pour voir comment un APK se comporte.
|
||||
Vous pouvez créer un **compte gratuit** sur : [https://appetize.io/](https://appetize.io). Cette plateforme vous permet de **télécharger** et **d'exécuter** des APK, ce qui est utile pour voir comment un apk se comporte.
|
||||
|
||||
Vous pouvez même **voir les journaux de votre application** sur le web et vous connecter via **adb**.
|
||||
|
||||
@ -240,8 +241,8 @@ avd-android-virtual-device.md
|
||||
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Version gratuite :** Édition personnelle, vous devez créer un compte. _Il est recommandé de **télécharger** la version **AVEC** _**VirtualBox** pour éviter des erreurs potentielles._)
|
||||
- [**Nox**](https://es.bignox.com) (Gratuit, mais il ne prend pas en charge Frida ou Drozer).
|
||||
|
||||
> [!NOTE]
|
||||
> Lors de la création d'un nouvel émulateur sur n'importe quelle plateforme, rappelez-vous que plus l'écran est grand, plus l'émulateur fonctionnera lentement. Donc, sélectionnez de petits écrans si possible.
|
||||
> [!TIP]
|
||||
> Lorsque vous créez un nouvel émulateur sur n'importe quelle plateforme, rappelez-vous que plus l'écran est grand, plus l'émulateur fonctionnera lentement. Donc, sélectionnez de petits écrans si possible.
|
||||
|
||||
Pour **installer les services Google** (comme l'AppStore) dans Genymotion, vous devez cliquer sur le bouton marqué en rouge de l'image suivante :
|
||||
|
||||
@ -251,13 +252,13 @@ De plus, notez que dans la **configuration de la VM Android dans Genymotion**, v
|
||||
|
||||
#### Utiliser un appareil physique
|
||||
|
||||
Vous devez activer les options de **débogage** et il serait bien si vous pouviez le **rooter** :
|
||||
Vous devez activer les **options de débogage** et il serait bien si vous pouviez le **rooter** :
|
||||
|
||||
1. **Paramètres**.
|
||||
2. (À partir d'Android 8.0) Sélectionnez **Système**.
|
||||
3. Sélectionnez **À propos du téléphone**.
|
||||
4. Appuyez sur **Numéro de build** 7 fois.
|
||||
5. Revenez en arrière et vous trouverez les **Options pour les développeurs**.
|
||||
5. Revenez en arrière et vous trouverez les **options de développement**.
|
||||
|
||||
> Une fois que vous avez installé l'application, la première chose que vous devriez faire est de l'essayer et d'enquêter sur ce qu'elle fait, comment elle fonctionne et vous y habituer.\
|
||||
> Je vous suggérerai de **réaliser cette analyse dynamique initiale en utilisant l'analyse dynamique MobSF + pidcat**, afin que nous puissions **apprendre comment l'application fonctionne** pendant que MobSF **capture** beaucoup de **données intéressantes** que vous pourrez examiner plus tard.
|
||||
@ -274,7 +275,7 @@ Les développeurs doivent être prudents de ne pas exposer **des informations de
|
||||
|
||||
**Mise en cache du presse-papiers**
|
||||
|
||||
Le cadre basé sur le **presse-papiers** d'Android permet la fonctionnalité de copier-coller dans les applications, mais pose un risque car **d'autres applications** peuvent **accéder** au presse-papiers, exposant potentiellement des données sensibles. Il est crucial de **désactiver les fonctions de copier/coller** pour les sections sensibles d'une application, comme les détails de carte de crédit, afin de prévenir les fuites de données.
|
||||
Le cadre **basé sur le presse-papiers** d'Android permet la fonctionnalité de copier-coller dans les applications, mais pose un risque car **d'autres applications** peuvent **accéder** au presse-papiers, exposant potentiellement des données sensibles. Il est crucial de **désactiver les fonctions de copier/coller** pour les sections sensibles d'une application, comme les détails de carte de crédit, afin de prévenir les fuites de données.
|
||||
|
||||
**Journaux de plantage**
|
||||
|
||||
@ -288,7 +289,7 @@ Les applications intègrent souvent des services comme Google Adsense, ce qui pe
|
||||
|
||||
### Bases de données SQLite
|
||||
|
||||
La plupart des applications utiliseront des **bases de données SQLite internes** pour enregistrer des informations. Lors du pentest, jetez un **œil** aux **bases de données** créées, aux noms des **tables** et des **colonnes** et à toutes les **données** enregistrées car vous pourriez trouver des **informations sensibles** (ce qui constituerait une vulnérabilité).\
|
||||
La plupart des applications utiliseront des **bases de données SQLite internes** pour enregistrer des informations. Pendant le pentest, jetez un **œil** aux **bases de données** créées, aux noms des **tables** et des **colonnes** et à toutes les **données** enregistrées car vous pourriez trouver des **informations sensibles** (ce qui constituerait une vulnérabilité).\
|
||||
Les bases de données devraient être situées dans `/data/data/the.package.name/databases` comme `/data/data/com.mwr.example.sieve/databases`.
|
||||
|
||||
Si la base de données enregistre des informations confidentielles et est **cryptée**, mais que vous pouvez **trouver** le **mot de passe** à l'intérieur de l'application, c'est toujours une **vulnérabilité**.
|
||||
@ -297,7 +298,7 @@ Si la base de données enregistre des informations confidentielles et est **cryp
|
||||
|
||||
### Drozer (Exploitation des activités exportées, des fournisseurs de contenu et des services)
|
||||
|
||||
D'après [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf) : **Drozer** vous permet d'**assumer le rôle d'une application Android** et d'interagir avec d'autres applications. Il peut faire **tout ce qu'une application installée peut faire**, comme utiliser le mécanisme de communication inter-processus (IPC) d'Android et interagir avec le système d'exploitation sous-jacent.\
|
||||
D'après [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf) : **Drozer** vous permet d'**assumer le rôle d'une application Android** et d'interagir avec d'autres applications. Il peut faire **tout ce qu'une application installée peut faire**, comme utiliser le mécanisme de communication inter-processus (IPC) d'Android et interagir avec le système d'exploitation sous-jacent. .\
|
||||
Drozer est un outil utile pour **exploiter les activités exportées, les services exportés et les fournisseurs de contenu** comme vous l'apprendrez dans les sections suivantes.
|
||||
|
||||
### Exploitation des activités exportées
|
||||
@ -309,7 +310,7 @@ Rappelez-vous également que le code d'une activité commence dans la méthode *
|
||||
|
||||
Lorsqu'une activité est exportée, vous pouvez invoquer son écran depuis une application externe. Par conséquent, si une activité contenant des **informations sensibles** est **exportée**, vous pourriez **contourner** les mécanismes **d'authentification** **pour y accéder.**
|
||||
|
||||
[**Apprenez à exploiter les activités exportées avec Drozer.**](drozer-tutorial/index.html#activities)
|
||||
[**Apprenez comment exploiter les activités exportées avec Drozer.**](drozer-tutorial/index.html#activities)
|
||||
|
||||
Vous pouvez également démarrer une activité exportée depuis adb :
|
||||
|
||||
@ -320,7 +321,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
```
|
||||
**NOTE**: MobSF détectera comme malveillant l'utilisation de _**singleTask/singleInstance**_ comme `android:launchMode` dans une activité, mais en raison de [cela](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), apparemment cela n'est dangereux que sur les anciennes versions (versions API < 21).
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> Notez qu'un contournement d'autorisation n'est pas toujours une vulnérabilité, cela dépend de la manière dont le contournement fonctionne et des informations qui sont exposées.
|
||||
|
||||
**Fuite d'informations sensibles**
|
||||
@ -381,7 +382,7 @@ Chaque fois que vous trouvez un deep link, vérifiez qu'il **ne reçoit pas de d
|
||||
**Paramètres dans le chemin**
|
||||
|
||||
Vous **devez également vérifier si un deep link utilise un paramètre à l'intérieur du chemin** de l'URL comme : `https://api.example.com/v1/users/{username}`, dans ce cas, vous pouvez forcer un parcours de chemin en accédant à quelque chose comme : `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
|
||||
Notez que si vous trouvez les bons points de terminaison à l'intérieur de l'application, vous pourriez être en mesure de provoquer un **Open Redirect** (si une partie du chemin est utilisée comme nom de domaine), **prise de contrôle de compte** (si vous pouvez modifier les détails des utilisateurs sans token CSRF et que le point de terminaison vulnérable utilise la bonne méthode) et toute autre vulnérabilité. Plus [d'infos à ce sujet ici](http://dphoeniixx.com/2020/12/13-2/).
|
||||
Notez que si vous trouvez les bons points de terminaison à l'intérieur de l'application, vous pourriez être en mesure de provoquer un **Open Redirect** (si une partie du chemin est utilisée comme nom de domaine), un **prise de contrôle de compte** (si vous pouvez modifier les détails des utilisateurs sans jeton CSRF et que le point de terminaison vulnérable utilise la bonne méthode) et toute autre vulnérabilité. Plus [d'infos à ce sujet ici](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**Plus d'exemples**
|
||||
|
||||
@ -391,11 +392,11 @@ Un [rapport de bug bounty intéressant](https://hackerone.com/reports/855618) su
|
||||
|
||||
- **Les certificats ne sont pas toujours inspectés correctement** par les applications Android. Il est courant que ces applications ignorent les avertissements et acceptent des certificats auto-signés ou, dans certains cas, reviennent à utiliser des connexions HTTP.
|
||||
- **Les négociations lors de la poignée de main SSL/TLS sont parfois faibles**, utilisant des suites de chiffrement non sécurisées. Cette vulnérabilité rend la connexion susceptible aux attaques de type homme du milieu (MITM), permettant aux attaquants de déchiffrer les données.
|
||||
- **La fuite d'informations privées** est un risque lorsque les applications s'authentifient via des canaux sécurisés mais communiquent ensuite sur des canaux non sécurisés pour d'autres transactions. Cette approche ne protège pas les données sensibles, telles que les cookies de session ou les détails des utilisateurs, contre l'interception par des entités malveillantes.
|
||||
- **La fuite d'informations privées** est un risque lorsque les applications s'authentifient via des canaux sécurisés mais communiquent ensuite par des canaux non sécurisés pour d'autres transactions. Cette approche ne protège pas les données sensibles, telles que les cookies de session ou les détails des utilisateurs, contre l'interception par des entités malveillantes.
|
||||
|
||||
#### Vérification des certificats
|
||||
|
||||
Nous allons nous concentrer sur la **vérification des certificats**. L'intégrité du certificat du serveur doit être vérifiée pour améliorer la sécurité. Cela est crucial car des configurations TLS non sécurisées et la transmission de données sensibles sur des canaux non chiffrés peuvent poser des risques significatifs. Pour des étapes détaillées sur la vérification des certificats de serveur et la résolution des vulnérabilités, [**cette ressource**](https://manifestsecurity.com/android-application-security-part-10/) fournit des conseils complets.
|
||||
Nous allons nous concentrer sur la **vérification des certificats**. L'intégrité du certificat du serveur doit être vérifiée pour améliorer la sécurité. Cela est crucial car des configurations TLS non sécurisées et la transmission de données sensibles par des canaux non chiffrés peuvent poser des risques significatifs. Pour des étapes détaillées sur la vérification des certificats de serveur et le traitement des vulnérabilités, [**cette ressource**](https://manifestsecurity.com/android-application-security-part-10/) fournit des conseils complets.
|
||||
|
||||
#### SSL Pinning
|
||||
|
||||
@ -407,6 +408,8 @@ Pour inspecter le trafic HTTP, il est nécessaire d'**installer le certificat de
|
||||
|
||||
Les applications ciblant **API Level 24 et supérieur** nécessitent des modifications de la configuration de sécurité réseau pour accepter le certificat CA du proxy. Cette étape est cruciale pour inspecter le trafic chiffré. Pour des instructions sur la modification de la configuration de sécurité réseau, [**reportez-vous à ce tutoriel**](make-apk-accept-ca-certificate.md).
|
||||
|
||||
Si **Flutter** est utilisé, vous devez suivre les instructions sur [**cette page**](flutter.md). Cela est dû au fait que, simplement ajouter le certificat dans le magasin ne fonctionnera pas car Flutter a sa propre liste de CAs valides.
|
||||
|
||||
#### Contournement du SSL Pinning
|
||||
|
||||
Lorsque le SSL Pinning est mis en œuvre, le contournement devient nécessaire pour inspecter le trafic HTTPS. Diverses méthodes sont disponibles à cet effet :
|
||||
@ -424,7 +427,7 @@ Il est également important de rechercher des vulnérabilités web courantes au
|
||||
### Frida
|
||||
|
||||
[Frida](https://www.frida.re) est un outil d'instrumentation dynamique pour les développeurs, les ingénieurs en rétro-ingénierie et les chercheurs en sécurité.\
|
||||
**Vous pouvez accéder à l'application en cours d'exécution et accrocher des méthodes en temps réel pour changer le comportement, changer des valeurs, extraire des valeurs, exécuter un code différent...**\
|
||||
**Vous pouvez accéder à l'application en cours d'exécution et accrocher des méthodes en temps réel pour changer le comportement, changer des valeurs, extraire des valeurs, exécuter différents codes...**\
|
||||
Si vous souhaitez effectuer un pentesting sur des applications Android, vous devez savoir comment utiliser Frida.
|
||||
|
||||
- Apprenez à utiliser Frida : [**Tutoriel Frida**](frida-tutorial/index.html)
|
||||
@ -468,7 +471,7 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
|
||||
```
|
||||
### **Images de Fond**
|
||||
|
||||
Lorsque vous mettez une application en arrière-plan, Android stocke un **instantané de l'application** afin que, lorsqu'elle est récupérée au premier plan, elle commence à charger l'image avant l'application, ce qui donne l'impression que l'application a été chargée plus rapidement.
|
||||
Lorsque vous mettez une application en arrière-plan, Android stocke un **instantané de l'application** afin que, lorsqu'elle est récupérée au premier plan, elle commence à charger l'image avant l'application, donnant l'impression que l'application a été chargée plus rapidement.
|
||||
|
||||
Cependant, si cet instantané contient des **informations sensibles**, quelqu'un ayant accès à l'instantané pourrait **voler ces informations** (notez que vous avez besoin de root pour y accéder).
|
||||
|
||||
@ -493,7 +496,7 @@ Le danger réside dans le fait de permettre aux attaquants de déclencher des co
|
||||
- **Injection d'Intent** est similaire au problème de Redirection Ouverte sur le web.
|
||||
- Les exploits impliquent de passer des objets `Intent` en tant qu'extras, qui peuvent être redirigés pour exécuter des opérations non sécurisées.
|
||||
- Cela peut exposer des composants non exportés et des fournisseurs de contenu aux attaquants.
|
||||
- La conversion d'URL en `Intent` par `WebView` peut faciliter des actions non intentionnelles.
|
||||
- La conversion d'URL en `Intent` de `WebView` peut faciliter des actions non intentionnelles.
|
||||
|
||||
### Injections Côté Client Android et autres
|
||||
|
||||
@ -502,7 +505,7 @@ Vous connaissez probablement ce type de vulnérabilités sur le Web. Vous devez
|
||||
- **Injection SQL :** Lors de la gestion de requêtes dynamiques ou de Content-Providers, assurez-vous d'utiliser des requêtes paramétrées.
|
||||
- **Injection JavaScript (XSS) :** Vérifiez que le support JavaScript et Plugin est désactivé pour tous les WebViews (désactivé par défaut). [Plus d'infos ici](webview-attacks.md#javascript-enabled).
|
||||
- **Inclusion de Fichiers Locaux :** Les WebViews ne devraient pas avoir accès au système de fichiers (activé par défaut) - `(webview.getSettings().setAllowFileAccess(false);)`. [Plus d'infos ici](webview-attacks.md#javascript-enabled).
|
||||
- **Cookies éternels :** Dans plusieurs cas, lorsque l'application Android termine la session, le cookie n'est pas révoqué ou peut même être enregistré sur le disque.
|
||||
- **Cookies éternels** : Dans plusieurs cas, lorsque l'application Android termine la session, le cookie n'est pas révoqué ou peut même être enregistré sur le disque.
|
||||
- [**Drapeau Sécurisé** dans les cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
|
||||
---
|
||||
@ -520,21 +523,21 @@ Vous connaissez probablement ce type de vulnérabilités sur le Web. Vous devez
|
||||
docker pull opensecurity/mobile-security-framework-mobsf
|
||||
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||
```
|
||||
Remarque que MobSF peut analyser des applications **Android**(apk)**, IOS**(ipa) **et Windows**(apx) (_Les applications Windows doivent être analysées depuis un MobSF installé sur un hôte Windows_).\
|
||||
Notice that MobSF peut analyser **Android**(apk)**, IOS**(ipa) **et Windows**(apx) applications (_Les applications Windows doivent être analysées depuis un MobSF installé sur un hôte Windows_).\
|
||||
De plus, si vous créez un fichier **ZIP** avec le code source d'une application **Android** ou **IOS** (allez dans le dossier racine de l'application, sélectionnez tout et créez un fichier ZIP), il pourra également l'analyser.
|
||||
|
||||
MobSF permet également de faire une analyse **diff/Compare** et d'intégrer **VirusTotal** (vous devrez définir votre clé API dans _MobSF/settings.py_ et l'activer : `VT_ENABLED = TRUE` `VT_API_KEY = <Votre clé API>` `VT_UPLOAD = TRUE`). Vous pouvez également définir `VT_UPLOAD` sur `False`, alors le **hash** sera **téléchargé** au lieu du fichier.
|
||||
MobSF permet également de **diff/Comparer** l'analyse et d'intégrer **VirusTotal** (vous devrez définir votre clé API dans _MobSF/settings.py_ et l'activer : `VT_ENABLED = TRUE` `VT_API_KEY = <Votre clé API>` `VT_UPLOAD = TRUE`). Vous pouvez également définir `VT_UPLOAD` sur `False`, alors le **hash** sera **téléchargé** au lieu du fichier.
|
||||
|
||||
### Analyse dynamique assistée avec MobSF
|
||||
|
||||
**MobSF** peut également être très utile pour l'**analyse dynamique** sur **Android**, mais dans ce cas, vous devrez installer MobSF et **genymotion** sur votre hôte (une VM ou Docker ne fonctionnera pas). _Remarque : Vous devez **d'abord démarrer une VM dans genymotion** et **ensuite MobSF.**_\
|
||||
**MobSF** peut également être très utile pour l'**analyse dynamique** sur **Android**, mais dans ce cas, vous devrez installer MobSF et **genymotion** sur votre hôte (une VM ou Docker ne fonctionnera pas). _Remarque : Vous devez **d'abord démarrer une VM dans genymotion** puis **MobSF.**_\
|
||||
L'**analyseur dynamique MobSF** peut :
|
||||
|
||||
- **Extraire les données de l'application** (URLs, journaux, presse-papiers, captures d'écran réalisées par vous, captures d'écran réalisées par "**Exported Activity Tester**", e-mails, bases de données SQLite, fichiers XML et autres fichiers créés). Tout cela se fait automatiquement sauf pour les captures d'écran, vous devez appuyer lorsque vous souhaitez une capture d'écran ou vous devez appuyer sur "**Exported Activity Tester**" pour obtenir des captures d'écran de toutes les activités exportées.
|
||||
- Capturer le **trafic HTTPS**
|
||||
- Utiliser **Frida** pour obtenir des **informations d'exécution**
|
||||
|
||||
À partir des versions **Android > 5**, il **démarrera automatiquement Frida** et définira les paramètres de **proxy** globaux pour **capturer** le trafic. Il ne capturera que le trafic de l'application testée.
|
||||
À partir des versions Android **> 5**, il **démarrera automatiquement Frida** et définira les paramètres de **proxy** globaux pour **capturer** le trafic. Il ne capturera que le trafic de l'application testée.
|
||||
|
||||
**Frida**
|
||||
|
||||
@ -555,7 +558,7 @@ De plus, vous avez quelques fonctionnalités auxiliaires de Frida :
|
||||
- **Rechercher un motif de classe** : Rechercher des classes par motif
|
||||
- **Tracer les méthodes de classe** : **Tracer** une **classe entière** (voir les entrées et sorties de toutes les méthodes de la classe). N'oubliez pas qu'en mode par défaut, MobSF trace plusieurs méthodes d'API Android intéressantes.
|
||||
|
||||
Une fois que vous avez sélectionné le module auxiliaire que vous souhaitez utiliser, vous devez appuyer sur "**Start Instrumentation**" et vous verrez toutes les sorties dans "**Frida Live Logs**".
|
||||
Une fois que vous avez sélectionné le module auxiliaire que vous souhaitez utiliser, vous devez appuyer sur "**Start Intrumentation**" et vous verrez toutes les sorties dans "**Frida Live Logs**".
|
||||
|
||||
**Shell**
|
||||
|
||||
@ -570,12 +573,12 @@ receivers
|
||||
```
|
||||
**Outils HTTP**
|
||||
|
||||
Lorsque le trafic http est capturé, vous pouvez voir une vue peu attrayante du trafic capturé sur "**HTTP(S) Traffic**" en bas ou une vue plus agréable dans le bouton vert "**Start HTTPTools**". À partir de la deuxième option, vous pouvez **envoyer** les **requêtes capturées** à des **proxies** comme Burp ou Owasp ZAP.\
|
||||
Lorsque le trafic http est capturé, vous pouvez voir une vue peu attrayante du trafic capturé sur le bouton "**HTTP(S) Traffic**" en bas ou une vue plus agréable dans le bouton vert "**Start HTTPTools**". À partir de la deuxième option, vous pouvez **envoyer** les **requêtes capturées** à des **proxies** comme Burp ou Owasp ZAP.\
|
||||
Pour ce faire, _allumez Burp -->_ _désactivez Intercept --> dans MobSB HTTPTools, sélectionnez la requête_ --> appuyez sur "**Send to Fuzzer**" --> _sélectionnez l'adresse du proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
|
||||
|
||||
Une fois que vous avez terminé l'analyse dynamique avec MobSF, vous pouvez appuyer sur "**Start Web API Fuzzer**" pour **fuzz les requêtes http** et rechercher des vulnérabilités.
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> Après avoir effectué une analyse dynamique avec MobSF, les paramètres du proxy peuvent être mal configurés et vous ne pourrez pas les corriger depuis l'interface graphique. Vous pouvez corriger les paramètres du proxy en faisant :
|
||||
>
|
||||
> ```
|
||||
@ -609,13 +612,13 @@ qark --java path/to/specific/java/file.java
|
||||
- Analyse AndroidManifest.xml pour des vulnérabilités et comportements courants
|
||||
- Analyse statique du code source pour des vulnérabilités et comportements courants
|
||||
- Informations sur l'appareil
|
||||
- et plus encore
|
||||
- et plus
|
||||
```bash
|
||||
reverse-apk relative/path/to/APP.apk
|
||||
```
|
||||
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
|
||||
|
||||
SUPER est une application en ligne de commande qui peut être utilisée sur Windows, MacOS X et Linux, qui analyse les fichiers _.apk_ à la recherche de vulnérabilités. Elle le fait en décompressant les APK et en appliquant une série de règles pour détecter ces vulnérabilités.
|
||||
SUPER est une application en ligne de commande qui peut être utilisée sous Windows, MacOS X et Linux, qui analyse les fichiers _.apk_ à la recherche de vulnérabilités. Elle le fait en décompressant les APK et en appliquant une série de règles pour détecter ces vulnérabilités.
|
||||
|
||||
Toutes les règles sont centrées dans un fichier `rules.json`, et chaque entreprise ou testeur peut créer ses propres règles pour analyser ce dont ils ont besoin.
|
||||
|
||||
@ -629,9 +632,9 @@ super-analyzer {apk_file}
|
||||
|
||||
StaCoAn est un outil **multiplateforme** qui aide les développeurs, les chasseurs de bugs et les hackers éthiques à effectuer une [analyse de code statique](https://en.wikipedia.org/wiki/Static_program_analysis) sur des applications mobiles.
|
||||
|
||||
Le concept est que vous faites glisser et déposer votre fichier d'application mobile (un fichier .apk ou .ipa) sur l'application StaCoAn et elle générera un rapport visuel et portable pour vous. Vous pouvez ajuster les paramètres et les listes de mots pour obtenir une expérience personnalisée.
|
||||
Le concept est que vous glissez et déposez votre fichier d'application mobile (un fichier .apk ou .ipa) sur l'application StaCoAn et elle générera un rapport visuel et portable pour vous. Vous pouvez ajuster les paramètres et les listes de mots pour obtenir une expérience personnalisée.
|
||||
|
||||
Télécharger[ dernière version](https://github.com/vincentcox/StaCoAn/releases):
|
||||
Téléchargez la [dernière version](https://github.com/vincentcox/StaCoAn/releases) :
|
||||
```
|
||||
./stacoan
|
||||
```
|
||||
@ -662,7 +665,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
Il est capable de :
|
||||
|
||||
- Extraire du code Java et Smali en utilisant différents outils
|
||||
- Analyser des APKs en utilisant : [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
- Analyser des APK en utilisant : [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
- Extraire des informations privées de l'APK en utilisant des regexps.
|
||||
- Analyser le Manifest.
|
||||
- Analyser les domaines trouvés en utilisant : [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) et [whatweb](https://github.com/urbanadventurer/WhatWeb)
|
||||
@ -674,7 +677,7 @@ Utile pour détecter les malwares : [https://koodous.com/](https://koodous.com)
|
||||
|
||||
## Obfuscating/Deobfuscating code
|
||||
|
||||
Notez qu'en fonction du service et de la configuration que vous utilisez pour obfusquer le code, les secrets peuvent ou non être obfusqués.
|
||||
Notez que selon le service et la configuration que vous utilisez pour obfusquer le code, les secrets peuvent ou non être obfusqués.
|
||||
|
||||
### [ProGuard](<https://en.wikipedia.org/wiki/ProGuard_(software)>)
|
||||
|
||||
@ -720,7 +723,7 @@ APKiD vous donne des informations sur **comment un APK a été créé**. Il iden
|
||||
|
||||
### [Androl4b](https://github.com/sh4hin/Androl4b)
|
||||
|
||||
AndroL4b est une machine virtuelle de sécurité Android basée sur ubuntu-mate qui inclut la collection des derniers frameworks, tutoriels et laboratoires de différents geeks et chercheurs en sécurité pour l'ingénierie inverse et l'analyse de malwares.
|
||||
AndroL4b est une machine virtuelle de sécurité Android basée sur ubuntu-mate qui inclut la collection des derniers frameworks, tutoriels et laboratoires de différents geeks et chercheurs en sécurité pour l'ingénierie inverse et l'analyse de malware.
|
||||
|
||||
## References
|
||||
|
||||
|
@ -0,0 +1,123 @@
|
||||
# Shizuku Privileged API
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Shizuku est un service open-source qui **génère un processus Java privilégié en utilisant `app_process`** et expose des **API système Android sélectionnées via Binder**. Étant donné que le processus est lancé avec les mêmes **capabilités UID `shell` que celles utilisées par ADB**, toute application (ou terminal) qui se lie à l'interface AIDL exportée peut effectuer de nombreuses actions qui nécessitent normalement **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, accès fichier à l'intérieur de `/data`,** etc. – **sans rooter l'appareil**.
|
||||
|
||||
Cas d'utilisation typiques :
|
||||
* Audit de sécurité depuis un appareil non rooté
|
||||
* Suppression de bloatware / désencombrement des applications système
|
||||
* Collecte de journaux, clés Wi-Fi, informations sur les processus et les sockets pour les équipes bleues/DFIR
|
||||
* Automatisation de la configuration de l'appareil depuis des applications personnalisées ou des scripts shell
|
||||
|
||||
---
|
||||
## 1. Démarrer le service privilégié
|
||||
|
||||
`moe.shizuku.privileged.api` peut être démarré de trois manières différentes – le service Binder résultant se comporte de la même manière dans tous les cas.
|
||||
|
||||
### 1.1 ADB sans fil (Android 11+)
|
||||
1. Activez **Options pour les développeurs ➜ Débogage sans fil** et associez l'appareil.
|
||||
2. Dans l'application Shizuku, sélectionnez **“Démarrer via le débogage sans fil”** et copiez le code d'association.
|
||||
3. Le service survit jusqu'au prochain redémarrage (les sessions de débogage sans fil sont effacées au démarrage).
|
||||
|
||||
### 1.2 USB / ligne de commande ADB locale
|
||||
```bash
|
||||
adb push start.sh \
|
||||
/storage/emulated/0/Android/data/moe.shizuku.privileged.api/
|
||||
|
||||
# spawn the privileged process
|
||||
adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
|
||||
```
|
||||
Le même script peut être exécuté via une connexion **network ADB** (`adb connect <IP>:5555`).
|
||||
|
||||
### 1.3 Appareils rootés
|
||||
Si l'appareil est déjà rooté, exécutez :
|
||||
```bash
|
||||
su -c sh /data/adb/shizuku/start.sh
|
||||
```
|
||||
### 1.4 Vérification de son fonctionnement
|
||||
```bash
|
||||
adb shell dumpsys activity service moe.shizuku.privileged.api | head
|
||||
```
|
||||
Un démarrage réussi renvoie `Running services (1)` ainsi que le PID du processus privilégié.
|
||||
|
||||
---
|
||||
## 2. Liaison depuis une application
|
||||
Les applications tierces n'ont besoin que de ce qui suit dans leur `AndroidManifest.xml`:
|
||||
```xml
|
||||
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
|
||||
```
|
||||
Au moment de l'exécution, ils obtiennent le binder :
|
||||
```java
|
||||
IBinder binder = ShizukuProvider.getBinder();
|
||||
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
|
||||
```
|
||||
À partir de ce moment, l'application peut invoquer n'importe quelle méthode que l'utilisateur **`shell`** peut appeler – par exemple :
|
||||
```java
|
||||
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
|
||||
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
|
||||
```
|
||||
Une liste soigneusement sélectionnée de plus de **170 applications compatibles avec Shizuku** est maintenue sur [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku).
|
||||
|
||||
---
|
||||
## 3. Rish – shell élevé à l'intérieur de Termux
|
||||
L'écran des paramètres de Shizuku expose **“Utiliser Shizuku dans les applications terminal”**. L'activer télécharge *rish* (`/data/local/tmp/rish`).
|
||||
```bash
|
||||
pkg install wget
|
||||
wget https://rikka.app/rish/latest -O rish && chmod +x rish
|
||||
|
||||
# start elevated shell (inherits the binder connection)
|
||||
./rish
|
||||
whoami # ➜ shell
|
||||
id # uid=2000(shell) gid=2000(shell) groups=... context=u:r:shell:s0
|
||||
```
|
||||
### 3.1 Commandes utiles du shell rish
|
||||
* Lister les processus en cours d'un package donné :
|
||||
```bash
|
||||
ps -A | grep com.facebook.katana
|
||||
```
|
||||
* Énumérer les sockets à l'écoute et les mapper aux packages (par exemple **CVE-2019-6447 ES File Explorer**) :
|
||||
```bash
|
||||
netstat -tuln
|
||||
for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do
|
||||
printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)";
|
||||
done
|
||||
```
|
||||
* Dump des logs de chaque application :
|
||||
```bash
|
||||
logcat -d | grep -iE "(error|exception)"
|
||||
```
|
||||
* Lire les identifiants Wi-Fi stockés (Android 11 +) :
|
||||
```bash
|
||||
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
|
||||
```
|
||||
* Débloat en masse (exemple) :
|
||||
```bash
|
||||
pm uninstall --user 0 com.miui.weather2
|
||||
```
|
||||
|
||||
---
|
||||
## 4. Considérations de sécurité / détection
|
||||
1. Shizuku nécessite des privilèges **ADB debugging**, donc _Options pour les développeurs → Débogage USB/Sans fil_ doit être **activé**.
|
||||
Les organisations peuvent bloquer cela via un MDM ou avec `settings put global development_settings_enabled 0`.
|
||||
2. Le service s'enregistre sous le nom `moe.shizuku.privileged.api`.
|
||||
Une simple `adb shell service list | grep shizuku` (ou règle de sécurité des points de terminaison) détecte sa présence.
|
||||
3. Les capacités sont limitées à ce que l'utilisateur `shell` peut déjà faire – ce n'est **pas root**.
|
||||
Les API sensibles qui nécessitent l'utilisateur `system` ou `root` restent inaccessibles.
|
||||
4. Les sessions ne **survivent pas à un redémarrage** à moins que l'appareil ne soit rooté et que Shizuku soit configuré comme un démon de démarrage.
|
||||
|
||||
---
|
||||
## 5. Atténuation
|
||||
* Désactiver le débogage USB/Sans fil sur les appareils de production.
|
||||
* Surveiller les services Binder exposant `moe.shizuku.privileged.api`.
|
||||
* Utiliser des politiques SELinux (Android enterprise) pour bloquer l'interface AIDL des applications non gérées.
|
||||
|
||||
---
|
||||
## Références
|
||||
|
||||
- [Blog – Shizuku : Déverrouiller des capacités Android avancées sans root](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/)
|
||||
- [Documentation officielle de Shizuku](https://shizuku.rikka.app/)
|
||||
- [awesome-shizuku – liste des applications prises en charge](https://github.com/timschneeb/awesome-shizuku)
|
||||
- [shell rish (shell reverse-adb privilégié)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user