DDoS, DoS, DrDoS : comment cela fonctionne ?

161103_DDoS_Cyberattaque-788x433

Expertise

Nous allons aujourd’hui nous focaliser sur les DDoS (Distributed Denial of Service, ou attaque Distribuée par Déni de Service).

Même si ces attaques ne font pas partie du TOP 10 OWASP, elles sont devenues des fléaux quotidiens pour de nombreux sites. Ces attaques simples et bon marché permettent en effet de couper des sites avec peu de moyens, pendant plusieurs heures.

Il reste intéressant de comprendre leurs fonctionnements.

DDoS : un peu de contexte

Une Dos ou DDos consiste à épuiser les ressources à disposition d’un serveur, le plus souvent celles liées au réseau. Cependant, il est également possible de saturer le disque ou la RAM ou encore les processeurs des machines visées.

Nous différencierons ici les DDoS applicative des DDoS réseau car les méthodes sont différentes et les moyens de les bloquer également. Cependant, quand vous entendez parler de DDoS ce terme se réfère aux DDoS réseau.

Le phénomène s’amplifie terriblement ces dernières années. Avec des attaques toujours plus nombreuses et des volumes de trafic qui deviennent de plus en plus massives (pour celles qui concernent le réseau), les attaques atteignent des trafics de plusieurs centaines de gigabits par seconde. Ces attaques peuvent toucher tous les services : emails, SSH, Web, etc. mais c’est souvent le Web qui est ciblé. Les célèbres attaques contre Cloudflare et Spamhaus notamment illustrent très bien l’accélération de cette tendance.

Côté victime, le coût d’une DDOS a été estimé de 7 000 à 40 000 € par heure en moyenne par le rapport de Neustar, voir beaucoup plus pour les grands sites. C’est devenu une arme de concurrence déloyale, une méthode pour obtenir une rançon, un baîllon contre les journaux qui dérangeraient un hacker et globalement une méthode de nuisance en ligne quasi intraçable. Dans 99% des cas, l’origine d’une DDoS n’est jamais connu et son auteur jamais poursuivi.

Un exemple de DDoS à la mode en ce moment

En préambule, voici un petit exemple typique de DDoS en vogue en ce moment. C’est plus précisément une DrDDoS, une attaque par déni de service distribué, par réflexion. Les 3 paramètres clefs sont :

  • Le spoofing UDP
  • Le facteur d’amplification
  • Le vecteur utilisé

Le spoofing UDP

C’est la clef de voûte de cette attaque. Le spoofing permet l’anonymat de l’attaque.

Grace au protocole UDP, qui ne demande pas d’échange à proprement parler mais émet des informations sans se préoccuper de savoir si elles sont reçues ou non correctement, l’attaquant est à la fois anonyme et il va envoyer des paquets forgés, « spoofés ». Le spoofing consiste à changer l’adresse IP source du paquet (sa provenance) en remplaçant l’adresse IP réelle de l’attaquant par celle de sa cible.

Les réponses aux paquets envoyés vont donc revenir vers la cible et non pas vers l’attaquant, c’est la partie « réfléchie » de l’attaque, par rebond.

Le facteur d’amplification

Si l’attaquant a une liaison à 100 Mb/s par exemple et qu’il envoie un ratio 1:1 de paquet, la cible recevra 10 Mb/s au maximum.

Il faut donc, pour que cette attaque soit efficace, un facteur d’amplification. Celui-ci se situe dans les protocoles utilisés et donc le vecteur utilisé. Un bon vecteur, un bon protocole, permet à l’attaquant d’avoir un facteur d’amplification de 40 à minima et jusqu’à 50, voir 200 ou plus. Plus le facteur est élevé, plus l’attaque est puissante. Nous allons voir dans le paragraphe suivant l’efficacité des vecteurs.

Avec un facteur d’amplification de 50 par exemple, atteignable de nos jours, permet avec les 100 Mb/s de notre attaquant, d’avoir à la sortie 50*100 Mb/s, soit 5 Gb/s. Cela représente déjà une sérieuse DDoS. Evidemment, l’attaquant cherchera donc à avoir une ou plusieurs connexion Gb/s en source de son attaque et un vecteur d’amplification le plus important possible.

Une DDoS a déjà atteint 400 Gb/s cette année, ce qui a bloqué un des plus gros provider de CDN d’Internet, à partir de 10 Gb/s, on commence déjà à poser beaucoup de problèmes à la plupart des opérateurs et hébergeurs.

Le vecteur utilisé

Nous voyons au travers de cet exemple que le « vecteur » utilisé, le protocole sous jacent UDP qui est impliqué, va conditionner beaucoup de choses et notamment la taille de la DDoS à la sortie. Prenons un exemple simple : le protocole réseau du jeu Quake 3, qui travaille en UDP.

Si un ordinateur veut se connecter à une partie, il demande avec quelques octets, environ 30, de mémoire, quelles sont les parties en cours. La réponse va varier en taille en fonction du nombre de parties, mais disons qu’en moyenne, si il y en a 40 sur un serveur et que chaque descriptif de partie (nb de joueurs, carte, etc.) fait 100 octets, on arrive pour 30 octets émis à avoir 4 000 octets en retours… Soit déjà un facteur de multiplication > 100.

Les vecteurs peuvent être un serveur de temps (NTP) également, un serveur de nom (DNS) ou encore un autre protocole UDP dont les réponses sont plus longues que les questions. Tout ce qui travaille en UDP, présente un bon facteur d’amplification et permet le spoofing est bon à utiliser dans ce cas.

Les différents types de (D)DoS

On peut distinguer plusieurs types d’attaques qui sont toutes dans le périmètre des DoS – « Denial of Services«  :

  • Les DoS réseau
  • Les Dos applicatives
  • Les DDoS réseau (incluant les DrDOS)
  • Les DDoS applicatives

Différence entre attaque par DoS ou par DDoS

D’une manière générale, la différence entre DoS et DDoS se situe dans la façon de distribuer l’attaque. Une DoS se fait depuis un seul point de départ alors qu’une DDoS implique depuis plusieurs ordinateurs ou serveurs différents, qu’elles soient applicative ou réseau.

Une attaque DoS (Denial of Services) typique serait d’envoyer 10 Gb/s depuis une même adresse IP / machine vers un serveur cible pour saturer sa connexion réseau qui ne serait, par exemple, que de 1 Gb/s.

Une attaque DDoS (Distributed Denial of Services) typique serait d’envoyer 1 Gb/s depuis 10 serveurs différents pour totaliser 10 Gb/s et bloquer un serveur disposant d’une connexion 1 Gb/s. Le résultat est le même, mais les sources étant variées, l’attaque est un peu plus complexe à bloquer.

Différence entre (D)DoS réseau ou applicative

Les DDoS et DoS réseau, comme pris en exemple dans le paragraphe précédent, ont pour principal objectif de saturer la connexion réseau d’un serveur afin que celui-ci ne puisse plus répondre aux requêtes.

Les DDoS et DoS applicative, quant à elles, ciblent, en général, un site dont l’une des pages met beaucoup de temps à se générer (par exemple celle gérant l’indexation d’un catalogue produit, une méthode de Webservice gourmande en ressources ou encore tout simplement une page de checkout très chargée fonctionnellement).

Certaines pages consomment beaucoup de ressources CPU (processeur) et RAM (mémoire vive) pour se créer, notamment avec des langages interprétés (non compilés) comme PHP. En appelant plusieurs fois par minute cette page, il est possible, assez simplement et sans avoir beaucoup de machines, de bloquer le site Web concerné.

D’où viennent les DDoS ?

En général, les attaques DDoS proviennent de plusieurs centaines, voire plusieurs dizaines de milliers de machines qui soit sont compromises par un virus ou un malware, soit font partie d’un « Botnet » (contraction anglaise de « robot » & « network » symbolisant un ensemble de « machines zombies » utilisé pour des usages malveillants, exemple : spam).

Les DDoS viennent donc souvent de Botnet ou de « voluntary botnet » (ensemble de « machines zombies » dont les propriétaires ont activé volontairement leurs machines pour appartenir à un botnet),  comme dans le cas des anonymous avec L.O.I.C ou H.O.I.C – Low / High Orbit Ion Canon.

Cependant, ces attaques DDoS peuvent aussi provenir de machines dont l’adresse IP a été usurpée par l’attaquant : c’est l’IP spoofing. Ce principe s’appelle la DrDOS (Distributed Reflexion Denial of Services).

Les DrDOS

Une DrDOS (Distributed Reflection Denial of Service) est une attaque réfléchie, par rebond.

Le principe de fond, c’est d’appeler un grand nombre de serveurs (comme le DNS – serveur de noms, le NTP – serveur de temps, ou encore des protocoles de jeux vidéo online – Quake, CoD, …, etc.) en utilisant un protocole UDP (User Datagram Protocol). Ce protocole, ayant pour rôle de permettre la transmission de données entre deux entités, est l’un des principaux protocoles utilisés par Internet. Grâce au protocole UDP, il est possible d’utiliser l’adresse IP d’un tiers pour faire rebondir les paquets (fragmentation des données transmises) et cacher la source de son attaque.

L’idée est d’envoyer, à un serveur de jeux par exemple, une demande de la liste des parties en cours, de la part de la cible et non de sa propre IP. Cette requête va prendre quelques octets et la réponse peut prendre plusieurs dizaines de Kilo octets voire des Mega octets. Le pirate demande la liste de jeu de la part de la cible (en changeant son adresse IP source) et « investit » quelques octets auprès de centaines de serveurs de jeux. La cible reçoit alors des vagues énormes de paquets et de bande passante depuis tous ces serveurs. Plus le coefficient multiplicateur (le facteur d’amplification) entre la taille de la requête initiale et la taille de la réponse est grand, plus la DrDOS est efficace.

En utilisant une connexion Gigabit d’un serveur compromis ou d’une Fibre de particulier, avec un coefficient d’amplification de 20 ou 50, il devient possible d’avoir une attaque à 20 ou 50 Gigabit en utilisant quelques dizaines de serveurs. Ces montants sont énormes et certains protocoles permettent même des coefficients encore supérieurs.

Les protocoles (UDP/TCP/ICMP/etc.) qui régissent Internet et d’une manière plus générale les IP sont vieux de 40 ans et personne à l’époque n’avait prévu un tel détournement de ces outils. Aujourd’hui, il est bien évidemment impossible de changer ces fondations, tout au moins à court terme.

L’ironie des DrDOS

Ces attaques sont possibles en partie car les opérateurs télécoms laissent faire. Etant donné que, la plupart du temps, le trafic est facturé au client, les opérateurs télécoms gagnent pas mal d’argent à laisser la situation perdurer.

Pour bloquer ces attaques, il « suffirait » de ne pas transporter le trafic qui ne vient pas de son réseau vers l’extérieur de son réseau. Par exemple, si je suis chez OVH ou Free, ces opérateurs n’ont aucune raison de transporter des paquets qui ne viennent pas réellement de leurs réseaux en termes d’adresse IP source. Or, la plupart du temps, dans le cadre d’une DrDOS, l’attaquant envoie les IP depuis l’adresse IP source de la cible, qui n’est en général pas une IP du réseau de l’opérateur télécom.

Ce n’est pas totalement impossible à bloquer, loin de là, pour citer un confrère, « ce n’est pas rocket science à faire« .

Les paramètres des DDoS réseau

Volume de Bande Passante

Le volume total de bande passante émis et reçu est un des points clef. Si l’hébergeur dispose par exemple de 20 Gb/s mais que l’attaque par DDoS (et plus probablement par DrDoS) dépasse les 20 Gb/s, alors tous les sites de l’hébergeur seront bloqués. Le « tuyau » sera saturé et rien ne passera plus.

Volume de paquets

l est également possible (et de plus en plus à la mode) de tenter de saturer les équipements tels que firewall, switchs, routeurs, reverse proxy, load balancers. Il est possible de dépasser leur capacité 

de traitement en leur envoyant, notamment, trop de paquets. Si la limite d’un équipement se situe à 1 Gb/s, elle se situe également (et c’est moins connu) dans le nombre de paquets que cet équipement peut traiter par seconde.

Si une DDoS envoie 200 000 PPs (Paquet Per Second) et que la limite de traitement est à 100 KPPs, l’équipement est saturé, même si ces 200 KPPs ne représentent que 500 Mb/s de bande passante. Cette méthode consiste donc à envoyer énormément de petits paquets.

Visualiser les DDoS sur Internet

La digital attack map est une initiative conjointe de Google et Arbor Networks, qui fournit des routeurs permettant de mitiger les attaques DoS et DDoS applicative. Elle permet de visualiser en « temps réel » les principales attaques DDoS dans le monde à un moment donné. Il est intéressant de voir à quel point ce type d’attaques est devenu un standard de nos jours.

Sur cette page de la team CYMRU, nous pouvons aussi voir plusieurs graphs, dont l’un est le nombre d’attaque DDoS par jour.

L’avenir des DDoS

Ces attaques augmentent en fréquence et en volume à une vitesse assez inquiétante.

Il y a 2 à 3 ans, les Anonymous bloquaient le site du sénat Américain avec 20 Mb/s. De nos jours, Cloudflare a été très perturbé à de nombreuses reprises par des attaques qui dépassaient les 100 Gb/s et des attaques à 400 Gb/s ont vu le jour cette année. Il est même envisagé que la barre du Tb/s soit dépassée avant fin 2015.

Au-delà du nombre et des volumes, c’est aussi devenu un réflexe pour les pirates de tout poil. Avec quelques dollars par heure, il est possible d’utiliser un réseau de machines compromises et de leurs faire réaliser une DDoS. A partir de la machine de bureau qui me sert à écrire cet article, avec un simple script Perl, je peux envoyer en quelques minutes une DDoS de plusieurs Gb/s.

Bien que l’action puissent être punie d’une forte amende allant jusqu’à 75 000 € et d’une peine de prison de 3 ans, vu que les auteurs ne sont jamais trouvés (et très difficillement trouvables de toute façon), les DDoS constituent une arme simple, nécessitant peu de connaissances techniques, peu d’argent, et sont redoutablement efficace.

Il y a donc fort à parier qu’elles se multiplieront de nouveau à l’avenir, tout comme elles se sont multipliées depuis que nous avons prévenu les CERT et CERTA de la recrudescence des DrDOS il y a 3 ans.

Les méthodes classiques pour mettre fin à une (D)DoS

Il existe plusieurs méthodes pour endiguer une attaque par DoS ou DDoS. La première et l’historique, consiste à mettre l’IP attaquée en « Blackhole« . Le Blackholing consiste à informer les routeurs d’Internet, par l’entremise du protocole BGP, que l’IP ne pointe nulle part et qu’il est inutile d’envoyer du trafic à celle-ci. C’est efficace pour l’hébergeur qui retrouve sa connectivité, mais le site concerné devient inaccessible tant que son IP est dans le trou noir

La méthode plus élégante consiste à absorber le trafic global envoyé contre le site, en ayant une bande passante suffisante, puis écarter les paquets inutiles qui perturbent le trafic, tout en laissant les paquets légitimes aller jusqu’au serveur cible. Ce sont des routeurs spécialisés qui sont en charge de ce travail, tel que les Arbor Networks que NBS System utilise pour sa propre infrastructure. Ces routeurs réalisent un filtrage sur les protocoles réellement utilisés ou bien identifient les « patterns » et les échantillons types des paquets envoyés pour n’exclure que ceux non-légitimes. Ces derniers présentent, en général dans le cadre d’une DDoS réseau, des points communs permettant de les isoler des autres.

Quand la DDoS est de nature applicative, il est nécessaire de bloquer les requêtes illégitimes, en identifiant leurs points communs, pour les bloquer au niveau des reverse proxy et ne pas les laisser accéder jusqu’aux serveurs Web.

Une DoS mal connue consiste aussi à saturer le disque dur, quand cela est possible. Si un attaquant peut écrire une quantité de données suffisantes sur les disques du serveur à chaque appel d’une page ou d’un service, il devient alors possible de saturer le disque dur ou le partage de ses données sur le réseau et de rendre ainsi indisponible le site ou le service.

Les réponses de CerberHost aux (D)DoS

CerberHost déploie quatre techniques différentes pour bloquer les DDoS et les DoS, qu’elles soient applicative ou réseau :

  • Triple fournisseur télécom : Afin d’éviter que notre opérateur télécom ne soit bloqué par le fait d’une attaque contre nous ou contre l’un de ses autres clients, nous avons 3 opérateurs différents.
  • Arbor Network : Notre bande passante est protégée par des hardwares Arbor Networks. La société est considérée à ce jour comme fournissant les meilleurs outils de mitigation de ces fléaux, c’est pourquoi nous nous en sommes équipés. Ils déjouent notamment les DDoS réseau, permettant au service concerné de continuer à fonctionner, même sous forte attaque.
  • Reverse proxy : Nous bloquons les DoS & DDoS applicatives au niveau de nos reverse proxies Nginx. La méthode reste classique mais pour la résumer, nous bloquons les trames types des DoS applicatif en limitant le nombre de requêtes par seconde ou en les éliminant quand nous sommes sûrs que c’est une attaque.
  • Réglages noyau : Nos noyaux Linux sont composés et compilés sur mesure avec de nombreux patchs. Ceux-ci appliquent certains réglages aux piles TCP/IP et d’autres services de nos machines pour éviter certaines des attaques visant à épuiser les ressources.

Pour plus de détails sur les protections que propose la solution CerberHost, venez découvrir sa vidéo de présentation.