Créer un proxy WiFi de développement avec Mitmproxy

Créer un proxy WiFi de développement

Facebooktwitterredditpinterestlinkedinmail

Vous avez vu précédemment comment créer un point d’accès WiFi routé. Nous allons partir de ce point d’accès et y ajouter un proxy transparent qui nous permettra de faire du debuggage ou du rétro-engineering de notre terminal mobile (smartphone ou tablette) connecté dessus.

Mitmproxy (Man-in-the-middle proxy) est un serveur proxy de développement. Contrairement à un serveur proxy web, qui sert principalement à accélérer et à filtrer la navigation sur Internet, celui-ci sert à analyser en temps réel, et à modifier au besoin, les requêtes qui transitent par lui.

Ce type de proxy est énormément employé par toutes les sociétés qui développent des applications mobiles, car il permet de voir les échanges qui se déroulent en tâche de fond entre l’application cliente et son serveur. Ces sociétés utilisent même plus généralement Charles, sous Win … Mince, je n’arrive pas à l’écrire. Mais naturellement, c’est un logiciel commercial, sur un système de non-exploitation commercial, lui aussi.

Nous allons installer Mitmproxy et le paramétrer en proxy transparent, c’est à dire qu’il ne nécessitera aucune configuration particulière sur le terminal mobile client (si ce n’est la configuration du réseau WiFi). Je vous montrerais l’utilisation de base de Mitmproxy, puis établirais un exemple concret d’utilisation.

Pour plus d’informations, n’hésitez pas à consulter la page man mitmproxy (1).

Le mode transparent nécessite que l’on altère un peu les paquets afin de rediriger toutes les requêtes HTTP entrantes sur notre interface WiFi vers Mitmproxy.

Nous allons créer une copie du fichier /etc/iptables.conf

Nous y ajoutons la nouvelle règle :

Puis nous l’appliquerons avant de lancer Mitmproxy en mode transparent :

L’interface de Mitmproxy est assez sobre, mais complète. Ici j’ai lancé Chrome et fait un appel à google.fr. On constate qu’en mode transparent, les noms de domaines sont remplacés par leurs adresses IP. C’est parce que Mitmproxy doit aller chercher la destination auprès d’iptables, qui ne manipule que des adresses IP.

Liste des requêtes

Liste des requêtes

Tout se fait au clavier. On déplace les chevrons jaunes avec les touches fléchées, puis on presse [entrée] pour voir le détail de la requête. On peut tout effacer avec la touche [C] (majuscule). À tout moment on peut presser [?] pour avoir de l’aide sur l’écran en cours

Détail d'une requête

Détail d’une requête

Ici on voit le détail d’une requête. On retrouve le nom de domaine appelé dans l’entête HTTP Host. En pressant [Tabulation], on passe de la requête à la réponse, et inversement.

Détail de la réponse

Pour quitter, un utilise la touche [q] (la première fois on retourne à la liste, et la seconde on quitte), puis on confirme.

Et nous n’oublions pas de rétablir nos anciennes règles iptables :

Avec Mitmproxy on peut tester toutes nos applications, voir si des mouchards y sont intégrés, visualiser les appels de nos jeux, etc.

Certains appels peuvent ne pas apparaître, ce sont généralement les appels HTTPS. Mitmproxy sait les gérer, mais ça demande un petit peu plus de configuration que ce que nous avons fait.

Vous pouvez aller voir par ici. Et il faudra créer une seconde règle dans notre fichier /etc/iptables.proxy, pour rediriger les requêtes vers le port 443 de la même manière que nous l’avons fait pour le port 80.

Facebooktwitterredditpinterestlinkedinmail

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *