Slowloris indétectable ? Pas si sûre que cela.

Jusqu’à maintenant nous connaissons les DoS et les DDoS de bourrins, dont la technique principale est de remplir le tuyau pour rendre l’accès aux ressources impossibles. Ces techniques d’attaques n’étaient pas très discrètes et les contre-mesures difficilement possibles, à part par la mise en place de “IP Blackhole“, ou encore par le prise de contact avec le “carrier” afin de ne plus annoncer la route vers le serveur cible (ce qui revient à un auto DoS ….).

RSnake, un chercheur en sécurité informatique, de ha.ckers, a mis à disposition un outil de DoS lent nommé Slowloris permettant de rendre indisponible un serveur web HTTP d’un hôte cible à partir d’un seul hôte source et cela avec le minimum d’usage sur la bande passante et sur la performance globale du hôte cible.

Slowloris garde les connexions HTTP ouvertes en envoyant sur le serveur HTTP cible de requêtes partielles. A intervalle régulier Slowloris va continuer a envoyer des paquets afin d’empêcher le serveur web HTTP de clore les connexions ouvertes, ainsi le serveur web n’a pas la possibilité de répondre à des sollicitations légitimes.

Suivant le développeur de Slowloris, RSnake, et affirmé dans différents podcast, Slowloris serait quasiment indécelable et permettrait le DoS presque parfait. Malheureusement je n’était pas très convaincu de ces affirmations un peu hâtives. Il est vrai que RSnake avait signifié qu’un grand nombre de “sockets” sont ouverts, et que lors de la clôture de ces sockets, un grand nombre de logs sont disponibles par le biais du serveur web. Déjà trop d’indices pour que cela aussi discret que prétendu.

De bons administrateurs systèmes auront mis sous monitoring leurs serveurs web et seront avertis rapidement d’un DoS en cours sur un serveur web. Voici les empreintes d’une attaque pouvant provenir de Slowloris.

Un grand nombre de connexion ouvertes sur le serveur :

[root@fedora ~]# netstat -tan | awk -F " " '{print $4}' | grep xxx.xxx.xxx.xxx | grep 80 | wc -l
487

Un serveur web présentant un nombre de “fork” hors de la normale :

De nombreux messages d’erreurs dans logs d’erreurs HTTP :

De nombreux logs de connexions anormaux dans les logs d’accès HTTP :

Un monitoring des caractéristiques du serveur web qui devient indisponible :

Par le biais de tous ces indices il est clairement possible de détecter une attaque du type Slowloris et ainsi de bloquer rapidement la source de cette attaque.