hacktricks/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md
2023-06-03 13:10:46 +00:00

19 KiB

Attaques GLBP & HSRP

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Cette page a été copiée depuis https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9****

Piratage FHRP

Qu'est-ce que FHRP ?

FHRP (First Hop Redundancy Protocol) est une classe de protocoles réseau conçus pour créer un système de routage redondant à chaud. Avec FHRP, des routeurs physiques peuvent être combinés en un seul dispositif logique, ce qui augmente la tolérance aux pannes et aide à répartir la charge.

Les ingénieurs de Cisco Systems ont développé deux protocoles FHRP, GLBP et HSRP, que je vais vous présenter ci-dessous.

Protocole GLBP

Développé par les ingénieurs de Cisco Systems. Comme HSRP, ce protocole est implémenté sur la pile de protocoles TCP/IP, c'est pourquoi le protocole de couche de transport UDP sous le numéro de port 3222 est utilisé pour la traduction des informations de service. Les routeurs GLBP au sein du même groupe logique échangent des paquets "hello" spéciaux toutes les 3 secondes, mais si un routeur GLBP dans le même groupe n'a pas reçu de paquet hello de son voisin GLBP dans les 10 secondes, il le reconnaît comme "mort". Cependant, les valeurs de minuterie peuvent être configurées en fonction des besoins de l'administrateur.

La structure et le fonctionnement de GLBP

GLBP permet le partage de charge entre plusieurs routeurs (passerelles) en utilisant une adresse IP virtuelle et plusieurs adresses MAC virtuelles. Chaque hôte est configuré avec la même adresse IP virtuelle et tous les routeurs du groupe virtuel participent à la transmission de paquets.

Fonctionne de manière très différente des protocoles HSRP et VRRP car il utilise de vrais mécanismes de répartition de charge, que je vais décrire ci-dessous :

Dépendant de l'hôte. Un type de répartition de charge utilisé sur un réseau où il y a une NAT. Le mode Dépendant de l'hôte garantit que l'hôte récupérera la même adresse MAC de l'appareil AVF qui a été utilisé à un moment antérieur, de sorte que la NAT configurée pour l'hôte ne sera pas rompue.

Round-Robin. Dans ce mode, l'appareil AVG distribue les adresses MAC aux membres AVF de manière alternative. C'est le mécanisme utilisé par défaut.

Round-robin basé sur le poids. Répartition de charge basée sur une métrique spéciale "Poids".

Rôles dans le domaine GLBP et terminologie

AVG (Active Virtual Gateway) - le routeur avec le rôle principal est également responsable de la distribution des adresses MAC aux autres routeurs du même groupe GLBP. Une sorte de "patron" dans le domaine GLBP. L'AVG indique aux autres routeurs comment distribuer le trafic en distribuant des adresses MAC lorsqu'une demande ARP arrive. Il convient de noter qu'il ne peut y avoir qu'un seul routeur AVG dans un domaine GLBP, mais il peut également être un membre AVF.

AVF (Active Virtual Forwarder) - un routeur dans un groupe GLBP qui gère le trafic dans le réseau.

Priorité GLBP - La valeur de priorité qui détermine quel routeur dans le groupe GLBP sera l'AVG. La valeur par défaut est 100 (la plage de priorité peut être de 1 à 255). Elle peut être définie manuellement, c'est-à-dire que l'ingénieur réseau détermine lui-même quel routeur sera le "supérieur" et lequel sera l'esclave. Plus la priorité est élevée, plus il est probable que le routeur obtiendra le rôle AVG. En général, le rôle AVG est attribué aux routeurs les plus puissants.

Poids GLBP - La valeur du soi-disant poids GLBP d'un routeur dans un groupe GLBP. Le poids GLBP définit le niveau de charge du routeur. Cette valeur est "flottante" et peut varier en fonction de la charge sur le canal physique (le mécanisme de suivi d'objet est impliqué), mais elle peut également être configurée manuellement.

Adresse IP virtuelle GLBP - l'adresse IP virtuelle dans le domaine GLBP. Utilisée comme adresse de passerelle par défaut pour les hôtes légitimes.

GLBP utilise l'adresse IP de diffusion de groupe réservée 224.0.0.102 et le numéro de port du protocole de couche de transport UDP 3222 pour envoyer et traiter des informations de service. Des paquets GLBP Hello spéciaux sont envoyés toutes les 3 secondes. Si le routeur GLBP n'a pas reçu de paquet hello d'un voisin dans les 10 secondes, le voisin sera considéré comme "mort" et sortira du domaine GLBP.

Mécanisme d'attaque GLBP

La technique de cette attaque réseau consiste à imposer votre appareil en tant que routeur principal en injectant un paquet GLBP malveillant avec une valeur de priorité maximale. **L

~$ sudo ip link set eth0 promisc on
~$ sudo sysctl -w net.ipv4.ip_forward=1

Sélectionnez le routeur à l'adresse IP 10.10.100.100 et activez l'option Obtenir une adresse IP. Vous devez également générer une ARP gratuit.

La structure d'une injection GLBP malveillante

Comme vous pouvez le voir, le routeur AVG prétend maintenant être un système d'attaque. La valeur de priorité est de 255, la valeur de poids est de 255, c'est-à-dire le maximum.

Après avoir effectué l'injection, nous devons créer une adresse IP secondaire sur notre interface réseau avec la valeur de l'adresse IP virtuelle dans le domaine GLBP. Vous devez également définir un masque de 24 bits.

De cette façon, le trafic légitime sera renvoyé vers nous, car l'adresse IP virtuelle utilisée dans le domaine GLBP est l'adresse de passerelle par défaut pour les hôtes :

~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0

Pour voir non seulement le trafic entrant mais aussi le trafic sortant, nous avons besoin d'une petite règle pour SNAT (masquerading) :

~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nous devons également supprimer la route par défaut sur notre machine et en écrire une nouvelle qui passera par l'ancien routeur AVG (l'adresse est 10.10.100.100). Même si nous avons détourné le rôle AVG du routeur, il pourra toujours acheminer le trafic.

~$ sudo route del default
~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100

C'est bon, nous sommes maintenant l'homme du milieu! Je vais exécuter l'outil net-creds.py pour analyser le trafic à la recherche de données importantes. Par exemple, le trafic FTP non crypté ou les hachages NTLM.

~$ sudo python2 net-creds.py -i eth0

Après avoir exécuté l'utilitaire, je vais essayer de lire le partage SMB avec l'adresse IP 172.16.100.70, qui se trouve derrière les routeurs GLBP.

user@Boundless:~$ smbclient -L \\172.16.100.70 --user mercy

Voici comment vous pouvez intercepter le trafic au sein du réseau en attaquant les domaines GLBP.

Piratage HSRP

HSRP (Hot Standby Router/Redundancy Protocol) — est un protocole propriétaire de Cisco qui permet la redondance de la passerelle réseau. L'idée générale est de combiner plusieurs routeurs physiques en un seul routeur logique avec une adresse IP commune. Cette adresse du routeur virtuel sera assignée à l'interface du routeur avec le rôle principal, et ce dernier, à son tour, se chargera de la transmission du trafic. Dans le domaine HSRP, la tâche de gérer tout le trafic incombe précisément au routeur avec le rôle principal, contrairement à GLBP, où l'équilibrage de charge en utilisant des métriques spéciales (priorité et poids) a été proposé.

Rôles dans le domaine HSRP et terminologie

Routeur actif HSRP — un dispositif qui agit en tant que routeur virtuel et assure la transmission du trafic des réseaux sources aux réseaux de destination.
Routeur de secours HSRP — un dispositif qui agit en tant que routeur de secours, attendant que le routeur actif tombe en panne. Lorsque le routeur actif primaire tombe en panne, le routeur de secours prendra le rôle principal et assumera les fonctions du routeur actif.
Groupe HSRP — un groupe de dispositifs qui assure le fonctionnement et la tolérance aux pannes d'un routeur logique.
Adresse MAC HSRP — l'adresse MAC virtuelle du routeur logique dans le domaine HSRP.
Adresse IP virtuelle HSRP — il s'agit d'une adresse IP virtuelle spéciale dans le groupe HSRP. Cette adresse IP sera la passerelle par défaut pour les hôtes finaux, utilisée sur le routeur logique lui-même.

Versions du protocole HSRP

Le protocole HSRP a deux versions — HSRPv1 et HSRPv2. Ils diffèrent selon les paramètres suivants :

  • Le nombre de groupes logiques possibles. HSRPv1 peut avoir jusqu'à 255 groupes. HSRPv2 peut avoir jusqu'à 4096 groupes.
  • Adresse IP multicast. HSRPv1 utilise l'adresse IP 224.0.0.2 pour envoyer des informations de service, et HSRPv2 utilise 224.0.0.102.
  • Adresse MAC virtuelle. HSRPv1 utilise 00:00:0C:07:AC:XX comme adresse MAC virtuelle. HSRPv2 a une adresse MAC virtuelle de 00:00:0C:9F:FX:XX (où XX est le numéro de groupe HSRP).

HSRP utilise l'adresse IP réservée 224.0.0.2 ou 224.0.0.102 (selon la version de HSRP) et le protocole de couche de transport UDP avec le numéro de port 1985 pour diffuser et traiter les informations de service. Des paquets HSRP Hello spéciaux sont envoyés toutes les 3 secondes. Si le routeur HSRP ne reçoit pas de paquet hello d'un voisin dans les 10 secondes, le voisin sera considéré comme "mort" et sortira du domaine HSRP.

Mécanisme d'attaque HSRP

C'est exactement la même chose que le piratage GLBP. Nous devons effectuer une injection HSRP malveillante avec une valeur de priorité maximale de 255. Cela nous permet de prendre le rôle du routeur actif, ouvrant la porte à une attaque MITM. Mais encore une fois, nous devons examiner les informations suivantes avant de mener l'attaque :

  • L'adresse IP virtuelle utilisée dans le domaine HSRP
  • La présence d'authentification
  • Valeur des priorités des routeurs

Nous pouvons extraire ces informations en analysant le trafic HSRP. Utilisons Wireshark.

Comme vous pouvez le voir sur la capture d'écran, le processus HSRP implique seulement deux routeurs avec les adresses 10.10.100.100 et 10.10.100.200

HSRP Ads

Premier routeur HSRP

Deuxième routeur HSRP

Sur la base de l'analyse du trafic HSRP, nous avons ce qui suit :

  • Une mauvaise configuration a été détectée dans le paramètre de priorité. Le routeur actif est considéré comme un routeur HSRP avec une priorité de 200, c'est-à-dire que nous avons un vecteur pour le piratage HSRP
  • l'adresse IP virtuelle utilisée dans le domaine HSRP est 10.10.100.254
  • L'authentification MD5 est utilisée

Avoir une authentification dans le domaine nous lie les mains, mais je vais arranger ça.

Contournement de l'authentification HSRP

Enregistrez le dump de trafic HSRP au format .pcap, afin que l'exfiltrateur puisse extraire correctement les hachages MD5 du dump. J'utiliserai hsrp2john.py comme exfiltrateur :

~/cisconightmare/exfiltrate$ python2 hsrp2john.py hsrp_with_authentication.pcap

Hashes MD5 extraites de la capture de trafic HSRP

Je vais casser les hashes avec John the Ripper, en spécifiant les hashes eux-mêmes en tant qu'entrée. Et avec l'option --wordlist, je vais spécifier le chemin d'accès au dictionnaire :

~/cisconightmare/exfiltrate$ john hsrp_hashes --wordlist=wordlistforbrute

Mot de passe de domaine HSRP craqué

En conséquence, nous avons une clé pour entrer dans le domaine HSRP - endgame.

Injection HSRP (Loki)

Je vais utiliser le même Loki pour attaquer le protocole HSRP. Entre autres, il dispose d'une fonctionnalité d'injection de clé, qui nous aide à contourner l'authentification. Plus tôt, dans la section de détournement HSRP, nous avons obtenu toutes les informations nécessaires sur le domaine HSRP.

Démarrage de Loki.

Loki a détecté des annonces HSRP

N'oubliez pas de passer en mode promiscuous et d'autoriser le routage du trafic avant de procéder à l'attaque :

~$ sudo ip link set eth0 promisc on
~$ sudo sysctl -w net.ipv4.ip_forward=1

Sélectionnez le routeur ayant l'adresse 10.10.100.100 et une priorité de 200. En tant que paramètre Secret, entrez le mot de passe craqué du domaine HSRP, générez une ARP gratuit et sélectionnez l'option Get IP.

Comme nous pouvons le voir, le routeur actif est maintenant notre système d'attaque. La valeur de priorité est de 255.

Après l'injection, nous devons créer une adresse IP secondaire sur notre interface réseau avec la valeur de l'adresse IP virtuelle dans le domaine HSRP. Vous devez également spécifier un masque de 24 bits. De cette manière, le trafic légitime sera renvoyé vers nous, car l'adresse IP virtuelle utilisée dans le domaine HSRP est l'adresse de passerelle par défaut pour les hôtes.

~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0

Nous avons mis en place le NAT source bien connu (masquerading) pour intercepter tout le trafic :

~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nous supprimons la route par défaut sur notre machine et écrivons une nouvelle route qui passera par l'ancien routeur actif (son adresse est 10.10.100.100). Même si nous avons détourné le rôle actif du routeur, il pourra toujours acheminer le trafic.

~$ sudo route del default
~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100

Maintenant, nous sommes l'« homme du milieu ». Exécutons net-creds.py:

~$ sudo python2 net-creds.py -i eth0

Après avoir exécuté l'utilitaire, je vais reproduire une tentative d'authentification sur le serveur FTP à l'adresse 172.16.100.140 :

~$ ftp 172.16.100.140

En conséquence, nous obtenons des identifiants du serveur FTP : insomnia:betrayal

C'est ainsi que vous pouvez attaquer le domaine HSRP et intercepter le trafic. Fondamentalement, tout est similaire à GLBP.

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥