3psilon website

slogan


Vous êtes ici : Accueil » Articles » Réseau » Les attaques réseaux

>>Les dénis de service

26 juillet 2006
Auteur(e) : 

Présentation

Cette attaque porte bien son nom puisque qu’elle aboutira à l’indisponibilité du service (application spécifique) ou de la machine visée. Nous distinguerons deux types de déni de services, d’une part ceux dont l’origine est l’exploitation d’un bug d’une application et d’autre part ceux dus à une mauvaise implémentation d’un protocole ou à des faiblesses de celui-ci.

Les dénis de service applicatifs

Tout comme les vulnérabilités d’une application entraînent la possibilité de prendre le contrôle d’une machine (exemple du buffer overflow), elles peuvent aussi amener à un déni de service. L’application sera alors indisponible par saturation des ressources qui lui sont allouées ou un crash de celle-ci.

Les dénis de service réseaux

Il existe différents types de déni de service utilisant les spécificités des protocoles de la pile TCP/IP. SYN Flooding

Nous avons vu qu’une connexion TCP s’établie en trois phases (TCP Three Way Handshake).

Le SYN Flooding exploite ce mécanisme d’établissement en trois phases. Les trois étapes sont l’envoi d’un SYN, la réception d’un SYN-ACK et l’envoi d’un ACK. Le principe est de laisser sur la machine cible un nombre important de connexions TCP en attentes.

Pour cela, le pirate envoie un très grand nombre de demandes de connexion (flag SYN à 1), la machine cible renvoie les SYN-ACK en réponse au SYN reçus.

Le pirate ne répondra jamais avec un ACK, et donc pour chaque SYN reçu la cible aura une connexion TCP en attente. Etant donné que ces connexions semi-ouvertes consomment des ressources mémoires au bout d’un certain temps la machine est saturée et ne peut plus accepter de connexion. Ce type de déni de service n’affecte que la machine cible.

Le pirate utilise un SYN Flooder comme synk4, en indiquant le port TCP cible et l’utilisation d’adresses IP source aléatoires pour éviter toute identification de la machine du pirate.

UDP Flooding

Ce déni de service exploite le mode non connecté du protocole UDP. Il crée un "UDP Packet Storm" (génération d’une grande quantité de paquets UDP) soit à destination d’une machine soit entre deux machines.

Une telle attaque entre deux machines entraîne une congestion du réseau ainsi qu’une saturation des ressources des deux hôtes victimes. La congestion est plus importante du fait que le trafic UDP est prioritaire sur le trafic TCP.

En effet, le protocole TCP possède un mécanisme de contrôle de congestion, dans le cas où l’acquittement d’un paquet arrive après un long délai, ce mécanisme adapte la fréquence d’émission des paquets TCP, le débit diminue. Le protocole UDP ne possède pas ce mécanisme, au bout d’un certain temps le trafic UDP occupe donc toute la bande passant n’en laissant qu’une infime partie au trafic TCP.

L’exemple le plus connu d’UDP Flooding est le Chargen Denial of Service Attack. La mise en pratique de cette attaque est simple, il suffit de faire communiquer le service chargen d’une machine avec le service echo d’une autre.

Le service chargen génère des caractères tandis que echo se contente de réémettre les données qu’il reçoit. Il suffit alors au pirate d’envoyer des paquets UDP sur le port 19 (chargen) à une des victimes en spoofant l’adresse IP et le port source de l’autre. Dans ce cas le port source est le port UDP 7 (echo).

L’UDP Flooding entraîne une saturation de la bande passante entres les deux machines. Un réseau complet peut donc être victime d’un UDP Flooding.

Packet Fragment

Les dénis de service de type Packet Fragment utilisent des faiblesses dans l’implémentation de certaines pile TCP/IP au niveau de la défragmentation IP (réassemblage des fragments IP).

Une attaque connue utilisant ce principe est Teardrop. L’offset de fragmentation du second fragment est inférieur à la taille du premier ainsi que l’offset plus la taille du second. Cela revient à dire que le deuxième fragment est contenu dans le premier (overlapping). Lors de la défragmentation certains systèmes ne gèrent pas cette exception et cela entraîne un déni de service. Il existe des variantes de cette attaque : bonk, boink et newtear par exemple.

Le déni de service Ping of Death exploite une mauvaise gestion de la défragmentation au niveau ICMP, en envoyant une quantité de données supérieure à la taille maximum d’un paquet IP. Ces différents dénis de services aboutissent à un crash de la machine cible.

Smurfing

Cette attaque utilise le protocole ICMP. Quand un ping (message ICMP ECHO) est envoyé à une adresse de broadcast (par exemple 10.255.255.255), celui-ci est démultiplié et envoyé à chacune des machines du réseau. Le principe de l’attaque est de spoofer les paquets ICMP ECHO REQUEST envoyés en mettant comme adresse IP source celle de la cible.

Le pirate envoie un flux continu de ping vers l’adresse de broadcast d’un réseau et toutes les machines répondent alors par un message ICMP ECHO REPLY en direction de la cible. Le flux est alors multiplié par le nombre d’hôte composant le réseau.

Dans ce cas tout le réseau cible subira le déni de service, puisque l’énorme quantité de trafic généré par cette attaque entraîne une congestion du réseau.

Déni de service distribué

Les dénis de services distribués saturent le réseau victime. Le principe est d’utiliser plusieurs sources (daemons) pour l’attaque et des maîtres (masters) qui les contrôlent. Les outils de DDoS (Distributed Denial of Service) les plus connus sont Tribal Flood Network (TFN), TFN2K, Trinoo et Stacheldraht. La figure 13 montre un réseau typique de DDoS :

(JPG)
Figure 13
Réseau DDoS

Le pirate utilise des maîtres pour contrôler plus facilement les sources. En effet, il a besoin de se connecter (en TCP) aux maîtres pour configurer et préparer l’attaque. Les maîtres se contentent d’envoyer des commandes aux sources en UDP. S’il n’y avait pas les maîtres, le pirate serait obligé de se connecter à chaque source. La source de l’attaque serait détectée plus facilement et sa mise en place beaucoup plus longue.

Chaque daemon et master discutent en échangeant des messages spécifiques selon l’outil utilisé. Ces communications peuvent même être cryptées et/ou authentifiées.

Pour installer les daemons et les masters, le pirate utilise des failles connues (buffer overflow sur des services RPC, FTP ou autres).

L’attaque en elle-même est un SYN Flooding, UDP Flooding ou autre Smurf Attack. Le résultat d’un déni de service est donc de rendre un réseau inaccessible.

Formuler un commentaire


3psilon (c) 2003

[W3C CSS Validator] [W3C XHTML Validator] [W3C WAI AAA]