mitmproxy permet de s'intercaler facilement entre un serveur web et un client (navigateur ou application mobile par exemple). Pour peu qu'on puisse insérer l'autorité de certification de ''mitmproxy'' dans le client et il peut intercepter HTTPS comme HTTP.
Dans cet exemple, le proxy est utilisé pour intercepter le trafic entre une application mobile installée dans une machine virtuelle et son serveur en HTTPS. Le certificat fourni au client n'est pas celui du site web mais celui du proxy que le |client doit reconnaitre.
Pour commencer, on redirige le trafic HTTPS qui entre sur l'interface qui connecte la machine virtuelle (vboxnetx0
).
sudo iptables --table nat --append PREROUTING --in-interface vboxnet0 --protocol tcp --destination-port 443 --jump REDIRECT --to-port 8080
On redirige donc les paquet à destination du port 443
vers mitmproxy
qui écoute par défaut sur le port 8080
.
On utilise l'option -T
qui lance le proxy en mode transparent
mitmproxy -T --host
Une fois lancé, la touche ?
permet d'obtenir de l'aide sur l'outil.
mtmldump
permet de sauvegarder le trafic dans un fichier qu'on peut relire avec mtimproxy
.
Lancement en proxy transparent :
mitmproxy -T --host -w /tmp/capture
Pour lire le fichier :
mitmproxy -r /tmp/capture