ATTAQUES DoS / DDoS
Définition
Le déni de service, connu sous le titre de "Denial Of Service" ou encore DoS, est une attaque réalisée dans le but de rendre indisponible durant une certaine période les services ou ressources d'une organisation. Généralement, ce type d'attaque à lieu contre des machines, serveurs et accès d'une entreprise afin qu'ils deviennent inaccessibles pour leurs clients. Le but d'une telle attaque n'est pas d'altérer ou de supprimer des données, ni même de voler quelconque information. Il s'agit ici de nuire à la réputation de sociétés présentes sur Internet en empêchant le bon fonctionnement de leurs activités.
La réalisation d'un déni de service n'est pas très compliquée, mais pas moins efficace. Il est possible d'attaquer tout type d'équipements réseau tel que les serveurs, routeurs et Switchs. Cela touche 99% de la planète car la plupart des dénis de service exploitent des failles liées au protocole TCP/IP. Nous pouvons diviser les impacts des attaques DOS en deux catégories :
- Les dénis de service par saturation qui consistent à submerger une machine de requêtes, afin qu'elle ne soit plus capable de répondre aux demandes réelles.
- Les dénis de service par exploitation des vulnérabilités qui consistent à exploiter une faille du système cible afin de le rendre inutilisable.
Le principe de ces attaques est d'envoyer des paquets ou des données de taille ou de constitution inhabituelle, afin de provoquer une saturation ou un état instable des équipements victimes et de les empêcher ainsi d'assurer les services réseau qu'elles sont sensées offrir. Dans certains cas extrêmes, ce type d'attaque peut conduire au crash de l'équipement cible.
Le déni de service est donc un type d'attaque qui coûte très cher puisqu'il interrompt le cours normal des transactions d'une organisation. Sachant qu'à l'heure actuelle, les sommes et les enjeux d'une entreprise sont généralement énormes, cela peut poser de graves problèmes si une telle situation se produit ne fût-ce que quelques heures. Imaginez les impacts :
- Financiers d'un grand site de commerce en ligne dont sa plateforme d'hébergement serait indisponible lors des fêtes de Noël ?
- Sur l'image d'une banque qui ne pourrait plus recevoir ses mails ?
- Globaux pour vous, en tant qu'entreprise qui communiquez avec vos clients ?
Les contre-mesures sont compliquées à mettre en place et doivent être spécifiques à un type d'attaque. Etant donné que les attaques par déni de service utilisent les services et protocoles normaux d'Internet, s'en protéger reviendrait à couper les voies de communications normales, sachant qu'il s'agit de la raison d'être principale des machines concernées (Site web, Messagerie...).
Il faut donc essayer se protéger au mieux de certains comportements anormaux, ce qui implique notamment la vérification de l'intégrité des paquets, la surveillance du trafic, établissement de profils types et de seuils... On est donc loin de la protection absolue, mais il est tout de même possible de se protéger de façon intelligente et flexible.
Les principales attaques
- ICMP Flood : Beaucoup d'hôte Internet ou privée répondent aux paquets ICMP, il est donc facile de les inonder de ce flux afin les rendre indisponibles. D'ailleurs, que les cibles répondent ou pas à l'ICMP, l'objectif premier étant de saturer leurs bande passantes d'accès réseau, processeurs, mémoire ...
Ping Flood est la plus répandu des attaques par déni de service, car de nombreux particuliers et amateurs s'amusent simplement à pinguer un host distant. Et bien sur, ils se font plaisir en ajoutant les options permettant d'augmenter la cadence au maximum. Cependant, Microsoft à limité les options de son Ping obligeant ainsi à attendre une seconde entre chaque Ping. Ca permet d'éviter aux particuliers de s'amuser avec cette attaque, mais il faut être réaliste, Windows n'est pas le seul OS et Ping.exe n'est pas la seule application ...
- UDP Flood : Le concept de cette attaque est identique au Ping Flood. C'est de saturer les ressources de la cible en terme de débit, processeur, mémoire à l'aide de datagramme UDP De la même manière, que la cible réponde ou pas au flux abondant émis, ne change pas le résultat.
- * Flood : Le concept de cette attaque, dont je viens d'inventer le nom, est de saturer une cible exactement comme le réalise ICMP Flood et UDP Flood. Ces attaques se basent toutes sur l'envoi massif de requête à destination de la cible. Ces requêtes ne sont pas obligatoirement basées sur ICMP ou UDP, mais elles se reposeent sur TCP, IGMP, IP_raw, ... D'où le nom de l'attaque * Flood indiquant que l'on peux saturer une cible avec n'importe quel flux IP.
- ARP Poisoning : Cette attaque se base sur l'envoi d'informations ARP falsifiés. Ainsi, les différents équipements du LAN apprennent des mauvaises correspondances adresses IP avec MAC. La conséquence est de rompre toutes communications entre deux équipements IP. Les cibles sont souvent les serveurs et les routeurs rendant indisponible les services associés.
- Unreachable Host : Cette attaque envoie des messages ICMP de type "Host Unreachable" à une cible, provoquant la déconnexion des sessions et paralyse ainsi la victime. La simplicité de cette attaque est qu'elle demande qu'un faible débit du fait que les envois de datagramme ICMP peuvent être sur une faible cadence.
- ICMP Redirect : Cette attaque envoi des messages ICMP de type "Redirect" à une cible pouvant être aussi bien un serveur comme un routeur. Le datagramme informera la victime qu'il faut passer par une autre chemin. Ainsi, cela provoquera une indisponibilité WAN.
- SynFlood : Cette attaque utilise une faiblesse du protocole TCP en se basant sur l'envoi massive de demande d'ouverture de session SYN. L'objectif étant de saturer le nombre maximum de sessions TCP en cours de l'équipement IP assaillis. Ainsi, lorsque cette limite est atteinte, la cible ne pourra plus établir aucune session TCP causant une indisponibilité de tous ces applications en écoute de port TCP.
Tout équipement IP dispose de plusieurs variables pour gérer le fonctionnement de TCP. Ceci apportant donc les limites définies suivantes :
- Le nombre de session maximum établies (L'attaque SynFlood ne se base pas sur cette limite)
- Le nombre de session maximum en cours d'établissement
- Le temps d'attente du retour ACK avant de supprimer la session en cours
Pour se protéger, il est donc possible de jouer sur ces valeurs afin d'accepter plus de sessions et d'être plus réactif sur la durée d'attente. Cependant, le fait de modifier ces valeurs peux engendrer un impact de performance local. De plus, cela ne fait que repousser les limites que l'attaquant se fera un malin plaisir à atteindre.
Les SynCookies représente une solution technique relativement efficace. Sur le même principe que les cookies HTTP, le serveur sollicité renvoie un cookie crypté dans le SYN/ACK, puis il efface l'entrée de sa file d'attente. Si c'est un client régulier il lui renverra un ACK, dont on peut déduire le cookie et reconstitué ainsi l'entrée dans la file d'attente. La problématique de cette technique est que tout le monde n'implémente pas ce mécanisme provoquant ainsi des problèmes de compatibilité.
On notera aussi que l'implémentation d'IPSec dans IPv6 rendra les ces attaques difficiles. IPv6 compliquera aussi la taches des pirates par le nombre d'adresses à scanner et par l'affectation unique d'une IP qui augmentera leur traçabilité.
Vous trouverez sur ce lien web un exemple d'outil permettant de réaliser cette attaque.
- Session Flood : La méthode générale de cette attaque consiste à saturer un service distant en montant un plus grand nombres de connexions TCP que peut en supporter la cible. Cela ressemble beaucoup à l'attaque SynFlood excepté le fait qu'elle se base sur le montage complet d'une session TCP (SYN - SYN/ACK - ACK). La conséquence pour la cible est de plus pouvoir accepter aucune session TCP supplémentaire.
Cette attaque à l'avantage d'être très simple à mettre en oeuvre, mais la faiblesse d'être très rapidement repéré. La force de cette attaque est son couplage en mode distribué.
Du côté cible, les préconisations afin de tenter de l'éviter sont :
- Augmenter le nombre de sessions maximums supportées
- Dupliquer la cible afin d'obtenir N fois le nombre de sessions maximums
- Mettre en oeuvre des boîtiers de repartissions de charge des sessions TCP
- Implémenter une console IDS détectant l'attaque afin de bloquer l'IP attaquante
- Mail bombing : Cette attaque, très souvent utilisée par du grand public, consiste à envoyer plusieurs milliers d'emails à destination d'une entreprise ou d'un utilisateur cible. L'impact est évidement avec un remplissage massive de la boite à lettre utilisateur, mais surtout de saturer le débit Internet de l'entreprise ciblée qui ne possède pas de qualité de service.
Cette attaque devient de moins en moins efficace du fait que les entreprise possède de plus en plus des tuyaux de boucle local en haut débit, de la QOS performante et des relais Anti-Spam pertinents.
- Ping of Death : Cette technique d'attaque est dépassée, mais elle a fait ses preuves à l'époque. Elle exploitait une faiblesse dans l'implémentation de la plus part des piles IP en envoyant un paquet ICMP d'une taille non conforme (supérieur à 64 octets). Ceci avait pour effet de planter directement la pile IP attaquée.
Cependant, revenons sur terre, aujourd'hui, comme pour l'attaque par fragmentation, cette technique n'est plus viable du faite que les pile IP ont toutes évoluées. Nous pouvons donc discuter en datagramme ICMP de grande taille sans aucun soucis (heureusement). Le faite de détailler cette attaque permet de raconter l'histoire et se remémorer des souvenirs.
L'attaque Ping de la mort est souvent confondue en pensant qu'elle est basée sur le faite de saturer une bande passante en ICMP. Ce n'est pas le cas, car ce principe est appliquée par l'attaque Ping Flood et non pas par Ping de la mort.
- Fragment Attack : Cette technique d'attaque est basé sur la fragmentation IP. L'objectif est de planter la pile IP de la cible en modifiant les numéros de séquences.
En effet, le protocole IP est prévu pour fragmenter les datagrammes de taille importante provenant de la couche 4 du modèle OSI. Le datagramme est alors fragmenté en en plusieurs paquets IP possédant chacun un numéro de séquence et un numéro d'identification commun. A réception des fragments, la cible rassemble les paquets grâce aux valeurs de décalage (en anglais offset) qu'ils contiennent.
L'astuce est de modifier les numéros de séquence afin de générer des blancs ou des recouvrement lors du réassemblage par la pile IP cible. Et certain équipement ne le supportait pas avec différent conséquence tel que l'arrêt du service TCPIP.
Cependant, revenons sur terre, aujourd'hui, comme pour le ping de la mort, cette technique n'est plus viable du faite que les pile IP ont toutes évoluées.
- Land Attack : Cette attaque consiste à démarrer une ouverture de session TCP via un SYN à destination d'un port ouvert de la machine cible. L'astuce de l'attaque est de préciser l'adresse IP source identiquement à l'IP destination ainsi que le port source identiquement au port destination. La victime recevant cette trame pense alors qu'il discuter avec lui même ce qui généralement provoque un crash.
Cependant, revenons sur terre, aujourd'hui, comme pour le ping de la mort, cette technique n'est plus viable du faite que les pile TCP/IP ont toutes évoluées. De plus, les consoles IDS et les Firewall sont tous opérationnels pour bloquer de type de trame.
Les variantes
- Smurf : Cette variante consiste à envoyer une trame à la destination d'un broadcast de réseau. La finalité est couplé cette trame à une adresse IP source correspondante à celle de la cible. Ainsi, le flux de réponse en destination de la cible sera fortement multiplié.
Cette amplification peux facilement se coupler avec les attaques :
- Attaque Ping Flood
- Attaque UDP Flood
- Attaque * Flood
- IP Spoofing : Cette variante permet de se cacher lors de l'attaque. Pour cela, il suffit de changer l'adresse IP Source afin de pas être reconnu. Il est même possible d'effectuer un changement aléatoire à chaque envoi, cela brouillera particulièrement les pistes.
Ce camouflage peux facilement se coupler avec les attaques ne nécessitant pas de recevoir la réponse :
- Attaque Ping de la mort
- Attaque Ping Flood
- Attaque UDP Flood
- Attaque * Flood
- Attaque SynFlood
- Attaque par fragmentation (fragment attack)
- Attaque Unreachable Host
- Attaque ICMP Redirect
- Zombie : Cette variante permet de très bien se cacher en exécutant l'attaque à partir d'une machine distantes ne nous appartenant pas. Pour cela, il faudra donc pirater et prendre la main d'une machine Internet qui sera appelé Zombie, d'où l'attaque sera lancée. Ainsi, la cible ne verra que le Zombie dans ses logs et pas la source réelle du hacker.
C'est une technique est simple à réaliser du fait qu'il existe de nombreuses stations de travail de particulier sans aucune protection ou presque.
Ce camouflage peux facilement se coupler avec toutes les attaques.
Demande de rançon
Le déni de service occasionne beaucoup de problèmes repartit dans le monde entier souvent exécuté aléatoirement pour le fun. Aujourd'hui, les braqueurs de banques n'existent presque plus, mais leurs remplaçant sont arrivés. On voit donc se profiler de plus en plus d'attaque qui sont ciblées représentant une nouvelle technique de chantage que bons nombres de pirates exercent maintenant allégrement. En effet, les sociétés dont la principale activité est basée sur un flux d'information Internet, souvent avec des sommes importantes en jeu, sont menacées.
Les pirates actuels utilisent donc les attaques par déni de service comme nouvelle arme pour exercer un chantage contre les sociétés connectés à Internet. Le message est clair "La bourse ou l'exploitation de votre site". Il est évident que le ralentissement, voir même le blocage de leurs services pendant quelques heures, pourrait occasionner de grandes pertes d'argent ainsi que beaucoup de désagréments pour leurs clients. Ces sociétés ont donc tout intérêt à obéir ou à trouver une parade pour s'en protéger, sans quoi les menaces seraient mises à exécution et ou pourraient perdurer.
Cette nouvelle arme est maintenant utilisée de plus en plus couramment. Toutes les sociétés gérant de l'argent sont menacées, aucune n'est à l'abri. Toute société accessible par Internet est ouverte est potentiellement en danger. On remarque d'ailleurs le nombre d'attaques de ce genre augmente chaque année.
Le mot de la fin
Il ne faut pas sous-estimer la puissance de ces attaques. De plus, il faut aussi prendre conscience qu'il existe deux catégories d'individus dangereux sur la planète :
- Les bandes organisées sont issues des groupes mafieux, des terroristes et etc.
- Les adolescents ou jeunes adultes qui sont inconscients. De plus, ils se sentent rassurés et protégés du fait d'être dans leurs chambres derrière leurs ordinateurs personnels.
Pour se protéger de ce type d'attaque, il est nécessaire d'investir dans la sécurité interne en créant un poste ou service dédié au sein de l'entreprise. Leurs deux objectifs principaux devront être la prévention et le curatif. Le premier sera de mener une veille active sur les nouvelles attaques et vulnérabilités. Le second objectif, le curatif, devra procéder à un suivi régulier des différentes mise à jour et d'être très réactifs sur la surveillance des événements relatés en supervision de l'architecture sécurité.
La réalité du risque est donc évidente, dans ce cas, il peut être intéressant de contracter une police d'assurances couvrant les pertes éventuelles engendrées par une attaque de ce type.
Exemple d'attaque DoS (SynFlood) sous Kali
- Si l'adresse IP et le port de la cible ne sont pas connus et qu'elle se trouve sur le même réseau que vous, lancer un scan du réseau avec nmap en tapant dans un terminal : "nmap -sP X.X.X.1-255" pour obtenir la liste des périphériques sur le réseau.
Une fois l'IP cible localisée, lancer la commande "nmap X.X.X.X" pour révéler les ports utilisables.
- Taper "msfconsole" dans un terminal. Cela devrait lancer Metasploit s'il est bien installé et configuré.
- Une fois que Metasploit est lancé, taper "use auxiliary/dos/tcp/synflood" pour préparer l'interface à une attaque SynFlood.
- Taper "show options", cela devrait lister les paramètres de l'interface SynFlood. Ici, le RHOST et le RPORT représentent respectivement l'adresse IP et le port de la cible.
- Taper "set RHOST ipdelacible" et "set RPORT numerodeportdelacible"
- Enfin, taper "exploit". L'attaque est lancée.