web-dev-qa-db-fra.com

Est-il difficile d'intercepter le corps de réponse POST lorsque SSL est utilisé?

Pour une application Android qui exécute POST requêtes (JSON) sur SSL et reçoit un objet JSON en réponse, à quel point est-il difficile d'obtenir la réponse JSON) ?

Est-ce le moyen le plus simple de décompiler l'application pour obtenir la demande et l'envoyer et voir quelle est la réponse?

Quelle est la manière la plus simple et quelles sont les techniques qui peuvent être utilisées pour la rendre plus difficile?

17
user181807

Tout dépend de l'application elle-même et du type de mesures de sécurité mises en œuvre. En supposant que les demandes sont envoyées via HTTP (s), le moyen le plus simple consiste à utiliser un proxy tel que Burp. Vous devrez installer un certificat CA sur votre appareil mobile. Vous pourrez voir les demandes et les réponses dans le logiciel proxy (Burp).

APP <----> proxy <----> server

Si l'application utilise l'épinglage SSL/TLS, la solution ci-dessus ne fonctionnera pas immédiatement. Certaines fonctions effectueront des vérifications supplémentaires sur le certificat, vous devrez modifier ces fonctions afin de les contourner. En règle générale, il existe deux manières:

  1. Corrigez l'application afin de supprimer l'épinglage SSL/TLS. Cela nécessite généralement le déballage, l'édition, le reconditionnement et la démission de l'application. Assez fatigant si vous me demandez.
  2. Accrochez la logique d'épinglage SSL/TLS et désactivez cette logique. Frida est un outil assez cool pour cela (multi-plateforme), Substrate sur iOS et xposed sur Android.

Une deuxième solution est de ne pas utiliser de proxy du tout! Habituellement, une bibliothèque client HTTP est utilisée pour effectuer de telles demandes. Vous pouvez accrocher les fonctions de requête HTTP et imprimer le contenu directement.

APP <----> server
^-> hooked functions which prints the requests

La deuxième solution peut être utile lorsque l'application n'utilise pas de requêtes HTTP standard. Certaines applications utilisent des protocoles binaires comme un gRPC, il serait plus facile de connecter la fonction myclient_post(jsonData) et d'imprimer les paramètres + la réponse, que de rétroconcevoir le protocole binaire, de configurer un proxy, etc.

Quelques liens qui pourraient être utiles:

23
HamZa