Москва
+7-929-527-81-33
Вологда
+7-921-234-45-78
Вопрос юристу онлайн Юридическая компания ЛЕГАС Вконтакте

Attacchi a STP.

Обновлено 06.09.2025 04:46

 

Oleg Petukhov, avvocato nel campo del diritto internazionale e della protezione dei dati personali, specialista nel campo dell'informazione sicurezza, protezione delle informazioni e dei dati personali.

Canale Telegram: https://t.me/protezionedelleinformazioni

Gruppo in telegramma: https://t.me/protezionedelleinformazioni1

Sito: https://legascom.ru

E-mail: online@legascom.ru

 

#protezionedelleInformazioni #sicurezzadelleinformazioni

Il protocollo STP (Spanning Tree Protocol) è progettato per impedire il loop dei pacchetti sulla rete in presenza di percorsi duplicati. Funziona come segue. Innanzitutto, vengono rilevati gli interruttori collegati tra loro. Quindi viene selezionato Root Bridge, Master, root switch. Successivamente, secondo uno speciale algoritmo, le porte dello switch verranno bloccate, che creano loop nella topologia risultante.

Per costruire una struttura ad albero di rete senza loop nella rete, è necessario definire uno switch di root (root switch), da cui viene costruito questo albero. Lo switch con il valore ID più basso viene selezionato come switch root. L'identificatore dello switch è un numero lungo otto byte, i cui sei byte Bassi costituiscono l'indirizzo MAC della sua unità di controllo e i due byte alti sono configurati manualmente. Ciò consente all'amministratore di rete di influenzare il processo di selezione dello switch root. Se l'amministratore non interviene in questo processo, l'interruttore di root verrà selezionato in modo casuale: diventerà un dispositivo con l'indirizzo MAC minimo dell'unità di controllo. Questa scelta potrebbe essere tutt'altro che razionale. Pertanto, è necessario selezionare lo switch root in base alla topologia di rete esistente e assegnargli manualmente l'ID più piccolo. Quando si seleziona automaticamente, lo switch con un valore di indirizzo MAC inferiore della sua unità di controllo diventa root. Inoltre, per ogni switch viene definita la porta principale (root port) - questa è la porta che ha la distanza più breve dalla rete allo switch principale. Per ogni segmento logico della rete, viene selezionato un cosiddetto designated bridge (designated bridge), una delle cui porte riceverà i pacchetti dal segmento e li trasmetterà nella direzione del ponte principale attraverso la porta principale di questo Bridge.

Cosa può fare un attaccante? Può, come nell'esempio precedente, fingere di essere uno switch, inviare un pacchetto BPDU nella direzione dello switch attaccato, in cui può falsificare la priorità, l'indirizzo MAC, al fine di diventare lui stesso uno switch root e intercettare il traffico di rete con esso. L'interruttore principale diventa quello con la priorità più alta. Se la priorità di più switch è la stessa, l'indirizzo MAC viene utilizzato per selezionare l'interruttore principale, che è più piccolo, diventa l'indirizzo principale.

Eseguiremo un piccolo lavoro pratico sul rilevamento degli indirizzi MAC di altre macchine e sulla sostituzione del Mac sul proprio. Per fare ciò, avremo di nuovo bisogno di uno sniffer Wireshark. È necessario, come nell'esempio degli Hub, abilitare l'ascolto dell'interfaccia di rete. Solo ora non saremo interessati al traffico HTTP, ma a STP. Dobbiamo rivelare l'indirizzo MAC dello switch di root. Per ottenere queste informazioni, è necessario conoscere la topologia della rete. È possibile ottenere il valore DELL'indirizzo MAC della porta principale utilizzando Wireshark.

Per ottenere informazioni sugli indirizzi MAC, è necessario visualizzare il valore dei campi Source e Destination nell'intestazione del frame intercettato. Siamo interessati alla fonte, per l'indirizzo falso del nostro switch specifichiamo un indirizzo più piccolo, ad esempio ridotto di uno, come nell'esempio seguente.

root@kali:~# macchanger –mac=xx:xx:xx:xx:xx:xx-1 eth0

Current MAC: 00:16:ec:f1:45:e8 (unknown)

Faked MAC: xx:xx:xx:xx:xx:xx (unknown)

Riavviamo l'interfaccia di rete.

root@kali:~# ifdown eth0

root@kali:~# ifup eth0

Internet Systems Consortium DHCP Client V3.1.1

Copyright 2004-2008 Internet Systems Consortium.

All rights reserved.

For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/04:2f:11:65:fc:0a

Sending on LPF/eth0/04:2f:11:65:fc:0a

Sending on Socket/fallback

DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3

DHCPOFFER of 192.168.1.8 from 192.168.1.101

DHCPREQUEST of 192.168.1.8 on eth0 to 255.255.255.255 port 67

DHCPACK of 192.168.1.8 from 192.168.1.101

bound to 192.168.1.8 -- renewal in 42928 seconds.

if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts

if-up.d/mountnfs[eth0]: waiting for interface eth2 before doing NFS mounts

if-up.d/mountnfs[eth0]: waiting for interface ath0 before doing NFS mounts

if-up.d/mountnfs[eth0]: waiting for interface wlan0 before doing NFS mounts

Per impostazione predefinita, le priorità devono essere le stesse, rispettivamente, il protocollo STP sceglierà le porte con il Mac più basso per il percorso.

Ora l'utente malintenzionato deve inviare un pacchetto BPDU in cui specificare il proprio ID switch. Altri switch inviano anche i loro ID in risposta e se l'ID inviato da un utente malintenzionato contiene il Mac più piccolo, allora con priorità uguali verrà scelto come root.

È possibile generare un pacchetto BPDU falso come segue.

Nella finestra di progettazione pacchetti PackEth è necessario specificare gli indirizzi MAC dell'origine e del destinatario dei pacchetti. L'indirizzo di origine deve essere falso.

Nel campo User defi Ned Network payload vengono specificati i seguenti valori:

l'ID della versione del protocollo STA è di 2 byte. Gli switch devono supportare la stessa versione del protocollo STA, altrimenti potrebbe essere stabilita una configurazione attiva con loop;

il tipo BPDU è 1 byte. Esistono due tipi di BPDU: la BPDU configurabile, ovvero la richiesta di diventare uno switch root, in base alla quale viene determinata la configurazione attiva, e la notifica di riconfigurazione BPDU, che viene inviata dallo switch che rileva un evento che richiede la riconfigurazione -

guasto della linea di comunicazione, guasto della porta, modifica delle priorità dello switch o delle porte;

le bandiere sono 1 byte. Un bit contiene un flag di modifica della configurazione, il secondo un flag di conferma della modifica della configurazione;

ID switch root - 8 byte;

distanza dalla radice - 2 byte;

ID interruttore - 8 byte;

id porta - 2 byte;

la durata del messaggio è di 2 byte. Misurato in unità di 0,5 s, serve per identificare i messaggi obsoleti. Quando un pacchetto BPDU passa attraverso uno switch, aggiunge alla durata del pacchetto il tempo di ritardo dello switch specificato;

la durata massima del messaggio è di 2 byte. Se un pacchetto BPDU ha una durata maggiore del massimo, viene ignorato dagli switch;

l'intervallo hello attraverso il quale vengono inviati i pacchetti BPDU;

il ritardo del cambio di Stato è di 2 byte. Il ritardo determina il tempo minimo per il passaggio delle porte dello switch allo stato attivo. Tale ritardo è necessario per eliminare la possibilità che i loop si verifichino temporaneamente quando gli stati delle porte cambiano non temporaneamente durante la riconfigurazione. Il pacchetto di notifica di riconfigurazione BPDU manca di tutti i campi tranne i primi due. È possibile inviare il pacchetto compilato facendo clic su Invia.

Se nei passaggi precedenti abbiamo calcolato correttamente i MAC degli altri partecipanti STP, in teoria l'algoritmo di questo protocollo dovrebbe ricalcolare i percorsi in modo che tutto il traffico venga inviato alla nostra porta falsa. Al fine di non essere scoperto, l'hacker dovrà garantire la consegna del traffico attraverso la sua macchina ulteriormente alla sua destinazione. Altrimenti, tutto il traffico andrà da nessuna parte e il fatto di falsificare il Mac verrà rapidamente rilevato. Tuttavia, non risolveremo questo problema nell'ambito di questo post.

Quali misure devono essere prese per sbarazzarsi di questa vulnerabilità?

Prima di tutto, è necessario vietare la circolazione di pacchetti BPDU da porte su cui non ci sono Switch. E se un tale pacchetto è ancora arrivato, metti questa porta in modalità shutdown. È quindi necessario proteggere il nostro switch root in modo che in nessun caso sia possibile selezionare un altro switch root, incluso l'attaccante. Non sarà molto difficile per un attaccante dare la priorità a uno switch Master reale e un indirizzo MAC più piccolo per garantire che l'attaccante sia presentato come root.

Per risolvere questo problema, dobbiamo mettere tutte le porte dello switch in una speciale modalità STP chiamata portfast. Successivamente, il client connesso a tale porta non prenderà parte alla risoluzione dei percorsi tramite l'algoritmo STP (questo può richiedere molto tempo, fino a 40 secondi per costruire la topologia di rete), e solo dopo inizierà a trasmettere i dati dell'utente attraverso la porta. Per impostazione predefinita, la modalità portfast è disabilitata sugli switch Cisco, quindi dovremo configurarla manualmente. Configureremo anche la disconnessione della porta se ricevi un pacchetto BPDU.

Switch# conf t

Switch (config)# int range f0/1-24

Switch (config-if-range)# spanning-tree portfast

Switch(config)# spanning-tree portfast bpguard default

Switch(config)# int f0/1

Switch (config-if)# spanning-tree guard root

Il contenuto delle prime due righe ci è familiare dagli esempi precedenti. Nel terzo abilitiamo la modalità portfast. Inoltre, indichiamo che la circolazione dei pacchetti BPDU è controindicata su queste porte. E gli ultimi due comandi vengono eseguiti per proteggere root bridge. Cioè, supponiamo che un altro switch sia collegato al nostro tramite la porta f0 / 1 e di conseguenza sia necessario utilizzarlo come root.

Ora, anche se un utente malintenzionato indirizza un pacchetto BPDU con la massima priorità e un indirizzo MAC più piccolo verso lo switch, non sarà ancora in grado di diventare lo switch root e reindirizzare tutto il traffico attraverso se stesso.