Dolos Cloak
Dolos Cloak ist ein Python-Skript, das entwickelt wurde, um Netzwerk-Penetrationstestern und Redteamern dabei zu helfen, 802.1x-Lösungen durch einen erweiterten Man-in-the-Middle-Angriff zu umgehen. Das Tool ist in der Lage, sich an die kabelgebundene Verbindung eines Opfergeräts anzuhängen, das bereits im Zielnetzwerk zugelassen ist, ohne das Opfergerät aus dem Netzwerk zu werfen. Es wurde entwickelt, um auf einem Odroid C2 mit Kali ARM zu laufen und benötigt zwei externe USB-Ethernet-Dongles. Es sollte möglich sein, das Tool auf anderer Hardware und anderen Distributionen zu betreiben, wurde aber bisher nur auf einem Odroid C2 getestet.
von Forrest Kasler (fkasler)(ph3eds)

Wie es funktioniert
Dolos Cloak verwendet iptables-, arptables- und ebtables-NAT-Regeln, um die MAC- und IP-Adressen eines vertrauenswürdigen Netzwerkgeräts zu spoofen und sich in den normalen Netzwerkverkehr einzufügen. Beim Start verbietet das Skript jeglichen ausgehenden Netzwerkverkehr vom Odroid, um die MAC-Adressen seiner Netzwerkschnittstellen zu verbergen.
Als Nächstes erstellt das Skript eine Bridge-Schnittstelle und fügt die beiden externen USB-Ethernet-Dongles zur Bridge hinzu. Der gesamte Verkehr, einschließlich aller 802.1x-Authentifizierungsschritte, wird über die Bridge zwischen diesen beiden Schnittstellen weitergeleitet. In diesem Zustand fungiert das Gerät wie ein Abhörgerät. Sobald der Odroid zwischen ein vertrauenswürdiges Gerät (Desktop, IP-Telefon, Drucker usw.) und das Netzwerk eingesteckt ist, lauscht das Skript auf die Pakete auf der Bridge-Schnittstelle, um die MAC-Adresse und IP des Opfergeräts zu ermitteln.
Sobald das Skript die MAC-Adresse und IP des Opfergeräts ermittelt hat, konfiguriert es NAT-Regeln, um den gesamten Verkehr auf den OUTPUT- und POSTROUTING-Ketten so aussehen zu lassen, als käme er vom Opfergerät. An diesem Punkt kann das Gerät mit dem Netzwerk kommunizieren, ohne aufzufliegen.
Sobald der Odroid die MAC-Adresse und IP des Opfergeräts spoofed, sendet das Skript eine DHCP-Anfrage, um das Standardgateway, die Suchdomäne und die Nameserver zu ermitteln. Es verwendet die Antwort, um seine Netzwerkeinstellungen so zu konfigurieren, dass das Gerät mit dem restlichen Netzwerk kommunizieren kann.
An diesem Punkt fungiert der Odroid als heimlicher Zugangspunkt im Netzwerk. Betreiber können sich über die eingebaute NIC eth0 mit dem Odroid verbinden, um Netzwerkzugang zu erhalten. Das Gerät kann auch so konfiguriert werden, dass es eine Reverse-Shell sendet, damit Betreiber das Gerät als Dropbox nutzen und Befehle im Netzwerk aus der Ferne ausführen können. Beispielsweise kann das Skript so konfiguriert werden, dass es nach dem Man-in-the-Middle-Angriff einen Empire-Python-Stager ausführt. Über die Empire-C2-Verbindung kann dann auf einen TCP-Reverse-Shell- oder VPN-Tunnel aufgerüstet werden.
Installation und Verwendung
- Führen Sie die Standardinstallation von Kali ARM auf dem Odroid C2 durch. Schauen Sie sich den Blackhills-Artikel hier an.
- Stellen Sie sicher, dass Sie dieses Projekt unter /root/tools/dolos_cloak speichern.
- Stecken Sie ein externes USB-NIC in den Odroid und führen Sie dhclient aus, um Internetzugang zu erhalten und Abhängigkeiten zu installieren:
- Führen Sie das Installationsskript aus, um alle Abhängigkeiten zu erhalten und den Odroid so einzustellen, dass er den MitM standardmäßig beim Start ausführt. Beachten Sie, dass dies drastische Änderungen an den Netzwerkeinstellungen des Geräts vornimmt und den Network Manager deaktiviert. Sie möchten möglicherweise vor diesem Schritt zusätzliche Tools herunterladen:
- Möglicherweise möchten Sie einige andere Tools wie 'host' installieren, die nicht standardmäßig auf Kali ARM enthalten sind. Empire, enum4linux und Responder sind ebenfalls gute Ergänzungen.
- Stellen Sie sicher, dass Sie sich per SSH über die eingebaute NIC eth0 mit dem Odroid verbinden können. Fügen Sie Ihren öffentlichen Schlüssel zu /root/.ssh/authorized_keys hinzu, um schnellen Zugriff zu erhalten.
- Passen Sie config.yaml nach Ihren Bedürfnissen an. Stellen Sie sicher, dass die Schnittstellen mit den Standardnamen übereinstimmen, die Ihr Odroid Ihren USB-Dongles gibt. Die Reihenfolge ist hier nicht wichtig. Lassen Sie client_ip, client_mac, gateway_ip und gateway_mac leer, es sei denn, Sie haben sie mit einem LAN-Tap ausgelesen. Das Skript sollte dies für uns herausfinden können. Setzen Sie diese Optionen nur, wenn Sie sich ihrer Werte sicher sind. Die Optionen management_int, domain_name und dns_server sind vorerst Platzhalter, werden aber bald nützlich sein. Für Shells können Sie einen benutzerdefinierten Autostart-Befehl in der config.yaml einrichten, der ausgeführt wird, wenn der Man-in-the-Middle-Angriff automatisch konfiguriert wurde. Sie können auch einen Cron-Job einrichten, um Shells zurückzusenden.
- Verbinden Sie zwei USB-Ethernet-Dongles und starten Sie das Gerät neu (Sie benötigen zwei, da das eingebaute Ethernet keinen Promiscuous-Mode unterstützt).
- Starten Sie das Gerät und warten Sie einige Sekunden, bis autosniff.py die OUTPUT-Ethernet- und IP-Ketten blockiert hat. Stecken Sie dann den Odroid zwischen ein vertrauenswürdiges Gerät und das Netzwerk.
- PWN N00BZ, verdienen Sie $$$, haben Sie Spaß, hacken Sie den Planeten
Tipps
- Ändern Sie ./scripts/upgrade_to_vpn.sh und führen Sie es aus, um einen heimlichen Empire-Agenten in einen vollwertigen VPN-Tunnel zu verwandeln.
- Ändern Sie ./scripts/reverse_listener_setup.sh und führen Sie es aus, um einen Port für einen Reverse-Listener auf dem Gerät einzurichten.
- Führen Sie ./scripts/responder_setup.sh aus, um die Kontrolle über die Protokolle zu ermöglichen, die wir für Responder erfassen. Sie sollten Responder auf der Bridge-Schnittstelle ausführen:
- Seien Sie vorsichtig, da einige NAC-Lösungen die Ports 445, 443 und 80 verwenden, um Hosts regelmäßig zu überprüfen. Wir arbeiten an einer Lösung...
- Protokolle helfen, wenn autosniff.py sich falsch verhält. Die rc.local ist so eingerichtet, dass sie die aktuellen Sitzungsprotokolle in ./logs/session.log und Protokolle in ./logs/history.log speichert, sodass wir neu starten und trotzdem das Protokoll der letzten Sitzung überprüfen können, falls nötig. Protokolldateien enthalten nützliche Informationen wie Netzwerkinformationen, Fehlermeldungen und alle Bash-Befehle zur Einrichtung der NAT-Ninja-Magie.
Tarnung
Verwenden Sie den Parameter radio_silence, um jegliche von uns ausgehende Ausgabe zu verhindern. Dies dient nur zu Sniffing-Zwecken.
Lizenz
Dieses Projekt ist eine umfassende Neufassung eines Tools, das von @jkadijk geschrieben wurde, und verwendet die Klassenstruktur des ursprünglichen Projekts. Auf seinen Wunsch hin:
"Gib mir einfach etwas Anerkennung, wenn du darauf aufbaust, und halte es Open Source :)" – @jkadijk