En tant que développeur Android, je veux inspecter le trafic réseau dans mon appareil Android. Avec vos propres apps, en fait, il y a beaucoup d’outils vous aident à déboguer le trafic HTTP(s). Cependant, comment pouvez-vous surveiller d’autres applications diverses telles que : Youtube, Twitter, etc…
Cet article vous aidera à le faire en utilisant l’outil mitmproxy.
En bref, mitmproxy est un proxy interactif man-in-the-middle pour HTTP et HTTPS avec une interface console, et surtout il est gratuit !
Vous pouvez lire ce document pour comprendre comment il fonctionne.
Prérequis
- Outil Mitmproxy
- Émulateur Android avec permission root
Note importante : Lorsque vous créez l’émulateur, vous devez choisir « (Google APIs) » dans la Cible (version android), ne choisissez pas « (Google Play) » ou vous ne pourrez pas obtenir l’accès root adb.
Idea
Enfin, on installe le certificat de l’AC mitmproxy manuellement comme une AC ajoutée par l’utilisateur et c’est fait !
Malheureusement, depuis Android 7, les applications ignorent les AC ajoutées par l’utilisateur , sauf si elles sont configurées pour les utiliser. Et la plupart des applications n’optent pas explicitement pour l’utilisation des certificats utilisateur. Donc, nous devons placer notre certificat d’AC mitmproxy dans le magasin de certificats du système en tant qu’AC de confiance.
Maintenant, commençons !
Créer le certificat mitmproxy
- Installer mitmproxy
brew install mitmproxy
- Générer le certificat
mitmproxy
Renommer le certificat
- Entrer dans votre dossier de certificat
cd ~/.mitmproxy/
- Les certificats CA dans Android sont stockés par le nom de leur hachage, avec un ‘0’ comme extension. Maintenant, générez le hash de votre certificat
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
- Par exemple, la sortie est
hash_value.
Nous pouvons maintenant copiermitmproxy-ca-cert.cer
vershash_value.0
et notre certificat système est prêt à être utilisé
cp mitmproxy-ca-cert.cer hash_value.0
Insérer le certificat dans le magasin de certificats du système
- Entrez dans le dossier de l’émulateur dans le SDK Android
- . émulateur dans le SDK Android
cd .../Android/SDK/emulator/
- Recevoir une liste de vos AVDs avec
emulator -list-avds
./emulator -list-avds
- Démarrer votre émulateur android avec l’option
-writable-system
afin d’écrire sur/system
. afin d’écrire sur/system
./emulator -avd <avd_name_here> -writable-system
- Redémarrez adb en tant que root
adb root
- Remontez la partition du système comme inscriptible
adb shell "mount -o rw,remount /"
- Poussez votre certificat dans le magasin de certificats du système et définir les permissions du fichier
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
- Redémarrez votre émulateur
adb reboot
Nous avons maintenant installé le certificat CA sur l’émulateur.
Configurer le proxy sur l’émulateur
- Ouvrir les paramètres de l’émulateur, ajouter un proxy manuel avec le nom d’hôte : 127.0.0.1 et le port 8080
Lancez l’outil et voyez la magie !
Vous pouvez lancer l’un des trois outils à partir du terminal :
- mitmproxy -> vous donne une interface utilisateur interactive
- mitmdump -> vous donne une sortie de terminal simple et claire
- mitmweb -> vous donne une interface graphique basée sur le navigateur
Par exemple, j’ouvre l’application Youtube et surveille le trafic comme ci-dessous.
- Lancer
mitmproxy
- Lancer
mitmweb
pour voir les détails de l’API
.
Voila!