Il s'agit de contourner les applications Android SSL Pinning et Intercepting Proxy Unaware.
Hola H3ckers,
Nous savons tous qu'il existe de nombreux articles disponibles pour "Comment intercepter le trafic HTTPS des applications Android", donc ici nous n'allons pas les couvrir. Si vous n'en avez pas trouvé, reportez-vous aux éléments suivants :
Configuration d'un appareil Android pour fonctionner avec Burp — PortSwigger
Conditions préalables:
Familier avec le proxy BurpSuite, le test de pente Android de base et des outils tels que adb, frida, Objection, application Magisk, décompilation/recompilation APK et signature APK.
Table des matières
- Mon application cible dispose-t-elle d'un épinglage SSL ?
- Attendez, comment pouvons-nous confirmer l'épinglage ?
- Il est temps de contourner
- Pourquoi je ne suis pas en mesure d'intercepter le trafic de l'application même si l'application fonctionne avec HTTP
J'ai compris, cela ressemble à une blague, car vous savez que si l'épinglage est en place, nous ne pourrons pas capturer le trafic HTTPS de notre application Android cible.
2. Attendez, comment pouvons-nous confirmer l'épinglage ?
Après avoir configuré le proxy à la fois sur l'appareil et sur le serveur proxy (Burp), lancez l'application cible, puis effectuez certaines activités qui établissent une communication entre l'application cible et son serveur.
Il est temps de surveiller le tableau de bord de Burp, en particulier la section Log. Si l'épinglage est en place, nous pourrons voir une erreur de certificat comme suit :

2. Il est temps de contourner
2.1 Déplacer le certificat - Module Magisk :
Si votre appareil est enraciné avec l'application Magisk, le module Move Certificate est l'une des bonnes options.

Ce module déplacera les certificats de confiance de l'utilisateur vers le magasin système, faisant en sorte que le système (racine) fasse confiance au certificat que l'utilisateur installe (notre certificat CA proxy)
2.2 Outil d'objection
Repo : sensepost/objection : objection — exploration mobile d'exécution (github.com)
Étape 1 : Assurez-vous que le serveur frida est en cours d'exécution sur l'appareil Android

Étape 2 : Attachez l'application cible avec objection à l'aide de la commande suivante :
Objection -g <nom du paquet/PID> explorer
Exécutez ensuite la commande « android sslpinning disable »

C'est tout, le script trouvera les classes d'épinglage SSL et les accrochera pendant l'exécution afin de contourner l'épinglage.
2.3 Cadre de Frida
Dépôt : Frida (github.com)
Voici la méthode la plus populaire et la plus utilisée.
Étape 1 : Assurez-vous que le serveur frida est en cours d'exécution sur l'appareil Android
Étape 2 : Attachez votre application cible avec frida et exécutez votre script de contournement SSL préféré.

Voici mes scripts préférés :
https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/
2.4 Utiliser le framework Xposed
Si votre appareil est enraciné avec le framework Xposed , vous pouvez essayer les modules suivants pour contourner l'épinglage
- ac-pm/SSLUnpinning_Xposed : Module Android Xposed pour contourner la validation des certificats SSL (Certificate Pinning). (github.com)
- ViRb3/TrustMeAlready : Désactiver la vérification SSL et l'épinglage sur Android, à l'échelle du système (github.com)

apk-mitm est une application CLI qui prépare automatiquement les fichiers APK Android pour l'inspection HTTPS en modifiant les fichiers apk et en reconditionnant.
Dépôt :
shroudedcode/apk-mitm : Une application CLI qui prépare automatiquement les fichiers APK Android pour l'inspection HTTPS (github.com)
apk-mitm peut être extrait à l'aide de npm.

Étape 1 : Exécutez apk-mitm comme indiqué ci-dessous.

C'est tout, apk-mitm a fait sa part. Nous pouvons maintenant installer l'apk corrigé et intercepter le trafic de l'application.
2.6 Modification du fichier network_security_config.xml
La configuration de la sécurité réseau permet aux applications de personnaliser leurs paramètres de sécurité réseau via un fichier de configuration déclaratif . L'intégralité de la configuration est contenue dans ce fichier XML et aucune modification de code n'est requise.
Source : Configuration de la sécurité réseau | Développeurs Android
La configuration de la sécurité réseau fonctionne sous Android 7.0 ou supérieur.
Étape 1 : Décompilez l'application Android avec apktool ou des alternatives. Et localisez le fichier network_security_config.xml sous /res/xml.
Étape 2 : Le fichier peut ressembler à ceci si l'application a épinglé ses propres certificats CA.

Étape 3 : Supprimez cette section de balises <pin-set>… </pin-set> et ajoutez ce qui suit :

Étape 4 : Maintenant, enregistrez le fichier et ré-emballer l'application en utilisant apktool et uber-apk-signer (pour signer l'apk modifié).
C'est tout, installez notre nouvel apk et vous êtes prêt à partir.
3. Que faire si l'application n'est pas interceptée et ne montre aucune erreur !!
Ici, la première chose qui me vient à l'esprit est " Flutter ". Les applications basées sur le flutter sont fondamentalement « proxy unaware ».
Voici donc notre héros « Reflutter » :
" Ce framework aide à l'ingénierie inverse des applications Flutter en utilisant la version corrigée de la bibliothèque Flutter qui est déjà compilée et prête pour le reconditionnement des applications. "
Dépôt :https://github.com/Impact-I/reFlutter
Étape 1 : installez le reflutter à l'aide de pip
Étape 2 : Suivez les commandes illustrées dans la capture d'écran ci-dessous.

Étape 3 : Signez l'application à l'aide d'uber-apk-signer ou de toute alternative et installez-la.
Étape 4 : Maintenant, dans le proxy Burp, commencez à écouter le port 8083 et activez également « Support Invisible Proxying ».

Ça y est, vous êtes tous prêts à partir … !
4. Mon application utilise uniquement HTTP mais je ne suis toujours pas en mesure d'intercepter !!
Hmm.. C'est un peu bizarre, mais ça arrive parfois.
Les applications avec ce comportement sont essentiellement appelées applications " Proxy Unaware ". Ces applications acheminent le trafic directement vers Internet sans coopérer avec les paramètres de proxy à l'échelle du système.
Temps de contournement :
Pour cette méthode, je tiens à remercier le frère Faris ❤.
(60) Faris Mohamed | LinkedIn
Étape 1 : Découvrez l'adresse de domaine avec laquelle l'application communique à l'aide de Wireshark. Indiqué ci-dessous.

Étape 2 : décompiler l'application à l'aide d'apktool
Étape 3 : Entrez dans le dossier décompilé et utilisez l'outil ack/grep pour trouver le fichier dans lequel le nom de domaine est mentionné.

Étape 4 : Remplacez le nom de domaine par l'adresse IP et le port de BurpSuite.

Étape 5 : Reconditionnez l'application, signez-la et installez-la sur l'appareil Android.
Étape 7 : Dans le proxy BurpSuite, dans l'onglet Traitement des demandes, indiquez l'hôte et le port de redirection comme adresse de domaine d'origine utilisée par l'application en premier lieu.

Étape 8 : Configuration de la correspondance et du remplacement dans les options de proxy pour remplacer la valeur de l'en-tête Host de l'adresse IP de l'écouteur Burp à l'adresse de domaine d'origine de l'application

C'est ça. Désormais, le trafic HTTP de l'application sera capturé dans notre proxy Burp.
Remarque : — Ici, puisque nous remplaçons le domaine d'application codé en dur, nous n'avons pas besoin de configurer le proxy de l'appareil puisque l'application communique directement avec le domaine codé en dur (nous l'avons remplacé par notre IP proxy).
Donc je pense que j'ai fait pour l'instant. En fait, il existe d'autres méthodes que nous pouvons utiliser pour contourner l'épinglage SSL Android. Je vais essayer de faire une partie 2 avec cela en fonction de vos réponses.
Merci les potes, bon piratage :)