Attaques sur STP.
Petukhov Oleg, avocat en droit international et protection des données personnelles, spécialiste de l'information sécurité, protection de l'information et des données personnelles
Telegram Channel: https://t.me/protecciondelainformacion
Groupe au Télégramme: https://t.me/securiteinformatique2
Site: https://legascom.ru
E-mail: online@legascom.ru
#sécuritéinformations #informationsécurité
Le protocole STP (Spanning Tree Protocol) est conçu pour empêcher la boucle de paquets sur le réseau en présence de routes dupliquées. Cela fonctionne comme suit. Tout d'abord, les commutateurs connectés sont détectés. Ensuite, le pont Racine, le commutateur principal et racine est sélectionné. Ensuite, selon un algorithme spécial, les ports du commutateur seront bloqués, ce qui créera des boucles dans la topologie résultante.
Pour construire une structure arborescente du réseau sans boucles, un commutateur racine doit être défini sur le réseau, à partir duquel cet arbre est construit. Le commutateur avec la valeur d'ID la plus faible est sélectionné comme commutateur racine. L'ID du commutateur est un nombre de huit octets, dont les six octets les plus bas représentent l'adresse MAC de son unité de contrôle et les deux octets les plus hauts sont configurés manuellement. Cela permet à l'administrateur réseau d'influencer le processus de sélection du commutateur racine. Si l'administrateur n'intervient pas dans ce processus, le commutateur racine sera sélectionné au hasard - il s'agit d'un périphérique avec l'adresse MAC MINIMALE de l'unité de gestion. Un tel choix peut être loin d'être rationnel. Par conséquent, vous devez sélectionner le commutateur racine en fonction de la topologie réseau existante et lui attribuer manuellement le plus petit identificateur. Lors de la sélection automatique, le commutateur racine devient le commutateur dont la valeur d'adresse MAC est inférieure à son unité de commande. Ensuite, pour chaque commutateur, le port racine est défini - c'est le port qui a la distance la plus courte du commutateur racine sur le réseau. Pour chaque segment logique du réseau, un pont désigné (designated bridge) est sélectionné, dont l'un des ports recevra les paquets du segment et les transmettra vers le pont racine via le port racine du pont.
Que peut faire un attaquant? Il peut, comme dans l'exemple précédent, faire semblant d'être un commutateur, diriger un paquet BPDU vers le commutateur attaqué, dans lequel il peut usurper la priorité, l'adresse MAC, pour devenir lui-même un commutateur racine et l'utiliser pour intercepter le trafic réseau. Le commutateur racine est celui qui a la priorité la plus élevée. Dans le cas où la priorité de plusieurs commutateurs est la même, l'adresse MAC est utilisée pour sélectionner le commutateur racine, qui en a moins, il devient racine.
Nous effectuerons un petit travail pratique sur la détection des adresses MAS d'autres machines et le remplacement du MAS sur le sien. Pour ce faire, nous aurons à nouveau besoin du renifleur Wireshark. Comme dans l'exemple des concentrateurs, vous devez activer l'écoute de l'interface réseau. Seulement maintenant, nous ne serons pas intéressés par le trafic HTTP, mais par STP. Nous devons identifier l'adresse MAC du commutateur racine. Pour obtenir cette information, vous devez connaître la topologie du réseau. Vous pouvez obtenir la valeur de l'adresse MAC du port racine à l'aide de Wireshark.
Pour obtenir des informations sur les adresses MAC, vous devez afficher la valeur des champs Source et Destination dans l'en-tête du cadre intercepté. Nous sommes intéressés par la source, pour une fausse adresse de notre commutateur, nous spécifions une adresse plus petite, par exemple réduite d'un, comme dans l'exemple ci-dessous.
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)
Nous allons changer l'interface réseau.
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
Par défaut, les priorités doivent être les mêmes, en conséquence, le protocole STP choisira les ports avec le moins de poids POUR l'itinéraire.
L'attaquant doit maintenant envoyer un paquet BPDU dans lequel spécifier son ID de commutateur. Les autres commutateurs en réponse envoient également leurs ID, et si l'ID envoyé par l'attaquant contient le plus petit MAC, alors à des priorités égales, il sera choisi comme racine.
Vous pouvez créer un faux paquet BPDU comme suit.
Dans la fenêtre du concepteur de packages PackEth, vous devez spécifier les adresses MAC de la source et du destinataire des packages. L'adresse source doit être fausse.
Le champ User defi Ned network payload contient les valeurs suivantes:
l'ID de version du protocole STA est de 2 octets. Les commutateurs doivent prendre en charge la même version du protocole STA, sinon une configuration en boucle active peut être installée;
le type BPDU est 1 octet. Il existe deux types de BPDU: le BPDU de configuration, c'est-à-dire la demande de commutateur racine, qui détermine la configuration active, et le BPDU de notification de reconfiguration, qui est envoyé par le commutateur qui a détecté un événement nécessitant une reconfiguration -
défaillance de la ligne de communication, défaillance du port, modification des priorités du commutateur ou des ports;
drapeaux - 1 octet. Un bit contient un indicateur de modification de configuration, le second un indicateur de confirmation de modification de configuration;
l'ID du commutateur racine est de 8 octets;
la distance à la racine est de 2 octets;
l'ID du commutateur est de 8 octets;
l'ID de port est de 2 octets;
la durée de vie du message est de 2 octets. Mesurée en unités de 0,5 s, sert à identifier les messages obsolètes. Lorsqu'un paquet BPDU passe par un commutateur, celui-ci ajoute à la durée de vie du paquet le temps de latence de ce commutateur;
la durée de vie maximale du message est de 2 octets. Si un paquet BPDU a une durée de vie supérieure au maximum, il est ignoré par les commutateurs;
intervalle hello par lequel les paquets BPDU sont envoyés;
le délai de changement d'état est de 2 octets. Le délai détermine la durée minimale pendant laquelle les ports du commutateur passent à l'état actif. Ce délai est nécessaire pour éviter la possibilité de boucles temporaires lors de changements d'état des ports non temporaires pendant la reconfiguration. Le paquet BPDU de notification de reconfiguration n'a pas tous les champs sauf les deux premiers. Vous pouvez envoyer le paquet compilé en cliquant sur Envoyer.
Si, dans les étapes précédentes, nous avons correctement calculé le poids DES autres participants STP, l'algorithme de ce protocole devrait recalculer les routes de sorte que tout le trafic soit envoyé à notre faux port. Afin de ne pas être détecté, le pirate devra assurer la Livraison du trafic à travers sa machine plus loin à sa destination. Dans le cas contraire, tout le trafic ira nulle part, et le fait de faux MAS sera rapidement détecté. Cependant, cette tâche dans le cadre de ce poste, nous ne résoudrons pas.
Quelles mesures faut-il prendre pour se débarrasser de cette vulnérabilité?
Tout d'abord, vous devez interdire les paquets BPDU à partir de ports sur lesquels il n'y a pas de commutateurs. Et dans le cas où un tel paquet est encore venu, mettez ce port en mode shutdown. Ensuite, nous devons sécuriser notre commutateur racine afin qu'aucun autre commutateur racine, y compris l'attaquant, ne puisse être sélectionné. L'attaquant n'aura pas beaucoup de mal à donner la priorité à un commutateur principal, et l'adresse MAC est plus petite pour s'assurer que l'attaquant semble être root.
Pour résoudre ce problème, nous devons mettre tous les ports du commutateur en mode STP spécial, appelé portfast. Après cela, le client connecté à un tel port ne participera pas à la résolution des itinéraires via l'algorithme STP (cela peut prendre beaucoup de temps, jusqu'à 40 secondes pour construire la topologie du réseau), et seulement après cela commencera à transmettre des données utilisateur via le port. Par défaut, le mode portfast est désactivé sur les commutateurs Cisco, nous devrons donc le configurer manuellement. Nous allons également configurer la désactivation du port en cas de réception d'un paquet 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
Le contenu des deux premières lignes nous est familier par les exemples précédents. Dans le troisième, nous activons le mode portfast. En outre, nous indiquons que sur ces ports, la navigation des paquets BPDU est contre-indiquée. Et les deux dernières commandes sont exécutées pour protéger le pont racine. C'est-à-dire que nous supposons qu'un autre commutateur est connecté à notre port f0/1 et qu'il est donc nécessaire de l'utiliser en tant que root.
Maintenant, même si un attaquant dirige un paquet BPDU avec une priorité maximale et une adresse MAC plus petite vers le commutateur, il ne peut toujours pas devenir un commutateur racine et rediriger tout le trafic à travers lui-même.




