Attaques DoS et DDoS

mieux protéger une application internet

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com
Elles sont unes des attaques les plus difficiles à contrer. Ces types d'agressions, nommées les attaques par déni de service (denial of service attack, DoS) feront l’objet de cet article.

Dans la première partie de l'article on verra en quoi consiste le DoS. On abordera également de différents scénarios d'attaque. On verra aussi ce que veut dire DDoS. La deuxième partie présentera le caractère social des attaques DoS. Dans le dernier paragraphe on se penchera sur les méthodes de protection qui ne sont pas totalement sûres.

Arme massive
Les attaques DoS ont pour but de mettre hors ligne un service. Il peut s'agir aussi bien d'un simple site internet de l'entreprise concurrentielle que du site internet d'un gouvernement. L'attaque ne consiste pas à exploiter les failles de sécurité. Sa méthode de fonctionnement repose sur l'épuisement des ressources. Par exemple, un site internet est hébergé sur un serveur qui peut gérer 100 connexions simultanées. Pour mener une attaque DoS dessus, il nous suffit de bombarder la machine avec 101 connexions.

Rarement ces attaques sont menées par une seule machine. Dans la majorité des cas, l'attaquant compose son armée avec des ordinateurs "zombies". Rarement ces ordinateurs y participent volontairement. Le plus souvent ils sont victimes de toute sorte des virus et de troians, grâce à quoi l'attaquant entre en leur possession. L'attaquant organise donc son offensive à moindre coût, sans un grand investissement dans le matériel. Dans le cas d'une attaque groupée, avec des ordinateurs "zombies", on parle d'une attaque DDoS (distributed denial of service attack - déni de service distribué).

Comme mentionné, l'attaquant peut prendre contrôle sur les ordinateurs grâce à des virus. Mais on peut également effectuer cette offensive avec une simple commande ping. Il suffit alors préciser la quantité de données à envoyer. Un appel d'exemple peut se présenter ainsi :

ping VICTIM_IP_ADDRESS -t -l 30000

Cette commande enverra 30000 bytes de données à VICTIM_IP_ADDRESS. L'attaque provoquera le déni de service uniquement quand l'attaquant aura la bande passante plus importante que la victime. La deuxième condition est la réaction de la victime au ping de l'attaquant.

DoSocial
Les attaques DoS portent une double casquette. De l'un côté elles sont utilisées pour demander un rançon de la part de futures victimes. Dans le passé quelques Russes ont demandé à des sites de jeux en ligne plusieurs milliers de dollars. Cette rançon devait leur éviter de subir les attaques DoS.

Cependant, le caractère DoS a un sens plus fort qu'économique. Il a un fort rôle social et est souvent une réponse de la société de communication à des décisions économiques et sociales. L'été dernier les membres malaisiens du groupe Anonymous ont lancé une attaque DoS contre le site du gouvernement malaisien. La raison ? Selon eux, les politiques censurent trop l'échange à travers l'internet.

Un autre exemple date du novembre 2010. C'est alors que le groupe Anonymous a frappé contre les sites des entreprises liées au business cinématographique aux Etats-Unis, en Australie et en Europe. C'était la réaction du groupe à des projets de loi visant à limiter la liberté d'échange des données sur la Toile.

Protections contre DoS
Les attaques DoS sont faciles à exécuter et difficiles à contrôler. Mais malgré cela, les solutions étant en mesure de les contrer existent.

La première solution consiste à déployer un centre de nettoyage (cleaning center). Cette machine a pour but de capter l'ensemble du traffic et de le filtrer. Finalement, uniquement des requêtes valables (jugées vraies) sont transmises au serveur final. La solution a été utilisée en 2008 par Orange Labs. Le scénarion est parfaitement expliquée sur le blog de cette entreprise.

Une autre solution s'appelle Reverse Path Forwarding. Elle vérifie si chaque paquet de données entrant correspond au chemin le plus court entre le routeur et la source. Si c'est le cas, le paquet est acceptée. La technique repos sur le même principe de filtrage que celle utilisée par Orange Labs.

Pour protéger l'infrastructure après la détection de l'attaque DoS on peut également employer le black hole route. Il s'agit d'un dispositif qui fait disparaître tout le trafic destiné à une machine. Cependant, la grosse limite de cette solution est qu'elle s'applique à tous les paquets envoyés, donc même ceux qui sont valables.

On a bien pu voir ces derniers jours la réaction des internaute après la signature de l'ACTA. Les sites de plusieurs gouvernements ont été bloqués suite, entre autres, à des attaques DDoS. On voit clairement que malgré tous les systèmes de filtrage, une attaque DDoS peut s'avérer inévitable.


L'article écrit en rythme de:
Slaï - Si Ou Enme Mwen
Bartosz KONIECZNY 28-01-2012 20:47 sécurité des applications web
Un conseil PHP

Comment créer un base string pour OAuth

Création d'un base string pour OAuth consiste à récupérer 3 éléments et les concaténer. Il s'agit de : - la méthode HTTP d'appel de la ressource (GET ou POST) - l'url de l'appel (sans paramètres) - les paramtères utilisés dans la requête (il ne faut pas inclure oauth_signature car elle n'est pas encore générée) Tous les 3 éléments doivent être normalisés et concaténés avec un ampersand (&). L'ampersand ne peut pas subir l'encodage. Une méthode pour générer un base string peut se présenter ainsi :

function setBaseString($method, $url, $paramsList)
{
  $paramsString = array();
  foreach($paramsList as $p => $param)
  {
    $paramsString[] = $p.'='.$param;
  }
  return str_replace('%7E', '~', rawurlencode($method)).'&'.str_replace('%7E', '~', rawurlencode($url)).'&'.str_replace('%7E', '~', rawurlencode(implode('&', $paramsString)));
}