
Ich versuche, eine Laborumgebung zu erstellen, um mit MiTM-Angriffen zu experimentieren. Ich möchte auch Docker lernen, also habe ich beschlossen, dies mit Docker zu tun. Ich habe 2 Bilder erstellt (Angreifer, Opfer):
Opfer – basierend auf Alpine, mit installiertem curl. Angreifer –
basierend auf Ubuntu, mit installiertem iputils-ping iproute2 curl iptables vim ettercap-text-only dsniff und tshark.
Sie befinden sich beide in einem überbrückten Netzwerk, der Router hier wäre also die Docker0-Schnittstelle (Standard: 172.17.0.1).
Ich führe den Angreifer-Container mit dem Flag --privileged aus, um die Verwendung von Ettercap zu ermöglichen.
Wenn also beide Images ausgeführt werden, führe ich Ettercap (auch mit dem Tool Arpspoof versucht, gleiche Wirkung) vom Angreifer-Container aus mit:
ettercap -T -i eth0 -M arp:remote //victim_ip/ //172.17.0.1/
Der Datenverkehr des Opfers gelangt durch den Angreifer, aber es gibt das Problem, dass beim Versuch des Opfers, google.com anzupingen, keine Antwort erfolgt. Der MiTM-Angriff funktioniert, weil ich diesen Datenverkehr auf den Containern des Opfers sehen kann, aber etwas blockiert ihn.
Ich habe herausgefunden, wo das Problem liegt. Ich habe 2 Wiresharks auf meinem Host geöffnet, einen auf der Docker0-Schnittstelle und einen auf meiner Standard-WLAN-Schnittstelle. Vor dem Angriff, wenn ich etwas aus dem globalen Netzwerk anpinge, übersetzt der Docker seine Docker-IP-Adresse in meine Host-IP-Adresse und das funktioniert einwandfrei, aber nach dem Arpspoofing funktioniert es nicht richtig – der Host sendet Pakete mit der IP-Quelle des Docker-Opfercontainers (172.17.0.3). Außerdem ist das Seltsame, dass ein anderer Container (Angreifer) problemlos das externe Netzwerk anpingt (Docker0 übersetzt die Docker-IP korrekt in die Host-IP). Bild von beiden Wiresharks, unten.
Habe iptables geprüft und diese Regel (im Bild unten ausgewählt) übersetzt meine Docker-IP-Adresse in eine Host-IP-Adresse, aber nach dem Angriff funktioniert diese Regel nicht (Pakete werden nach dem ARP-Spoofing-Angriff nicht erhöht). Ich habe versucht, einige zusätzliche iptables-Regeln hinzuzufügen, aber ohne Wirkung. Ich bin kein iptables-Meister, also wenn jemand andere Ideen hat, was auch geprüft werden sollte, gebt mir einen Hinweis.
Vielleicht kann mir jemand erklären oder mir zusätzliche Quellen nennen, wie genau Docker seine IP-Adresse in die Host-IP-Adresse im Bridge-Netzwerk übersetzt und was ich tun kann, um nach einem ARP-Spoofing-Angriff die korrekte Übersetzung wiederherzustellen. Jeder Ratschlag ist willkommen.
Antwort1
- Wenn Docker installiert ist, wird eine Netzwerkschnittstelle mit dem Namen
docker0
erstellt, um die einzelnen Container zu verbinden. - Wenn Docker einen Container erstellt, erhält er standardmäßig eine virtuelle Netzwerkschnittstelle, deren Name mit beginnt
veth
. Anschließend leitet Docker den Datenverkehr der Host-Netzwerkschnittstelle über iptables-Regeln an die virtuelle Netzwerkschnittstelle weiter. - Wenn Sie den Container mit dem Befehl erstellen
docker run --network=host ...
, verwendet der Container die Netzwerkschnittstelle des Hosts. Zu diesem Zeitpunkt ist die IP-Adresse des Containers dieselbe wie die des Hosts.