Il s'agit de contourner les applications Android SSL Pinning et Intercepting Proxy Unaware.

Nov 27 2022
Hola H3ckers, Nous savons tous qu'il existe de nombreux articles disponibles sur "Comment intercepter le trafic HTTPS des applications Android". Nous n'allons donc pas les couvrir ici. Si vous n'en avez pas trouvé, reportez-vous aux éléments suivants : Configuration d'un appareil Android pour qu'il fonctionne avec Burp - Prérequis PortSwigger : 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.

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

  1. Mon application cible dispose-t-elle d'un épinglage SSL ?
  2. Attendez, comment pouvons-nous confirmer l'épinglage ?
  3. Il est temps de contourner
  4. 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

  1. ac-pm/SSLUnpinning_Xposed : Module Android Xposed pour contourner la validation des certificats SSL (Certificate Pinning). (github.com)
  2. 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.

Source de l'image : developer.android.com

É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 :)