25 KiB
Attaques EIGRP
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Cette page a été copiée depuis https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9
Attaquer le protocole EIGRP
EIGRP (Enhanced Interior Gateway Routing Protocol) est un protocole de routage dynamique. C'est un protocole de vecteur de distance. S'il n'y a pas d'authentification et de configuration des interfaces passives, un intrus peut interférer avec le routage EIGRP et causer une empoisonnement des tables de routage. De plus, le réseau EIGRP (en d'autres termes, le système autonome) est plat et n'a pas de segmentation en zones. Que cela pourrait-il signifier pour un attaquant ? Eh bien, s'il injecte une route, il est probable que cette route se propage dans tout le système autonome EIGRP.
Tout d'abord, attaquer un système EIGRP autonome nécessite d'établir une relation de voisinage avec un routeur EIGRP légitime, ce qui ouvre de nombreuses possibilités, de la reconnaissance de base à diverses injections.
Pour cela, j'utiliserai FRRouting. Il s'agit d'un logiciel open source conçu pour créer un routeur dans Unix et Linux. FRRouting vous permet de mettre en place un routeur virtuel qui prend en charge BGP, OSPF, EIGRP, RIP et d'autres protocoles. Tout ce que vous avez à faire est de le déployer sur votre système d'attaquant et vous pouvez en fait prétendre être un routeur légitime dans le domaine de routage. Je vais vous montrer comment déployer FRR sur votre système dans la section suivante.
Intelligence réseau
Se connecter au domaine de routage nous permet de faire l'énumération et la reconnaissance des réseaux et de ne pas passer beaucoup de temps à scanner. Cette méthode vous fait gagner beaucoup de temps précieux. De plus, en scannant, vous pouvez vous faire repérer devant les systèmes de sécurité IPS/IDS. Pour moi, la connexion au domaine et l'énumération sont le vecteur d'attaque sur les domaines de routage qui vous donne le plus d'impact. Mais pour cela, vous devez déployer FRRouting. C'est parti.
Il est nécessaire de modifier le fichier de configuration daemons. Il contient les configurations des démons dans le contexte de leur activité. Soit ils sont activés (yes) soit non (no). Nous devons activer le démon eigrpd.
~# nano /etc/frr/daemons
eigrpd=yes
Ensuite, vous devez corriger le fichier vtysh.conf en ajoutant une ligne responsable de la sauvegarde de la configuration dans un fichier, afin que les configurations de différents protocoles ne soient pas dispersées dans différents fichiers (par exemple, eigrpd.conf, staticd.conf). Cela est configurable en option.
~# nano /etc/frr/vtysh.conf
service integrated-vtysh-config
La configuration de FRRouting est terminée. Maintenant, il est temps d'exécuter le démon FRR. Et oui, nous devons activer le routage du trafic. Par défaut, il est désactivé dans les distributions Linux.
~$ sudo systemctl start frr
~$ sudo sysctl -w net.ipv4.ip_forward=1
La commande vtysh nous amènera au panneau de contrôle du routeur FRR.
~$ sudo vtysh
English Input:
## EIGRP Attacks
EIGRP (Enhanced Interior Gateway Routing Protocol) is a Cisco proprietary routing protocol that is used to share routing information between routers. EIGRP is a distance vector protocol that uses bandwidth and delay as its metrics. EIGRP is a reliable protocol that is easy to configure and troubleshoot. However, EIGRP is vulnerable to various attacks that can compromise the confidentiality, integrity, and availability of the network.
### EIGRP Authentication Attacks
EIGRP supports authentication to prevent unauthorized access to the routing information. EIGRP authentication can be configured using a key chain or a static key. However, EIGRP authentication is vulnerable to various attacks that can bypass or crack the authentication mechanism.
#### EIGRP Key Chain Attacks
An EIGRP key chain is a sequence of keys that are used to authenticate EIGRP packets. Each key in the key chain has a key ID, a key string, and a cryptographic algorithm. The key ID is a number that identifies the key in the key chain. The key string is a password that is used to generate the message digest. The cryptographic algorithm is used to generate the message digest.
An EIGRP key chain can be attacked in various ways, such as:
- **Key ID Spoofing**: An attacker can spoof the key ID in an EIGRP packet to bypass the authentication mechanism. The attacker can send an EIGRP packet with a valid key ID that belongs to another router in the network. This can trick the receiving router into accepting the packet as authentic.
- **Key String Cracking**: An attacker can crack the key string in an EIGRP packet to generate a valid message digest. The attacker can use various tools and techniques to crack the key string, such as brute-force attacks, dictionary attacks, and rainbow table attacks.
#### EIGRP Static Key Attacks
EIGRP static key authentication uses a pre-shared key that is manually configured on each router. The pre-shared key is a password that is used to generate the message digest. EIGRP static key authentication is vulnerable to various attacks that can bypass or crack the authentication mechanism.
An EIGRP static key can be attacked in various ways, such as:
- **Password Guessing**: An attacker can guess the pre-shared key by using various tools and techniques, such as brute-force attacks, dictionary attacks, and social engineering attacks.
- **Sniffing**: An attacker can sniff the pre-shared key from the network traffic by using a packet sniffer tool. The attacker can then use the pre-shared key to generate a valid message digest.
### EIGRP Spoofing Attacks
EIGRP spoofing attacks are used to inject false routing information into the network. EIGRP spoofing attacks can be used to redirect traffic to a malicious destination or to cause a denial of service (DoS) attack.
#### EIGRP Hello Spoofing
EIGRP hello packets are used to discover and maintain neighbor relationships between routers. EIGRP hello packets are sent periodically to the multicast address 224.0.0.10. An EIGRP hello packet contains information about the router, such as its router ID, IP address, and subnet mask.
An EIGRP hello packet can be spoofed in various ways, such as:
- **Router ID Spoofing**: An attacker can spoof the router ID in an EIGRP hello packet to impersonate a legitimate router in the network. This can trick the receiving router into establishing a neighbor relationship with the attacker.
- **IP Address Spoofing**: An attacker can spoof the IP address in an EIGRP hello packet to impersonate a legitimate router in the network. This can trick the receiving router into establishing a neighbor relationship with the attacker.
- **Subnet Mask Spoofing**: An attacker can spoof the subnet mask in an EIGRP hello packet to advertise a false network prefix. This can cause the receiving router to include the false network prefix in its routing table and to forward traffic to the attacker.
#### EIGRP Route Spoofing
EIGRP route packets are used to advertise routing information between routers. EIGRP route packets are sent to the multicast address 224.0.0.10. An EIGRP route packet contains information about the network prefix, the next hop router, and the metric.
An EIGRP route packet can be spoofed in various ways, such as:
- **Network Prefix Spoofing**: An attacker can spoof the network prefix in an EIGRP route packet to advertise a false network prefix. This can cause the receiving router to include the false network prefix in its routing table and to forward traffic to the attacker.
- **Next Hop Router Spoofing**: An attacker can spoof the next hop router in an EIGRP route packet to redirect traffic to a malicious destination. This can cause the receiving router to forward traffic to the attacker instead of the legitimate next hop router.
- **Metric Spoofing**: An attacker can spoof the metric in an EIGRP route packet to manipulate the path selection process. This can cause the receiving router to select a suboptimal path or to blackhole the traffic.
French Output:
## Attaques EIGRP
EIGRP (Enhanced Interior Gateway Routing Protocol) est un protocole de routage propriétaire de Cisco qui est utilisé pour partager des informations de routage entre les routeurs. EIGRP est un protocole de vecteur de distance qui utilise la bande passante et le délai comme métriques. EIGRP est un protocole fiable qui est facile à configurer et à dépanner. Cependant, EIGRP est vulnérable à diverses attaques qui peuvent compromettre la confidentialité, l'intégrité et la disponibilité du réseau.
### Attaques d'authentification EIGRP
EIGRP prend en charge l'authentification pour empêcher l'accès non autorisé aux informations de routage. L'authentification EIGRP peut être configurée à l'aide d'une chaîne de clés ou d'une clé statique. Cependant, l'authentification EIGRP est vulnérable à diverses attaques qui peuvent contourner ou casser le mécanisme d'authentification.
#### Attaques de chaîne de clés EIGRP
Une chaîne de clés EIGRP est une séquence de clés qui sont utilisées pour authentifier les paquets EIGRP. Chaque clé dans la chaîne de clés a un identifiant de clé, une chaîne de clé et un algorithme cryptographique. L'identifiant de clé est un numéro qui identifie la clé dans la chaîne de clés. La chaîne de clé est un mot de passe qui est utilisé pour générer le message digest. L'algorithme cryptographique est utilisé pour générer le message digest.
Une chaîne de clés EIGRP peut être attaquée de diverses manières, telles que:
- **Spoofing d'identifiant de clé**: Un attaquant peut usurper l'identifiant de clé dans un paquet EIGRP pour contourner le mécanisme d'authentification. L'attaquant peut envoyer un paquet EIGRP avec un identifiant de clé valide qui appartient à un autre routeur du réseau. Cela peut tromper le routeur récepteur en acceptant le paquet comme authentique.
- **Cassage de chaîne de clé**: Un attaquant peut casser la chaîne de clé dans un paquet EIGRP pour générer un message digest valide. L'attaquant peut utiliser divers outils et techniques pour casser la chaîne de clé, telles que des attaques par force brute, des attaques par dictionnaire et des attaques par table arc-en-ciel.
#### Attaques de clé statique EIGRP
L'authentification de clé statique EIGRP utilise une clé pré-partagée qui est configurée manuellement sur chaque routeur. La clé pré-partagée est un mot de passe qui est utilisé pour générer le message digest. L'authentification de clé statique EIGRP est vulnérable à diverses attaques qui peuvent contourner ou casser le mécanisme d'authentification.
Une clé statique EIGRP peut être attaquée de diverses manières, telles que:
- **Deviner le mot de passe**: Un attaquant peut deviner la clé pré-partagée en utilisant divers outils et techniques, telles que des attaques par force brute, des attaques par dictionnaire et des attaques d'ingénierie sociale.
- **Sniffing**: Un attaquant peut renifler la clé pré-partagée à partir du trafic réseau en utilisant un outil de reniflage de paquets. L'attaquant peut ensuite utiliser la clé pré-partagée pour générer un message digest valide.
### Attaques de spoofing EIGRP
Les attaques de spoofing EIGRP sont utilisées pour injecter de fausses informations de routage dans le réseau. Les attaques de spoofing EIGRP peuvent être utilisées pour rediriger le trafic vers une destination malveillante ou pour causer une attaque de déni de service (DoS).
#### Spoofing de hello EIGRP
Les paquets hello EIGRP sont utilisés pour découvrir et maintenir les relations de voisinage entre les routeurs. Les paquets hello EIGRP sont envoyés périodiquement à l'adresse multicast 224.0.0.10. Un paquet hello EIGRP contient des informations sur le routeur, telles que son identifiant de routeur, son adresse IP et son masque de sous-réseau.
Un paquet hello EIGRP peut être usurpé de diverses manières, telles que:
- **Spoofing d'identifiant de routeur**: Un attaquant peut usurper l'identifiant de routeur dans un paquet hello EIGRP pour se faire passer pour un routeur légitime dans le réseau. Cela peut tromper le routeur récepteur en établissant une relation de voisinage avec l'attaquant.
- **Spoofing d'adresse IP**: Un attaquant peut usurper l'adresse IP dans un paquet hello EIGRP pour se faire passer pour un routeur légitime dans le réseau. Cela peut tromper le routeur récepteur en établissant une relation de voisinage avec l'attaquant.
- **Spoofing de masque de sous-réseau**: Un attaquant peut usurper le masque de sous-réseau dans un paquet hello EIGRP pour annoncer un faux préfixe de réseau. Cela peut amener le routeur récepteur à inclure le faux préfixe de réseau dans sa table de routage et à faire suivre le trafic à l'attaquant.
#### Spoofing de route EIGRP
Les paquets de route EIGRP sont utilisés pour annoncer des informations de routage entre les routeurs. Les paquets de route EIGRP sont envoyés à l'adresse multicast 224.0.0.10. Un paquet de route EIGRP contient des informations sur le préfixe de réseau, le routeur de prochaine étape et la métrique.
Un paquet de route EIGRP peut être usurpé de diverses manières, telles que:
- **Spoofing de préfixe de réseau**: Un attaquant peut usurper le préfixe de réseau dans un paquet de route EIGRP pour annoncer un faux préfixe de réseau. Cela peut amener le routeur récepteur à inclure le faux préfixe de réseau dans sa table de routage et à faire suivre le trafic à l'attaquant.
- **Spoofing de routeur de prochaine étape**: Un attaquant peut usurper le routeur de prochaine étape dans un paquet de route EIGRP pour rediriger le trafic vers une destination malveillante. Cela peut amener le routeur récepteur à faire suivre le trafic à l'attaquant au lieu du routeur de prochaine étape légitime.
- **Spoofing de métrique**: Un attaquant peut usurper la métrique dans un paquet de route EIGRP pour manipuler le processus de sélection de chemin. Cela peut amener le routeur récepteur à sélectionner un chemin sous-optimal ou à mettre le trafic en trou noir.
Inguz# show version
<figure><img src="../../.gitbook/assets/image (3) (2) (2).png" alt=""><figcaption></figcaption></figure>
> **Cependant, n'oubliez pas que le domaine de routage EIGRP peut être protégé par une authentification. Mais vous avez toujours une chance de vous connecter au domaine de routage. Lorsque les paquets hello sont envoyés, ils contiennent également des hachages cryptographiques. Si vous pouvez extraire ces hachages de l'extraction de trafic et réinitialiser le mot de passe, vous pouvez vous connecter au domaine de routage avec ce mot de passe.**
Accédez au mode de configuration globale et démarrez le processus **EIGRP**, spécifiez le numéro du système autonome - **1**
Et nous devons également déclarer le réseau dans lequel nous sommes. Nous sommes dans le réseau 10.10.100.0/24. Mon adresse est 10.10.100.50/32
Inguz# configInguz(config)# router eigrp 1Inguz(config-router) network 10.10.100.50/32
Ensuite, le voisinage entre les routeurs EIGRP légitimes est établi. Il y en a deux sur mon réseau :
* **GW1 (10.10.100.100)**
* **GW2 (10.10.100.200)**
Voisinage EIGRP avec GW1 (10.10.100.100) :
<figure><img src="../../.gitbook/assets/image (5) (1) (2).png" alt=""><figcaption></figcaption></figure>
Voisinage EIGRP avec GW2 (10.10.100.200) :
<figure><img src="../../.gitbook/assets/image (30) (1).png" alt=""><figcaption></figcaption></figure>
Pendant l'établissement et la maintenance du voisinage entre les routeurs EIGRP, les routeurs échangent leurs informations de routage. Après l'établissement du voisinage, de nouvelles routes apparaîtront dans notre table de routage du système attaquant, à savoir :
* **10.1.239.0/24 via 10.10.100.100 ;**
* **30.30.30.0/24 via 10.10.100.100 ;**
* **100.100.100.0/24 via 10.10.100.100 ;**
* **172.16.100.0/24 via 10.10.100.200**
<figure><img src="../../.gitbook/assets/image (29) (1) (2).png" alt=""><figcaption></figcaption></figure>
Ainsi, après l'établissement du voisinage, nous connaissons l'existence de ces sous-réseaux, ce qui facilite notre pentest et nous fait gagner du temps. Nous pouvons nous passer de la numérisation de sous-réseau supplémentaire. Maintenant, nous sommes dans le domaine de routage EIGRP et nous pouvons développer quelques vecteurs d'attaque. Parlons-en.
### Faux voisins EIGRP <a href="#51ee" id="51ee"></a>
**J'ai découvert que la génération et l'envoi rapide de paquets EIGRP hello en masse surchargent le CPU du routeur, ce qui peut ouvrir la porte à une attaque DoS.** J'ai développé un petit script [**helloflooding.py**](https://github.com/in9uz/EIGRPWN/blob/main/helloflooding.py), mais il me semble que le script manque de vitesse d'envoi des paquets. **Cela est dû à GIL**, qui empêche la fonction **sprayhello** de s'exécuter en plusieurs threads par seconde. **Finalement, je réécrirai le script en C.**
<figure><img src="../../.gitbook/assets/image (2) (6) (1).png" alt=""><figcaption></figcaption></figure>
Arguments du script :
* **Interface du système attaquant (eth0) ;**
* **Numéro de système autonome EIGRP (1) ;**
* **Sous-réseau où se trouve le système attaquant. Dans mon cas, le sous-réseau est 10.10.100.0/24**
~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24
<figure><img src="../../.gitbook/assets/image (26) (1).png" alt=""><figcaption></figcaption></figure>
### Blackhole EIGRP <a href="#5c04" id="5c04"></a>
L'essence de cette attaque est une simple injection d'une fausse route qui empoisonnera la table de routage. Le trafic vers, disons, le réseau `10.10.100.0/24` ne mènera nulle part, causant un déni de service. Une telle attaque est appelée un Blackhole. Le script [**routeinject.py**](https://github.com/in9uz/EIGRPWN/blob/main/routeinject.py) sera l'outil utilisé pour la réaliser. Pour cet exemple, je vais envoyer du trafic destiné à l'hôte `172.16.100.140/32` vers le trou noir.
<figure><img src="../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>
Arguments du script:
* **interface du système attaquant**
* **numéro AS EIGRP**
* **adresse IP de l'attaquant**
* **adresse IP du sous-réseau cible dont le trafic sera envoyé vers le trou noir**
* **masque de sous-réseau cible**
~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32
<figure><img src="../../.gitbook/assets/image (20) (1).png" alt=""><figcaption></figcaption></figure>
**Notre hôte semble être en difficulté :)**
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
Comme vous pouvez le voir, l'hôte perd la connectivité avec l'hôte **172.16.100.140/32** en raison de l'injection de route.
### Abus des valeurs K <a href="#25aa" id="25aa"></a>
Pour établir des voisins EIGRP, **les routeurs utilisent des valeurs K spéciales.** Ils doivent être identiques parmi tous les voisins EIGRP. Si au moins une valeur K ne correspond pas, le domaine EIGRP se bloquera et le voisinage sera rompu. Nous utiliserons [**relationshipnightmare.py**](https://github.com/in9uz/EIGRPWN/blob/main/relationshipnightmare.py) \*\*\*\* pour effectuer cette attaque\*\*.\*\*
<figure><img src="../../.gitbook/assets/image (12) (2).png" alt=""><figcaption></figcaption></figure>
Arguments du script :
* **interface réseau**
* **numéro AS EIGRP**
* **adresse IP du routeur légitime**
**Au nom de l'adresse IP spécifiée, une injection sera envoyée sur l'adresse IP EIGRP multicast, dans laquelle les valeurs K sont différentes.** Dans mon cas, je vais rompre le voisinage au nom du routeur GW1 **(l'adresse est 10.10.100.100)**.
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption><p>Extrait du trafic lors d'une perturbation de voisinage</p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (27) (1).png" alt=""><figcaption><p>Le routeur GW1 se déconnecte et se reconnecte sans cesse à EIGRP</p></figcaption></figure>
**Une attaque DoS peut être effectuée de cette manière. Pendant l'opération, des interruptions et des tentatives de voisinage sans fin se produisent, paralysant une partie du domaine de routage EIGRP.**
### Débordement de table de routage <a href="#1d0c" id="1d0c"></a>
L'essence de cette attaque est de provoquer l'envoi d'un grand nombre de fausses routes, qui vont déborder la table de routage. Cela épuise les ressources informatiques du routeur, à savoir le CPU et la RAM, car les injections se produisent à une vitesse énorme. Cette attaque est mise en œuvre par le script [**routingtableoverflow.py**](https://github.com/in9uz/EIGRPWN/blob/main/routingtableoverflow.py).
<figure><img src="../../.gitbook/assets/image (3) (4).png" alt=""><figcaption></figcaption></figure>
Arguments du script
* **interface réseau**
* **Numéro AS EIGRP**
* **Adresse IP de l'attaquant**
in9uz@Inguz:~$ sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50
Après l'exécution du script, la table de routage commence à déborder de routes. Les adresses aléatoires des réseaux cibles sont dues à l'utilisation de **RandIP()** dans [**Scapy**](https://github.com/secdev/scapy).
<figure><img src="../../.gitbook/assets/image (4) (4).png" alt=""><figcaption><p>La table de routage déborde sur le routeur GW1</p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (21) (1).png" alt=""><figcaption><p>Processeur de routeur surchargé</p></figcaption></figure>
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>