web-dev-qa-db-fra.com

Interception de Android trafic d'application avec Burp

J'essaie de comprendre ce que font Burp et Android lorsque le trafic est https. J'ai fait pas installer la Burp CA sur le téléphone.

  1. Certaines applications refusent complètement de fonctionner. Ils affichent un message d'erreur ou pensent que le téléphone n'est pas en ligne. Est-ce à cause de l'épinglage SSL?

  2. Certaines applications fonctionnent normalement, mais Burp ne capture aucun paquet. Comment cela se passe-t-il? Sans CA Burps, comment le téléphone et le serveur peuvent-ils communiquer? Burp ne fait-il que relayer le trafic?

  3. Certaines applications fonctionnent normalement, mais Burp n'intercepte les paquets que pour quelques opérations. Les opérations interceptées utilisent probablement des gestionnaires de confiance vides ou quelque chose comme ça, mais comment le reste du code communique-t-il avec le serveur?

7
mk_

La première chose à retenir est que Burp est un proxy HTTP (S). Il ne fait rien sur les données qui ne sont pas HTTP (S) (OK, sauf les websockets). Android les applications, en revanche, peuvent utiliser le protocole de leur choix. Beaucoup utilisent HTTP (S), juste parce que cela convient au type de données qu'ils envoient, mais ce n'est pas réellement requis.

Lorsqu'une application n'utilise pas HTTP (S), ce trafic n'apparaîtra pas dans Burp. L'exemple le plus évident est le trafic DNS - vous ne verrez aucune demande de recherche DNS s'afficher même si vous utilisez un navigateur via Burp.

Donc:

  1. Des applications qui refusent complètement de fonctionner. Ils pourraient utiliser l'épinglage de certificat - deux options ici, cependant. D'abord, ils recherchent un certificat valide pour le site cible à installer sur l'appareil. Dans ce cas, l'installation du certificat CA Burp les ferait fonctionner à nouveau. Deuxième type, ils utilisent un épinglage personnalisé, qui nécessite soit un certificat spécifique à fournir par le serveur, soit un certificat signé par une entrée spécifique dans la chaîne de confiance. Ceux-ci ne seront pas dupés par le certificat Burp CA.
  2. Des applications qui fonctionnent sans qu'aucun paquet ne soit capturé. Ils n'utilisent probablement pas HTTP (S). Cela pourrait être des choses comme les clients SSH, les services de messagerie comme Whatsapp ou les jeux, où la perte d'un paquet est moins importante que la plupart des paquets arrivant rapidement, ce qui conviendrait mieux à une connexion réseau basée sur UDP qu'à une base basée sur TCP un comme HTTP. Ils peuvent également ignorer les paramètres de proxy en place, surtout si vous interceptez simplement à l'aide d'une application proxy HTTP. Pour afficher ces données, vous aurez besoin d'un outil comme Wireshark, qui peut gérer d'autres types de données, et d'une carte wifi qui prend en charge le mode moniteur.
  3. Des applications qui ne montrent qu'un peu de trafic. Si le trafic que vous voyez est des packages de statistiques ou des publicités, ils tombent probablement dans la classe 2 ci-dessus - la plupart des systèmes de statistiques semblent utiliser HTTP (S) car il est relativement facile à implémenter dans n'importe quoi, et vous devez généralement avoir une sorte de HTTP connexion ouverte pour télécharger des publicités de toute façon.
  4. Applications qui ne se connectent pas réellement. Certaines applications semblent devoir se connecter à Internet, mais ne le font pas ou ne le font que de manière irrégulière. Ceux-ci peuvent inclure des applications de calendrier, certains jeux (où les scores élevés sont mis à jour quotidiennement, par exemple) ou tout ce qui permet de stocker des données localement pour la plupart (les applications de cartographie peuvent stocker localement la zone "habituelle" et passer des appels pour critiques d'attractions ou de lieux plus éloignés). Dans ce cas, vous ne les avez peut-être pas vus essayer de se connecter pendant que vous regardiez.

Je suggère de regarder le trafic avec Wireshark, si vous le pouvez, et de voir quels protocoles sont utilisés, puis de creuser dans des protocoles intéressants en utilisant un logiciel approprié, en gardant à l'esprit que certains sont intentionnellement difficiles à inspecter - les paquets cryptés de Whatsapp devraient être illisibles , sinon ils ont quelque chose qui ne va pas!

5
Matthew

J'ai rencontré un problème similaire lors de la pentestation d'une application iPhone. L'application n'utilisait pas les bibliothèques natives et ne prenait pas en charge le proxy http. Pour "corriger" cela, j'ai transféré tout le trafic de manière transparente au proxy Burp. Voir Comment capturez-vous TOUT le trafic d'une application Android application? pour une description de cette configuration.

Certaines applications utilisent l'épinglage de certificat. Certaines applications épingleront le premier certificat qu'il voit, d'autres applications l'ont codé en dur dans l'application. Dans le premier cas, il vous suffit de vous assurer que le trafic passera par votre proxy lors de sa première exécution.

Je pense que vous verrez un avertissement dans l'onglet d'alerte Burps si le client se déconnecte prématurément (rejette le certificat).

Dans ce dernier, c'est un peu plus difficile car vous devrez modifier le binaire lui-même.

Je n'ai pas essayé de renverser l'épinglage de certificat à partir d'une application Android Android moi-même, mais ce liens semble être une bonne approche.

3
Dog eat cat world