Skip to content

Attaque RA flooding, compréhension et contremesure

Dans cet article, nous allons nous intéresser au »RA flooding », autrement dit l’inondation de paquet de type « Router Advertisment ». Nous étudierons son fonctionnement, son impact ainsi que des pistes de sécurisation.

Le RA flooding est une attaque encore peu connue qui s’axe sur le principe et la méthode d’obtention d’une adresse en IPv6 par les systèmes d’exploitation. Bien que cette attaque existe depuis de nombreuses années, encore beaucoup de systèmes d’exploitation dont les Windows (7, 8 et 8.1) y sont encore vulnérables.

Qu’est ce qu’un  paquet « RA » en  IPv6 ?

EN IPv6,un RA (ou Router Advertisment) est un paquet envoyé par le routeur d’un LAN de manière périodique ou suite à la sollicitation (demande) d’un client souhaitant obtenir des informations sur le réseau pour l’obtention d’une adresse IPv6. Plus précisément, le RA permet de diffuser aux hôtes du réseau local qui en auraient besoin, le préfixe réseau actuel ainsi que sa longueur pour qu’ils puissent y ajouter un suffixe et ainsi former leur adresse IPv6 global-unicast. Observons le contenu d’un paquet RA obtenu dans une écoute du réseau :
attaque-protection-ra-flooding-01La trame est un peu  longue mais le contenu qui nous intéresse est encadré en bleu. Nous voyons dans un premier temps le préfixe réseau diffusé  » Prefix : 2a1:bf34:405c:5734:: » puis la longueur de ce préfixe  « /64« . Nous voyons dans un deuxième temps la valeur du flag « Other » qui est à 0, ce qui signifie que l’hôte recevant ces informations doit les prendre en compte.

Enfin, on remarque le « Valid » et « Prefered Lifetime » qui forcent le stockage définitif de cette information (ils ne sont pas toujours paramétrés en “Infinity“). Suite à la réception de ce RA, l’hôte va donc calculer et se construire lui-même le suffixe et l’ajouter au préfixe reçu pour obtenir son adresse global-unicast. Nous pouvons noter une information supplémentaire : le paquet est envoyé sur l’adresse “ff02::1” qui est l’adresse multicast de tous les hôtes du réseau, plus clairement l’équivalent de l’adresse de broadcast du LAN (exemple en IPV4 : 192.168.1.255 sur le réseau 192.168.1.0/24).

Le principe de l’attaque par RA Flooding

Nous avons vu que les hôtes exécutaient un certain nombre de tâches à chaque réception d’un paquet RA. Cela représente bien entendu des charges CPU et RAM supplémentaires pour un poste de travail, celles-ci sont minimes dans le cas de la réception d’un seul paquet RA. Nous avons également vu que le paquet était envoyé à tous les hôtes du réseau local. L’attaque va donc consister en l’envoi d’un très grand nombre de paquets RA sur un réseau en nous faisant passer pour un routeur. Les paquets seront réceptionnés par les hôtes du réseau local et traités, générant ainsi de nombreux calculs CPU jusqu’à saturation, rendant impossible ou difficile toute autre tâche de travail. La puissance de cette attaque peut être négligée tant qu’elle n’est pas observée.

Pour exécuter cette attaque, nous allons utiliser un outil (présent nativement sur les distributions KaliLinux et BackTrack) qui se nomme « flood_router6 ». Son action est justement d’envoyer un nombre important de paquets RA sur l’interface de sortie désignée.

Nous allons ici voir un exemple que j’ai réalisé en vidéo d’une attaque RA flooding, j’ai bien entendu exécuté cette attaque au sein d’un environnement local, plus précisément avec comme unique cible une VM Windows 7 :

Dans cette vidéo, je compare la charge CPU d’une machine Windows 7 avant et pendant une attaque RA flooding, lancée depuis une machine virtuelle KaliLinux avec l’outil « flood_router6« .

On voit donc bien qu’au lancement de l’outil flood_router6, qui envoie un très grand nombre de paquets RA avec des adresses MAC sources différentes, le CPU du client monte à 100% de charge rendant très difficile les opérations habituelles que nous souhaitons effectuer. A la fin de l’attaque, on observe le nombre important de requêtes envoyées dans l’analyseur réseau Wireshark.

Pour information, il s’agit d’un OS Windows 7 à jour. L’impact est dans cette vidéo minime, mais sur un réseau d’entreprise contenant des centaines de postes, il est possible pour un attaquant de paralyser le fonctionnement du système d’information si les protections nécessaires ne sont pas mises en place.

Comment se protéger face aux attaques RA flooding ?

Bien que cette attaque soit toujours d’actualité et que les systèmes d’exploitation actuels y soient vulnérables, on peut envisager quelques protections basiques qu’il serait possible de mettre en place pour se protéger de ce genre d’attaque.

Désactiver l’IPv6 sur les cartes réseaux

Dans les réseaux locaux d’entreprise où l’IPv6 n’est pas du tout utilisé, il peut être judicieux de complètement désactiver l’IPv6 au niveau des cartes réseaux des postes utilisateurs et des serveurs. Ainsi, les paquets RA n’auront aucune action sur les postes du réseau car ils n’engendreront pas de traitements et de calculs particuliers de la part de ceux-ci. Rendant ainsi l’attaque totalement inefficace.

Mise en place du RA-guard

Pour les réseaux utilisant IPv6, le RA-guard est une protection qui peut être mise en place sur les switchs compatibles et qui permet une protection minimale contre les attaques RA flooding.

L’action du RA-guard est de n’autoriser l’envoi de paquet RA que depuis les ports identifiés comme ceux d’un routeur, ces ports seront bien entendu précisés auparavant par l’administrateur dans la configuration du switch. Le RA-guard peut également filtrer les paquets RA en fonction de l’adresse MAC source qui, rappelons-le tout de même, est usurpable. Cela est une technique de protection qui peut s’avérer efficace, notamment car la majorité des ports, sauf ceux précisés, ne pourront plus envoyer de paquet RA. En optant pour un filtrage par liste blanche, il sera alors impossible, en tant qu’utilisateur, d’envoyer des paquets RA sur le réseau.

Nous avons vu dans ce article le fonctionnement et l’impact de l’attaque RA flooding, nous avons également étudié des pistes de protection. Si vous avez des avis, des remarques ou des conseils, je vous encourage à les poster dans les commentaires.

Partager :
Published inAttaques

2 Comments

  1. roy

    cela fonctionnerait contre des machines linux

  2. Simon

    Conseiller de « Désactiver l’IPv6 sur les cartes réseaux » en 2016 ne me semble pas judicieux. Il sera nécessaire d’intervenir manuellement sur chaque poste d’ici quelques mois quand IPv6 sera déployé sur le réseau.
    Microsoft lui-même recommande d’éviter cette méthode:
    « Important Internet Protocol version 6 (IPv6) is a mandatory part of Windows Vista and later versions of Windows. We do not recommend that you disable IPv6 or its components. If you do, some Windows components may not function. »
    https://support.microsoft.com/en-us/kb/929852
    Il vaut mieux, selon moi, mettre son énergie dans le déploiement d’IPv6 (en déployant RA-guard comme indiqué, même si on n’annonce pas de préfixe IPv6) que d’aller contre la migration.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *