DoS : Attaque type Slowloris (http flood)

Avatar de l’utilisateur
Malekal_morte
Site Admin
Site Admin
Messages : 84528
Inscription : 10 sept. 2005 13:57
Contact :

DoS : Attaque type Slowloris (http flood)

Message par Malekal_morte » 09 févr. 2015 13:56

DoS est l'acronyme de "Denial of Service Attack". Lorsque l'attaque est distribuée en de multiples points, on la nomme DDoS, l'acronyme de "Distributed Denial of Service Attack". Les terminologies sont nombreuses, pour une compréhension correcte, je vous invite à compulser ce lexique.

Dans ce sujet, je vais traiter principalement des attaques DoS ciblant les espaces de malekal.com.

Aujourd'hui, le Firewall ASA offert par OVH a saturé à 10 000 connexions. Plutôt habitué à ces attaques, loin d'être la première et surement loin d'être la dernière - quelques exemples sur la page : Attaques DoS et Anti-DoS OVH.

Image

Un petit tour dans les logs et on voit une attaque de type Slowloris :

Image

Image

Image

Plusieurs remarques :
  • Déjà on remarque qu'il y a une "tournante" au niveau des IPs et une seule IP ne bourrine pas tant que cela. Ce qui est plutôt une bonne chose pour l'attaquant, car mes protections ne détectent aucune anomalie et ne se déclenchent pas.
  • Les mauvais côté : on voit aucun referrer/useragent ou PHP comme useragent qui provient de sites WEB hackés. Bref des patterns qui permettent de détecter l'attaque.
Je vous rappelle la structure de mes sites : Varnish en front qui agit en proxy cache et Apache derrière.
Apache est vulnérable à ces attaques HTTP qui n'est pas capable de gérer toutes connexions.

Ici le but du jeu est de faire gérer les connexions par Varnish afin de ne les pas envoyer à Apache qui sera alors allégé et pourra traiter les connexions légitimes.
Une ou deux règles sur Varnish afin que les connexions de l'attaque ne soient plus envoyés à Apache, on renvoi un 403 par Varnish.

On voit un gros pic sur les connexions gérées par Varnish :
Image
Image

Ensuite, on blackliste les IPs en question, on voit un pic sur ipconntrack qui redescend vite car j'envoie aussi toutes les IPs sur le Firewall ASA en front du serveur dédié qui va tout bloquer. Du coup, celles-ci n'atteignent plus le serveur dédié et le nombre de drop iptables baisse.
Image

et hop ça drop sur le Firewall ASA.
Image

On monte à 700 drop/s, ce qui n'est pas énorme (j'ai eu bien pire).
Image

Quelques tweets pour se foutre de la gueule de l'attaquant : https://twitter.com/malekal_morte/statu ... 9494216704
dont celui-ci :
Image

Quelques minutes après, l'attaque double. Dans la capture ci-dessous, on voit le nombre de connexions monter et baisser.
La baisse est due aux remontés des IPs à bloquer, mon système drop les connexions établies pour alléger le Firewall ASA.

Image

Mon système de détection détecte bien le doublement de l'attaque (mails à 11h08) et ban les IPs sur le Firewall ASA.
On voit que l'attaque a duré une heure.
Image

Comme cela n'a aucun effet, l'attaquant arrête... on voit le drop/s baisser.
Image

Ce que j'ai remarqué, c'était aussi le cas pour le WordPress pingback DoS, c'est que les attaques ont lieu juste après que je publie des nouveautés sur le site des malvertising pour reporter des blocages de malvertising.
Il semblerait, comme d'habitude, qu'un groupe ne soit pas très content.

Image

Je suis assez content du système que j'ai mis en place pour détecter ce type d'attaque, même si dans ce cas il a fallu effectuer des manipulations manuelles, mais ça aide beaucoup.

Pour aller plus loin, vous pouvez aussi lire la page : Attaque DDoS : UDP Flood et quelques informations sur ce type d'attaques sur l'actualité : Blog Sucuri : Attaques populaires sur Layer 7 (HTTP Flood)

Lire Apache : Sécuriser son site
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas

Sécuriser son ordinateur (version courte)

Tutoriels Logiciels - Tutoriel Windows - Windows 10

Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares

Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.

Avatar de l’utilisateur
Malekal_morte
Site Admin
Site Admin
Messages : 84528
Inscription : 10 sept. 2005 13:57
Contact :

Re: DoS : Attaque type Slowloris

Message par Malekal_morte » 22 févr. 2015 20:57

Une autre attaque aujourd'hui (vers 15h12), beaucoup moins violente que celle évoquée dans le post précédent.

Image

Image

L'attaque visait la page de commantaire de WordPress (wp-comments-posts.php) avec des requêtes POST qui pourrait aussi saturer le serveur SQL.
Les requêtes ne sont pas très violentes.

Image

Image

Je n'étais pas devant mon ordinateur au moment de l'attaque.
Mais depuis l'attaque précédente, j'ai ajouté une autre protection qui semble avoir bien fonctionné.
Du coup, je suis assez content PDT_010

Image

Image
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas

Sécuriser son ordinateur (version courte)

Tutoriels Logiciels - Tutoriel Windows - Windows 10

Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares

Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.

Avatar de l’utilisateur
Malekal_morte
Site Admin
Site Admin
Messages : 84528
Inscription : 10 sept. 2005 13:57
Contact :

Re: DoS : Attaque type Slowloris

Message par Malekal_morte » 03 mars 2015 12:02

Encore une attaque hier entre 12h30 et ~16h - une attaque de type HTTP FLood.
Pas vraiment énorme mais assez pour que Apache ne réponde plus et perturbe les sites.

Image

Image

Quand on regarde de plus prêt, on voit que les IPs utilisées sont des noeuds TOR.

Image

Ce n'est pas la première fois que TOR est utilisé pour effectuer une attaque HTTP.
J'ai donc décide de bloquer les noeuds TOR.

Les sites suivants donnent la liste des noeuds :

Code : Tout sélectionner

https://check.torproject.org/exit-addresses
https://www.dan.me.uk/torlist
Je ne vais pas créer une règles IPTables pour chaque IP, en effet, sur le second lien, il y a ~6000 IPs.
Iptables joue les règles de manière séquentielles, quand vous avez beaucoup de règles, lors d'une attaque, ce n'est pas l'idéal.
ipset pallie à cela, j'en parlais sur la page : https://www.malekal.com/2013/09/15/attaq ... i-dos-ovh/

ipset permet de créer des listes auquelle une règle iptables est appliquée.
Dans mon cas, j'ai une liste "attaque" qui bloque les connexions sur le port 80 (www), le script ajoue des ips dans cette liste. Ces IPs sont automatiquement nettoye au bout d'1H (timeout 3600s)

ici, on créé donc une liste TOR sans timeout, les IPS resteront donc dans cette liste a verda eternam.
/usr/sbin/ipset -N tor iphash --hashsize 4096 --probes 2 --resize 50
/sbin/iptables -I INPUT -m set --match-set tor src -j DROP
On voit les deux règles sur iptables :
Chain INPUT (policy ACCEPT 43M packets, 59G bytes)
pkts bytes target prot opt in out source destination
2136 125K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 match-set tor src
9816 539K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set attaquant src tcp dpt:80
Ensuite, j'ai pondu un petit script qui permet de mettre à jour cette liste par rapport aux noeds fournis sur les liens donnés plus haut. Vous pouvez le mettre dans un cron afin de maintenir les IPS à jour - attention à ne pas mettre trop fréquent, le site dan.me.uk a des protections sur les interrogations trop fréquentes (minimum toutes les 30min).

Code : Tout sélectionner

#!/bin/sh
#curl -s https://check.torproject.org/exit-addresses| grep -i ExitAddress | cut -f 2 -d ' ' > /tmp/tor.txt
curl -L -s https://www.dan.me.uk/torlist/|egrep "([0-9]{1,3}\.){3}[0-9]{1,3}" > /tmp/tor.txt
/usr/sbin/ipset list tor|egrep "([0-9]{1,3}\.){3}[0-9]{1,3}" |sort -n> /tmp/toripset.txt

lignes=$(wc -l /tmp/tor.txt)
echo "il y $lignes IPs dans /tmp/tor.txt"
j=0
for ip in `cat /tmp/tor.txt`
do
	if [[ ! `egrep $ip /tmp/toripset.txt` ]]
	then
		j=`expr $j + 1`
		/usr/sbin/ipset add tor $ip
	fi
done
echo "$j nouvelle IPs"

j=0
for ip in `cat /tmp/toripset.txt`
do
        if [[ ! `egrep $ip /tmp/tor.txt` ]]
        then
		/usr/sbin/ipset del tor $ip
                j=`expr $j + 1`
        fi
done

echo "$j IPs retirees"
rm -f /tmp/tor*txt
ce qui donne :
il y 6689 /tmp/tor.txt IPs dans /tmp/tor.txt
5282 nouvelle IPs
117 IPs retirees
La liste ipset TOR contient nos ~6600 IPs:
root@ns206195:~# ipset list attaquant |wc -l
15
root@ns206195:~# ipset list tor | wc -l
6695
EDIT : Test HTTP Flood via TOR

Le programme Tor's Hammer permet de faire un HTTP stress test en utilisant TOR : http://packetstormsecurity.com/files/98831/

Tor doit être installé et tourner sur la machine en question.
Testez avec ma connexion ADSL :
Image

Le traffic connexions/secondes augmente.
Image

ainsi que le nombre de connexions établies.
Image

On voit que la règle iptables fonctionne car le nombre de paquets droppés augmente.

Image

Par contre, toutes les IPs TOR ne sont pas bloquées, puisque ma protection en bloque d'autre :
Image
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas

Sécuriser son ordinateur (version courte)

Tutoriels Logiciels - Tutoriel Windows - Windows 10

Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares

Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.

Avatar de l’utilisateur
Malekal_morte
Site Admin
Site Admin
Messages : 84528
Inscription : 10 sept. 2005 13:57
Contact :

Re: DoS : Attaque type Slowloris

Message par Malekal_morte » 24 avr. 2015 19:09

Vu cet article : https://www.trustwave.com/Resources/Spi ... Smackdown/

Un autre outils nommé HULK (Http Unbearable Load King). .
Le but de l'outil est de rendre la détection de l'attaque plus difficile.
HULK effectue des attaques avec un referer, useragent, pages,.. avec paramètres aléatoires.

Exemple, comme vous pouvez le voir, il y a tout de même un pattern sur les paramètres envoyés.

Code : Tout sélectionner

xxxx - - [24/Apr/2015:17:33:12 +0200] "GET https://www.malekal.com/?BIVJZJ=DGN HTTP/1.1" 200 - "http://www.usatoday.com/search/results?q=HVBVNYPRR" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1"
xxxx - - [24/Apr/2015:17:33:12 +0200] "GET https://www.malekal.com/?YBWP=CSQDL HTTP/1.1" 200 - "http://engadget.search.aol.com/search?q=HHSQJOB" "Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51"
xxxx - - [24/Apr/2015:17:33:12 +0200] "GET https://www.malekal.com/?PZTB=XBPZPNZ HTTP/1.1" 200 - "https://www.malekal.com/IPILEMBOH" "Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)"
xxxx - - [24/Apr/2015:17:33:12 +0200] "GET https://www.malekal.com/?XOPYLFY=VUSNM HTTP/1.1" 200 - "http://www.usatoday.com/search/results?q=NAVRUNZO" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
xxxx - - [24/Apr/2015:17:33:12 +0200] "GET https://www.malekal.com/?IYJMMVQZ=NGIYSGHI HTTP/1.1" 200 - "http://www.usatoday.com/search/results?q=CMABRMPRE" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
xxxx - - [24/Apr/2015:17:33:12 +0200] "GET https://www.malekal.com/?WWXG=VGUW HTTP/1.1" 200 - "http://www.usatoday.com/search/results?q=TZMULTL" "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
xxxx - - [24/Apr/2015:17:33:12 +0200] "GET https://www.malekal.com/?IBCZIUP=DAKJMNSO HTTP/1.1" 200 - "https://www.malekal.com/QIAXVJCYXV" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1"
xxxx - - [24/Apr/2015:17:33:13 +0200] "GET https://www.malekal.com/?CXK=EVVPRUCKMO HTTP/1.1" 200 - "https://www.malekal.com/TCRIHCAXLX" "Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)"
xxxx - - [24/Apr/2015:17:33:13 +0200] "GET https://www.malekal.com/?UBPMJNW=IDGPA HTTP/1.1" 200 - "http://www.usatoday.com/search/results?q=XJSLZC" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)"
xxxx - - [24/Apr/2015:17:33:15 +0200] "GET https://www.malekal.com/?IETLG=EJDUNQXAQ HTTP/1.1" 200 - "http://engadget.search.aol.com/search?q=EARDVGZKWJ" "Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)"
xxxx - - [24/Apr/2015:17:33:16 +0200] "GET https://www.malekal.com/?FFCSMRGE=BGIDNJCHV HTTP/1.1" 200 - "https://www.malekal.com/DRTUKH" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1"
xxxx - - [24/Apr/2015:17:33:16 +0200] "GET https://www.malekal.com/?XIFIEPF=LAABZBGO HTTP/1.1" 200 - "http://engadget.search.aol.com/search?q=XHJLU" "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
xxxx - - [24/Apr/2015:17:33:16 +0200] "GET https://www.malekal.com/?KNIXNJJY=EIBSTLXM HTTP/1.1" 200 - "http://engadget.search.aol.com/search?q=BFKVLCSHS" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1"
xxxx - - [24/Apr/2015:17:33:18 +0200] "GET https://www.malekal.com/?EIOZVFST=AWIYQDI HTTP/1.1" 200 - "http://engadget.search.aol.com/search?q=DMCWWBR" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1"
xxxx - - [24/Apr/2015:17:33:18 +0200] "GET https://www.malekal.com/?OJFCHEX=FON HTTP/1.1" 200 - "http://engadget.search.aol.com/search?q=NPOXQG" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3"
xxxx - - [24/Apr/2015:17:33:20 +0200] "GET https://www.malekal.com/?SNTN=ELLVRAN HTTP/1.1" 200 - "http://www.usatoday.com/search/results?q=OYFIOGWCP" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
xxxx - - [24/Apr/2015:17:33:21 +0200] "GET https://www.malekal.com/?UBNUBTN=LQEDYEV HTTP/1.1" 200 - "http://www.google.com/?q=IXYQKDGLY" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3"
xxxx - - [24/Apr/2015:17:33:23 +0200] "GET https://www.malekal.com/?KBHJERHQ=TRDB HTTP/1.1" 200 - "http://www.usatoday.com/search/results?q=QYZZORW" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
xxxx - - [24/Apr/2015:17:33:23 +0200] "GET https://www.malekal.com/?JEOPDKKGWM=PRLBM HTTP/1.1" 200 - "http://www.google.com/?q=NOMLDARN" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
xxxx - - [24/Apr/2015:17:33:23 +0200] "GET https://www.malekal.com/?MBOQXFHO=NTQLSKVSO HTTP/1.1" 200 - "https://www.malekal.com/ZPCYHJAS" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
Image

Mes protections devraient prendre en charge cet outil. De plus, il y a possibilité d'ajouter une règle sur Varnish pour détecter ces paramètres qui sont finalement assez atypiques puisque tout est en majuscule.
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas

Sécuriser son ordinateur (version courte)

Tutoriels Logiciels - Tutoriel Windows - Windows 10

Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares

Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.

Avatar de l’utilisateur
Malekal_morte
Site Admin
Site Admin
Messages : 84528
Inscription : 10 sept. 2005 13:57
Contact :

Re: DoS : Attaque type Slowloris (http flood)

Message par Malekal_morte » 21 sept. 2015 14:22

Une option sympa d'iptables qui, d'après les tests, fonctionne pas mal, c'est connlimit.
Celle-ci permet de limiter le nombre de sessions TCP par IP.

Par exemple pour limiter à 10 sessions TCP par IP pour le port 80, cela donne :
/sbin/iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 -j DROP
Ci-dessous, la règles iptables pendant les tests.
On voit que le nombre de paquets droppés augmentent durant l'attaque, la règle absorbe donc tout.
Apache_iptables_ratelimit.png
Apache limiterate Iptables
Un graph munin qui montre le nombre de paquets droppés par la règle.
On passe de ~30 à 8000.
Apache_iptables_ratelimit_3.png
Apache limiterate Iptables
Au final, le nombre de connexion double, pour passer de 250 à environ 600.
Sans la règle, il passe facilement les 1500.
Cette règle iptables fait donc bien son boulot pour atténuer l'attaque.
Apache_iptables_ratelimit_2.png
Apache limiterate Iptables

D'autre part, mais pas testé ayant varnish, à signaler l'existence module Apache anti-slowloris : mod-antiloris.

Vendredi dernier, encore une petite attaque, toujours via TOR.
Je reviendrai éditer pour un feedback de la règle iptables sur la prochaine attaque.
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas

Sécuriser son ordinateur (version courte)

Tutoriels Logiciels - Tutoriel Windows - Windows 10

Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares

Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.

Avatar de l’utilisateur
Malekal_morte
Site Admin
Site Admin
Messages : 84528
Inscription : 10 sept. 2005 13:57
Contact :

Re: DoS : Attaque type Slowloris (http flood)

Message par Malekal_morte » 25 sept. 2015 14:36

Les attaques continuent PDT_007

Une vers 12h avec une petite pointe sympa au départ :
Image

Image

Qui tombe vite à un niveau assez bas (du niveau lorsque j'effectue des tests, voir message précédent) :

Image

Tout ça pour en venir aux règles iptables - le ratelimit aide pas mal :

Image

En chiffres, on voit que "Rate-limite" a bloqué pas mal de paquets.
39876 3018K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set attaquant src tcp dpt:80 /* ACC-AntiDOS */
116K 6767K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set tor src tcp dpt:80 /* ACC-Tor */
162K 9121K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 #conn src/32 > 20 /* ACC-Apache-limitrate */
La combinaison des trois solutions est donc intéressante.

(Merci à l'attaquant pour les tests effectués PDT_008)
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas

Sécuriser son ordinateur (version courte)

Tutoriels Logiciels - Tutoriel Windows - Windows 10

Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares

Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.

Répondre

Revenir vers « Tech, Tips & Tricks »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité