
☠ Man-in-the-Middle-WLAN-Zugangspunkt in einem Docker-Container 🐳
Verwandle jeden Linux-Computer in ein öffentliches WLAN-Netzwerk, das still und heimlich den gesamten HTTP-Datenverkehr mitliest. Läuft in einem Docker-Container unter Verwendung von hostapd, dnsmasq und mitmproxy, um ein offenes Honeypot-WLAN-Netzwerk namens "Public" zu erstellen. Für zusätzlichen Spaß ändere den Netzwerknamen auf "xfinitywifi", um jeden automatisch zu verbinden, der jemals mit diesen Netzwerken verbunden war... sie sind überall.
HAFTUNGSAUSSCHLUSS: Diese Software dient ausschließlich zu Bildungszwecken. Sie sollte nicht für illegale Aktivitäten verwendet werden. Der Autor übernimmt keine Verantwortung für ihre Nutzung. Sei kein Arschloch.
# 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
Führe Folgendes aus und ersetze AP_IFACE und INTERNET_IFACE durch dein drahtloses Gerät bzw. dein mit dem Internet verbundenes Ethernet-/WLAN-Gerät. Du kannst die Namen deiner Netzwerkgeräte mit ifconfig anzeigen lassen.
# 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
Wenn alles geklappt hat, solltest du etwas Ähnliches sehen:
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 erfasst transparent den gesamten HTTP-Datenverkehr, der an den Router unter 10.0.0.1:80 gesendet wird. Es fängt keinen HTTPS-Datenverkehr (Port 443) ab, da dies einen Benutzer darauf aufmerksam machen würde, dass ein möglicher Man-in-the-Middle-Angriff stattfindet. Datenverkehr zwischen URLs, die mit https:// beginnen, wird nicht erfasst.
Der Ordner mitm-router/data/ wird mit dem Docker-Container geteilt, sodass wir die vom Container dort abgelegten Capture-Dateien auf unserem Host-Rechner anzeigen können. Standardmäßig findest du die mitmdump-Capture-Datei in mitm-router/data/http-traffic.cap.
Du kannst dein INTERNET_IFACE auch mit einem Hotspot auf deinem Telefon verbinden, um unterwegs MITM-Angriffe durchzuführen ;)
Wenn etwas schiefgelaufen zu sein scheint, sieh dir die Fehlerbehebungsseite an.
Fahre den Docker-Container herunter, um die iptable-Routing-Regeln zurückzusetzen.
# 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.
Standardmäßig randomisiert mitm-router die MAC-Adresse deines AP_IFACE, um dein Netzwerkgerät zu anonymisieren. Dies kann mit der Umgebungsvariablen MAC="unchanged" deaktiviert werden. Du kannst die MAC-Adresse von AP_IFACE auch explizit mit MAC="XX:XX:XX:XX:XX:XX" festlegen.
Die unterstützten Umgebungsvariablen sind unten mit ihren Standardwerten aufgeführt:
# 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=""
Weitere Informationen findest du auf der Fehlerbehebungsseite.
Dieser Zugangspunkt läuft zur Isolierung in Docker, um sicherzustellen, dass etwaige ausnutzbare Schwachstellen im Zugangspunkt einem Angreifer keinen Zugriff auf deinen Computer oder dein Heimnetzwerk ermöglichen. Allerdings gibt es einige Einschränkungen, die du beachten solltest:
--net host teilt alle Netzwerkschnittstellen und iptables-Einträge des Host-Rechners mit dem Docker-Container. Gehe davon aus, dass ein anfälliger Docker-Container Root-Zugriff auf diese Geräte hätte.--privileged-Modus erweitert die Berechtigungen des Docker-Containers.ufw unter Linux), um eingehenden Datenverkehr auf allen Ports zu blockieren, damit Computer im Netzwerk "Public" keinen Zugriff auf exponierte Dienste deines Rechners haben.Für zusätzliche Sicherheit führe ich diesen Docker-Container lieber auf einem dedizierten Computer wie einem Raspberry Pi aus.
Dieser Code begann als Hard-Fork von simonschuangs rpi-hostapd. Der Code wurde für MITM-Zwecke stark modifiziert.