Stéphane BOEUF
DESS Réseaux
Grégory DANELON
Année 2001-2002
Sujet bibliographique
D e nia l o f S e r v ic e ( D é n i d e se r vi c e )
Mars 2002
Université Claude Bernard Lyon 1 UFR d’informatique
Denial of Service
SOMMAIRE 1. INTRODUCTION ...........................................................................................................................................................................4 2. PRINCIPE .........................................................................................................................................................................................5 2.1. Première approche..................................................................................................................................................................5 2.2. Classification.............................................................................................................................................................................5 2.2.1. Consommation de bande passante.................................................................................................................................5 2.2.2. Déni de connexion............................................................................................................................................................6 2.2.3. Épuisement des ressources ..............................................................................................................................................6 2.2.4. Défauts de programmation..............................................................................................................................................6 2.3. Historique ..................................................................................................................................................................................7 3. LA TECHNIQUE DE BASE : IP SPOOFING........................................................................................................................8 3.1. Principe ......................................................................................................................................................................................8 3.2. ICMP Spoofing. .......................................................................................................................................................................8 3.3. UDP Spoofing...........................................................................................................................................................................8 3.4. TCP Spoofing. ..........................................................................................................................................................................8 3.4.1. Le principe .........................................................................................................................................................................8 3.4.2. La technique ......................................................................................................................................................................9 3.4.2.1. Détermination de la machine de confiance ..................................................................................................................9 3.4.2.2. Invalidation de la machine de confiance ......................................................................................................................9 3.4.2.3. Echantillonnage des numéros de séquence et prédiction :...........................................................................................9
4. DENI DE SERVICE DISTRIBUE........................................................................................................................................... 11 5. LES DIFFERENTES ATTAQUES .......................................................................................................................................... 14 5.1. Déni de connexions............................................................................................................................................................... 14 5.1.1. Le TCP-SYN flooding...................................................................................................................................................14 5.1.2. L’attaque Land ................................................................................................................................................................15 5.1.3. Click..................................................................................................................................................................................15 5.2. Déni de bande passante ....................................................................................................................................................... 15 5.2.1. L'UDP flooding...............................................................................................................................................................15 5.2.2. Le ping flooding..............................................................................................................................................................15 5.2.3. Smurf ................................................................................................................................................................................16 5.2.3.1. Principe.......................................................................................................................................................................16 5.2.3.2. Protection ...................................................................................................................................................................16
5.2.4. Smack-Bloop...................................................................................................................................................................17 5.3. Le packet Fragment............................................................................................................................................................. 17 5.3.1. Ping of Death ...................................................................................................................................................................17 5.3.1.1. Principe.......................................................................................................................................................................17 5.3.1.2. Protection ...................................................................................................................................................................17
5.3.2. Teardrop ...........................................................................................................................................................................17 5.3.2.1. Principe.......................................................................................................................................................................17 5.3.2.2. Protection ...................................................................................................................................................................18
5.3.3. Bonk..................................................................................................................................................................................18 5.3.3.1. Principe.......................................................................................................................................................................18 5.3.3.2. Protection ...................................................................................................................................................................18
5.3.4. Boink.................................................................................................................................................................................18 5.4. Déni de messages .................................................................................................................................................................. 18 5.4.1. Attaque par routage........................................................................................................................................................18 5.4.1.1. Principe.......................................................................................................................................................................18 5.4.1.2. Protection ...................................................................................................................................................................18
5.4.2. DNS Spoofing .................................................................................................................................................................19 5.4.2.1. Principe.......................................................................................................................................................................19 5.4.2.2. Protection ...................................................................................................................................................................20
5.4.3. ARP redirect ....................................................................................................................................................................20 5.4.3.1. Principe.......................................................................................................................................................................20 5.4.3.2. Protection ...................................................................................................................................................................20
5.4.4. ICMP type 5.....................................................................................................................................................................20 5.5. Deux autres attaques ........................................................................................................................................................... 21 5.5.1. Pong ..................................................................................................................................................................................21
Page 2 sur 39
Denial of Service 5.5.2. Bombardement de courrier............................................................................................................................................21 5.5.2.1. Principe.......................................................................................................................................................................21 5.5.2.2. Liaison de listes ..........................................................................................................................................................21 5.5.2.3. Mail Bomber ...............................................................................................................................................................22 5.5.2.4. Protection ...................................................................................................................................................................22
5.6. Les virus .................................................................................................................................................................................. 22 5.7. Autres types ........................................................................................................................................................................... 23 6. LA PROTECTION....................................................................................................................................................................... 25 6.1. Les symptômes d’une attaque........................................................................................................................................... 25 6.2. L'analyse du backscatter.................................................................................................................................................... 25 6.3. Pushback................................................................................................................................................................................. 27 6.4. Les firewalls ........................................................................................................................................................................... 27 6.5. Lutter contre l'IP Spoofing ................................................................................................................................................ 28 6.5.1. Général.............................................................................................................................................................................28 6.5.2. Filtrer les paquets............................................................................................................................................................28 6.5.3. Désactiver le source routing..........................................................................................................................................28 6.5.4. Utiliser le chiffrement....................................................................................................................................................28 6.5.5. Utiliser un numéro de séquence initial aléatoire .......................................................................................................29 6.6. Ipv6 ........................................................................................................................................................................................... 29 6.7. Les détecteurs d'intrus (IDS) ............................................................................................................................................ 29 6.7.1. Le mode de fonctionnement..........................................................................................................................................29 6.7.1.1. IDS à bibliothèque de signatures ................................................................................................................................29 6.7.1.2. IDS à modèles comportementaux ...............................................................................................................................29
6.7.2. La zone de fonctionnement...........................................................................................................................................30 6.7.2.1. IDS Réseau..................................................................................................................................................................30 6.7.2.2. IDS Système................................................................................................................................................................30
6.8. Se protéger ............................................................................................................................................................................. 30 6.8.1. Correctifs et mises à jour...............................................................................................................................................30 6.8.2. Configuration...................................................................................................................................................................30 6.8.3. Toujours informé ............................................................................................................................................................31 6.8.4. Audits................................................................................................................................................................................31 6.8.5. Conclusion .......................................................................................................................................................................31 7. QUELLE EVOLUTION ? .......................................................................................................................................................... 32 8. CONCLUSION.............................................................................................................................................................................. 33 ANNEXE A : RAPPELS TECHNIQUES ................................................................................................................................... 34 Le protocole IPv4 ......................................................................................................................................................................... 34 [ La Fragmentation ............................................................................................................................................................34 Le protocole UDP ......................................................................................................................................................................... 35 Le protocole TCP......................................................................................................................................................................... 35 [ TCP et phase de connexion ...........................................................................................................................................35 [ Incrémentation de numéro de séquence et ISN..........................................................................................................36 [ Ports...................................................................................................................................................................................36 [ Rlogin ................................................................................................................................................................................36 Le protocole ICMP ...................................................................................................................................................................... 36 ANNEXE B : DOCUMENTATIONS .......................................................................................................................................... 38 Livres ............................................................................................................................................................................................... 38 Sites Internet................................................................................................................................................................................. 38
Page 3 sur 39
Denial of Service
1. INTRODUCTION La sécurité informatique présente, d’un point de vue historique, trois aspects : la confidentialité, l’intégrité et la disponibilité. La confidentialité est la protection de la vie privée. Son but est d’empêcher des utilisateurs non autorisés de lire des informations sensibles. Les moyens mis en oeuvre sont la cryptographie, la signature numérique, la configuration des droits d’accès par mot de passe ... L’intégrité est l’assurance que les données n’ont pas été supprimées ou modifiées sans autorisation. Chaque élément de donnée est tel que l’a laissé le dernier modificateur autorisé. Pour préserver l’intégrité des données, un système de sauvegardes doit être mis en place. La disponibilité est la propriété de ce qui est accessible ou utilisable à la demande d’une entité autorisée. La disponibilité cherche à garantir qu’un assaillant ne pourra pas empêcher des utilisateurs légitimes d’avoir un accès raisonnable à leurs systèmes. Les attaques par déni de service visent le dernier point, i.e. la disponibilité. Globalement une attaque par déni de service crée un dérangement ou bien interrompt totalement la fourniture de services à des utilisateurs, des réseaux, des systèmes ou à d’autres ressources légitimes. En informatique, il existe une multitude de façons de rendre une machine ou un système inopérant. Sous Windows 95, le simple fait de donner un mot de passe trop long (plus d’une vingtaine de caractères) suffisait à provoquer un débordement de tampon, et donc à faire planter le système d’exploitation. Dans ce dossier, nous étudierons principalement les attaques par déni de service à distance, i.e. le pirate n’est pas sur la machine victime mais sur sa propre machine et il utilise les réseaux informatiques, tel qu’Internet, pour lancer son attaque. L’attaque par refus de service est une attaque particulièrement novice pour des systèmes de communication, ces derniers ayant été conçus pour communiquer. Sur Internet, inonder un ordinateur de requêtes de communication est un bon moyen de le bloquer. En premier lieu il convient d’expliquer les bases et les principes d’une attaque par déni de service. Nous étudierons ensuite une technique clé pour rester anonyme : la mystification d’adresses IP. Nous verrons une extension aux attaques par déni de service : les attaques distribuées. Nous évoquerons ensuite les attaques par déni de services les plus connues, puis les moyens de prévention et de protection contre ces attaques. Enfin, avant de conclure, nous nous interrogerons sur les évolutions possibles des attaques par déni de service. Pour bien comprendre les mécanismes utilisés lors d’une attaque par déni de service concernant les protocoles de communication dans Internet, il est important de connaître le fonctionnement de TCP/IP. Un rappel technique joint en annexe est prévu à cet effet. La plupart des documents que nous avons trouvés datent de l'an 2000, période ou les attaques de déni de services ont été si fréquentes et si médiatisées. Nous avons trouvé assez peu de documents très récents pour connaître si des logiciels efficaces ont vu le jour ou si des techniques de protection se sont avérées efficaces. Dans la suite du rapport, nous emploierons les termes DoS, déni de service, refus de service ou bien encore dénégation de service indifféremment.
Page 4 sur 39
Denial of Service
2. PRINCIPE 2.1. Première approche Le principe d’une attaque par déni de servie est simple : empêcher un système de fonctionner. Le monde physique regorge d’exemples de DoS comme les boycotts, les grèves ou les barrages routiers. Les attaques par DoS peuvent être le prélude à des attaques criminelles. Des cambrioleurs s’approchent d’un entrepôt et sectionnent discrètement les fils qui relient l’alarme anti- intrusion au poste de police. L’alarme se déclenche et signale à la police que la connexion est rompue. Tandis que les cambrioleurs se mettent à l’abri, la police arrive mais ne trouve rien. Elle en conclut un disfonctionnement du système que le propriétaire de l’entrepôt règlera le lendemain. Les cambrioleurs reviennent et peuvent tranquillement vider l’entrepôt. On a bien une attaque DoS puisque le service "alarme" a été interrompu. Une technique de vol de voitures consiste à déclencher l’alarme de cette dernière périodiquement à 2h00 du matin, 2h10, 2h20, 2h30, ... etc., jusqu’à ce que son propriétaire désactive cette alarme pour calmer les voisins furieux. Au petit matin, la voiture en question a disparu. Dans cet exemple, le voleur a usé de la patience du propriétaire de manière à l’obliger à refuser un service, l’alarme de sa voiture. En situation de guerre, les belligérants lancent constamment des attaques DoS. Chaque camp cherche à bloquer les systèmes de défense (radar...) et les systèmes d’attaques (guidage de missiles...) de l’autre, à désorganiser les systèmes de communication et à couper les voies de transport. Ces exemples, parmi tant d’autres, montrent combien une attaque DoS est simple à mener, autant dans les moyens mis en oeuvre que dans l’exécution, et donne immédiatement des résultats concrets. C’est l’une de leur caractéristique : les attaques basse technologie (comme le bombardement d’un centre informatique) fonctionnent souvent mieux que les attaques haute technologie (comme trouver la faille d’un système). Les attaques DoS s’apparentent à des attaques basse technologie. Ce qui se passe dans le monde physique se produit depuis une dizaine d’années dans le monde virtuel des réseaux et d’Internet.
2.2. Classification Une attaque DoS est une attaque consistant à empêcher l'utilisation d'un service en déconnectant ou en faisant tomber en panne l'ordinateur offrant ou utilisant le service. L'attaque DoS est également appelée Nuke. Certaines attaques DoS peuvent être effectuées avec succès à partir d'un petit ordinateur contre un serveur. Ce sont des attaques asymétriques. Il est important dans un premier temps d’identifier les types d’attaques DoS. C’est pourquoi nous allons explorer les fondements théoriques qui sont sous-jacents aux différents types d’attaques DoS les plus courants. 2.2.1. Consommation de bande passante La forme la plus insidieuse d’attaque DoS est l’attaque par consommation de bande passante. Elle consiste à utiliser la bande passante qu’offre un réseau au détriment des utilisateurs légitimes dudit réseau. Bien que ceci puisse se produire sur un réseau local, il est plus courant de trouver des pirates qui agissent à distance. Page 5 sur 39
Denial of Service
On distingue deux cas : Ø Le pirate possède une connexion réseau de plus haut débit que sa victime. Il peut alors facilement l’inonder et bloquer son système, ou au mieux le rendre très lent et donc inutilisable. Ø Le pirate ne dispose pas d’une bande passante suffisante face à sa victime. Il va alors recruter des sites offrant une connexion de plus haut début, en prenant leur contrôle de manière à diriger leurs trafics sur la victime. C’est une technique d’amplification puisque les systèmes qu’exploite le pirate sont des amplificateurs. 2.2.2. Déni de connexion Le principe d’une attaque du type déni de connexion est simple : empêcher un utilisateur légitime d’atteindre, via le réseau, le système victime. Il existe plusieurs moyens de procéder. La première méthode consiste à épuiser les ressources du système de telle façon qu’il refuse toute nouvelle connexion. Cela est possible quand un pirate tente d’ouvrir un grand nombre de connexions sans les garder. Comme le nombre de connexions possibles sur un serveur est limité, plus ou peu d’utilisateurs peuvent se connecter. La deuxième méthode amène le pirate à cibler les systèmes qui identifient et répertorient les machines qu’ils administrent ou gèrent pour supprimer la machine victime. Ces attaques sont sournoises puisqu’elles ont pour conséquence de rendre "invisible" la victime aux yeux des utilisateurs. 2.2.3. Épuisement des ressources Une attaque par épuisement des ressources vise à saturer les ressources système et non les ressources réseau comme dans une attaque par consommation de bande passante. Les ressources système sont l’utilisation de CPU, mémoire, espace disque, quotas utilisateurs et autres processus systèmes. Bien souvent, le pirate a un accès légitime à une quantité finie des ressources système. Mais c’est l’utilisation abusive de cet accès qui conduit à consommer des ressources supplémentaires. Le système est alors très occupé et empêche les autres utilisateurs légitimes d’accéder aux ressources. De plus, quand toutes les ressources sont occupées, le système se bloque car il ne dispose plus de ressources pour son propre fonctionnement. Toutes les ressources deviennent alors inutilisables. 2.2.4. Défauts de programmation Les attaques par défauts de programmation sont très sournoises car elles exploitent directement des erreurs de conception d’un système d’exploitation, d’un logiciel, ou d'une puce électronique à logique incorporée. Ces erreurs, plus couramment appelées "bugs", se produisent exceptionnellement sous certaines conditions que les concepteurs n’avaient pas prévu. Au niveau applicatif, de nombreux bugs découlent directement d’une mauvaise utilisation de la mémoire ou des manques de vérification. Dans le cas d’échange de données, le programme utilise un tampon en mémoire de longueur fixe pour recevoir ces données. Or le pirate connaît cette limite et envoie volontairement des données de taille supérieure au tampon. Il provoque alors un débordement de tampon et bloque l’application. Pire, dans le cas de certains logiciels, celui-ci ne se bloque pas lors d’un débordement de tampon mais peut poursuivre son exécution et prendre les données envoyées par le pirate et hors tampon comme étant la suite du programme. Si en plus le logiciel possède les droits administrateur, les commandes codées par le pirate et exécutées illégalement peuvent altérer les données et l’intégrité du système. Les systèmes d’exploitation peuvent également subir des attaques du type débordement de tampon. La gestion des différentes entrées-sorties peut aussi leur causer des problèmes. Un paquet bizarre non conforme RFC envoyé par un pirate vers un système cible via le réseau peut être mal interprété et entraîné des réactions imprévues, comme le blocage du système. Une mauvaise implémentation des protocoles réseau ou une trop grande liberté prise envers les RFC peuvent conduire à des bugs. Les systèmes visés sont les serveurs, mais aussi les routeurs ou d’autres éléments actifs qui embarquent des micro- logiciels et des systèmes d’exploitation. Page 6 sur 39
Denial of Service
Des défauts de programmation apparaissent également dans les puces à logique incorporée. Outre le fait qu’une telle puce se comporte anormalement quand elle chauffe, elle peut sous certaines conditions provoquer un blocage de la machine. La célèbre attaque DoS Pentium f00f a permis à un processus de type utilisateur de bloquer tout un système d’exploitation en exécutant l’instruction non valide 0xF00FC7C8. Comme on peut le constater chaque jour, il n’existe pas de programme, de système d’exploitation ou même de CPU sans défaut. Les pirates connaissent aussi cet axiome et profitent au maximum de ces bugs pour attaquer et bloquer des applications critiques ou les systèmes vulnérables et sensibles.
2.3. Historique Les attaques par DoS ne sont pas des phénomènes récents : le premier exemple d’attaque date d’Avril 92. Plus récemment, nous pouvons noter les dates suivantes : Ø 1996 § Décembre : Ping Of Death Ø 1997 § Juillet : WinNuke, Smurf § Octobre : Land § Décembre : Teardrop / Overdrop Ø 1998 § Janvier : Bonk, Boink, Fraggle Ø 1999 § Mars : virus Melissa § Juillet 1999 : apparition des outils d’attaques DDoS comme Trinoo et TFN. § Août : Attaque DDoS avec Stracheldraht § Décembre : TFN2K (nouvelle version de TFN plus difficile à détecter) Ø 2000 § Février : Vagues d’attaques DoS sur plusieurs grands sites Web § Août : Outil d’attaque DDoS Trinity Ø 2001 § Février : Propagation du virus VBS/OnTheFly (Anna Kournikova) § Juillet : Propagation du virus W32/Sircam et Code Red. Ce dernier déclenche sur une cible donnée une attaque DDoS de type inondation SYN TCP sur plusieurs machines. § Août : Code Red II § Septembre : Virus Nimda qui peut déclencher une attaque DDoS.
Page 7 sur 39
Denial of Service
3. LA TECHNIQUE DE BASE : IP SPOOFING 3.1. Principe L’IP spoofing est le mécanisme de falsification d’une adresse dans un paquet IP (spoof = parodie). Pour dissimuler leur emplacement et éviter une réponse, les attaquants modifient l’adresse source de chaque paquet IP qu’ils envoie nt. Les paquets semblent ainsi provenir d’une tierce personne. Cela rend plus difficile les tentatives pour remonter jusqu’à l’agresseur et évite de surcharger la machine attaquante par les réponses de la cible. L'IP Spoofing est une technique largement utilisée dans de nombreux types d'attaques. Cependant il ne faut pas penser que la tâche soit simple. En effet, IP ne fonctionne pas tout seul et il est toujours (ou presque) utilisé avec un protocole de niveau supérieur. L'IP Spoofing a fait ses preuves, aussi bien sur ICMP, sur UDP ou sur TCP. Cependant la difficulté de sa mise en place varie beaucoup selon le protocole utilisé : Ø Le protocole ICMP envoie des messages et n'attend aucune réponse en retour, il est donc très facile d'envoyer des messages ICMP spoofés. Ø Le protocole UDP sert quand à lui à la communication entre tâches clientes et serveur. Ce protocole fonctionne en mode non connecté, il est donc assez facile d'envoyer des paquets avec une fausse adresse IP sans que le serveur ne se rende compte de rien. Cependant il nous sera impossible de recevoir une éventuelle réponse du serveur du fait qu'il renvoie tout vers la fausse adresse IP. Ø L'IP Spoofing sur TCP est la plus difficile à mettre en œuvre (mode connecté). Nous étudierons en détail sa technique de mise en œuvre. Dans la littérature, on trouve parfois le mot d'adresse forgée à la place d'adresse spoofée ; les deux termes désignant une adresse falsifiée par IP spoofing.
3.2. ICMP Spoofing. L'ICMP Spoofing est très certainement le plus répandu car c'est le plus facile à mettre en oeuvre. Cepend ant, sa simplicité ne le rend en rien inoffensif.
3.3. UDP Spoofing. Si on envoie un paquet à un serveur qui fonctionne avec le protocole UDP, celui-ci traite le paquet directement. Il n'y a pas de contraintes comme celles dues au processus de connexion du protocole TCP. De ce fait il est très simple d'envoyer des paquets UDP spoofés.
3.4. TCP Spoofing. 3.4.1. Le principe L'IP spoofing sur TCP nécessite plusieurs étapes. Premièrement, l'attaquant doit choisir sa victime. Ensuite, il doit trouver une configuration pour laquelle la victime autorise une connexion avec une machine de confiance. L'intérêt est de se faire passer pour cette machine autorisée. Pour cela, la machine autorisée est rendue invalide par SYN Flooding (pour ne pas pouvoir réagir). Les numéros de séquence du serveur sont analysés. Une connexion simulée avec des paquets falsifiés de l'attaquant est alors demandée au serveur avec des numéros de séquence devinés. Si la connexion est établie, c’est gagné ! L'attaquant peut alors modifier des informations pour permettre de revenir plus facilement ultérieurement (backdoor). Page 8 sur 39
Denial of Service
L’usurpation de l’identité de la victime permet à l’attaquant de passer le firewall
3.4.2. La technique Il ne faut pas oublier dans l'IP spoofing sur TCP que les attaques se font en aveugle. Comme l'attaquant subtilise l'identité d'une machine de confiance pour contourner la sécurité du serveur, les datagrammes sont renvoyés par le serveur à destination de la machine de confiance (qui a été invalidée). En effet, les datagrammes IP fonctionnent sans connexion, donc l'attaquant ne les voit jamais. Comme la machine de confiance a été au préalable rendue inopérationnelle, elle n'est pas capable de répondre aux datagrammes reçus et c'est donc à l'attaquant d'être suffisamment documenté sur l'état de la communication des machines pour pouvoir prédire ce que le serveur attend en retour. Nous prenons comme notation symbolique : Ø V: un ordinateur cible ou victime Ø W: un serveur ou une machine qui a confiance en V Ø Z : une machine attaque 3.4.2.1. Détermination de la machine de confiance Une fois que la cible (V) a été choisie, on utilise des commandes comme "showmount -e" qui montre où sont exportés les systèmes de fichiers ou bien "rpcinfo" qui apporte des informations supplémentaires. 3.4.2.2. Invalidation de la machine de confiance Pour éviter que la machine de confiance (W) ne puisse répondre au serveur lorsque celui-ci répond aux datagrammes falsifiés, il est important d'invalider la machine de confiance. Ceci est généralement effectué par le biais d'un mécanisme appelé TCP SYN flooding (cf. Les différentes attaques). Cette invalidation est nécessaire pour que la machine ne puisse pas répondre aux paquets envoyés par le serveur cible. Dans le cas contraire elle enverrait des paquets TCP RST qui mettraient fin à l'établissement de la connexion. 3.4.2.3. Echantillonnage des numéros de séquence et prédiction : L'attaquant doit avoir une idée du nombre contenu dans le numéro de séquence de la cible (le serveur), pour cela il va se connecter sur un port TCP de la machine cible (par exemple SMTP) et analyser les trames qui transitent. Ce processus est recommencé plusieurs fois et à chaque fois on conserve le numéro de séquence de la cible de façon à établir des statistiques sur l'incrémentation (dépendant du temps de transfert). L'attaquant possède alors toutes les clés : le dernier numéro de séquence émis, les données de changement ISN (128 000/seconde et 64 000/connexion) et le temps nécessaire. Aussitôt après avoir pris connaissance de ces paramètres, l'attaque est lancée.
Page 9 sur 39
Denial of Service
Plusieurs cas peuvent alors se produire : Ø Le numéro d'acquittement correspond parfaitement, et dans ce cas les données sont placées en attente dans le buffer TCP. Ø Si le numéro d'acquittement est inférieur au numéro attendu, alors le paquet est supprimé (car considéré comme une réémission). Ø Si le numéro est supérieur à ce qui est attendu mais reste dans la limite acceptable par la fenêtre de transmission, il est maintenu en attente des paquets intermédiaires sinon il est purement supprimé. Voici le mécanisme de l'attaque : Temps 1 2 3 4 ....
@1 Z(W) W Z(W) Z(W)
Action --SYN--> <--ACK/SYN---ACK--> --PUSH-->
@2 V V V V
En (1), l'attaquant simule l'adresse IP de la personne de confiance (qui subit une attaque de déni de service SYN Flooding) et envoie sa connexion sur le port 513 (rlogin est le plus utilisé) de la victime. En (2), la cible répond à la machine falsifiée qu'elle autorise la communication. Comme la machine falsifiée est "hors circuit", elle supprime le paquet au lieu de renvoyer un RST comme elle aurait du le faire. En (3), l'attaquant renvoi un paquet avec le numéro de séquence de la cible prédit + 1 puisqu'on l'acquitte. Si la prédiction est bonne, la cible accepte le ACK, et la sécurité est alors compromise puisque les transferts peuvent commencer (4). L'attaquant peut donc envoyer une commande au service rsh pour obtenir des droits supplémentaires, comme echo ++ >> /.rhosts. Pour cela il forge un paquet avec le flag TCP PSH (Push) : les données reçues sont immédiatement transmises à la couche supérieure, ici le service rsh, pour que celle-ci les traite. Il lui est alors possible de se connecter ultérieurement sur la machine directement via un service de type rlogin ou rsh sans IP Spoofing. Une méthode permet de ne pas attaquer en aveugle, c'est l'utilisation du source routing. En effet, avec l'utilisation des champs options du datagramme IP, il est possible de spécifier une route pour un paquet de données. Ainsi, il suffit que l'attaquant rajoute ce champ option avec un chemin de retour passant par lui de façon à ce qu'il puisse voir le contenu de tous les messages à destination de la machine usurpée. Dans ce cas, l'utilisation devient nettement plus simple, puisque l'attaquant n'a plus besoin de faire de prédiction de numéro de séquence et il peut contrôler la validité de tous les messages envoyés et reçus. Cette méthode n'est plus maintenant utilisable.
Page 10 sur 39
Denial of Service
4. DENI DE SERVICE DISTRIBUE C'est en 1997 que, pour la première fois, on pense qu'il est possible technologiquement de réaliser une attaque DoS distribuée (DDoS). Deux ans plus tard, en 1999, on identifie les trois premiers outils utilisés pour du DDoS. Il s'agit de TRINOO, de Tribal Flood Net et de Stachedraht. Dès lors, des systèmes pour contrer ces logiciels sont développés par diverses sources mais principalement par le FBI National Infrastructure Protection Center (NIPC). Le principe est de détecter des codes sources caractérisant un DDoS. A l'époque, des recommandations ont été faites auprès des principales organisations pour qu'elles téléchargent et utilisent ces outils. Les administrateurs de ces systèmes ne prêtèrent que peu d'attention à ces conseils. Ces outils ne protègent pas la victime d'une DDoS mais réduit le nombre de sources potentielles d'attaques. Sur un plan plus juridique, l'utilisation de ces logiciels prouve la bonne foi de l'entreprise et la met à l'abri si elle se retrouve esclave d'une attaque DDoS. Dans une attaque DDoS, il y a trois types de protagonistes : Ø Le maître (machine utilisée par l'attaquant) Ø La victime (machine visée par l'attaquant) Ø Les esclaves (machines ou serveurs dont va se servir illicitement l'attaquant)
Victime
Esclaves
Sous Réseau
Maître
Page 11 sur 39
Denial of Service
L’attaquant utilise un nombre important de ces esclaves pour lancer une attaque sur la victime. Ces esclaves sont commandés par une machine Maître (machine utilisée par l'attaquant). Dans certains cas, les esclaves utilisent réellement (et sans intention malfaisante de leur part) d'autres hôtes de leur réseau comme des miroirs pour donner encore plus de trafic à leur victime. Avant de lancer une attaque, l'attaquant s'immisce dans ses futurs esclaves (des gros serveurs avec une connexion Internet à large bande généralement) et installe un ou plusieurs logiciels sur chacun d'eux (le pirate utilise des failles connues comme le buffer overflow sur des services RPC, FTP ou autres). Ces logiciels transforment alors les hôtes en esclaves qui attendent leur instruction du Maître pour envoyer des requêtes au site victime identifié. Le Maître transmet cette information par un message à un instant donné. Grâce au(x) logiciel(s) installé(s), l'attaquant est libre de lancer des attaques contre n'importe quel site de son choix. L'attaquant peut de plus utiliser l'IP spoofing pour rendre son attaque plus sournoise. Cela rend encore plus dure la remontée de la trace jusqu'aux esclaves et encore plus jusqu'à la machine Maître. De plus, il est probable que l'attaquant utilise un autre système que celui dont il s'est servi pour pénétrer les machines hôtes. On voit ainsi que remonter jusqu'à la machine Maître n'est pas forcement suffisant pour pouvoir identifier le véritable attaquant. L'attaquant peut également utiliser le spoofing d'adresse pour créer un effet multiplicateur (comme nous l'avons précédemment vu). Dans notre cas, l'esclave peut alors diffuser à toutes les machines de son sous réseau un message de broadcast dont l'adresse IP semble être celle de la victime. Ces messages requièrent tous une réponse de la part des machines qui vont le recevoir. Ainsi, chaque machine du sous réseau de l'esclave réalise une partie de l'attaque en envoyant une réponse à la victime qui n'a rien demandé. Ces sous réseaux en questions peuvent être des sous réseaux d'esclaves mais également tout sous réseau protégé par un routeur qui serait configuré pour autoriser les messages de diffusion qui viendraient de l'extérieur du sous réseau. Notons que les propriétaires de ces esclaves ne sont absolument pas au courant de l'utilisation illicite de leurs machines. Cependant une sécurité assez lâche fait de ces systèmes des candidats idéaux pour une prise de pouvoir. On avance que cinquante gros serveurs (probablement localisés dans les universités) ont été utilisés comme esclave dans le cadre de DDoS. Il faut reconnaître que les sites universitaires sont particulièrement visés car ils ont typiquement le profil recherché : des accès Internet rapides, une politique de sécurité assez laxiste et des sous réseaux étendus. Pour amplifier encore le phénomène de diffusion, l’attaquant utilise les réflecteurs. Un réflecteur est un hôte qui diffuse les paquets IP qu’on lui envoie. Ainsi, par exemple, tous les serveurs du Web, les serveurs de DNS et des routeurs sont des réflecteurs, puisqu'ils répondent aux requêtes TCP. L’attaquant localise plusieurs réflecteurs. Il va programmer les esclaves de façon à diriger le trafic à destination de la victime en passant par les réflecteurs. Ces derniers vont alors envoyer les paquets reçus vers la victime, multipliant ainsi le trafic vers la victime. La figure suivante illustre ce principe.
Page 12 sur 39
Denial of Service
Enfin, l'utilisation des réflecteurs complique encore la tâche de la victime pour repérer l'attaquant et bloquer l'attaque.
Page 13 sur 39
Denial of Service
5. LES DIFFERENTES ATTAQUES Les attaques par déni de service se basent principalement sur un disfonctionnement (naturel ou forcé) des protocoles de la pile TPC/IP. Nous pouvons classer ces attaques selon leur effet : Ø celles qui n’affectent que les connexions de la machine (SYN Flooding, Land) Ø celles qui consomment de la bande passante (UDP Flooding, Ping Flooding, Smurf) Ø celles qui crashent la machine par Packet Fragment (Teardrop, bonk, ping of Death) Ø celles qui privent la machine de message (ICMP type 5, DNS Spoofing, ARP Redirect) Ø Les virus (Code Red, Nimda…)
5.1. Déni de connexions 5.1.1. Le TCP-SYN flooding Nous avons vu qu'une connexion TCP s'établie en trois phases. Le SYN Flooding exploite ce mécanisme d'établissement en trois phases. Quand une connexion est demandée avec le flag SYN activé, le récepteur renvoie un SYN/ACK et attend le ACK de la part de l'émetteur. Tant que l'émetteur n'a pas renvoyé son ACK, la connexion n'est pas établie : on dit qu la connexion est semiouverte. 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 connexions (cette limite s'appelle le backlog et vaut généralement 5). Jusqu'à ce que des connexions en attente soient établies, le port TCP sur lequel les requêtes SYN ont abouties est invalide. L'attaquant doit s'assurer que les paquets envoyés sont encore une fois falsifiés comme provenant d'une machine inatteignable (Unreachable Host) car sinon celle-ci renverrait un message Reset (bit RST positionné) à chaque SYN/ACK ce qui annulerait l'effet recherché. Normalement, il y a un système de "timeout" (i.e. si le système attend un événement particulier, au bout d’un certains temps, il considère que cet événement n’apparaîtra plus et génère une erreur ou un message) associé à chaque connexion. Les demi connexions, au bout d'un certain temps, doivent expirer. Le serveur victime peut alors récupérer de la place libre dans sa mémoire pour d’autres connexions. Toutefois, le système agresseur continue généralement d'envoyer des paquets plus vite que le temps nécessaire au serveur pour faire expirer les demi connexions. L'attaque a lieu comme suit : Temps 1 2 3 .... M M+1 .... N
@1 Z(X) Z(X) Z(X)
Action --SYN--> --SYN--> --SYN-->
@2 V V V
X X
<--ACK/SYN-<--ACK/SYN--
V V
X
<--RST--
V
En (1), l'attaquant Z envoie toute une multitude de requêtes SYN pour remplir le backlog. En (M), la cible V renvoie des paquets TCP SYN/ACK à ce qu'elle croit être l'émetteur : X. Cette phase dure un petit moment (car X est inatteignable) et pendant ce temps, aucune connexion sur le port TCP utilisé n'est prise en compte ! En (N), lorsqu'un certain temps s'est écoulé la machine cible décide d'annuler la connexion.
Page 14 sur 39
Denial of Service
Notons que 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. La localisation de l’attaque est très complexe car les adresses contenues dans les paquets SYN envoyés sont très souvent falsifiées et tirées aléatoirement pour éviter toute identification de la machine d'attaque. Il n’y a donc pas de moyen facile pour déterminer la véritable source. Internet faisant suivre les paquets grâce à l’adresse de destinatio n, le seul moyen de s’affranchir de ces attaques est de valider la source d’un paquet en utilisant le filtrage. Cette attaque (accomplie en septembre 1996 par un pirate ou un groupe de pirate inconnu sur Panix, un FAI implanté à New York) est le premier exemple connu d’attaque par refus de service contre un hôte Internet. 5.1.2. L’attaque Land Quelques implémentations (sous Win32) de TCP/IP sont vulnérables quand elles reçoivent des paquets de synchronisation (SYN) modifiés ayant comme adresse source et adresse de destination l'adresse de la victime. Lors de la réception de ce type de paquet, l'ordinateur de la victime ne saura que faire en voyant que l'adresse source et l'adresse de destination sont identiques ; l'ordinateur de la victime essaie de se répondre à elle-même et plante. Sous Windows 95 l'ordinateur se fige. Sous Windows NT la station est fortement ralentie momentanément. L’attaquant pourra renouveler son attaque pour saturer complètement NT. Cette attaque concerne toutes les ressources réseau IP, y compris les imprimantes réseau. Il faut configurer le firewall ou le routeur pour filtrer les paquets qui ont la même adresse IP en source et destination, et ce sur tous les ports. 5.1.3. Click Il s'agit d'un exemple d'envoie massif de paquets ICMP type 3 (Destination Unreachable) vers une cible donnée. Si l'attaquant sait que la cible est connectée à un serveur dont il connaît l'adresse IP, il lui suffit d'envoyer à la cible une multitude de paquets ICMP type 3 avec une adresse source correspondant à l'adresse IP du serveur. La cible va donc penser que les paquets proviennent effectivement du serveur et qu'elle ne peut pas l'atteindre. Elle va donc se déconnecter de manière spontanée. Click a fait des ravages sur l'Irc pendant un bon moment.
5.2. Déni de bande passante 5.2.1. L'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 petite partie au trafic TCP. 5.2.2. Le ping flooding Cette attaque est une des plus simples à effectuer. Elle nécessite de la part de l’attaquant une ligne plus rapide que sa victime car le procédé consiste à envoyer un flux maximal de ping vers une cible. La victime ne pourra pas traiter suffisamment vite la liste des ping reçus (ce qui peut entraîner la fin de la connexion).
Page 15 sur 39
Denial of Service
N'importe qui peut provoquer cette attaque du moment qu'il a un logiciel permettant de le faire. Plus il a y de personnes qui font un ping flooding vers une cible, plus la situation devient critique pour cette cible. Il suffit d’utiliser un firewall qui limite, par exemple, le volume d'échange des ping à 500Ko. 5.2.3. Smurf 5.2.3.1. Principe Smurf peut s'effectuer sur du ICMP ou sur du UDP (l'attaque porte alors le nom de Fraggle). Grossièrement, il suffit que l'attaquant envoie un paquet ICMP type 8 (Echo Request) vers un serveur de diffusion (broadcast) pour que celui- ci transmette le paquet à toutes les machines de son sous réseau. A la réception de ce paquet, les machines vont répondre par un ICMP type 0 (Echo Reply) à la machine qui avait émis le paquet Echo Request. De ce fait, si l'attaquant a envoyé un paquet ICMP type 8 avec une fausse adresse IP source au serveur, toutes les réponses (Echo Reply) vont être envoyées vers cette fausse adresse IP. On aura donc une perte de bande passante ainsi qu'un ralentissement du système. Notons qu'en plus, si l'attaquant envoie beaucoup de paquets à beaucoup de serveurs broadcast, la machine cible dont l'adresse IP est mise en adresse source risque fort d'être déconnectée. Machine n
Machine 2
Machine 1
Echo Request (avec l'adresse de la cible) Echo Reply
Serveur broadcast
Machine attaquante
Machine cible
Si on imagine 1 ping de 1Ko de données envoyé à un serveur broadcast diffusant vers 1000 machines, cela donnerait donc 1Mo de données reçus par la victime. Si on utilise 10 serveurs broadcast diffusant chacun vers 1000 machines, cela fera 10 Mo de données reçus très rapidement par la victime qui vont la ralentir terriblement. 5.2.3.2. Protection Il faut configurer le firewall pour qu'il filtre les paquets ICMP Echo ou bien qu'il en limite l'usage selon un critère lié à un pourcentage de la bande passante. Il est également envisageable, même si ce n'est pas toujours possible, de configurer le routeur pour désactiver le broadcast. Page 16 sur 39
Denial of Service
5.2.4. Smack-Bloop Ces attaques visent tous les systèmes. Elles ressemblent à "Click". Elles consistent à envoyer des messages ICMP type 3 (Destination Unreachable) à l'ordinateur cible. Cette fois, ces attaques n'ont pas pour but de déconnecter l'ordinateur victime mais de provoquer un flood visant les transferts dits connectés (FTP, IRC, telnet, ICQ, ...). Les conséquences de telles attaques sont le ralentissement voire la déconnexion des transferts connectés. Il faut donc configurer les firewalls ou les routeurs pour gérer correctement ce type de messages.
5.3. Le packet Fragment Les dénis de service de ce type utilisent des faiblesses dans l'implémentation de certaines piles TCP/IP au niveau de la défragmentation IP (réassemblage des fragments IP). 5.3.1. Ping of Death 5.3.1.1. Principe Ce type d'attaque consiste à envoyer un ping de grosse taille fragmenté à une victime et lorsque la victime tentera de rassembler les paquets pour reformer le ping, la taille sera supérieure à la taille autorisée d'où le crash de la machine de la victime. Un paquet IP ne peut dépasser en théorie 65535 octets (216 -1). En envoyant un paquet ICMP "Echo Request " de plus de 65535 octets à une victime, le système d'exploitation de la victime plante car il n'a pas assez de place pour rassembler le paquet IP (d'où le nom de cette attaque). La pile IP empêche la création de paquets dont la taille est supérieure à 65535 octets, mais il est possible de créer 45 segments de 1500 octets soit 66620 octets. Une pile utilise un compteur de 16 bits qui correspond à la somme de l'offset du segment courant ainsi que la taille du segment, ce qui permet de connaître la valeur d'offset du prochain segment. Après l'envoi de 45 segments, l'offset sera de : 1500 + (43 * 1480) = 65140 (1er paquet + 43 paquets). Or, l'offset suivant sera 65140 + 1480 (dernier paquet) soit 66620 octets et le compteur débordera. 5.3.1.2. Protection Le principe de protection le plus simple est de mettre son système d’exploitation à jour. En effet, ce genre de faille est assez vite corrigé par l’exploitant. Pour être sûr de ne pas se faire embêter par ce genre de problème, il suffit de faire un test avant qu’un attaquant essaye. Si le système réagit correctement, il n’y a pas lieu à s’inquiéter. Sinon, chercher un patch correctif pour le système d’exploitation. 5.3.2. Teardrop 5.3.2.1. Principe L'attaque Teardrop vise les systèmes Win32 et Linux inférieur à 2.0.32. Elle consiste à envoyer des paquets UDP qui se recouvrent. Lorsque l'ordinateur victime reçoit ces paquets, il tente de les reconstruire. N'y arrivant pas, cela provoque un plantage. Un paquet Teardrop (UDP) est en fait décomposé en deux paquets. Le but de l’attaque est de fournir une valeur de deuxième offset inférieure à la valeur réelle. Lors du réassemblage des paquets, la pile va recalculer la longueur du message en fonction des offsets et des valeurs de longueur de données (champ Length dans l’entête UDP). Le fait de fournir une valeur inférieure obligera la pile à faire un calcul négatif qui sera converti en un nombre infini. Or, l’écriture en mémoire d’un nomb re très grand peut Page 17 sur 39
Denial of Service
écraser une partie de la mémoire utilisée par un autre programme. La machine peut donc se planter. 5.3.2.2. Protection Il suffit d’utiliser un firewall paramétré pour refuser les paquets qui se recouvrent ou bien de mettre à jour son système d’exploitation. 5.3.3. Bonk 5.3.3.1. Principe L'attaque Bonk vise les systèmes WinNT. Elle consiste à envoyer des paquets UDP corrompus sur le port 53. Chaque paquet UDP corrompu est constitué de deux fragments IP assemblés en un UDP. Les offsets qui se superposent ont pour conséquence de faire écraser la seconde moitié de l'entête UDP par le second paquet IP. L'ordinateur victime ne gère pas ces paquets et provoque un plantage (message STOP 0x0000000A) dû à une allocation excessive de la mémoire du noyau. 5.3.3.2. Protection Il suffit alors d’utiliser un firewall paramétré pour refuser les paquets UDP corrompus. 5.3.4. Boink L'attaque Boink est une variante de Bonk. Elle consiste à envoyer des paquets UDP corrompus sur tous les ports ouverts au lieu d’un seul.
5.4. Déni de messages 5.4.1. Attaque par routage 5.4.1.1. Principe La plupart des protocoles de routage sur Internet, comme Routing Information Protocol (RIP) v1 et Border Gateway Protocol (BGP) v4, ne sont pas très récents. Ils ne présentent aucune procédure d’authentification ou des procédures faibles. Un pirate peut alors facilement modifier les entrées des tables de routages des routeurs pour modifier, voire supprimer, des trajets légitimes, souvent en mystifiant son adresse IP source. Les victimes d’une telle attaque verront leur trafic redirigé soit vers la machine du pirate, soit vers un trou noir (réseau qui n’existe pas). Par conséquence, une partie du réseau ne sera plus accessible. 5.4.1.2. Protection Le protocole RIP doit être plus méfiant quand il reçoit et accepte des routes. Dans la plupart des environnements, il n’y a pas de raisons valables d’accepter des nouvelles routes dans votre propre réseau local. Un routeur qui effectue des contrôles peut facilement détecter des tentatives d’intrusion. Il serait utile de pouvoir authentifier les paquets RIP. Mais en l’absence de systèmes bon marché de signatures à clé publique, c’est très difficile pour un protocole de diffusion. Cependant, si un tel système était mis en place, son utilité serait limitée car le destinataire pourrait seulement authentifier l’émetteur immédiat, et pourrait être trompé par le routeur plus loin en amont. Si les routeurs locaux n’implémentent pas de mécanismes de défense, les attaques RIP comportent un autre risque : les routes invalides sont visibles dans tout le réseau. N’importe que l routeur qui reçoit pareille donnée la rediffusera. Un administrateur méfiant d’un réseau voisin remarquera une anomalie. Les fichiers log aideront, mais c’est très dur de distinguer une vraie intrusion provenant d’un routage instable qui accompagne souve nt le plantage d’un routeur. Page 18 sur 39
Denial of Service
5.4.2. DNS Spoofing 5.4.2.1. Principe Les attaques DoS sur des serveurs DNS sont aussi dévastatrices que les attaques par routage. Elles nécessitent de convaincre le serveur DNS victime de modifier ces informations sur la victime. Ainsi, lorsqu’un utilisateur interroge le serveur pour transformer le nom du site de la victime en l’adresse IP, le serveur répond soit par un site quelconque que le pirate à spécifier (comme son propre site), soit par un site inexistant (trou noir). On dénombre plus ieurs attaques DoS liées à des DNS qui ont rendu inaccessibles de grands sites.
Serveur DNS de la victime
• ‚ „
Internet Utilisateur Serveur Web de la victime www.victime.com
ƒ
Serveur Web des pirates www.pirates.com
• L’utilisateur quelconque demande à se rendre sur le site Web www.victime.com. Le navigateur va pour cela envoyer une requête au serveur DNS. ‚ Le tampon du serveur DNS a été contaminé par un pirate. Il renvoie l’adresse IP de www.pirates.com au lieu de www.victime.com. ƒ L’utilisateur se connecte alors par Internet au serveur Web des pirates qui se fait passer pour le serveur Web de la victime. „ L’utilisateur ne peut pas atteindre le serveur Web de la victime : c’est une attaque DoS.
Page 19 sur 39
Denial of Service
5.4.2.2. Protection Récemment, une extension au DNS, un protocole d’authentification, a été imaginée par le MIT. Il consiste à utiliser un ticket pour authentifier les requêtes et les réponses entre un hôte et un serveur DNS. La section "information complémentaire" de la requête transporte le ticket crypté. Celui-ci inclut une clé de session connue uniquement du serveur et du client. Elle sert à calculer un checksum cryptographique, aussi bien pour la requête que pour la réponse. Le projet s’appelle Kerberos. Plus d’information à http://web.mit.edu/kerberos/www/ .
5.4.3. ARP redirect 5.4.3.1. Principe L'attaque ARP redirect vise les réseaux locaux Ethernet, qu'ils soient partitionnés ou non en sous réseaux (switchés). C'est une technique de spoofing efficace bien que détectable dans les fichiers logs d'administration. Elle consiste à s'attribuer l'adresse IP de la machine cible, c'est-à-dire à faire correspondre son adresse IP à l'adresse MAC de la machine pirate dans les tables ARP des machines du réseau. Pour cela il suffit en fait d'envoyer régulièrement des paquets "ARP Reply" en broadcast, contenant l'adresse IP cible et la fausse adresse MAC. Cela a pour effet de modifier les tables dynamiques de toutes les machines du réseau. Celles-ci enverront donc leurs trames Ethernet à la machine pirate tout en croyant communiquer avec la cible, et ce de façon transparente pour les switches. De son côté, la machine pirate stocke le trafic et le renvoie à la vraie machine en forgeant des trames Ethernet comportant la vraie adresse MAC (indépendamment de l'adresse IP). Cette technique est très puissante puisqu'elle opère au niveau Ethernet, permettant ainsi de spoofer le trafic IP et même TCP (cela dépend entre autres des délais engendrés par la machine pirate). D'autre part, elle permet de contourner les barrières que constituent habituellement les switches (partitionnement de réseaux). 5.4.3.2. Protection L’ARP redirect est assez difficile à détecter. Il faut étudier des logs régulièrement mis à jour. Il est également conseillé de n’utiliser que des tables ARP statiques. Il convient d’utiliser des logiciels spécialisés pour monitorer les paires IP/MAC. 5.4.4. ICMP type 5 Enfin le dernier type d'attaque et certainement le plus efficace est l'utilisation du ICMP type 5 (Redirect). Ce message est gé néralement envoyé par un routeur à une machine pour lui préciser qu'elle devrait l'utiliser car la route dans sa direction est plus rapide. Il suffit donc en théorie que l'attaquant envoie un paquet ICMP type 5 à une machine avec une adresse IP source correspondante à la sienne et ainsi la cible va dévier sa route pour passer par la machine de l'attaquant en pensant que c'est un routeur. On peut soit émuler le fonctionnement d'un routeur c'est à dire router les paquets vers leur destination. L'attaquant peut alors en profiter pour sniffer les paquets. Il peut donc recueillir des informations importantes ainsi que des numéros de séquences (afin de lancer une attaque de type TCP Hijack, procédé qui s'apparente au TCP spoofing et qui consiste en fait à prendre la place de la cible sur la connexion qu'il a déjà avec un serveur). Le pirate peut également réorienter le trafic vers un trou noir.
Page 20 sur 39
Denial of Service
5.5. Deux autres attaques 5.5.1. Pong L'attaque Pong est aussi connue sous le nom d'"Echo Reply Without Request " ou "ICMP Echo Reply Attack". Elle consiste à envoyer à l'ordinateur victime le résultat d'un ping (le pong en question), alors que la victime n'a pas envoyé de ping. On peut utiliser cette attaque pour plusieurs effets : Ø La détermination de l’architecture réseau derrière un firewall. Les requêtes ping/pong sont rarement arrêtées par les firewall. Le routeur qui reçoit un pong d’une fausse destination renverra un message "Host Unreachable" à l’émetteur (l’attaquant). Ce dernier pourra donc connaître le nombre de machines derrière le firewall et l’adresse IP de ces machines. Ø Les attaques distribuées. Tout comme les ping, les requêtes ICMP passent facilement au travers des firewalls. Une attaque par abondance de requêtes pong permet de saturer le routeur ou bien une machine situé e derrière le firewall. Ø Les attaques "spoofed". Une attaque par ping flooding peut se produire contre un ordinateur en simulant que ces ping viennent de votre ordinateur (de votre adresse IP). Vous recevez donc uniquement les pongs provenant de l'ordinateur victime de l'attaque. Pour se protéger, il suffit alors d’utiliser un firewall paramétré pour enregistrer les pong reçus alors qu'il n'y a pas eu de ping envoyés. 5.5.2. Bombardement de courrier 5.5.2.1. Principe Le principe consiste à inonder la victime de courriers électroniques. Si le pirate parvient à envoyer une quantité suffisante de courrier à quelqu’un, son système va saturer jusqu’à bloquer l’ordinateur. 5.5.2.2. Liaison de listes Le moyen le plus simple d’y parvenir consiste à abonner la victime à des milliers de listes de diffusion. Cette attaque est appelée liaison de listes. Le principe des listes de diffusion est le suivant : des serveurs de listes distribuent des messages issus de diverses sources et sur des sujets divers. Ils les collectent et les adressent périodiquement aux membres inscrits sur les listes. L’abonnement sur ces listes se fait très rapidement puisqu’il suffit généralement de donner son adresse email. La résiliation à ces listes se fait aussi simplement puisqu’il suffit de cliquer sur un lien, contenu dans le message, et de valider. Les messages envoyés sont plus ou moins volumineux. Certain d’entre eux sont écrits en HTML (qui prend donc plus de place qu’un simple fichier texte) et peuvent contenir des fichiers joints comme des images. Le principe de l’attaque est donc simple : il suffit à l’agresseur d’inscrire sa victime à des centaines, voire des milliers de liste de diffusion. Des logiciels automatisent le processus de liaison de liste. Les plus connus sont Kaboom et Avalanche. Ils permettent à l’agresseur de lancer cette attaque très rapidement. Le résultat peut se révéler désastreux. Si l’attaquant vous lie à plusieurs centaines de listes de diffusion qui peuvent envoyer plusieurs messages par jour, vous recevez plusieurs milliers de messages par jour. Si en plus il attend que vous soyez absent, en vacances par exemple, des dizaines de milliers de messages s’accumulent dans votre boite. D’une part le nombre si élevé de messages à traiter va peu à peu engorger le serveur de messagerie, ralentissant, voire bloquant totalement l’envoi ou la réception de messages de la part des autres utilisateurs. Sans compter l’espace disque utilisé pour stocker tous ces messages inutiles. D’autre part, si l’administrateur réseau applique des quotas aux Page 21 sur 39
Denial of Service
boites aux lettres (c’est généralement le cas), l’attaque va remplir et saturer votre boite. En effet, les quotas sont en fait des limitations d’espace disque qui vous est alloué pour votre compte. Lorsque cette limite est atteinte, plus aucun message n’est accepté. Par conséquent, les messages des listes de diffusion vont remplir votre boite, et les messages importants vous étant destinés vont être refusés. La liaison de liste est une attaque particulièrement insidieuse. En effet, une solution à cette attaque consiste à paramétrer des filtres pour ne plus recevoir de messages d’un certain serveur ou d’un émetteur. Mais cela ne fait que dissimuler le problème, car tant que vous êtes inscrit à ces listes, vous continuez à recevoir leurs messages. C’est pourquoi la meilleure solution reste la résiliation à toutes les listes auxquelles vous avez été abonné. La solution qui consiste à fermer la boite pour en ouvrir une nouvelle n’est pas très conseillée puisque l’envoi de messages continuera, ce qui générera un trafic non négligeable sur le réseau et un traitement de la part du serveur de messagerie toujours aussi important puisque celui- ci devra chercher le destinataire du message et, comme il ne le trouvera pas, envoyer un message d’erreur aux listes de diffusion. 5.5.2.3. Mail Bomber Il existe également des petits programmes, disponibles facilement sur Internet, qui envoient automatiquement un mail un nombre de fois paramétrable. Cette attaque est appelée bombe email. Généralement ces messages sont volumineux et contiennent des fichiers joints. La taille de ces bombes peut atteindre plusieurs Mo. Le but est simple : saturer la boite aux lettres de la victime de la même manière que la liaison de liste, sauf qu’ici c’est l’agresseur qui envoie tous les messages. Par conséquent, les disques durs de la victime risquent d’être à court d’espace, ou sa boite atteindre son quota ; ses connexions réseaux risquent d’être interrompues et ses ordinateurs risquent de se bloquer. Pour un particulier utilisant un modem, c’est une perte de temps et une augmentation des frais de connexion liées au téléchargement de ces messages. Cette attaque vise aussi les serveurs de messagerie qui voient le trafic augmenté, ainsi que le temps de traitement et l’espace nécessaire au stockage de ces messages. Les logiciels des bombes email les plus connus sont les suivant : Up Yours, Kaboom, Unabomber, Windows Email Bomber, Gatemail et Unix Mailbomber. 5.5.2.4. Protection Face à cette attaque, la première solution consiste à optimiser la configuration du serveur de messagerie et/ou utiliser un pare-feu : il faut limiter le nombre de pièces jointes, limiter la taille des fichiers joints (et la taille totale) et limiter le nombre de destinataire du mail (ainsi que les copies et copies cachées). Une deuxième solution consiste à utiliser des applications de filtrage de courrier qui permettent de rejeter automatiquement des messages selon certains critères comme l’adresse source. Parmi ces applications, voici les plus connues : Advanced E-mail Protector, E-Mail Chomper, Email Remover, SPAM Attack Pro et SpamKiller. Enfin, il suffit de prendre quelques précautions comme ne pas dévoiler son adresse mail à n’importe qui, et utiliser une adresse différente pour recevoir des messages des listes de diffusion.
5.6. Les virus Les virus provoquent deux types d’attaques DoS. Le premier type d’attaque DoS est lié au mode de propagation des virus. De plus en plus de virus sont des vers (worms en anglais) qui possèdent des scripts de diffusion via la messagerie électronique. En pratique, le virus, une fois qu’il a contaminé la machine, recherche dans le carnet Page 22 sur 39
Denial of Service
d’adresses de l’utilisateur toutes les adresses émail et envoie une copie de son code en pièce jointe d’un message quelconque. Certains vers ajoutent en pièce jointe un certain nombre de fichiers récupérés aléatoirement sur le disque dur. Ainsi, de part leur mode de propagation par mail très efficace, ils inondent les serveurs mails en générant un trafic inhabituel et surtout ingérable. Cela conduit à une consommation anormale des ressources des serveurs mails, provoquant ainsi une attaque DoS (de type MailBomber). Parmi les virus qui ont déclenché ce genre de problème, on peut citer les plus connus : ILoveYou, Melissa, OnTheFly (Anna Kournikova), Code Red, SirCam et plus récemment Magistr et Nimda. Le deuxième type d’attaque DoS correspond à une attaque directement lancée par le virus. Après avoir contaminé un certain nombre de serveurs en exploitant des failles, Le virus va se propager puis se mettre en veille. A une date prédéfinie, il déclenche son attaque DoS spécifique. Le virus Code Red est particulier. Dans sa première version, il recherche les adresses IP des serveurs IIS de Microsoft afin de les compromettre. Pour cela, il balaie des adresses IP prises au hasard. Or l’implémentation du tirage aléatoire contient une légère erreur. Il en résulte que chaque machine contaminée effectue le même tirage et, par conséquent, toutes les machines compromises attaquent les mêmes cibles, ce qui peut entraîner un DoS. L’attaque peut avoir deux causes. Premièrement, vu le nombre élevé de requêtes reçues par une cible, leur traitement monopolise les ressources système et provoque le DoS. Deuxièmement, la machine déjà infectée scanne les futures victimes avec des requêtes qui déclenchent des erreurs. Ces erreurs sont répertoriées dans les fichiers trace (log) qui grossissent anormalement. Dans certain cas, cela peut provoquer un DoS. De plus, l’objectif ultime du virus Code Red semble être d’orchestrer une attaque DDoS sur différents serveurs, dont ceux de la Maison Blanche (www.whitehouse.gov). A cette fin, les serveurs infectés envoient, au même moment, sur les mêmes adresses cibles, de gros volume de données. Selon la presse américaine, 15 000 serveurs auraient été infectés et chaque infection génèrerait 400 Mo de données. Découvert avant qu’il ne se développe, le virus a pu être partiellement maîtrisé, assez pour éviter un écroulement des serveurs et du réseau, et donc éviter l’attaque DoS. Toutefois, Code Red a donné un aperçu de ce que pouvait créer la combinaison d’un ver et d’un mécanisme d’attaque DDoS. Auparavant, les attaques DoS et DDoS étaient essentiellement pratiquées à la main par des pirates mal intentionnés. Mais depuis l’an 2001, plusieurs vers embarquant des agents DDoS ont fait leur apparition. Tel est le cas de liOn déployé à partir de février 2001. Or, la dernière tendance de ces vers est à l’automatisation. A travers Code Red, l’un des premiers à se propager sans intervention humaine grâce à des mécanismes de plus en plus performants et efficaces, des DDoS ont été provoqués sur des adresses précises à partir des ordinateurs infectés. D’autre DoS isolés sont survenus sur des systèmes présentant certaines conditions, tout comme pour le plus récent Nimda. Or, si celui-ci avait tout de suite exploité sa force de frappe pour lancer une série d’attaques DDoS, les dégâts provoqués auraient été faramineux. Pour se protéger de ces virus, outre le fait d’avoir un antivirus à jour, il est indispensable de se tenir informé via les sites spécialisés dans la sécurité des réseaux, et bien sûr suivre leur recommandation en ce qui concerne la mise à jour des logiciels.
5.7. Autres types Il existe encore d’autres types d’attaques DoS, souvent inhérentes aux systèmes auxquels elles s’attaquent. Elles sont peu intéressantes à étudier mais on ne peut cependant ignorer leur existence. En voici plusieurs en vrac : Ø Saturation de l’espace disque ou de la mémoire : en générant énormément d’erreurs qui seront enregistrées dans les fichiers log, en envoyant d’énormes fichiers à l’aide du FTP anonyme, en allouant presque toute la mémoire disponible (Malloc Bomb). Page 23 sur 39
Denial of Service
Ø Création de répertoires récursifs en boucle. Ø fork() Bomb : un intrus pourrait créer un petit programme ou script qui lui permettrait de remplir au maximum la liste des processus et rendre le serveur inutilisable. Ø Bug Pentium d’Intel (consulter ftp://ftp.mathworks.com/pub/pentium/ et http://support.intel.com/support/processors/pentium/ppiie).
Page 24 sur 39
Denial of Service
6. LA PROTECTION 6.1. Les symptômes d’une attaque Comment reconnaître une attaque DoS ? En fait, il est plus facile de la repérer à ses effets : Ø les performances générales sont souvent dégradées, Ø la disponibilité des machines et des applications est mise en cause (les fichiers logs aident beaucoup dans ce domaine). Ø Apparition d’anomalies : processus tournant en boucle, espace disque se réduisant, nouveaux fichiers inhabituels, ou bien fichiers importants modifiés. Des logiciels de contre-mesure existent sur Internet. Ils connaissent les types d’attaques possibles et les moyens employés. Ils surveillent l’activité sur le serveur et déclenchent une alarme lors qu’ils détectent le début d’une attaque DoS. Dans certain cas un simple petit sniffer suffit. Nukenabber, par exemple, écoute les ports TCP utilisés par des attaques DoS avec des programmes comme WinNuke. Parfois des attaques DoS sont causées involontairement par des utilisateurs légitimes. Par exemple, un jour de forte affluence, un site Web peut être complètement saturé alors qu’aucune attaque DoS n’a été intentionnellement lancée. Le responsable du système en question devrait peutêtre revoir le dimensionnement de son système. Une évolution logique vers des systèmes plus performants doit alors être envisagée pour désengorger le système actuel. Il convient bien sur d’évaluer les causes de cette montée en charge (le succès imprévu, une augmentation du personnel ou des clients, ...), puis d’identifier le goulot d’étranglement (la bande passante, le serveur peu performant, l’espace disque insuffisant, ...), et enfin d’entreprendre les modifications nécessaires. Il n’est donc pas toujours facile de différencier une attaque d’un dysfonctionnement du système.
6.2. L'analyse du backscatter Pour améliorer les protections, il faut pouvoir tester leur efficacité. On peut juger de l'efficacité de méthodes de protection mises en œuvre en répertoriant le nombre d'attaques DoS ou DDoS. Il existe assez peu de méthodes pour recenser ce type d'attaque car il n'est pas toujours facile de différencier une attaque DoS et un plantage "naturel" d'un serveur. Nous avons néanmoins trouver la méthode du laboratoire CAIDA de l'université de Californie : backscatter analysis. Pour avoir un ordre d'idée, en Mai 2001, les membres de cette organisation ont fait une étude de trois semaines pour mieux cibler les attaques DoS. Les résultats sont assez impressionnants : ils ont recensé environ 13 000 attaques sur plus de 5 000 machines différentes (entre autre parmi des compagnies de e-commerce très connues). Certaines de ces attaques avaient un débit proche des 700 000 paquets par seconde ! Généralement, un attaquant falsifie l'adresse source des paquets IP qu'il envoie pour dissimuler la machine à partir de laquelle il opère. Dans le cadre des attaques DoS directes, la plupart des programmes choisissent aléatoirement l'adresse IP de chaque paquet qu'ils vont envoyer (en utilisant des outils comme Shaft, TFN, trinoo…). Quand un paquet falsifié arrive, la victime a tendance à répondre à ce qu'elle croie être une erreur. Parfois, un composant (routeur, firewall…) publie sa propre réponse à l'attaque sous forme de paquet ICMP. Ces réponses ont des destinations équiprobables car l'adresse est sélectionnée aléatoirement. Cet effet de dispersion arrière est le backscatter. Page 25 sur 39
Denial of Service
D
SYN packets
Victime
Attaquant
Attaque : DàV, BàV, CàV
C B
Backscatter
Dans le cadre de cette analyse, on pose plusieurs suppositions : Ø la victime répond par un message à chaque paquet qu'elle reçoit (y compris les paquets falsifiés). Ø les adresses spoofées suivent une répartition uniforme. Ø le réseau est sûr : tous les messages arrivent à destination (que ce soient les paquets falsifiés du pirate ou les réponses de la victime). En partant de là, la probabilité pour qu'une machine reçoive une réponse non sollicitée de la part de la victime est de m 32 où m est le nombre de paquets reçus par la victime. Si on observe N 2 machines, la probabilité moyenne de trouver une trace de backscatter est de : E ( X ) = N × m 32 . 2 Si la valeur de N est conséquente, on peut raisonnablement penser pouvoir échantillonner efficacement les attaques DoS. Les paquets reçus nous renseignent sur l'identité de la victime, le type d'attaque et la durée de l'attaque (grâce aux dateurs). En regroupant les résultats observés et en appliquant quelques calculs statistiques, on peut tirer des informations sur le DoS employé. Par exemple, on sait interpoler le débit de l'attaque de la façon suivante : 232 R ≥ R' × où R' : le débit évalué de l'attaque N R : la moyenne mesurée d'inter-arrivées du backscatter On arrive ainsi à : Ø classifier les attaques : - les types d'attaques - les protocoles visés - la réponse des protocoles - la durés des attaques Ø établir un portrait des victimes : - le nom (donc le type) - le domaine (.com, .net, .gov) - les AS Pour plus d’informations, vous pouvez consulter l’adresse suivante : http://www.caida.org/outreach/papers/2001/BackScatter/ Page 26 sur 39
Denial of Service
6.3. Pushback Cette méthode vise à lutter contre les attaques DDoS. Elle part d'une constatation simple : la majorité des attaques distribuées se résument par un envoie massif de paquets vers une cible, provoquant de la congestion sur certains liens. Quand les routeurs saturent, ils détruisent indifféremment les bons paquets et les mauvais (plus nombreux statistiquement). L'idées est la suivante : si la victime qui est surchargée détruit beaucoup de paquets (surtout des mauvais ma is aussi des bons car elle n'a pas le temps de tous les analyser), pourquoi est-ce que le routeur ne détruirait pas lui- même le flot avec la source qui visiblement est corrompue ? Comme ça, la machine reste valide pour accepter les paquets des autres bonnes sources au lieu de saturer sous le flot de paquets corrompus. Il suffit d'appliquer le procédé récursivement pour bloquer au plus haut l'attaque… Bad ok ok ok
R2
R3
R1
Victime Cette technique était en cours d'implémentation en 2001.
6.4. Les firewalls Les contre- mesures sont très compliquées à mettre en place et très ciblées vis-à-vis du type de déni de service envisagé. En effet, d'un point de vue théorique, la plupart des attaques visant à créer des dénis de service sont basées sur des services ou protocoles normaux sur Internet. S'en protéger reviendrait à couper les voies de communications normales avec Internet, alors que c'est bien là la raison d'être principale des machines concernées (serveurs Web ...). Il reste tout de même la possibilité de se protéger contre certains comportements anormaux (voir les attaques précédentes) comme une tentative de flooding, un trop grand nombre de paquets ou de requêtes de connexion provenant d'un petit nombre de machines. Mais cela implique beaucoup de choses en fait : il faut diriger le trafic (ce qui est loin d'être simple, du fait de la quantité de données qui transitent), établir des profils types de comportement et des écarts tolérables au-delà desquels on considérera qu'on a à faire à une attaque; il faut également définir les types d'attaques auxquelles on souhaite se protéger (analyses de risques à l'appui) car il est impossible de toutes les prévoir. On est donc loin de la protection absolue; il s'agit de mettre en place une protection intelligente et flexible. C'est ce qu'on retrouve à l'heure actuelle dans la plupart des systèmes de protection contre les dénis de service. Ainsi des constructeurs proposent des produits incluant à différents niveaux des services spécifiques : Ø test de la taille des paquets Ø test des adresses source et destination Ø test de la fragmentation Page 27 sur 39
Denial of Service
Ø utilisation d'adresses IP virtuelles pour validation de sessions et ACK (contre attaques TCP) Ø test du nombre de SYN (contre attaques TCP) Ø NAT d'adresses locales vers IP virtuelles basées sur IP globales Ø contrôles de flux Ø contrôles de contenus (port, tag, url, extensions de fichiers) Ø autres fonctions de firewall, le tout basé sur du load-balancing et de la redondance. Comme on peut le remarquer, l'accent est mis sur la sécurité du système de protection en luimême pour qu'il puisse faire face à des situations extrêmes (trafic énorme ...). D'autre part, il reste que la plupart des contre-mesures visent à protéger contre un type d'attaque particulier. L'efficacité d'un tel système se révèlera par sa capacité à détecter et prévenir de nouveaux types d'attaques.
6.5. Lutter contre l'IP Spoofing 6.5.1. Général Une solution permettant d'empêcher ce type d'attaque est de ne pas se baser sur une authentification par adresse IP. Désactiver toutes les commandes r* (permettant à une machine distante d'effectuer des actions) comme rsh (ouverture de shell), rlogin (ouverture de terminal), supprimer tous les fichiers .rhosts (liste des utilisateurs ayant des droits) et vider le fichier /etc/host.equiv. Cela obligera les utilisateurs à ce connecter par d'autres moyens (telnet, SSH …). La RFC 2267 traite de ce problème. 6.5.2. Filtrer les paquets Dans le cas d'une connexion directe sur Internet, la méthode la plus utilisée consiste à filtrer les paquets entrants au niveau du routeur d'accès de façon à ce qu'une connexion extérieure au réseau ne puisse pas avoir une adresse IP qui soit interne au réseau. Comme les relations de confiance sont souvent attribuées au sein même du réseau, cela prémunit relativement bien contre les attaques.
6.5.3. Désactiver le source routing Comme l'utilisation du source routing permet de faciliter considérablement l'IP Spoofing, il est préférable de désactiver le source routing sur tous les routeurs d'accès de l'entreprise de façon à ce qu'une route destinée à un ordinateur interne au réseau ne passe pas par le réseau externe. 6.5.4. Utiliser le chiffrement Une méthode évidente pour se protéger contre l'IP spoofing consiste à chiffrer ou authentifier toutes les données qui circulent sur le réseau interne. Cependant cette méthode peut être lourde à mettre en œuvre et n'est pas encore un standard… Page 28 sur 39
Denial of Service
6.5.5. Utiliser un numéro de séquence initial aléatoire Les attaques par IP spoofing fonctionnent notamment parce que les numéros de séquence peuvent être devinés. C'est là le cœur du problème et pour le résoudre, il faudrait utiliser une modification de l'implémentation de la pile IP qui tienne compte de l'adresse comme le montre la formule suivante : ISN = M + F(localhost, localport, remotehost, remoteport). M est ici le compteur de la machine et F est un algorithme de Hash qui ne doit pas être visible de l'extérieur.
6.6. Ipv6 Nous assistons aujourd'hui au remplacement progressif du protocole Ipv4 par son parent : l'Ipv6. Une majorité de la communauté informatique a accueilli cette arrivée les bras ouverts. Voyons un peu ce qu'apporte Ipv6 à notre problème. En examinant les champs de l'entête IPv6, on peut remarquer un emplacement prévu pour l'authentification. Cela paraît être une bonne protection contre le spoofing d'adresses. Cependant, comme nous l'avons dit, la transition IPv4 - IPv6 est lente. Les appareils des réseaux supportent les deux protocoles. En plus, de part sa nature, le protocole IPv6 est compatible avec son prédécesseur. Les messages IPv4 (falsifiés ou non) seront donc toujours acceptés, lus et interprétés, pouvant provoquer les dégâts qu'on connaît maintenant. Même si on regarde dans de l'IPv6, des pirates ont déjà trouvé quelques failles. Prenons par exemple le programme de tunnelling 6Tunnel, chargé de permettre à des services basés sur des hôtes IPv6 de fonctionner avec des programmes Ipv4 et vice versa. Ce programme peut être planté à distance. En effet, lorsqu'une connexion est fermée par le serveur, le socket lié à cette connexion est fermé après un court délai. Cependant, si le socket est fermé après la déconnexion d'un client, le socket garde l'état fermé jusqu'à ce que 6Tunnel soit arrêté. En envoyant une grande quantité de connexions et de déconnexions au logiciel, ce dernier peut être surchargé par de nombreux sockets non terminés. Selon le système utilisé, ceci peut provoquer le crash ou au moins le disfonctionnement du service.
6.7. Les détecteurs d'intrus (IDS) 6.7.1. Le mode de fonctionnement 6.7.1.1. IDS à bibliothèque de signatures Le concept de bibliothèque de signatures d'attaque est l'approche la plus basique et la plus ancienne. Cette approche consiste à rechercher dans l'activité de l'élément surveillé les empreintes (ou signatures) d'attaques connues. Cette démarche appliquée à la détection d'intrusion, est similaire à celle des outils antivirus. Il est aisé de comprendre que ce type d'IDS est purement réactif ; il ne peut détecter que les attaques dont il possède la signature. De plus, ce système de détection est aussi bon que l'est la base de signatures. Si les signatures sont erronées ou incorrectement conçues, l'ensemble du système est inefficace. Ces systèmes sont souvent contournés par les pirates qui utilisent des techniques dites "d'évasion" qui consistent à maquiller les attaques (variation des signatures des attaques qui ainsi ne sont plus reconnues par l'IDS). De plus, ces IDS permettent une classification relativement facile de la criticité des attaques signalées. On peut donc apprécier ce genre de protection surtout dans le cadre du DoS où on verra plus tard que les anciennes techniques sont toujours utilisées. 6.7.1.2. IDS à modèles comportementaux Ils ont pour principe la détection d'anomalies. Leur mise en oeuvre comprend toujours une phase d'apprentissage au cours de laquelle ils vont "découvrir" le Page 29 sur 39
Denial of Service
fonctionnement "normal" des éléments surveillés. Une fois cet apprentissage effectué, ces IDS signaleront les divergences par rapport au fonctionnement de référence. La principale promesse des IDS comportementaux est la détection des nouveaux types d'attaque (ces IDS ne sont pas programmés pour reconnaître des attaques spécifiques mais signalent toute activité "anormale"). De ce fait une attaque ne doit pas nécessairement être connue d'avance ; dès lors qu'elle représente une activité anormale elle peut être détectée par l'IDS comportemental. Du fait même de leur conception ces IDS sont incapables de qualifier la criticité des attaques. 6.7.2. La zone de fonctionnement Les IDS peuvent également se classer selon deux catégories majeures selon qu'ils s'attachent à surveiller le trafic réseau ou l'activité des machines 6.7.2.1. IDS Réseau Ces outils analysent le trafic réseau ; ils comportent généralement une sonde qui "écoute" sur le segment de réseau à surveiller et un moteur qui réalise l'analyse du trafic afin de détecter les signatures d'attaques ou les divergences face au modèle de référence. La plupart des Network IDS analysent le flux en temps réel. Pour cette raison, ils doivent être de plus en plus performants afin d'analyser les volumes de plus en plus importants pouvant transiter sur les réseaux. Ils permettent typiquement de détecter un flooding. Leur utilisation est donc tout à fait recommandée. 6.7.2.2. IDS Système Les IDS Systèmes analysent quant à eux le fonctionnement ou l' état des machines sur lesquelles ils sont installés afin de détecter les attaques. Ils sont très dépendants du système sur lequel ils sont installés. Il faut cependant noter qu'ils sont incapables de détecter les attaques affectant les couches réseaux de la machine comme les dénis de service … Les IDS systèmes ne nous apportent donc aucune protection.
6.8. Se protéger 6.8.1. Correctifs et mises à jour Beaucoup d’attaques DoS exploitent les failles d’un système. La meilleure solution à ces attaques consiste à récupérer et appliquer le correctif mis à la disposition par le constructeur du système. Les systèmes d’exploitation et les logiciels sont les premiers concernés. Quand aucun correctif n’est proposé, c’est que bien souvent l’éditeur a corrigé le problème dans la no uvelle version de son logiciel. Cependant, certaines entreprises, pour des raisons financières, continuent à utiliser des anciens systèmes. Il convient alors aux responsables informatiques de rester prudent et de contrôler la vulnérabilité aux attaques plus anciennes. 6.8.2. Configuration On l’a vu avec les différentes types d’attaques : en matière de sécurité, la protection par firewall correctement configuré est devenue indispensable. Elle diminue le risque d’être attaqué, sans toutefois le supprimer. Mais attention : un firewall ne sert à rien s’il est mal configuré ! Une réflexion approfondie sur cette configuration, et donc sur le travail du firewall, doit être menée. Une approche paranoïaque peut être mis en place. Elle se base sur l’axiome suivant : tout ce qui n’est pas explicitement permis est interdit. Il est très important de configurer le firewall de manière à ce qu’il contrôle la validité de l’adresse IP source. Elle doit correspondre à un site de confiance, mais surtout pas à une adresse réservée : adressage de réseaux privés prévu par la RFC 1918 et les Page 30 sur 39
Denial of Service
adresses loopback, broadcast, mulitcast (pour la classe D), réservées (pour la classe E) et non allouées. Votre réseau ne doit pas servir de serveur de diffusion, i.e. il ne doit pas accepter de diffuser du trafic sur tous les systèmes qu’il connaît. Pour plus d’informations, consultez la page suivante : http://www.sans.org/dosstep/index.htm. La configuration des logiciels, des systèmes d’exploitatio n et des serveurs est également importante. Un mauvais réglage de paramètres ou des commandes connues dangereuses sont parfois l’origine d’une faille dans le système. D’une manière générale, sur un système informatique quel qu’il soit, il faut s’assurer que les services disponibles soient le minimum nécessaire. 6.8.3. Toujours informé La sécurité est un domaine en perpétuelle évolution. Tous les jours, des nouvelles failles sont découvertes, des nouveaux virus affectent les systèmes et des solutions sont apportées aux derniers problèmes. Il faut donc toujours rester informé, suivre l’actualité via les média officiels (comme le site du CERT, www.cert.org) ou pirates (étudier l’ennemi pour mieux le contrer !), et surveiller les annonces et les groupes de discussion dans le domaine de la sécurité. 6.8.4. Audits Des sociétés spécialisées, comme des cabinets de sécurité, propose un audit de votre réseau pour détecter ses faiblesses et les failles. Le responsable peut auditer lui- même son système en utilisant les outils des pirates sur son système. C’est un bon moyen de vérifier la sécurité du système. Il peut procéder à deux types d’attaque DoS : Ø Attaque active : consiste à attaquer réellement le réseau à l'aide de programmes générant des attaques DoS. Le site www.vc3.com/~caldwm/security/denial-ofservice contient un grand nombre de codes source d'attaques DoS pour les différents systèmes existants. Ø Attaque passive : consiste à simuler des attaques DoS à l'aide de programmes. Le programme The Agressor (www.agressor.net) contient toutes les attaques DoS connues. Il teste et reporte toutes les vulnérabilités de votre réseau face aux attaques DoS et vous informe des patchs et des solutions à mettre en œuvre. Il fonctionne sous Windows NT 4.0. Il existe un autre programme du même type : Nessus (www.nessus.org). Il fonctionne sous Linux, BSD, Solaris, Windows NT 4.0, Java Virtual Machine. 6.8.5. Conclusion La solution "ultime" contre le DoS, s’il devait y en avoir une, serait sans aucun doute la combinaison de l’ensemble de ces moyens. Le risque zéro n’existe pas, mais on peut le minimiser fortement en suivant ces règles. Lors de la mise en place de ces moyens, il faut garder à l’esprit que les systèmes informatiques ont des utilisateurs légitimes. C’est eux, et uniquement eux, qui utilisent ces systèmes. C’est pourquoi ils doivent, malgré les protections, toujours avoir accès aux ressources et services. Sinon, tout est bloqué : c’est un DoS !
Page 31 sur 39
Denial of Service
7. QUELLE EVOLUTION ? On peut se poser la question du futur pour le DoS et DDoS. Comment cela va-t- il évoluer ? Le but ou l'impact habituel des attaques DoS est d'empêcher un utilisateur légitime d'accéder à une ressource. Indifféremment des efforts assidus, Internet doit toujours faire face à des attaques car Internet est une cible parfaire pour 2 raisons : Ø Internet est constitué de ressources limitées (bande passante, CPU, mémoire…) Ø La sécurité d'Internet doit s'envisager d'un point de vue global. La plupart des attaques sont menées à partir de machines extérieures au domaine qui contient la cible. Ces machines sont en général non ou mal protégées. Beaucoup d'attaques dépendent de l'état de la sécurité du reste du réseau. Se défendre contre le DoS n'est pas une science exacte. La plupart du temps, sa propre protection ne sert à rien. Il faut agir directement aux sources. Initialement, le schéma d'une attaque était le suivant : l'attaquant visait une cible à partir d'une machine. Maintenant, c'est plus fréquemment plusieurs sources contre une seule cible (bien que quelquefois l'attaque porte sur plusieurs cibles, pour congestionner un domaine par exemple). Le volume des données durant l'attaque est un bon critère pour évaluer le degré de succès de l'attaque. Pour dire vrai, le problème des DoS n'a pas changé considérablement depuis ces dernières années. Les ressources du réseau restent limitées et sujettes aux attaques de la consommation. Les systèmes contiennent encore des failles. Les vendeurs continuent à produire des appareils technologiques qui contiennent des failles de sécurité exploitables. Les consommateurs continuent à déployer ces produits, et à mal les administrer. Le résultat final est qu'il y a encore beaucoup de systèmes vulnérables sur Internet qui peuvent être utilisés comme points de lancement pour les attaques DOS. Les attaques DOS ont peu changé depuis 1999. La plupart des outils d'attaque de bande passante utilisent les classiques et efficaces flots de paquets pour atteindre leur objectif. Il y a vraiment peu de raisons pour les attaquants d'améliorer les algorithmes parce que les anciennes méthodes d'attaque fonctionnent encore tout à fait correctement. De plus, les différents types de flux de paquets possibles sont limités parce qu'il y a un nombre limité de permutations dans les paramètres des paquets (et que la plupart des combinaisons ont été essayées). Cependant, ce qui change ce sont les outils et les méthodes de déploiement, le style et le contrôle des attaques DDoS ainsi que leur impact. L'amélioration des techniques d'automatisation a rendu la banalisation des vers auto propageant (forte hausse des attaques aveugles hautement automatisées et visant une faille déterminée) La possibilité de choisir spécifiquement une cible a placé les utilisateurs de Windows, et plus généralement l'infrastructure de routage, en situation dangereuse. Pendant que nous voyons occasionnellement encore le déploiement et l'utilisation d'attaques DDoS classiques, les attaquants se tournent vers l'utilisation des réseaux et protocoles IRC pour les agents du DDoS. Les flux de paquets restent classiques (type de paquets habituel) et les outils d'attaque continuent de combiner plusieurs type flux selon options. Comme l'impact des attaques DoS s'est accru, les dégâts collatéraux sont également devenus importants. L'automatisation a atteint un point tel que les outils de propagations des logiciels pour le DDoS peuvent être considérés eux- mêmes comme une attaque DoS. Page 32 sur 39
Denial of Service
8. CONCLUSION Le déni de service, comme nous venons de le voir, est un terme qui regroupe un large panel d'attaques dont le but est d'empêcher l'utilisation d'une ressource limitée. Si l'opinion publique a été sensibilisée à ce problème au cours l'an 2000 (série d'offensives contre de grands noms de sites Web sur l'Internet comme Yahoo, eBay, CNN, Amazon, ZDNet, eTrade et Excite), le sujet reste plus que jamais d'actualité. En effet, un rapport qui vient de paraître et concernant la technologie Bluetooth et 802.11 parle dans ses annexes des méthodes qu'il faut employer afin d'éviter les attaques de type DoS. Nous pourrions également citer l'exemple avec les messages SMS, les SMS Bomber. Généralement, le déni de service est une attaque simple. Dans de nombreux cas, il suffit de télécharger et d’exécuter un script. Il est clair qu'aucune compétence particulière n’a été requise pour lancer la vague d’attaques par refus de service distribué contre des sites Web majeurs au début de l’année 2000. Ces attaques entraînent rarement une perte ou une altération de données, ou même des brèches dans la sécurité des systèmes. Ce sont simplement des procédures de harcèlement. Beaucoup de ces attaques sont des attaques publicitaires. La célébrité est une des raisons qui peuvent expliquer cette vague. De jeunes pirates cherchent à passer dans les journaux pour se faire connaître et être reconnus aux yeux des "bons pirates". De plus, si une cible est reconnue faillible face à une attaque facile à mettre en forme, de nombreux pirates seront tentés d'essayer à leur tour. Comme il est assez difficile de remonter une attaque jusqu'au pirate, cela en fait le type de piratage idéal pour commencer à apprendre. C'est également une solution de secours où se rabattent les pirates un peu plus expérimentés qui ont échoué dans leur tentative pour pénétrer dans un réseau. Par dépit et/ou par colère, "lancer un petit DoS ne coûte rien…". L’attaque par refus de service est une attaque particulièrement novice pour des systèmes de communication, ces derniers ayant été conçus pour communiquer. Sur Internet, inonder un ordinateur de requêtes de communication est un bon moyen de le bloquer. Si du côté du pirate lancer l'attaque n'a pas de conséquences importantes, il en est tout autre chose pour les victimes, surtout s'il s'agit de grandes compagnies. Tout d'abord, un serveur qui tombe en panne coûte toujours de l'argent à une compagnie. Cela occasionne l'intervention de techniciens, plus ou moins longue selon l'importance de l'attaque. Ensuite, l'image de marque de la compagnie prend un coup surtout si elle se positionne dans le marché de matériel de sécurité informatique. Enfin, l'interruption du système cause un arrêt des services qu'il fournit et, par conséquent, une baisse voire un arrêt de l'activité de la compagnie. Nous avons vu que beaucoup d'attaques pouvaient, sinon être évitées, du moins limitées par une configuration sérieuse et adaptée d'un firewall à l'entrée d'un réseau. Cependant, à chaque type d'attaque convient une protection particulière à appliquer, c'est-à-dire un point particulier du paquet à examiner. A terme, ces vérifications risquent d'être systématiques et coûteuses en temps. Il ne faudrait pas que le firewall, qui a pour but d'éviter des attaques DoS, en crée une lui- même en se transformant en goulot d'étranglement du trafic. Il est très dur de lutter efficacement contre les dénis de service. Pour ce genre de problème, il faut raisonner à un niveau mondial en terme de sécurité. Tant qu'on n'aura pas tout sécurisé, alors rien ne sera sécurisé contre le DoS.
Page 33 sur 39
Denial of Service
ANNEXE A : RAPPELS TECHNIQUES Le protocole IPv4 Le protocole IP (Internet Protocol) appartient à la couche 3 (routage) du modèle OSI. Il fonctionne en mode non sécurisé, c'est-à-dire que le transport des données par IP n'est pas fiable (perte de données possible, pas d'acquittement des données reçues, les paquets n'arrivent pas dans l'ordre). L'acheminement est lié à la notion de routage : les données passent par des chemins quelconques et hétérogènes. Un datagramme IP a la structure suivante : Version
HL
ToS
Total Length
ID
Flag
TTL
Protocol
Offset Header Checksum
IP Source address IP Destination address Options
Padding
Data (paquet TCP / UDP / ICMP par exemple)
[ La Fragmentation IP autorise une méthode de fragmentation et de réassemblage qui utilise trois champs des datagrammes (ID, Flag et Offset). Prenons l'exemple d'un paquet UDP fragmenté en deux paquets IP. IP
UDP
IP
Données.... Données....
L’offset sert de point de repère au protocole lors de la fragmentation des paquets. Disons par exemple que le premier paquet contient 40 octets de données (de 0 à 39). L'offset du paquet 1 est forcement égal à 0. Par contre, pour le deuxième fragment qui contient le reste des données, l’offset indique la taille des données déjà envoyées. Dans notre cas, l'offset du paquet 2 vaut 40. On arrête de concaténer les paquets dès qu’on en reçoit l’ordre grâce au Flag. Notons que pour concaténer les paquets dans l’ordre, on utilise le champ ID qui numérote les paquets et permet donc de les reclasser. Pour plus de renseignements sur ce protocole, veuillez vous conférer à la RFC 791 (RFC 2460 pour IPv6)
Page 34 sur 39
Denial of Service
Le protocole UDP Le protocole UDP (User Datagram Protocol) définit une procédure permettant à une application d'envoyer un message court à une autre application, selon un mécanisme minimaliste. Ce protocole est transactionnel et ne garantit ni la délivrance du message, ni son éventuelle duplication. Source Port
Destination Port
Length
Checksum Data
Le datagramme UDP ne constitue qu'un seul paquet IP mais sa fragmentation est possible.
Le protocole TCP Tout comme UDP, TCP (Transmission Control Protocol) s'intègre dans une architecture multicouche des protocoles, juste au dessus du protocole IP. Ce dernier permet à TCP l'envoie et la réception de segments de longueur variable, encapsulés dans un paquets IP. Le datagramme IP dispose de mécanismes permettant l'adressage d'un service TCP source et destinataire, quelles que soient leur position dans le réseau. Il s'agit d'un protocole de bout en bout fiable (acquittement des données reçues). Un contrôle de flux s'effectue par protocole d'anticipation à fenêtre variable et retransmission en bloc. Le protocole IP s'occupe aussi de la fragmentation et du réassemblage des paquets TCP. Port Source
Port Destination
Numéro de séquence (ISN) Numéro d'acquittement Offset
Réservé
Flags
Checksum
Fenêtre Pointeur données urgentes
Options
Padding Data…
Pour tout renseignement supplémentaire, consultez la RFC 793.
[ TCP et phase de connexion TCP est fiable et orienté connexion. Plusieurs mécanismes de fiabilité sont présents dont deux sont très importants dans notre cas : le séquencement des paquets et leur acquittement. Ces mécanismes rendent l'en-tête TCP nettement plus difficile à falsifier que le datagramme IP. En affectant un numéro de séquence à chaque paquet TCP et en demandant un acquittement à la Page 35 sur 39
Denial of Service
réception, il est possible de réémettre les paquets perdus. Les numéros de séquence permettent au récepteur d'ordonner les paquets reçus. Ainsi, même en passant par des routes différentes les paquets TCP sont automatiquement réordonnés. Les numéros de séquence sont codés sur un champ de 32 bits. Chaque champ comprend le numéro de séquence des quatre premiers octets de donnée. Le numéro d'acquittement d'une entité attend toujours le numéro de séquence de l'autre entité. Un mécanisme basé sur TCP comme une connexion d'un client Rlogin de la machine A sur un démon Rlogin sur la machine B a lieu comme suit : Temps 1 2 3
@1 A A A
Action --SYN--> <--ACK/SYN---ACK-->
@2 B B B
En (1) le client demande une connexion au serveur en positionnant son numéro de séquence dans l'en-tête TCP. Pour cela, il utilise le ISN (Initial Sequence Number). A la réception de ce paquet (2), le serveur répond avec son bit SYN et ACK, il place également son ISN dans l'entête et un numéro d'acquittement (qui correspond à ISN+1 du client). Le client accepte l'ISN serveur (3). Dès lors, les transferts peuvent commencer.
[ Incrémentation de numéro de séquence et ISN Au démarrage de la machine, l'ISN est initialisé à 1. A chaque seconde écoulée, l'ISN s'incrémente de 128 000 et à chaque connexion établie il s'incrémente également de 64 000. Ce mécanisme d'incrémentation automatique est utilisé pour éviter qu'une ancienne connexion TCP établie vienne perturber (par un nombre de données important) une connexion TCP avec des numéros de séquence trop proches.
[ Ports Pour autoriser plusieurs connexions simultanées, TCP utilise des ports. Ces ports sont utilisés par la pile IP pour identifier les communications réseau. Combinés avec une adresse IP, les ports TCP permettent ainsi d'identifier clairement l'utilisation du paquet et sa destination. Pour identifier les serveurs, on leur attribue des numéros de port spécifiques suivant le service fourni, comme par exemple le port 513 pour le rlogin.
[ Rlogin Ce protocole client/serveur basé sur TCP permet de se connecter d'une machine A sur une machine B à distance et cela en tenant compte de la relation de confiance, c'est à dire que si le client est identifié (par son adresse IP) dans ce cas, on ne lui demande pas de mot de passe, la connexion est directement établie.
Le protocole ICMP Le protocole IP en lui- même ne contient rien pour aider l'émetteur de datagrammes à tester la connexion de bout en bout ou de s'informer de pannes sur des nœuds du réseau. Pour permettre aux machines de l'Internet de remonter des erreurs ou de fournir des informations concernant des anomalies, un mécanisme spécial de communication par messages a été ajouté à la famille des protocoles IP. Ce protocole est ICMP (Internet Control Message Protocol). Les messages ICMP sont encapsulés dans les datagrammes IP, tout comme les données des couches protocolaires s'appuyant sur IP (i.e. TCP et UDP). La destination du message n'est pas un Page 36 sur 39
Denial of Service
hôte mais la couche logicielle de la machine à laquelle on souhaite envoyer le message IP. La seule différence avec les autres données encapsulées dans le datagramme IP réside dans la gestion des erreurs : si ce paquet provoque une erreur IP lors de son cheminement sur le réseau, il n'y a pas création d'une trame d'erreur pour le signaler. Il n'est en effet pas intéressant de créer une trame d'erreur concernant un message d'erreur ! Tous les messages ICMP ont un format particulier permettant de reconnaître le type de message (et ce dès la lecture des premiers octets qui les composent). Ainsi la structure du datagramme est découpée comme suit :
Il existe plusieurs types de messages que nous allons examiner dans ce document. Voici les principales valeurs possibles du champ type : 00 : Echo Reply 03 : Destination Unreachable 05 : Redirect 08 : Echo Request Le champ Code fournit des informations complémentaires suivant le type de message. Enfin, le Checksum, calculé selon le même algorithme qu'IP, représente le CRC des données ICMP (il n'inclut pas lors de sa détermination les octets de l'entête IP). Pour tout renseignement complémentaire, consultez la RFC 792.
Page 37 sur 39
Denial of Service
ANNEXE B : DOCUMENTATIONS Livres Sécurité Optimale 1 – 2e édition – Ecrit par un hacker – Edition CampusPress – 1999 Ce livre, écrit par un hacker inconnu, est un guide pour tout administrateur réseau sur la sécurité d’Internet et des réseaux. Il identifie les défauts de nombreux systèmes informatiques (systèmes d’exploitation, logiciels, ...etc.) et livre toutes les clés pour les corriger. Il décrit les différents types d’attaques par déni de service, des outils qui permettent ces attaques, et les attaques les plus connues. Halte aux Hackers 1 – Sécurité réseaux : secrets & solutions – Stuart McClure, Joel Scambray, George Kurtz – Edition Osman Eyrolles Multimedia – 2000 Ce livre est clairement destiné aux administrateurs réseaux. Ecrit par trois experts américains en sécurité informatique, il recense et explique ouvertement les différentes techniques et outils couramment utilisés par les pirates pour attaquer des systèmes informatiques. Enfin il tente de colmater les failles que les pirates exploitent en apportant des parades et des solutions précises aux problèmes abordés. Un large chapitre détaille plus précisément les attaques par refus de services. Secrets et mensonges1 – Sécurité numérique dans une monde en réseau – Bruce Schneier – Edition Vuibert Informatique – 2001 Ce livre propose une réflexion sur la sécurité informatique liée à l’utilisation d’un réseau. L’auteur, un expert renommé en sécurité informatique et en cryptographie, expose, d’une manière initiatique et amusante, les enjeux (problèmes et solutions) de la sécurité liée aux réseaux de communication. Le déni de service y est abordé par des exemples concrets d’attaques.
Sites Internet http://www.securiteinfo.com Français. Un portail sur la sécurité et les attaques sur internet. On y trouve beaucoup de petites pages décrivant succinctement les attaques possibles. Divers documents (fichiers PDF) sont téléchargeables, dont Le Grand Livre qui contient tous les articles du site (pratique !). http://ww.cert.org Anglais Avis et analyses récents du CERT/CC (Computer Emergency Response Team/Coordination Center) sur les Dénis de Service (DoS), les virus, ... http://www.hsc.fr Français. Ce cabinet de consultants sur la sécurité informatique propose sur son site Web des présentations détaillées sur ce thème. http://www.guill.net Français. Bonne présentation des réseaux-protocoles ; explications assez techniques. 1
Ces trois livres sont des traductions françaises des livres originaux publiés un an auparavant.
Page 38 sur 39
Denial of Service
http://www.cisco.com Anglais. On trouve sur le site de Cisco, constructeur de matériel réseau, plusieurs présentations. http://www.certa.ssi.gouv.fr/site/CERTA-2000-INF-001/index.html.2.html Français. Note d'information du Service central de la sécurité des systèmes d'information sur Le déni de service distribué. http://www.commentcamarche.net/ Français. Site de vulgarisation sur toute l’informatique. http://www.icir.org/vern/papers/reflectors.CCR.01/reflectors.html Anglais. Une analyse sur l'utilisation de réflecteurs pour les attaques de type déni de service distribué. http://www.sans.org/dosstep/index.htm Anglais. “Help Defeat Denial of Service Attacks: Step-by-Step“ http://staff.washington.edu/dittrich/misc/ddos/ Anglais. Une (longue) liste quasi exhaustive de liens sur le déni de service distribué et des outils DoS.
Nous avons également trouvé beaucoup d’informations pratiques ou de logiciels sur des sites de pirates informatiques. Ces sites ayant tendances à disparaître rapidement, nous avons choisi de ne pas donner les adresses correspondantes.
Page 39 sur 39