Comment inspecter le trafic réseau à l’aide de mitmproxy

author
5 minutes, 32 seconds Read

La plupart des applications modernes reposent sur des API.  » – Comment puis-je accéder à votre catalogue ? – Voici une API pour cela.  » Les API sont partout et cela n’est pas sur le point de changer.

Décomposer chaque partie de votre code en services séparés est (souvent) bon, mais en ce qui concerne les tests, cette séparation pourrait rendre les choses un peu plus difficiles.

Les développeurs d’applications frontales n’écrivent plus le code qui prend en charge la logique métier de base. Généralement, les tâches de traitement de données complexes sont effectuées côté API et les applications frontales doivent simplement afficher ce qui est fourni par l’API.

C’est pourquoi il est si important de pouvoir retracer le chemin des données de l’application à l’API. Lorsque vous testez et validez une application, il est crucial de pouvoir répondre aux questions suivantes :

  • quel(s) point(s) de terminaison API l’application utilise-t-elle pour cet écran ?
  • que contient la réponse fournie par l’API ?
  • que se passe-t-il si la structure de réponse de l’API change ?

À la fin de ce tutoriel, vous devriez pouvoir utiliser mitmproxy pour répondre à ces questions. Mais vous verrez, il y a beaucoup plus de choses à faire avec cet outil incroyable.

 Comment fonctionne mitmproxy

Avant de commencer…

Vous vous demandez peut-être pourquoi vous devriez utiliser mitmproxy au lieu d’un autre outil. Et c’est une bonne question (ne suivez pas le battage médiatique!).

Mon premier argument est le prix: mitmproxy est gratuit (publié sous licence MIT) lorsqu’une licence pour Charles Proxy coûte environ 50$.

mitmproxy est également un outil très puissant : non seulement il fournit des options pour réécrire le trafic, mais il vous permet également d’exécuter des scripts Python pour modifier les requêtes et les réponses. C’est vraiment utile lorsque vous essayez de tester des cas de bord.

Pour finir, mitmproxy peut fonctionner n’importe où avec une interface web ou en ligne de commande : peu importe le contexte, il y a de bonnes chances que vous puissiez l’utiliser.

Installation

Il existe plusieurs façons d’installer mitmproxy. L’utilisation de brew est la méthode « standard », mais je préfère personnellement l’utiliser via Docker : cela m’empêche de traiter les versions de Python et aide également à garder mon Mac propre. De plus, c’est vraiment facile à faire et aucune connaissance particulière du Docker n’est requise.

Pour l’installation, n’hésitez pas à choisir la méthode avec laquelle vous vous sentez le plus à l’aise.

Utiliser brew

Si vous avez déjà brew installé sur votre ordinateur, et si tout se passe bien, l’exécution de cette commande simple devrait suffire pour faire le travail :

brew install mitmproxy

Une fois que mitmproxy est installé, vous pouvez directement passer à la section Let’s run mitmproxy.

Utiliser Docker

Exécuter mitmproxy à l’aide de l’image Docker officielle est aussi simple que d’exécuter la commande suivante :

docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy:4.0.4

Pour éviter d’avoir à installer les certificats de mitmproxy sur vos appareils de test à chaque fois, il est fortement conseillé de partager le dossier de certificats du conteneur avec un dossier local (en utilisant le paramètre -v).

De cette façon, les certificats seront conservés même après la suppression de votre conteneur Docker.

docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4

Pour simplifier l’utilisation de cette commande, ajoutez un alias dans votre ~/.bash_profile :

alias mitmproxy='docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4'

Et n’oubliez pas d’exécuter source ~/.bash_profile après avoir édité le fichier.

Lançons mitmproxy

Peu importe comment vous l’avez installé, vous devriez maintenant pouvoir démarrer mitmproxy avec la commande :

mitmproxy

Si le programme démarre alors félicitations! Tu peux continuer !

 mitmproxy est actif

Paramètres réseau sur le périphérique cible

mitmproxy peut s’exécuter en tant que proxy inverse, en tant que proxy transparent ou en tant que proxy régulier. Pour garder les choses simples, nous l’utiliserons comme un proxy régulier.

Utiliser le programme de cette façon est certainement plus facile, mais cela signifie que vous pouvez modifier les paramètres réseau du périphérique cible afin de définir un proxy.

C’est vraiment simple lorsque vous devez inspecter les demandes d’un appareil iOS ou Android, mais cela devient plus compliqué avec les appareils qui ne fournissent pas de paramètres avancés pour le réseau.

Selon votre appareil cible, suivez simplement le sous-tutoriel correspondant :

  • définition d’un proxy sur un appareil iOS
  • définition d’un proxy sur un appareil Android
  • définition d’un proxy sur un appareil tvOS

Installation du certificat auto-signé

À ce moment, si vous démarrez mitmproxy, votre appareil acceptera le trafic HTTP mais rejettera toute requête HTTPS ne provenant pas directement de le serveur. La raison est simple: votre appareil n’acceptera aucun certificat auto-signé à moins que vous ne lui demandiez de le faire.

Pour intercepter les requêtes HTTPS, nous devons définir le certificat utilisé par mitmproxy sur le périphérique cible. Cela permettra à votre appareil d’accepter les demandes sécurisées provenant de votre ordinateur au lieu du serveur réel.

La complexité de l’installation d’un certificat auto-signé dépend vraiment de la nature du périphérique que vous devez inspecter. Fondamentalement, cela va de « très simple » à « impossible ».

Selon votre appareil cible, suivez simplement le sous-tutoriel correspondant :

  • installation d’un certificat auto-signé sur un appareil iOS
  • installation d’un certificat auto-signé sur un appareil Android
  • installation d’un certificat auto-signé sur un appareil tvOS

 Certificat

Interceptons les appels

Une fois le certificat installé, vous êtes prêt à intercepter les appels. Vous pouvez recommencer mitmproxy en utilisant :

mitmproxy

Sur l’appareil cible, ouvrez une application et vérifiez si de nouvelles lignes apparaissent dans le terminal.

mitmproxy

Si vous voyez des demandes, alors félicitations! Tout est configuré et vous pouvez commencer à inspecter le trafic Web passant par votre téléphone ou votre tablette.

Dépannage

Si rien n’apparaît et que l’appareil cible semble n’avoir aucune connexion Internet, voici quelques éléments à vérifier :

  • l’ordinateur exécute-t-il mitmproxy et le périphérique cible sur le même réseau ?
  • avez-vous essayé de redémarrer mitmproxy?
  • les paramètres du proxy sont-ils correctement définis sur l’appareil cible ?
  • avez-vous activé le certificat auto-signé sur l’appareil cible ?

Pour aller plus loin

Maintenant, vous devez savoir tout ce dont vous avez besoin pour installer mitmproxy et configurer votre appareil cible. Si vous souhaitez aller plus loin, consultez les articles suivants :

  • Conseils utiles pour mitmproxy
  • Création de scripts pour mitmproxy

Similar Posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.