PhanTap ist ein ‚unsichtbarer‘ Netzwerk-Tap, der auf Red Teams abzielt. Mit begrenztem physischen Zugang zu einem Zielgebäude kann dieser Tap inline zwischen einem Netzwerkgerät und dem Unternehmensnetzwerk installiert werden. PhanTap ist im Netzwerk still und beeinträchtigt den Verkehr des Opfers nicht, selbst in Netzwerken mit NAC (Network Access Control 802.1X - 2004).
PhanTap analysiert den Datenverkehr im Netzwerk und tarnt seinen eigenen Datenverkehr als das Opfergerät.
Es kann einen Tunnel zu einem entfernten Server aufbauen, was dem Benutzer einen Ansatzpunkt im Netzwerk für weitere Analysen und Pivoting bietet.
PhanTap ist ein OpenWrt-Paket und sollte mit jedem Gerät kompatibel sein. Das physische Gerät, das wir für unsere Tests verwendet haben, ist derzeit ein kleiner, kostengünstiger Router, der GL.iNet GL-AR150.
Einen ausführlichen Blogbeitrag über PhanTap findest du hier
Funktionen:
Transparente Netzwerkbrücke.
Still: kein ARP, kein Multicast, kein Broadcast.
802.1x-Passthrough.
Automatische Konfiguration:
Erfasst Datenverkehr, der ins Netzwerk eintritt (Quelle ist keine RFC1918-Adresse und Ziel ist eine RFC1918-Adresse); Ziel-IP und -MAC sind unser Opfer, Quell-MAC ist unser Gateway.
Setzt den Brückenverkehr per SNAT auf die MAC- und IP-Adresse des Opfers um.
Setzt das Standard-Gateway des Routers auf die MAC-Adresse des zuvor erkannten Gateways.
Untersucht ARP-, Multicast- und Broadcast-Datenverkehr und fügt eine Route zur IP-Adresse der Maschine sowie die MAC-Adresse der Maschine zur Nachbartabelle hinzu, wodurch du mit allen Maschinen im lokalen Netzwerk kommunizieren kannst.
Ermittelt den DNS-Server aus dem Datenverkehr und passt den des Routers entsprechend an.
Untersucht DHCP-Pakete für die dynamische Neukonfiguration.
Kann Befehle ausführen (z. B. /etc/init.d/openvpn restart), wenn eine neue IP oder ein neuer DNS konfiguriert wird.
Ermöglicht die Wahl einer beliebigen VPN-Software, z. B. OpenVPN über TCP-Port 443, sodass die meisten Firewalls passiert werden.
Du kannst mit der Opfermaschine kommunizieren (über die Gateway-IP).
Einrichtung
PhanTap wurde mit dem GL.iNet GL-AR150 getestet. Dieses Gerät hat zwei separate Netzwerkschnittstellen in OpenWrt (eth0, eth1).
Wenn dein Gerät einen internen Switch (basierend auf swconfig) mit Schnittstellen wie eth0.1, eth0.2 verwendet, könnte spezieller Datenverkehr blockiert werden, z. B. 802.1Q (getaggtes VLAN), aber PhanTap sollte funktionieren.
In diesem Beispiel verwenden wir einen GL-AR150, der nur 2 Schnittstellen hat.
Entferne die Schnittstellen aus allen Netzwerk-Schnittstellen, in denen sie möglicherweise verwendet werden, falls dies der Fall ist, über die folgenden Befehle in der CLI
(angenommen, wir verwenden einen GL-AR150):
Füge die Schnittstellen zur phantap-Brücke hinzu und starte den Netzwerkdienst über die folgenden Befehle in der CLI neu
(angenommen, wir verwenden einen GL-AR150):
Phantap ist jetzt konfiguriert. Sobald du es zwischen einem Opfer und dessen Switch einsteckst, konfiguriert es den Router automatisch und verschafft ihm Internetzugang.
Du kannst dein bevorzugtes VPN hinzufügen, um eine Rückverbindung zu erhalten. Wir haben PhanTap mit OpenVpn, TCP-Port 443, getestet, um einige Erkennungsmethoden zu vermeiden.
Du kannst auch einen Befehl hinzufügen, der ausgeführt wird, wenn eine neue IP oder ein neuer DNS konfiguriert wird, in /etc/config/phantap, z. B. /etc/init.d/openvpn restart (OpenVpn-Dienst neu starten).
Der GL.iNet GL-AR150 und die meisten kostengünstigen Geräte unterstützen nur 100Mbps, während moderner Netzwerkverkehr 1Gbps erreicht.
Der Netzwerkport bleibt auf der Switch-Seite aktiv, wenn das Opfergerät getrennt/heruntergefahren wird.
Einiger Datenverkehr wird von der Linux-Brücke blockiert (STP/Pause-Frames/LACP).
Der OpenWrt-Failsafe-Modus sendet IPv4- und IPv6-Pakete, wie in der Dokumentation beschrieben: https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset. Dies geschieht während des frühen Bootvorgangs und kann dazu führen, dass das Gerät erkannt wird. Es gibt keine einfache Lösung, um dies zur Laufzeit zu deaktivieren, da diese Konfiguration in U-Boot liegt. Die U-Boot-Partition ist schreibgeschützt gemountet, und ihre Konfiguration kann nur über die U-Boot-Shell (z. B. über UART am GL-AR150) eingesehen und geändert werden. Die einfachere Lösung ist, OpenWrt mit aktivierter Option TARGET_PREINIT_DISABLE_FAILSAFE zu kompilieren.
Roadmap :
Logik hinzufügen, um die Erkennung neu zu starten, wenn die Verbindungen up/down gehen.
IPv6-Unterstützung hinzufügen.
Einschränkungen von Geräten testen, die Switches (swconfig) anstelle separater Schnittstellen haben.