mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
Translated ['mobile-pentesting/android-app-pentesting/README.md', 'mobil
This commit is contained in:
parent
249f91f956
commit
03142f6f10
5 changed files with 233 additions and 97 deletions
|
@ -287,12 +287,11 @@
|
|||
* [ADB Commands](mobile-pentesting/android-app-pentesting/adb-commands.md)
|
||||
* [APK decompilers](mobile-pentesting/android-app-pentesting/apk-decompilers.md)
|
||||
* [AVD - Android Virtual Device](mobile-pentesting/android-app-pentesting/avd-android-virtual-device.md)
|
||||
* [Burp Suite Configuration for Android](mobile-pentesting/android-app-pentesting/android-burp-suite-settings.md)
|
||||
* [Bypass Biometric Authentication (Android)](mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md)
|
||||
* [content:// protocol](mobile-pentesting/android-app-pentesting/content-protocol.md)
|
||||
* [Drozer Tutorial](mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md)
|
||||
* [Exploiting Content Providers](mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md)
|
||||
* [Exploiting a debuggeable applciation](mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md)
|
||||
* [Exploiting a debuggeable application](mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md)
|
||||
* [Frida Tutorial](mobile-pentesting/android-app-pentesting/frida-tutorial/README.md)
|
||||
* [Frida Tutorial 1](mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md)
|
||||
* [Frida Tutorial 2](mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md)
|
||||
|
@ -300,6 +299,7 @@
|
|||
* [Objection Tutorial](mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md)
|
||||
* [Google CTF 2018 - Shall We Play a Game?](mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md)
|
||||
* [Inspeckage Tutorial](mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md)
|
||||
* [Install Burp Certificate](mobile-pentesting/android-app-pentesting/install-burp-certificate.md)
|
||||
* [Intent Injection](mobile-pentesting/android-app-pentesting/intent-injection.md)
|
||||
* [Make APK Accept CA Certificate](mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md)
|
||||
* [Manual DeObfuscation](mobile-pentesting/android-app-pentesting/manual-deobfuscation.md)
|
||||
|
|
|
@ -138,7 +138,7 @@ Informations tirées [d'ici](https://manifestsecurity.com/android-application-se
|
|||
|
||||
Le stockage externe peut être **accédé** dans `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
|
||||
{% hint style="info"
|
||||
{% hint style="info" %}
|
||||
### TLS cassé
|
||||
|
||||
**Accepter tous les certificats**
|
||||
|
@ -256,7 +256,7 @@ Grâce à la connexion ADB, vous pouvez utiliser **Drozer** et **Frida** à l'in
|
|||
|
||||
#### Utilisation d'un émulateur
|
||||
|
||||
* [**Android Studio**](https://developer.android.com/studio) (Vous pouvez créer des appareils **x86** et **arm**, et selon [**ceci** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**les dernières versions x86** prennent en charge les bibliothèques ARM sans avoir besoin d'un émulateur ARM lent).
|
||||
* [**Android Studio**](https://developer.android.com/studio) (Vous pouvez créer des appareils **x86** et **arm**, et selon [**ceci**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html), les **dernières versions x86** **supportent les bibliothèques ARM** sans avoir besoin d'un émulateur ARM lent).
|
||||
* Apprenez à le configurer sur cette page :
|
||||
|
||||
{% content-ref url="avd-android-virtual-device.md" %}
|
||||
|
@ -288,7 +288,7 @@ Vous devez activer les options de **débogage** et il serait bien si vous pouvez
|
|||
> Une fois que vous avez installé l'application, la première chose à faire est de l'essayer et d'enquêter sur ce qu'elle fait, comment elle fonctionne et de vous familiariser avec elle.\
|
||||
> Je vous suggère de **réaliser cette analyse dynamique initiale en utilisant l'analyse dynamique MobSF + pidcat**, afin de **comprendre comment fonctionne l'application** tandis que MobSF **capture** de nombreuses **données intéressantes** que vous pourrez examiner ultérieurement.
|
||||
|
||||
### Fuite de données involontaire
|
||||
### Fuite de données non intentionnelle
|
||||
|
||||
**Journalisation**
|
||||
|
||||
|
@ -296,13 +296,13 @@ Souvent, les développeurs laissent des informations de débogage accessibles au
|
|||
Lors de la navigation dans l'application, utilisez [**pidcat**](https://github.com/JakeWharton/pidcat)_(Recommandé, il est plus facile à utiliser et à lire)_ ou [adb logcat](adb-commands.md#logcat) pour lire les journaux créés et **rechercher des informations sensibles**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Notez que **à partir des versions ultérieures à Android 4.0**, **les applications ne peuvent accéder qu'à leurs propres journaux**. Les applications ne peuvent donc pas accéder aux journaux d'autres applications.\
|
||||
Notez que, à partir de la version **Android 4.0**, **les applications ne peuvent accéder qu'à leurs propres journaux**. Les applications ne peuvent donc pas accéder aux journaux d'autres applications.\
|
||||
Quoi qu'il en soit, il est toujours recommandé de **ne pas enregistrer d'informations sensibles**.
|
||||
{% endhint %}
|
||||
|
||||
**Mise en cache du presse-papiers**
|
||||
|
||||
Android fournit un framework basé sur le presse-papiers pour permettre la fonction de copier-coller dans les applications Android. Mais cela crée un problème sérieux lorsque certaines **autres applications** peuvent **accéder** au **presse-papiers** qui contient des données sensibles. La fonction de **copier-coller** devrait être **désactivée** pour les parties **sensibles** de l'application. Par exemple, désactivez la copie des détails de la carte de crédit.
|
||||
Android fournit un framework basé sur le **presse-papiers** pour fournir la fonction de copier-coller dans les applications Android. Mais cela crée un problème sérieux lorsque certaines **autres applications** peuvent **accéder** au **presse-papiers** qui contient des données sensibles. La fonction de **copier-coller** devrait être **désactivée** pour les parties **sensibles** de l'application. Par exemple, désactivez la copie des détails de la carte de crédit.
|
||||
|
||||
**Journaux de plantage**
|
||||
|
||||
|
@ -315,7 +315,7 @@ La plupart des applications utilisent d'autres services dans leur application, c
|
|||
|
||||
### Bases de données SQLite
|
||||
|
||||
La plupart des applications utiliseront des **bases de données SQLite internes** pour enregistrer des informations. Lors du pentest, **examinez** les **bases de données** créées, les 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. Lors du pentest, jetez un **coup d'œ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 doivent être situées dans `/data/data/nom.du.package/databases` comme `/data/data/com.mwr.example.sieve/databases`
|
||||
|
||||
Si la base de données enregistre des informations confidentielles et est **chiffrée**, mais que vous pouvez **trouver** le **mot de passe** à l'intérieur de l'application, c'est toujours une **vulnérabilité**.
|
||||
|
@ -334,7 +334,7 @@ Rappelez-vous également que le code d'une activité commence par la méthode `o
|
|||
|
||||
**Contournement de l'autorisation**
|
||||
|
||||
Lorsqu'une activité est exportée, vous pouvez invoquer son écran à partir d'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.\
|
||||
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 comment exploiter les activités exportées avec Drozer.**](drozer-tutorial/#activities)
|
||||
|
||||
Vous pouvez également démarrer une activité exportée depuis adb :
|
||||
|
@ -425,7 +425,7 @@ Un [rapport intéressant de bug bounty](https://hackerone.com/reports/855618) su
|
|||
|
||||
* **Absence d'inspection de certificat :** L'application Android ne parvient pas à vérifier l'identité du certificat qui lui est présenté. La plupart des applications ignorent les avertissements et acceptent n'importe quel certificat auto-signé présenté. Certaines applications passent plutôt le trafic par une connexion HTTP.
|
||||
* **Négociation de poignée de main faible :** L'application et le serveur effectuent une poignée de main SSL/TLS, mais utilisent une suite de chiffrement non sécurisée qui est vulnérable aux attaques de l'homme du milieu (MITM). Ainsi, tout attaquant peut facilement décrypter cette connexion.
|
||||
* **Fuite d'informations de confidentialité :** La plupart du temps, il arrive que les applications effectuent une authentification via un canal sécurisé, mais que toutes les autres connexions se fassent via un canal non sécurisé. Cela n'ajoute pas de sécurité à l'application car les données sensibles restantes, telles que les cookies de session ou les données utilisateur, peuvent être interceptées par un utilisateur malveillant.
|
||||
* **Fuite d'informations de confidentialité :** La plupart du temps, il arrive que les applications effectuent une authentification via un canal sécurisé, mais toutes les autres connexions se font via un canal non sécurisé. Cela n'ajoute pas de sécurité à l'application car les données sensibles restantes, telles que les cookies de session ou les données utilisateur, peuvent être interceptées par un utilisateur malveillant.
|
||||
|
||||
Parmi les 3 scénarios présentés, nous allons discuter de **comment vérifier l'identité du certificat**. Les 2 autres scénarios dépendent de la **configuration TLS** du serveur et de l'envoi ou non de données non chiffrées par l'application. Le testeur de pénétration doit vérifier par lui-même la configuration TLS du serveur ([ici](../../network-services-pentesting/pentesting-web/#ssl-tls-vulnerabilites)) et détecter si des **informations confidentielles sont envoyées par un canal non chiffré/vulnérable**.\
|
||||
Plus d'informations sur la découverte et la correction de ce type de vulnérabilités [**ici**](https://manifestsecurity.com/android-application-security-part-10/).
|
||||
|
@ -439,7 +439,7 @@ Il est recommandé d'**appliquer l'épinglage SSL** pour les sites où des infor
|
|||
### Inspection du trafic HTTP
|
||||
|
||||
Tout d'abord, vous devez (devez) **installer le certificat** de l'**outil proxy** que vous allez utiliser, probablement Burp. Si vous n'installez pas le certificat CA de l'outil proxy, vous ne verrez probablement pas le trafic chiffré dans le proxy.\
|
||||
**Veuillez,** [**lire ce guide pour apprendre comment installer un certificat CA personnalisé**](android-burp-suite-settings.md)**.**
|
||||
**Veuillez,** [**lire ce guide pour apprendre comment installer un certificat CA personnalisé**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)**.**
|
||||
|
||||
Pour les applications ciblant **API Level 24+**, il ne suffit pas d'installer le certificat CA de Burp sur l'appareil. Pour contourner cette nouvelle protection, vous devez modifier le fichier de configuration de la sécurité réseau. Ainsi, vous pouvez modifier ce fichier pour autoriser votre certificat CA ou vous pouvez [**lire cette page pour un tutoriel sur la façon de forcer l'application à accepter à nouveau tous les certificats installés sur l'appareil**](make-apk-accept-ca-certificate.md).
|
||||
|
||||
|
@ -450,7 +450,7 @@ Voici quelques options que j'ai utilisées pour contourner cette protection :
|
|||
|
||||
* Modifier automatiquement l'**apk** pour contourner l'épinglage SSL avec [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Le meilleur avantage de cette option est que vous n'avez pas besoin de root pour contourner l'épinglage SSL, mais vous devrez supprimer l'application et réinstaller la nouvelle, et cela ne fonctionnera pas toujours.
|
||||
* Vous pouvez utiliser **Frida** (discuté ci-dessous) pour contourner cette protection. Voici un guide pour utiliser Burp+Frida+Genymotion : [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
* Vous pouvez également essayer de contourner automatiquement l'épinglage SSL en utilisant [**objection**](frida-tutorial/objection-tutorial.md)** :** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
* Vous pouvez également essayer de contourner automatiquement l'épinglage SSL en utilisant [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
* Vous pouvez également essayer de contourner automatiquement l'épinglage SSL en utilisant l'analyse dynamique de **MobSF** (expliquée ci-dessous)
|
||||
* Si vous pensez toujours qu'il y a du trafic que vous ne capturez pas, vous pouvez essayer de **rediriger le trafic vers Burp en utilisant iptables**. Lisez ce blog : [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
|
||||
|
||||
|
@ -460,7 +460,7 @@ Notez qu'à cette étape, vous devez rechercher des vulnérabilités Web courant
|
|||
|
||||
### Frida
|
||||
|
||||
Outil d'instrumentation dynamique pour les développeurs, les reverse-engineers et les chercheurs en sécurité. En savoir plus sur [www.frida.re](https://www.frida.re).\
|
||||
Boîte à outils d'instrumentation dynamique pour les développeurs, les reverse-engineers et les chercheurs en sécurité. En savoir plus sur [www.frida.re](https://www.frida.re).\
|
||||
**C'est incroyable, vous pouvez accéder à une application en cours d'exécution et accrocher des méthodes en temps réel pour changer le comportement, changer les valeurs, extraire des valeurs, exécuter un code différent...**\
|
||||
**Si vous voulez tester les applications Android, vous devez savoir comment utiliser Frida.**
|
||||
|
||||
|
@ -491,7 +491,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
|
|||
|
||||
### **Données sensibles dans le Keystore**
|
||||
|
||||
Dans Android, le Keystore est le meilleur endroit pour stocker des données sensibles, cependant, avec suffisamment de privilèges, il est toujours **possible d'y accéder**. Comme les applications ont tendance à stocker ici des **données sensibles en texte clair**, les tests de pénétration doivent les vérifier, car un utilisateur root ou une personne ayant un accès physique à l'appareil pourrait voler ces données.
|
||||
Dans Android, le Keystore est le meilleur endroit pour stocker des données sensibles, cependant, avec suffisamment de privilèges, il est toujours **possible d'y accéder**. Comme les applications ont tendance à stocker ici des **données sensibles en texte clair**, les tests de pénétration doivent vérifier cela car un utilisateur root ou une personne ayant un accès physique à l'appareil pourrait voler ces données.
|
||||
|
||||
Même si une application stocke des données dans le keystore, les données doivent être chiffrées.
|
||||
|
||||
|
@ -553,7 +553,7 @@ Les primes HackenProof sont lancées uniquement lorsque les clients déposent le
|
|||
**Acquérez de l'expérience en pentesting web3**\
|
||||
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 à ses débuts.
|
||||
|
||||
**Devenez une légende du hacking web3**\
|
||||
**Devenez la légende du hacker web3**\
|
||||
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
|
||||
|
||||
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) et commencez à gagner grâce à vos hacks !
|
||||
|
@ -576,25 +576,25 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
|||
Notez que MobSF peut analyser les applications **Android** (apk), **IOS** (ipa) et **Windows** (apx) (_les applications Windows doivent être analysées à partir d'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 vous permet également de **comparer/différer** les analyses 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 vous permet également de **comparer/différer** les analyses 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 **uploadé** à la place 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 machine virtuelle ou Docker ne fonctionnera pas). _Remarque : Vous devez **d'abord démarrer une machine virtuelle dans genymotion** et **ensuite MobSF**._\
|
||||
L'analyseur dynamique de MobSF peut :
|
||||
**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 machine virtuelle ou Docker ne fonctionnera pas). _Note : Vous devez **d'abord démarrer une machine virtuelle dans genymotion** et **ensuite MobSF**._\
|
||||
L'analyseur dynamique de **MobSF** peut :
|
||||
|
||||
* **Extraire les données de l'application** (URL, 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 est 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 en temps réel**
|
||||
|
||||
À partir des versions d'Android supérieures à 5, il démarrera automatiquement Frida et définira les paramètres **proxy** globaux pour capturer le trafic. Il ne capturera le trafic que de l'application testée.
|
||||
À partir des versions **Android > 5**, il démarrera automatiquement Frida et définira les paramètres **proxy** globaux pour capturer le trafic. Il ne capturera que le trafic de l'application testée.
|
||||
|
||||
**Frida**
|
||||
|
||||
Par défaut, il utilisera également certains scripts Frida pour **contourner la vérification de l'authenticité SSL**, la **détection de root** et la **détection de débogueur**, ainsi que pour **surveiller les API intéressantes**.\
|
||||
MobSF peut également **appeler des activités exportées**, capturer des **captures d'écran** et les **enregistrer** pour le rapport.
|
||||
|
||||
Pour **démarrer** les tests dynamiques, appuyez sur le bouton vert : "**Start Instrumentation**". Appuyez sur "**Frida Live Logs**" pour voir les journaux générés par les scripts Frida et sur "**Live API Monitor**" pour voir toutes les invocations des méthodes accrochées, les arguments passés et les valeurs retournées (cela apparaîtra après avoir appuyé sur "Start Instrumentation").\
|
||||
Pour **démarrer** les tests dynamiques, appuyez sur le bouton vert "**Start Instrumentation**". Appuyez sur "**Frida Live Logs**" pour voir les journaux générés par les scripts Frida et sur "**Live API Monitor**" pour voir toutes les invocations des méthodes accrochées, les arguments passés et les valeurs retournées (cela apparaîtra après avoir appuyé sur "Start Instrumentation").\
|
||||
MobSF vous permet également de charger vos propres **scripts Frida** (pour envoyer les résultats de vos scripts Frida à MobSF, utilisez la fonction `send()`). Il dispose également de **plusieurs scripts pré-écrits** que vous pouvez charger (vous pouvez en ajouter d'autres dans `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), il vous suffit de les **sélectionner**, d'appuyer sur "**Load**" et d'appuyer sur "**Start Instrumentation**" (vous pourrez voir les journaux de ces scripts dans "**Frida Live Logs**").
|
||||
|
||||
![](<../../.gitbook/assets/image (215).png>)
|
||||
|
@ -603,7 +603,7 @@ De plus, vous disposez de certaines fonctionnalités auxiliaires de Frida :
|
|||
|
||||
* **Énumérer les classes chargées** : cela affichera toutes les classes chargées
|
||||
* **Capturer les chaînes de caractères** : cela affichera toutes les chaînes de caractères capturées lors de l'utilisation de l'application (très bruyant)
|
||||
* **Capturer les comparaisons de chaînes de caractères** : cela pourrait être très utile. Cela affichera les 2 chaînes de caractères comparées et si le résultat était vrai ou faux.
|
||||
* **Capturer les comparaisons de chaînes de caractères** : cela pourrait être très utile. Cela affichera les 2 chaînes de caractères comparées et si le résultat était Vrai ou Faux.
|
||||
* **Énumérer les méthodes de classe** : indiquez le nom de la classe (comme "java.io.File") et cela affichera toutes les méthodes de la classe.
|
||||
* **Rechercher un modèle de classe** : recherche de 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 que par défaut, MobSF trace plusieurs méthodes intéressantes de l'API Android.
|
||||
|
@ -826,7 +826,7 @@ Les protocoles blockchain et les contrats intelligents sont le nouvel Internet !
|
|||
**Devenez la légende du pirate web3**\
|
||||
Gagnez des points de réputation avec chaque bogue vérifié et conquérez le sommet du classement hebdomadaire.
|
||||
|
||||
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) commencez à gagner grâce à vos piratages !
|
||||
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) et commencez à gagner grâce à vos piratages !
|
||||
|
||||
{% embed url="https://hackenproof.com/register" %}
|
||||
|
||||
|
|
|
@ -183,7 +183,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
|
||||
### Options de ligne de commande
|
||||
|
||||
Cependant, il existe **de nombreuses options utiles en ligne de commande** que vous pouvez utiliser pour démarrer une machine virtuelle. Ci-dessous, vous trouverez quelques options intéressantes, mais vous pouvez [**trouver une liste complète ici**](https://developer.android.com/studio/run/emulator-commandline)
|
||||
Cependant, il existe **de nombreuses options de ligne de commande différentes** que vous pouvez utiliser pour démarrer une machine virtuelle. Ci-dessous, vous trouverez quelques options intéressantes, mais vous pouvez [**trouver une liste complète ici**](https://developer.android.com/studio/run/emulator-commandline)
|
||||
|
||||
**Démarrage**
|
||||
|
||||
|
@ -214,61 +214,15 @@ adbd cannot run as root in production builds
|
|||
```
|
||||
En utilisant [rootAVD](https://github.com/newbit1/rootAVD) avec [Magisk](https://github.com/topjohnwu/Magisk), j'ai réussi à le rooter (suivez par exemple [**cette vidéo**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **ou** [**celle-ci**](https://www.youtube.com/watch?v=qQicUW0svB8)).
|
||||
|
||||
## Installer le certificat Burp sur une machine virtuelle
|
||||
## Installer le certificat Burp
|
||||
|
||||
Tout d'abord, vous devez télécharger le certificat Der à partir de Burp. Vous pouvez le faire dans _**Proxy**_ --> _**Options**_ --> _**Importer / Exporter le certificat CA**_
|
||||
Consultez la page suivante pour apprendre comment installer un certificat CA personnalisé :
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
{% content-ref url="install-burp-certificate.md" %}
|
||||
[install-burp-certificate.md](install-burp-certificate.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**Exportez le certificat au format Der** et **transformez-le** en une forme que **Android** pourra **comprendre**. Notez que **pour configurer le certificat Burp sur la machine Android dans AVD**, vous devez **exécuter** cette machine **avec l'option** **`-writable-system`**.\
|
||||
Par exemple, vous pouvez l'exécuter comme suit:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Ensuite, pour **configurer le certificat de Burp**, faites ce qui suit :
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
|
||||
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
|
||||
mv burp_cacert.pem $CERTHASHNAME #Correct name
|
||||
adb root && sleep 2 && adb remount #Allow to write on /syste
|
||||
adb push $CERTHASHNAME /sdcard/ #Upload certificate
|
||||
adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correct location
|
||||
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
|
||||
adb reboot #Now, reboot the machine
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Une fois que la **machine a fini de redémarrer**, le certificat Burp sera utilisé par celle-ci !
|
||||
|
||||
## Installer le certificat Burp avec Magisc
|
||||
|
||||
Si vous avez **rooté votre appareil avec Magisc** (peut-être un émulateur) et que vous **ne pouvez pas suivre** les étapes précédentes pour installer le certificat Burp car le **système de fichiers est en lecture seule** et que vous ne pouvez pas le remonter en écriture, il existe une autre solution.
|
||||
|
||||
Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8), vous devez :
|
||||
|
||||
1. **Installer un certificat CA** : Faites simplement **glisser et déposer** le certificat Burp DER en **changeant l'extension** en `.crt` sur le mobile afin qu'il soit stocké dans le dossier Téléchargements, puis allez dans `Installer un certificat` -> `Certificat CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Vérifiez que le certificat a été correctement stocké en allant dans `Certificats de confiance` -> `UTILISATEUR`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Rendez-le fiable pour le système** : Téléchargez le module Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un fichier .zip), **glissez et déposez-le** sur le téléphone, allez dans l'application Magics sur le téléphone dans la section **`Modules`**, cliquez sur **`Installer depuis le stockage`**, sélectionnez le module `.zip` et une fois installé, **redémarrez** le téléphone :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Après le redémarrage, allez dans `Certificats de confiance` -> `SYSTÈME` et vérifiez que le certificat Postswigger est présent
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Options AVD intéressantes
|
||||
## Options sympas pour AVD
|
||||
|
||||
### Prendre une capture d'écran
|
||||
|
||||
|
@ -280,7 +234,7 @@ Vous pouvez **utiliser l'interface graphique** pour prendre une capture d'écran
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous voulez voir votre **entreprise annoncée dans HackTricks** ? ou vous voulez avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -0,0 +1,180 @@
|
|||
# Installer le certificat Burp
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Sur une machine virtuelle
|
||||
|
||||
Tout d'abord, vous devez télécharger le certificat Der de Burp. Vous pouvez le faire dans _**Proxy**_ --> _**Options**_ --> _**Importer / Exporter le certificat CA**_
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
**Exportez le certificat au format Der** et **transformez-le** en une forme que **Android** pourra **comprendre**. Notez que **pour configurer le certificat Burp sur la machine Android dans AVD**, vous devez **exécuter** cette machine **avec l'option** **`-writable-system`**.\
|
||||
Par exemple, vous pouvez l'exécuter comme suit:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Ensuite, pour **configurer le certificat de Burp**, procédez comme suit :
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
|
||||
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
|
||||
mv burp_cacert.pem $CERTHASHNAME #Correct name
|
||||
adb root && sleep 2 && adb remount #Allow to write on /syste
|
||||
adb push $CERTHASHNAME /sdcard/ #Upload certificate
|
||||
adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correct location
|
||||
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
|
||||
adb reboot #Now, reboot the machine
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Une fois que la **machine a fini de redémarrer**, le certificat Burp sera utilisé par celle-ci !
|
||||
|
||||
## Utilisation de Magisc
|
||||
|
||||
Si vous avez **rooté votre appareil avec Magisc** (peut-être un émulateur) et que vous **ne pouvez pas suivre** les étapes précédentes pour installer le certificat Burp car le **système de fichiers est en lecture seule** et que vous ne pouvez pas le remonter en écriture, il existe une autre solution.
|
||||
|
||||
Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8), vous devez :
|
||||
|
||||
1. **Installer un certificat CA** : Il vous suffit de **glisser-déposer** le certificat Burp DER en changeant l'extension en `.crt` sur le mobile afin qu'il soit stocké dans le dossier Téléchargements, puis allez dans `Installer un certificat` -> `Certificat CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Vérifiez que le certificat a été correctement stocké en allant dans `Certificats de confiance` -> `UTILISATEUR`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Rendez-le fiable pour le système** : Téléchargez le module Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un fichier .zip), **glissez-déposez-le** sur le téléphone, allez dans l'application Magics sur le téléphone dans la section **`Modules`**, cliquez sur **`Installer depuis le stockage`**, sélectionnez le module `.zip` et une fois installé, **redémarrez** le téléphone :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Après le redémarrage, allez dans `Certificats de confiance` -> `SYSTÈME` et vérifiez que le certificat Postswigger est présent
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Post Android 14
|
||||
|
||||
Changements :
|
||||
|
||||
* Jusqu'à présent, les certificats CA de confiance du système se trouvaient dans **`/system/etc/security/cacerts/`**. Sur un émulateur AOSP standard, ceux-ci pouvaient être **modifiés directement avec un accès root** avec une configuration minimale, prenant immédiatement **effet partout**.
|
||||
* À partir d'Android 14, les certificats CA de confiance du système se trouveront généralement dans **`/apex/com.android.conscrypt/cacerts`**, et tout **`/apex` est immuable**.
|
||||
* Ce chemin de certificats APEX cacerts ne peut pas être remonté en écriture - les remontages échouent simplement. En fait, même si vous démontez l'ensemble du chemin à partir d'un shell root, les applications peuvent toujours lire vos certificats sans problème.
|
||||
* La technique alternative de **monter un répertoire tmpfs par-dessus ne fonctionne pas non plus** - même si cela signifie que `ls /apex/com.android.conscrypt/cacerts` peut ne rien renvoyer (ou tout autre chose que vous aimez), les applications verront toujours les mêmes données d'origine.
|
||||
* Parce que le montage `/apex` est [explicitement monté](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a) **avec une propagation PRIVÉE**, de sorte que toutes les modifications apportées aux montages à l'intérieur du chemin `/apex` ne sont jamais partagées entre les processus.
|
||||
|
||||
Cela est fait par le processus `init` qui démarre le système d'exploitation, qui lance ensuite le processus [Zygote](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote) (avec un nouveau namespace de montage copié depuis le parent, donc incluant son propre montage `/apex` privé), qui à son tour **démarre chaque processus d'application** chaque fois qu'une application est lancée sur l'appareil (qui à leur tour copient ce même montage `/apex` privé).
|
||||
|
||||
### Remontage récursif des points de montage
|
||||
|
||||
* Vous pouvez remonter manuellement `/apex`, en supprimant la propagation PRIVÉE et en le rendant inscriptible (ironiquement, il semble que la suppression complète de la propagation privée se propage partout)
|
||||
* Vous copiez l'intégralité du contenu de `/apex/com.android.conscrypt` ailleurs
|
||||
* Ensuite, vous démontez complètement `/apex/com.android.conscrypt` - en supprimant le montage en lecture seule qui fournit de manière immuable ce module
|
||||
* Ensuite, vous copiez le contenu à nouveau, pour qu'il vive directement dans le montage `/apex`, où il peut être modifié (vous devez le faire rapidement, car [apparemment](https://infosec.exchange/@g1a55er/111069489513139531) vous pouvez rencontrer des plantages sinon)
|
||||
* Cela devrait prendre effet immédiatement, mais ils recommandent de tuer `system_server` (redémarrer toutes les applications) pour remettre tout dans un état cohérent
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
mkdir -p -m 700 /data/local/tmp/tmp-ca-copy
|
||||
|
||||
# Copy out the existing certificates
|
||||
cp /apex/com.android.conscrypt/cacerts/* /data/local/tmp/tmp-ca-copy/
|
||||
|
||||
# Create the in-memory mount on top of the system certs folder
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
|
||||
# Copy the existing certs back into the tmpfs, so we keep trusting them
|
||||
mv /data/local/tmp/tmp-ca-copy/* /system/etc/security/cacerts/
|
||||
|
||||
# Copy our new cert in, so we trust that too
|
||||
mv $CERTIFICATE_PATH /system/etc/security/cacerts/
|
||||
|
||||
# Update the perms & selinux context labels
|
||||
chown root:root /system/etc/security/cacerts/*
|
||||
chmod 644 /system/etc/security/cacerts/*
|
||||
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
|
||||
|
||||
# Deal with the APEX overrides, which need injecting into each namespace:
|
||||
|
||||
# First we get the Zygote process(es), which launch each app
|
||||
ZYGOTE_PID=$(pidof zygote || true)
|
||||
ZYGOTE64_PID=$(pidof zygote64 || true)
|
||||
# N.b. some devices appear to have both!
|
||||
|
||||
# Apps inherit the Zygote's mounts at startup, so we inject here to ensure
|
||||
# all newly started apps will see these certs straight away:
|
||||
for Z_PID in "$ZYGOTE_PID" "$ZYGOTE64_PID"; do
|
||||
if [ -n "$Z_PID" ]; then
|
||||
nsenter --mount=/proc/$Z_PID/ns/mnt -- \
|
||||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
fi
|
||||
done
|
||||
|
||||
# Then we inject the mount into all already running apps, so they
|
||||
# too see these CA certs immediately:
|
||||
|
||||
# Get the PID of every process whose parent is one of the Zygotes:
|
||||
APP_PIDS=$(
|
||||
echo "$ZYGOTE_PID $ZYGOTE64_PID" | \
|
||||
xargs -n1 ps -o 'PID' -P | \
|
||||
grep -v PID
|
||||
)
|
||||
|
||||
# Inject into the mount namespace of each of those apps:
|
||||
for PID in $APP_PIDS; do
|
||||
nsenter --mount=/proc/$PID/ns/mnt -- \
|
||||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts &
|
||||
done
|
||||
wait # Launched in parallel - wait for completion here
|
||||
|
||||
echo "System certificate injected"
|
||||
```
|
||||
### Montage par liaison via NSEnter
|
||||
|
||||
* Tout d'abord, nous devons configurer un répertoire inscriptible quelque part. Pour une compatibilité facile avec l'approche existante, je le fais avec un montage `tmpfs` sur le répertoire des certificats système non-APEX (toujours présent) :
|
||||
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
* Ensuite, placez les certificats CA qui vous intéressent dans ce répertoire (par exemple, vous voudrez peut-être copier tous les certificats CA par défaut du répertoire `/apex/com.android.conscrypt/cacerts/` existant) et définissez les autorisations et les étiquettes SELinux de manière appropriée.
|
||||
* Ensuite, utilisez `nsenter` pour entrer dans l'espace de montage du Zygote, et montez ce répertoire par liaison sur le répertoire APEX :
|
||||
|
||||
```bash
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- \
|
||||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
|
||||
Le processus Zygote lance chaque application en copiant son espace de montage, ce qui garantit que toutes les applications nouvellement lancées (tout ce qui est démarré à partir de maintenant) utiliseront cela.
|
||||
* Ensuite, utilisez `nsenter` pour entrer dans l'espace de nom de chaque application déjà en cours d'exécution, et faites de même :
|
||||
|
||||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- \
|
||||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
|
||||
Alternativement, si vous ne vous souciez pas de l'expérience utilisateur maladroite, vous devriez pouvoir effectuer le montage par liaison sur `init` lui-même (PID 1) puis exécuter `stop && start` pour redémarrer doucement le système d'exploitation, recréant tous les espaces de noms et propageant vos modifications partout (mais personnellement, cela me dérange, donc j'ignore complètement cette méthode).
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -20,7 +20,7 @@ Pour contourner le 2FA, essayez simplement d'accéder directement à l'endpoint
|
|||
|
||||
### **Réutilisation du jeton**
|
||||
|
||||
Il est possible de réutiliser un jeton précédemment utilisé à l'intérieur du compte pour l'authentification.
|
||||
Il est possible de réutiliser un jeton précédemment utilisé à l'intérieur du compte pour s'authentifier.
|
||||
|
||||
### Partage de jetons inutilisés
|
||||
|
||||
|
@ -36,13 +36,15 @@ Essayez d'utiliser le **lien de vérification par e-mail reçu lors de la créat
|
|||
|
||||
### Autorisation de session
|
||||
|
||||
En utilisant la même session, démarrez le flux en utilisant votre compte et le compte de la victime. Lorsque vous atteignez le point 2FA sur les deux comptes, terminez le 2FA avec votre compte mais n'accédez pas à la partie suivante. Au lieu de cela, essayez d'accéder à l'étape suivante avec le flux du compte de la victime. Si le back-end ne fait que définir un booléen dans vos sessions indiquant que vous avez réussi à passer le 2FA, vous pourrez contourner le 2FA de la victime.
|
||||
En utilisant la même session, démarrez le flux en utilisant votre compte et le compte de la victime. Lorsque vous atteignez le point 2FA sur les deux comptes, terminez le 2FA avec votre compte mais n'accédez pas à la partie suivante. Au lieu de cela, essayez d'accéder à l'étape suivante avec le flux du compte de la victime. Si le back-end ne définit qu'un booléen dans vos sessions indiquant que vous avez réussi à passer le 2FA, vous pourrez contourner le 2FA de la victime.
|
||||
|
||||
### **Fonction de réinitialisation du mot de passe**
|
||||
|
||||
Dans presque toutes les applications web, la **fonction de réinitialisation du mot de passe connecte automatiquement l'utilisateur à l'application** une fois la procédure de réinitialisation terminée.\
|
||||
Vérifiez si un **e-mail** est envoyé avec un **lien** pour **réinitialiser le mot de passe** et si vous pouvez **réutiliser** ce **lien** pour réinitialiser le mot de passe autant de fois que vous le souhaitez (même si la victime change son adresse e-mail).
|
||||
|
||||
Une autre option pour contourner le 2FA avec la fonctionnalité de réinitialisation du mot de passe est de **réinitialiser le mot de passe avec accès à l'e-mail** et d'utiliser le **nouveau mot de passe pour vous connecter**, il est possible qu'après un changement de mot de passe, le 2FA ne soit pas utilisé.
|
||||
|
||||
### OAuth
|
||||
|
||||
Si vous pouvez compromettre le compte de l'utilisateur sur une plateforme **OAuth** de confiance (Google, Facebook...)
|
||||
|
@ -55,7 +57,7 @@ Y a-t-il une limite sur le nombre de codes que vous pouvez essayer, afin que vou
|
|||
|
||||
#### Limite de débit du flux mais pas de limite de taux
|
||||
|
||||
Dans ce cas, il y a une limite de débit du flux (vous devez effectuer une attaque par force brute très lentement : 1 thread et une pause avant 2 essais), mais pas de limite de taux. Donc, avec suffisamment de temps, vous pouvez trouver le code valide.
|
||||
Dans ce cas, il y a une limite de débit du flux (vous devez effectuer une attaque par force brute très lentement : 1 thread et une pause avant 2 tentatives), mais pas de limite de taux. Donc, avec suffisamment de temps, vous pouvez trouver le code valide.
|
||||
|
||||
#### Renvoi du code et réinitialisation de la limite
|
||||
|
||||
|
@ -71,7 +73,7 @@ Il y a une limite de taux, mais lorsque vous "renvoyez le code", le même code e
|
|||
|
||||
Parfois, vous pouvez configurer le 2FA pour certaines actions à l'intérieur de votre compte (changement d'e-mail, de mot de passe...). Cependant, même dans les cas où il y a une limite de taux lorsque vous essayez de vous connecter, il n'y a aucune limite de taux pour protéger les actions à l'intérieur du compte.
|
||||
|
||||
#### Absence de limite de taux lors de l'envoi du code par SMS
|
||||
#### Absence de limite de taux lors de la réception du code via SMS
|
||||
|
||||
Vous ne pourrez pas contourner le 2FA, mais vous pourrez gaspiller l'argent de l'entreprise.
|
||||
|
||||
|
@ -81,55 +83,55 @@ Si vous pouvez **générer un nouvel OTP un nombre infini de fois**, que l'OTP e
|
|||
|
||||
### Condition de concurrence
|
||||
|
||||
Consultez la section sur le contournement du 2FA de la page suivante :
|
||||
Consultez la section sur le contournement du 2FA par condition de concurrence de la page suivante :
|
||||
|
||||
{% content-ref url="race-condition.md" %}
|
||||
[race-condition.md](race-condition.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### CSRF/Clickjacking
|
||||
|
||||
Vérifiez s'il existe une vulnérabilité de falsification de requête intersite (CSRF) ou de détournement de clic (Clickjacking) pour désactiver le 2FA.
|
||||
Vérifiez s'il existe une vulnérabilité de Cross Site Request Forgery (CSRF) ou de Clickjacking pour désactiver la 2FA.
|
||||
|
||||
### Fonctionnalité "Se souvenir de moi"
|
||||
|
||||
#### Cookie devinable
|
||||
|
||||
Si la fonctionnalité "se souvenir de moi" utilise un nouveau cookie avec un code devinable, essayez de le deviner.
|
||||
Si la fonctionnalité "Se souvenir de moi" utilise un nouveau cookie avec un code devinable, essayez de le deviner.
|
||||
|
||||
#### Adresse IP
|
||||
|
||||
Si la fonctionnalité "se souvenir de moi" est liée à votre adresse IP, vous pouvez essayer de déterminer l'adresse IP de la victime et vous faire passer pour elle en utilisant l'en-tête **X-Forwarded-For**.
|
||||
Si la fonctionnalité "Se souvenir de moi" est liée à votre adresse IP, vous pouvez essayer de déterminer l'adresse IP de la victime et vous faire passer pour elle en utilisant l'en-tête **X-Forwarded-For**.
|
||||
|
||||
### Anciennes versions
|
||||
|
||||
#### Sous-domaines
|
||||
|
||||
Si vous trouvez des sous-domaines de "test" avec la fonctionnalité de connexion, ils pourraient utiliser d'anciennes versions qui ne prennent pas en charge la double authentification (elle est donc directement contournée) ou ces points d'accès pourraient prendre en charge une version vulnérable de la double authentification.
|
||||
Si vous trouvez des sous-domaines de "test" avec la fonctionnalité de connexion, ils pourraient utiliser d'anciennes versions qui ne prennent pas en charge la 2FA (donc elle est contournée directement) ou ces points d'extrémité pourraient prendre en charge une version vulnérable de la 2FA.
|
||||
|
||||
#### APIs
|
||||
|
||||
Si vous constatez que la double authentification utilise une API située sous un répertoire /v\* (comme "/v3/"), cela signifie probablement qu'il existe d'anciens points d'accès à l'API qui pourraient être vulnérables à une contournement de la double authentification.
|
||||
Si vous constatez que la 2FA utilise une API située sous un répertoire /v\* (comme "/v3/"), cela signifie probablement qu'il existe d'anciens points d'extrémité d'API qui pourraient être vulnérables à une certaine forme de contournement de la 2FA.
|
||||
|
||||
### Sessions précédentes
|
||||
|
||||
Lorsque la double authentification est activée, les sessions précédentes créées doivent être terminées. Cela est nécessaire car lorsqu'un client voit son compte compromis, il peut vouloir le protéger en activant la double authentification, mais si les sessions précédentes ne sont pas terminées, cela ne le protégera pas.
|
||||
Lorsque la 2FA est activée, les sessions précédentes créées doivent être terminées. Cela est nécessaire car lorsqu'un client voit son compte compromis, il peut vouloir le protéger en activant la 2FA, mais si les sessions précédentes ne sont pas terminées, cela ne le protégera pas.
|
||||
|
||||
### Contrôle d'accès inapproprié aux codes de secours
|
||||
### Contrôle d'accès inapproprié aux codes de sauvegarde
|
||||
|
||||
Les codes de secours sont générés immédiatement après l'activation de la double authentification et sont disponibles sur une seule requête. Après chaque appel ultérieur à la requête, les codes peuvent être régénérés ou rester inchangés (codes statiques). S'il existe des configurations incorrectes de CORS/vulnérabilités XSS et d'autres bugs qui vous permettent de "récupérer" les codes de secours à partir de la réponse de la requête de l'endpoint des codes de secours, alors l'attaquant pourrait voler les codes et contourner la double authentification si le nom d'utilisateur et le mot de passe sont connus.
|
||||
Les codes de sauvegarde sont générés immédiatement après l'activation de la 2FA et sont disponibles sur une seule requête. Après chaque appel ultérieur à la requête, les codes peuvent être régénérés ou rester inchangés (codes statiques). S'il existe des erreurs de configuration CORS/XSS et d'autres bugs qui permettent de "tirer" les codes de sauvegarde de la réponse de la requête de l'endpoint du code de sauvegarde, alors l'attaquant pourrait voler les codes et contourner la 2FA si le nom d'utilisateur et le mot de passe sont connus.
|
||||
|
||||
### Divulgation d'informations
|
||||
|
||||
Si vous remarquez des informations confidentielles apparaissant sur la page de double authentification que vous ne connaissiez pas auparavant (comme le numéro de téléphone), cela peut être considéré comme une vulnérabilité de divulgation d'informations.
|
||||
Si vous remarquez des informations confidentielles apparaissant sur la page de la 2FA que vous ne connaissiez pas auparavant (comme le numéro de téléphone), cela peut être considéré comme une vulnérabilité de divulgation d'informations.
|
||||
|
||||
### **Réinitialisation du mot de passe == désactivation de la double authentification**
|
||||
### **Réinitialisation du mot de passe == désactivation de la 2FA**
|
||||
|
||||
1. Créez un compte et activez la double authentification.
|
||||
1. Créez un compte et activez la 2FA.
|
||||
2. Déconnectez-vous de ce compte.
|
||||
3. Maintenant, allez sur la page de réinitialisation du mot de passe.
|
||||
4. Changez votre mot de passe.
|
||||
5. Essayez maintenant de vous connecter.
|
||||
6. Si on ne vous demande pas de saisir un code de double authentification, vous pouvez le signaler.
|
||||
6. Si on ne vous demande pas d'entrer un code 2FA, vous pouvez le signaler.
|
||||
|
||||
## Références
|
||||
|
||||
|
@ -141,7 +143,7 @@ Si vous remarquez des informations confidentielles apparaissant sur la page de d
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou vous souhaitez avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
Loading…
Reference in a new issue