web-dev-qa-db-fra.com

Comment capturez-vous TOUT le trafic d'une application Android Android?

Je veux capturer tout le trafic d'une application Android pour son stylo-test. Comment faire?

Voici ce que j'ai déjà essayé:

J'ai installé l'application sur un émulateur et j'ai démarré l'émulateur avec un http-proxy pointant vers un port local. Le port local avait ZAP en cours d'exécution. Je peux intercepter le trafic depuis le navigateur mais pas depuis l'application.

Eh bien, mon application utilise peut-être https et je pensais que j'avais un problème de certificat. J'ai donc exporté le certificat OWASP ZAP et Pushed sur l'émulateur Android. Bien sûr, Android> = ICS ont leurs noms de certificats hachés en utilisant OpenSSL. J'ai donc suivi quelques instructions ici et j'ai réussi à obtenir le certificat de mon ZAP sur mon appareil. Pourtant, je ne suis pas en mesure d'intercepter le trafic.

Ma prochaine pensée était: Peut-être que cette application est endommagée. J'ai donc installé des applications Facebook, Pocket et Guardian (actualités) de l'App Store dans l'émulateur et j'ai essayé d'intercepter leur trafic. Je peux intercepter le trafic de Guardian mais Pocket et Facebook ne peuvent pas se connecter à Internet (mon application aussi). Cependant, je peux naviguer sur Internet à partir de mon navigateur sur l'émulateur.

Honnêtement, je suis à bout de souffle. Je ne comprends pas pourquoi cela se produit. Je n'ai pas fait beaucoup de pen-tests auparavant, donc je suppose que je manque d'expérience. Quelqu'un pourrait-il aider cette pauvre âme?

(Bien sûr, je peux toujours utiliser Wireshark, mais il ne serait pas en mesure de MiTM les demandes et réponses comme le font ZAP ou Burp.)

MODIFIER:

Après avoir "Google" comme un fou, j'ai finalement trouvé que Android ne prend pas en charge le proxy global (qui fonctionne pour le navigateur ET les applications). Plus d'informations peuvent être trouvées - ici .

16
Pervy Sage

Vous ne pouvez pas intercepter le trafic Facebook car il utilise l'épinglage SSL.

En testant au stylet une Android vous pouvez rencontrer quatre scénarios différents. Je les énumérerai ci-dessous de manière concise. Un article beaucoup plus détaillé peut être trouvé ici >> Mon blog L'article contient également des vidéos auxquelles vous pouvez vous référer.

  1. Application non SSL

Il s'agit de l'application la plus simple Android Android que vous pouvez rencontrer. Les jeux en sont des exemples. Une grande partie du trafic passe par http. Pour intercepter le trafic, il vous suffit de pointer les paramètres du proxy wifi de l'appareil/l'émulateur vers l'ordinateur portable sur lequel le proxy Burp/Zap est exécuté.

  1. Applications qui utilisent le trafic HTTPS et s'appuient sur les informations d'identification approuvées de l'appareil

Des applications comme Instagram utilisent HTTPS pour communiquer avec le serveur, mais elles s'appuient sur les informations d'identification de confiance de l'appareil. Pour intercepter ce trafic, vous pouvez ajouter votre certificat proxy aux informations d'identification approuvées de votre appareil en ajoutant l'ouverture du même à partir de Settings > Security > Trusted credentials

  1. Applications qui utilisent l'épinglage SSL

Certaines applications peuvent utiliser l'épinglage SSL pour garantir la sécurité de l'application même en cas de compromission d'une information d'identification de confiance. Le module de substrat Cydia Android Trust Killer ou Xposed Module JustTrustMe peut être utilisé pour contourner le contrôle d'épinglage SSL.

  1. Applications qui utilisent leur propre magasin d'informations d'identification

L'application Facebook Android utilise son magasin d'informations d'identification pwn et c'est pourquoi vous n'êtes pas en mesure d'intercepter le trafic normalement. Pour contourner cela, vous devrez démonter l'application en code smali. Ajoutez le certificat dans le code souhaité formatez le code, recompilez-le, signez-le et réinstallez-le. Le processus est détaillé ici >> Blog de DewHurst Security .

12
hax

Voici les étapes que je recommanderais de prendre. L'étape 6 est la réponse la plus directe, mais je recommanderais de parcourir les autres étapes. Notez que cette réponse est similaire aux autres réponses, mais plus simple en plusieurs étapes.

1) Configurer le proxy - Configurer Burp Suite en mode transparent, en écoutant sur toutes les interfaces tous les ports utilisés par votre application, tels que 443.

2) Installer l'autorité de certification - Exporter le certificat sur le bureau et ensuite adb Push file.der /sdcard/<file>.cer (notez que nous avons renommé .der en .cer) puis passez à Settings -> Security -> Install from Device Storage et installez votre certificat.

3) Proxy système - Essayez de proxy de trafic en modifiant vos paramètres de proxy Android (dans votre configuration wifi). Switch switch allumer et éteindre (activer le mode avion pendant une seconde) peut parfois aider ici si cela ne fonctionne pas.

4) Problèmes de certificat de débogage - Observez l'onglet Alertes dans Burp Suite pour tout problème SSL/TLS. Il est possible que votre application utilise un certificat codé en dur, l'épinglage de certificat ou l'épinglage de clé publique pour vous empêcher d'utiliser votre autorité de certification. Vous pouvez essayer d'activer le passthrough SSL sur l'onglet des options de proxy pour voir si cela pose un problème pour tout ou partie de vos domaines ciblés. Si l'épinglage de certificat est un problème, vous devrez contourner les protections d'épinglage de certificat.

5) Spoof DNS - Définissez /etc/dnsspoof.conf pour contenir une entrée pour votre domaine et/ou une entrée générique (exemples ci-dessous):

192.168.1.101 example.com
192.168.1.101 *.com

Définissez votre serveur DNS sur un hôte que vous contrôlez et exécutez la commande suivante (dnsspoof est déjà installé sur Kali):

dnsspoof -i eth0 -f /etc/dnsspoof.conf Host 192.168.1.201

Si votre application n'obéit pas aux paramètres du proxy du système ou au DNS, je recommanderais d'utiliser Wireshark pour observer le comportement afin d'obtenir des informations avant de continuer. Il est possible que votre application utilise un protocole non HTTP.

6) Déboguer le trafic réseau - Exécutez votre application dans un émulateur tel que Genymotion, de préférence en mode ponté, puis écoutez sur votre interface principale et utilisez un filtre d'affichage sur votre appareil uniquement ip.addr eq 192.168.1.201.

7) Décompiler l'application - Utilisez dex2jar pour décomplier l'application et réviser le code qui produit le trafic réseau pour obtenir des informations.

d2j-dex2jar.bat "/path/to/the.apk" -o "/path/to/the/new.jar"

Ouvrez le fichier jar avec JD-GUI.

8) [~ # ~] mitm [~ # ~] - Homme au milieu du trafic à l'aide d'un outil comme ettercap. Pensez à utiliser https://github.com/summitt/Burp-Non-HTTP-Extension ou un autre proxy générique TCP proxies (en voici un que j'aime: dummyproxy.py ) pour man-in-the-middle le trafic, bien que cela ne contourne pas tout cryptage tel que TLS.

3
Alex Lauerman

Essayez d'utiliser mitmproxy . Il vous permet de tracer le trafic HTTP et HTTPS. Vous pouvez afficher les demandes et les réponses ainsi que les capturer/les modifier.

1
Jonathan J.

Il existe plusieurs façons d'intercepter de manière fiable les applications Android, à l'exception de l'utilisation des directives de ligne de commande --tcpdump et --http-proxy de l'émulateur SDK Android) ( également accessible dans les paramètres de l'émulateur Eclipse).

Mon préféré pour toutes les applications mobiles est d'utiliser un DNS blackhole , qui peut être encore automatisé avec l'émulateur SDK Android Android:

emulator -dns-server 192.168.0.2 -avd <avdname>

Le trafic tel que HTTP/TLS pourrait être facilement intercepté en exécutant Burp (peut-être en tant que root) sur l'hôte générique DNS - bien que Burp doive être configuré pour écouter sur les ports appropriés (généralement 80 et 443) en mode invisible. En outre, certaines vérifications d'épinglage de certificat peuvent être contournées par configuration de Burp pour effectuer des certificats signés par l'AC par nom d'hôte avec un caractère générique pour le domaine de premier niveau (par exemple, * .google.com).

Burp peut également être configuré sur capturer les réponses du serveur , ce qui peut être très utile lors du dépannage.

Si vous voulez voir les gestionnaires de fichiers avec les gestionnaires de protocole réseau, je suggère d'utiliser l'outil strace via ADB. strace est inclus dans l'émulateur SDK Android Android, et peut être copié sur des appareils utilisant ADB ou autre.

1
atdre

J'ai récemment testé une application qui n'avait pas de support proxy natif. Le développeur ne l'avait pas fait intentionnellement, il l'a donc corrigé plus tard.

Votre configuration est un peu différente, car j'ai utilisé un téléphone physique. Il devrait être assez facile pour vous de faire quelque chose de similaire dans votre laboratoire - mais vous pourriez avoir besoin d'un invité VM supplémentaire exécutant linux, si vous ne l'utilisez pas comme hôte-OS.

Transparent Proxy Setup

Ce que j'ai fait pour intercepter le trafic était vers la destination NAT tout le trafic sur les ports 80 et 443 vers mon proxy d'attaque. Dans ma configuration, j'utilise un point d'accès sans fil auquel le téléphone se connecte.

Cette configuration devrait fonctionner, que vous ayez ou non configuré les paramètres du proxy.

  • Générez et installez le certificat CA pour le proxy d'attaque sur le téléphone.
  • Sur votre machine Linux/machine iptables, configurez un transfert transparent (destination NAT):

    iptables -t nat -A PREROUTING -i wlan0 -p tcp -m multiport --dports 80,443 -j DNAT --to attack-proxy-ip: 8080

  • Installez un point d'accès wifi et définissez la passerelle par défaut comme étant la machine iptables (Kali Linux/192.168.0.100 dans l'exemple)

Désormais, lorsque vous connectez le téléphone au point d'accès sans fil, tout le trafic Web doit être redirigé vers votre proxy d'attaque.

Remarques:

J'ai utilisé Burp, j'ai donc dû activer la prise en charge du proxy transparent. Son appelé "Support proxy invisible" dans Burp.

1
Dog eat cat world

Connectez votre Android et votre plate-forme de test de pénétration à un réseau local. Menez une attaque ARP d'usurpation/poison contre l'appareil Android en utilisant ettercap (ou votre usurpation d'arp préférée) Cela fera en sorte que tous les paquets vers et depuis le Android passent d'abord par votre plate-forme de test de pénétration.

ettercap -T -w dump -M ARP /xx.xx.xx.xx/ // sortie:

Cela videra à l'écran mais vous pouvez configurer pour vider dans un fichier et ensuite analyser les paquets à l'aide de Wireshark.

Ettercap

Cain

0
ap288

C'est ainsi que je capture tout le trafic de mon Android Phone.

1) J'ai un téléphone rooté Android.
2) Installez FS Cert Installer et puis j'ai importé le certificat burp dans mon téléphone.
3) Connectez mon téléphone et mon ordinateur portable au même réseau WiFi.
4) Configurez le proxy dans le téléphone de telle sorte que la burpsuite présente sur mon ordinateur portable écoute tout le trafic provenant de mon Android téléphone.

0
one