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.
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?
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?
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?
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:
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!
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.