Alerte de sécurité : attaque DDoS par réflexion mDNS

Auteur : Wilber Mejia

Présentation

Vers la fin du 3e trimestre 2015, l'équipe Security Intelligence Response Team (SIRT) d'Akamai a commencé à observer l'utilisation limitée d'attaques DDoS perpétrées à l'aide de terminaux compatibles avec le mDNS (Multicast Domain Name System). Le potentiel d'utilisation du mDNS en tant que vecteur d'attaques DDoS par amplification et réflexion a également été révélé en mars 2015.

Cette alerte expose en détail les techniques et concepts sous-jacents au vecteur d'attaque par réflexion mDNS, ainsi que les solutions permettant de le contrer. Ce vecteur d'attaque est rendu possible par la disponibilité de terminaux source exposant sur Internet le mDNS, normalement sur le port 5353.

À compter du mois d'octobre 2016, Akamai a détecté et réussi à contrer sept attaques DDoS mDNS ciblant plusieurs segments du marché des jeux vidéo et des logiciels ainsi que celui de la technologie. Pour le moment, la longévité de cette attaque peut être débattue, en fonction des caractéristiques d'attaques observées en situation réelle.

Historique de l'attaque

Le vecteur d'attaque mDNS a été utilisé ponctuellement depuis sa première observation en septembre 2015. Comme l'indique l'historique ci-dessous, environ cinq mois se sont écoulés entre la première attaque et la suivante, un écart qui peut s'expliquer par les premiers tests effectués sur les scripts d'attaque. Ce n'est qu'entre la fin du mois de mars et le début du mois d'avril 2016 que ce vecteur d'attaque a commencé à être utilisé plus régulièrement. Cependant, les attaques utilisant le mDNS en tant que vecteur unique n'étaient pas aussi efficaces que les autres vecteurs de réflexion connus à ce jour.

mDNS attack timeline

Attributs d'attaques mis en évidence

La section suivante présente une attaque perpétrée en 2016. Toutes les attaques de ce type contrées jusqu'à présent visaient différentes cibles.

  • Pic de bande passante : 2,9 gigabits par seconde (Gbit/s)
  • Pic des paquets par seconde : 465,2 milliers de paquets par seconde
  • Vecteur d'attaque : mDNS
  • Port source : 5353 (mDNS)
  • Port de destination : Méthode aléatoire

mdns Highlighted Attack Attributes

Le dernier événement lié à une attaque mDNS observé s'est produit le 27 octobre 2016. Il s'agissait d'une attaque DDoS incluant plusieurs vecteurs, à savoir un SYN Flood, un UDP Flood, un Fragment UDP, un DNS Flood et un mDNS Flood, avec une pointe à 41 Gbit/s.

  • Heure de début de l'événement : 27 oct. 2016, à 06:01:00 UTC
  • Pic de bande passante : 41 Gbit/s
  • Pic des paquets par seconde : 6 millions de paquets par seconde
  • Vecteur d'attaque : SYN Flood, UDP Flood, Fragment UDP, DNS Flood, mDNS Flood
  • Port source : Méthode aléatoire
  • Port de destination : Méthode aléatoire

mdns flood
mdns SVN flood

Présentation des attaques utilisant le mDNS

Le multicast DNS (mDNS) est une proposition de protocole standard soumise en 2013 sous la dénomination « RFC6762 ». Ce protocole simplifie la détection de terminaux et services, idéalement au sein de petits réseaux, sans interaction avec les utilisateurs, ou avec un niveau d'interaction minimal. Pour cette raison, le mDNS peut également être adapté au concept de réseau sans configuration (« zeroconf »). La structure du mDNS est pratiquement identique à celle des paquets DNS, ce qui peut expliquer son adoption rapide en tant que vecteur d'attaque DDoS.

La simplicité d'un protocole conçu pour permettre de brancher un terminal et de l'utiliser immédiatement s'accompagne évidemment de certains risques. Chad Seaman a détecté une vulnérabilité (VU#550620) poussant le système mDNS à autoriser l'émission de réponses aux requêtes provenant de l'extérieur du réseau local. Ces réponses permettent ensuite la divulgation d'informations au sujet du terminal affecté, comme ses logiciels et services, ainsi que d'autres informations potentiellement sensibles, comme le nom d'hôte, les paramètres de configuration du réseau interne, le numéro de modèle, etc. Grâce à ces informations, un cybercriminel peut utiliser tous les hôtes mDNS répondant à des requêtes en monodiffusion pour perpétrer, via leur interface connectée à Internet, des attaques par déni de service distribué (DDoS) par réflexion/amplification. Davantage d'informations à propos de cette vulnérabilité sont disponibles sur cette page.

Se fondant sur un concept similaire, un script d'attaque mDNS créé par des cybercriminels envoie une requête en monodiffusion pour obtenir une réponse de la part des terminaux mDNS. Énoncée dans le document RFC6763, la requête d'énumération de services est utile pour renvoyer tous les types de services annoncés sur un réseau. Le script d'attaque va générer une requête de charge utile de 46 octets (comme l'indique le diagramme suivant), qui adresse une requête DNS pour « _services._dns-sd._udp.local » à l'hôte vulnérable, afin que tous les services connus soient renvoyés aux terminaux à l'origine de demandes. Ces services annoncés peuvent également être interrogés à titre individuel avec des tailles de réponses variables, élargissant ainsi le champ d'action des pirates. Ceci étant, cette tactique exigerait un outil d'attaque plus sophistiqué pour exploiter facilement ces charges utiles de réponses supplémentaires dans une attaque DDoS.

mdns attack

Les charges utiles de réponses mDNS observées jusqu'à présent dans des attaques DDoS étaient limitées en taille. La plus volumineuse d'entre elles contenait 428 octets de données, soit 12 octets de moins que le paquet de réponses de données obtenu avec la commande monlist NTP. Toutefois, la taille de réponse mDNS typiquement observée était comprise entre 100 et 200 octets. Cela signifie que le vecteur est plus susceptible de plafonner à une amplification d'environ 4,35x, ce en tenant seulement compte de la charge utile de la demande de 46 octets et de la réponse de charge utile de 200 octets.

Échantillon de signatures et d'utilisation du script d'attaque

Le script d'attaque créé pour le système mDNS est une version modifiée des nombreux scripts disponibles pour les attaques par amplification et réflexion UDP. Son utilisation est également similaire à tous les autres scripts : il suffit de fournir une IP cible, un port cible, la liste des terminaux mDNS sur Internet, les threads, le taux d'accélération des paquets et enfin la durée d'exécution de l'attaque. Le script se fait alors passer pour l'IP cible lorsqu'il envoie à l'aide de l'outil tcpdump les requêtes de 46 octets malicieuses observées dans le diagramme suivant.

mdns sample script usage
mdns sample script usage

Lors de notre dernier test réalisé en laboratoire, les requêtes étaient envoyées vers une configuration de serveur Linux incluant un écouteur mDNS. La réponse de base peut être observée dans le diagramme suivant.

mdns basic response

Le 4 novembre 2016, la Shadowserver Foundation a effectué une analyse mDNS (5353/UDP) au cours de laquelle 526 245 IP uniques ont répondu à la requête mDNS. Le graphique ci-dessous présente les 20 principaux pays ainsi que leurs ASN dont le système mDNS était accessible, d'après la dernière analysée réalisée.

mDNS Source Distribution Countries
mDNS Source Distribution ASNs

Protection

Il s'agit d'un protocole conçu pour être utilisé au sein d'un réseau local. De fait, il ne devrait y avoir aucune exposition de terminaux mDNS sur Internet. Si nécessaire, il peut être avisé de filtrer toutes les requêtes entrantes et d'autoriser uniquement les sources connues. Un système de détection d'intrusion (IDS) tel que Snort peut également être utilisé pour détecter ces requêtes afin de mieux empêcher l'utilisation de vos terminaux dans le cadre d'attaques DDoS. Un exemple de règle de détection de Snort est présenté ci-dessous.

mdns mitigation

Conclusion

Jusqu'à présent, le vecteur d'attaque mDNS a connu une utilisation limitée. À l'instar du protocole SSDP, ce vecteur est plus enclin à être favorisé par des terminaux au sein d'un réseau domestique. Bien que les premières attaques aient été circonscrites, une analyse du port 5353 du système mDNS a été observée quotidiennement sur notre plate-forme de protection. Une fois que davantage de terminaux sont énumérés, des attaques plus importantes sont susceptibles de se produire. De plus, comme pour le SSDP, l'exposition de ce protocole est facultative. Le système mDNS est donc peu susceptible de s'imposer en tant que vecteur d'attaque DDoS, étant donné que les FAI permettent désormais aux utilisateurs à domicile de filtrer ce port. Malheureusement, même après des années d'utilisation, le SSDP continue d'être exploité quotidiennement et peut toujours générer des attaques DDoS de grande ampleur. Cela signifie que les attaques mDNS peuvent devenir plus virulentes avant qu'un important filtrage proactif ne soit appliqué.

Références