Skip to content

Les attaques par réflexion avec amplification NTP

Depuis quelques mois, on entends de plus en plus parler des attaques par réflexion utilisant l’amplification NTP. Nous allons ici détailler ce type d’attaque qui utilisait autrefois le protocole DNS (et SNMP) mais qui tend de plus en plus à utiliser le NTP.

Le NTP

Tout d’abord, un petit rappel sur ce qu’est le protocole NTP. Le Network Time Protocol  est le protocole de temps le plus utilisé aujourd’hui tout OS confondu. Son rôle est, au sein des réseaux LAN comme au niveau d’Internet, de synchroniser les horloges machines (serveurs et clients)  afin que tout le monde ait la même valeur de temps à un instant T avec plus ou moins de décalage, de la milliseconde à la seconde pour sa version « light », le SNTP.

Le NTP est actuellement en version 4 (depuis le janvier 2006 et sa normalisation par le RFC 5905. Le fonctionnement et les interactions NTP sont assez simples, un peu comme le DNS, il fonctionne en « strate » c’est à dire en niveau, il existe des serveurs NTP mondiaux (pool.ntp.org par exemple) qui se situent en strate 1 et qui sont les serveurs de référence de serveur NTP de strate 2 appartenant à de grandes universités ou de grandes sociétés, ceux-ci pouvant servir de référence au serveurs NTP de strate 3 qui peuvent par exemple se situer dans des LAN et ainsi de suite jusqu’au éléments actifs et terminaux finaux. Les clients émettent des requêtes aux serveurs en notant leur heure actuelle et l’heure d’envoi et se servent de la réponse du serveur pour se synchroniser à la bonne heure, par ralentissement ou accélération de la fréquence ou par changement brut de l’heure pour les grands décalages.

Les serveurs NTP ont aujourd’hui un rôle capital dans le bon fonctionnement de plusieurs autres protocoles, de la journalisation des événements ou pour les actions nécessitant une grande précision, on parle par exemple ici des protocoles et des flux voix ou vidéo, l’utilisation du NTP est par exemple très importante pour les jeux vidéo ou le streaming de jeu vidéo qui est une grande tendance en ce moment.

Attaque par réflexion

Les attaques par réflexion sont une méthodologie d’attaque déjà observée par le passé par l’utilisation du protocole DNS par exemple. Un pirate va envoyer un paquet ou un ensemble de paquet contenant une IP source dite forgée, comprendre qu’il y inscrit une adresse IP qui n’est pas la sienne mais celle de sa cible dans le but que le serveur avec lequel il communique réponde à cette IP et que la réponse arrive sur la cible finale. Le serveur ne cherchant pas plus loin que cela pour savoir à qui répondre, il va reprendre simplement l’IP source falsifiée contenue dans le ou les paquets qu’il reçoit pour construire ses paquets IP de réponse. Les attaques pas réflexion ont donc pour principe de cacher l’identité du pirate car il falsifie son identité (IP source) dans les paquets qu’il envoie, identité qui va donc être plutôt complexe à retrouver mais le principe va être également de faire envoyer des paquets à une cible qui à la base n’a rien demandé, le nombre de paquet pouvant être très conséquent si on le désire.

Attaque pa reflexion
Exemple basique d’attaque par réflexion utilisé notamment lors de l’amplification NTP

On voit donc ici que le pirate envoie un paquet en forgeant l’IP source comme celle de sa cible. Le serveur recevant le paquet, il lit l’IP source et renvoie la réponse à la cible qui n’a pas réellement émis la requête.

Amplification NTP

Les attaques par réflexion ne sont en soit pas dangereuses dans leur fonctionnement, mais cela dépend de ce que l’on en fait et du protocole que nous manipulons. Comme cela a déjà été observé dans le protocole DNS, il arrive selon certaines requêtes envoyées à des serveurs NTP que la réponse qu’ils nous retournent soit plus grande (en terme de poids et de nombre de paquet) que la requête, c’est ce que l’on appelle l’amplification. Pour faire une analogie simple, une amplification va consister pour l’envoi de 1 paquet à un retour de 6 paquets (par exemple), on va alors parler d’une amplification x6 (on nous répond 6 fois la taille de notre question).

Il se trouve donc que le protocole NTP, lorsque l’on va lui envoyer une requête utilisant la commande monlist (parfois MON_GETLIST)  ait une amplification importante pouvant être utilisée par une attaque par réflexion. La commande monlist, quand elle peut être passée librement par un client à un serveur, va renvoyer au client la liste des 600 dernières IP avec lesquelles le serveur NTP a communiqué (en réponse à des clients voulant se synchroniser). Il est déjà intéressant de constater que l’on peut ainsi savoir quelle IP a communiqué avec quel serveur, mais il est d’autant plus intéressant de remarquer la taille que peut constituer une telle réponse. Un exemple que j’ai effectué sur un serveur NTP local (qui contient donc peu d’IP dans sa liste des communications) :

NTP amplification
Réponse d’un serveur NTP à la commande monlist

Nous voyon donc bien ici qu’en réponse à ma requête passant la commande « monlist », que mon serveur NTP local me renvoie la liste des dernières IP avec lesquelles il a communiqué, si je fais un sniff réseau en même temps :

NTP Amplification
Analyse de trame au passage de la commande monlist et de la réponse du serveur NTP

On voit ici que pour le premier paquet qui est ma question posée au serveur, celui-ci a une taille de 234 octets, la réponse elle, s’effectue déjà en deux paquets qui pèsent au total 604 octets. On parle ici donc d’une amplification de 2,5 car la réponse est deux fois et demie plus grande que la question. Si nous avions posé la question à un serveur NTP mondial, onous n’aurions non pas eu deux paquets contenant une dizaine d’IP mais plusieurs centaines de paquets contenant près de 600 IP, la taille de la réponse variant en conséquence pour une question toujours aussi légère.

Enfin, l’amplification NTP mêlée à une attaque par réflexion va donc faire en sorte que le pirate, qui envoie la requête avec une IP source forgée comme étant celle de sa cible, va faire envoyer par le serveur la réponse amplifiée à une cible qui n’a rien demandé. Il suffit alors de faire des requêtes en boucle, par plusieurs hôtes infectés et vers plusieurs serveurs tant qu’on y est, pour saturer la bande passante de la cible et ainsi provoquer une attaque dite DDOS. Les attaques DNS par réflexion pouvaient enregistrer des  facteurs jusqu’à x8, on pouvait donc générer une attaque utilisant 8 fois la bande passante du pirate.

Quand le NTP renvoie une réponse à une commande monlist, il génère plusieurs paquets contenant chacun 6 adresses. Sachant qu’un serveur très utilisé peut renvoyer jusqu’à 600 adresses et qu’un paquet « plein » pèse 482 octets, on va donc avoir un retour pesant 100*482 = 48 200 octects (48 Ko). On parle alors d’une amplification de facteur 206 ! (48 200 / 234 = 206).

On parle ici du flux qui peut être généré par une seule requête monlist. Maintenant dans le cadre de la mise en place d’une attaque DDOS, les attaquants ont souvent plusieurs centaines, voire milliers (millions parfois), de machines pouvant exécuter leurs ordres et pouvant mener chacune des attaques par réflexion avec amplification NTP. Les flux générés peuvent alors être extrêmement élevés et c’est pourquoi les attaques DDOS ont de plus en plus pour source l’utilisation de l’amplification NTP.

De bonnes lectures supplémentaires sur le même sujet :

Partager :
Published inAttaquesComprendre l'Infosec

2 Comments

  1. Comme on le voit des attaques par amplification peuvent devenir des attaques DDOS.C’est un problème de securite.Il est temps de s’en proteger.

Laisser un commentaire

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