Sunteți pe pagina 1din 29

Flooding

Romn Castro Coedo


roman.ccoedo

ndice de contenido
Introduccin..........................................................................................................................................3
Tipos de ataques...................................................................................................................................3
HTTP Flood.....................................................................................................................................3
SYN Flood.......................................................................................................................................3
SSL Flood y Renegociacin SSL.....................................................................................................3
UDP Flood.......................................................................................................................................3
Herramientas.........................................................................................................................................4
L.O.I.C.............................................................................................................................................4
H.O.I.C.............................................................................................................................................7
Hulk DDoS....................................................................................................................................10
Killapache......................................................................................................................................14
Qslowloris......................................................................................................................................17
Slowloris........................................................................................................................................17
THC SSL DoS................................................................................................................................21
Tor's hammer..................................................................................................................................23
UDPFlood......................................................................................................................................27

Introduccin
Los ataques por inundacin (flooding) son ataques que estn diseados para tirar abajo una
red o servicio saturndolos con grandes cantidades de trfico. El objetivo principal es que la red o
servicio est tan cargada con peticiones de conexin generadas por el atacante que no pueda
procesar las peticiones de conexin reales. El resultado final es una denegacin de servicio (DoS).
A menudo, estos ataques se realizan de forma distribuida (Distributed Denial of Service, o
DDoS). La idea es utilizar mltiples conexiones a internet y distribuidas globalmente (por ejemplo a
travs de una botnet). Debido a la dispersin geogrfica de las mquinas que componen una botnet
es mucho ms difcil encontrar un patrn con el que realizar un filtrado de paquetes.

Tipos de ataques
En este apartado explicar el funcionamiento de los principales ataques por inundacin. En
la prctica existen muchas ms variantes de estos ataques.

HTTP Flood
Consiste en realizar mltiples peticiones HTTP (ya sean GET o POST) a un servidor.
Cuanto ms compleja de procesar sea la peticin para el servidor, ms fcil ser tirarlo. Si
las peticiones siguen algn tipo de patrn, no resulta complicado definir reglas en el firewall
que bloqueen las peticiones maliciosas.

SYN Flood
SYN Flood consiste en realizar un ataque de denegacin de servicio tratando de
mantener conexiones abiertas en el servidor.
En una conexin TCP normal, el usuario enva un paquete TCP SYN al servidor, el
cual le contesta con un SYN-ACK. El usuario cuando recibe este paquete confirma que lo ha
recibido con un ACK.
En un ataque SYN Flood el usuario ignora el SYN-ACK que le enva el servidor, por
lo que este queda a la espera de confirmacin.

SSL Flood y Renegociacin SSL


Pedir una conexin segura es una tarea sencilla para el cliente, pero muy costosa para
el servidor. Aprovechando esta caracterstica de SSL, se pueden realizar ataques que saturen
servidores realizando peticiones de conexin y renegociando el mtodo de cifrado de forma
continua.

UDP Flood
Los ataques por inundacin UDP son de ataques de denegacin de servicio sobre
UDP. Como UDP es no orientado a conexin, si inundamos la vctima con paquetes UDP
enviados a puertos aleatorios sta tendr que responder a todos ellos con paquetes ICMP
Destination Unreachable.

Herramientas
A continuacin explicar el funcionamiento y las opciones de las principales herramientas
de flooding. Algunas de estas herramientas son de uso genrico, tambin existen herramientas
orientadas a explotar vulnerabilidades de algunas aplicaciones en concreto.
Tambin realizar un pequeo test para el que usar dos mquinas virtuales, una actuar
como servidor (con un apache v2.2.22) y la otra de atacante.

L.O.I.C.
Qu es?
LOIC es una herramienta para realizar un ataque de denegacin de servicio. Est
programada en C#. Tambin existe una versin programada en C++ con una interfaz grfica
programada en Qt, que ser la que utilicemos en nuestras pruebas.
LOIC es una herramienta muy bsica, pero puede ser peligrosa si existen mltiples atacantes
haciendo uso de ella.
Cmo funciona?
LOIC inunda a nuestra vctima con paquetes HTTP, UDP o TCP. Adems, LOIC nos permite
realizar un ataque delegando el control a un canal de IRC, de modo que el ataque sera distribuido.
Qu parmetros podemos configurar?
Podemos configurar la ip/url de nuestra vctima, el tipo de paquete que queremos enviar, el
puerto y el nmero de procesos que queremos que lancen las peticiones. Tambin podemos
configurar el canal IRC al que queremos delegar el control, si es que queremos.
Cmo podemos defendernos de l?
Podemos proteger nuestros servidores de un ataque de este tipo mediante reglas de filtrado
en el firewall. Por ejemplo, se podra realizar un script que, peridicamente, compruebe si estamos
bajo ataque, analizando el trafico y las peticiones de una ip. Si stas se realizan en intervalos de
tiempo iguales, bloqueamos dicha ip. (http://panivinux.wordpress.com/category/loic/). Tambin
podra ayudar a mitigar el problema configurar un sistema de cach HTTP.

Ilustracin 1: La mquina atacante tiene 100 threads enviando peticiones TCP al puerto
80.

Ilustracin 2: LOIC gener una gran cantidad de paquetes.

H.O.I.C.
Qu es?
HOIC es una herramienta de denegacin de servicio similar a LOIC. HOIC permite atacar
ms de una pgina web a la vez, de este modo podemos realizar peticiones a diferentes partes de un
mismo sitio web. Si nuestra vctima alojase mltiples sitios web, tambin podramos atacarlos todos
a la vez para intentar tirar la mquina.
Cmo funciona?
Al igual que LOIC, HOIC inunda a nuestra vctima con peticiones. La principal diferencia
es que HOIC slo permite realizar floods HTTP. La mayor ventaja de HOIC es la posibilidad de
utilizar booster scripts. Con estos scripts podemos randomizar algunos de los parmetros de las
peticiones, de este modo son mucho ms complicadas de filtrar. HOIC trae unos cuantos booster
scripts, pero tambin podemos crear nuestros propios scripts.
Qu parmetros podemos configurar?
Podemos configurar el nmero de threads que se ejecutarn y aadir objetivos. Cada
objetivo es una url, y podremos seleccionar un booster script para cada uno de ellos.
Cmo podemos defendernos de l?
Aunque HOIC permite randomizar las peticiones al servidor, hay algunos patrones mediante
los cuales podemos detectar el ataque y filtrarlo. Una forma de detectar que la peticin no es
legitima, por ejemplo, es analizando el orden de las cabeceras o los espacios extra que existen en
determinadas peticiones. (Fuente: http://blog.spiderlabs.com/2012/01/hoic-ddos-analysis-anddetection.html).

Ilustracin 3: En cada url introducida podemos configurar un booster diferente.

Ilustracin 4: Con el comando top se puede ver como apache2 es el proceso que ms cpu est
utilizando en el momento del ataque.

Ilustracin 5: Ejemplo de peticin de HOIC randomizado con GenericBooster

Ilustracin 6: Otro ejemplo de peticin randomizada generada por HOIC.

Hulk DDoS
Qu es?
Hulk es una herramienta de denegacin de servicio escrita con la finalidad de exponer las
debilidades comunes de los servidores con configuraciones por defecto. Hulk es un script python
realmente simple, ya que slo tiene 155 lneas de cdigo. Debido a su sencillez, es muy fcil abrir el
cdigo y ver cmo funciona.
Cmo funciona?
El script en cuestin crea peticiones get a la url que le pasemos como parmetro, tratando de
que sean lo ms realistas posible. Para ello, monta unos vectores con distintos valores para el useragent y el referer, asigna un keep-alive aleatorio, y pide una uri diferente cada vez.

10

Qu parmetros podemos configurar?


Hulk slo toma por parmetro la url de la vctima. A diferencia de otras herramientas que
hemos analizado, no podemos configurar el nmero de threads que se van a ejecutar (aunque s es
bastante sencillo modificar el cdigo para que ejecute los threads que nosotros queremos). Por
defecto, se ejecutarn 500 threads.
Cmo podemos defendernos de l?
Como las peticiones que realiza hulk son tan diferentes, es capaz de saltarse las cachs http.
Adems como todo el trfico generado es aleatorio, es mucho ms difcil distinguir el trfico
generado por esta herramienta del real. Una forma de distinguir a hulk de un cliente web real es el
orden de los headers, de este modo podemos filtrar las peticiones de hulk y finalizar sus conexiones.
(http://blog.spiderlabs.com/2012/05/hulk-vs-thor-application-dos-smackdown.html).

11

Ilustracin 7: Hulk en accin

12

Ilustracin 8: Los picos de cpu de apache han llegado a ms del 25% de uso de cpu. Tambin
podemos ver la peticin http que realiz Hulk.

13

Killapache
Qu es?
Killapache es una herramienta de denegacin de servicio orientada a explotar una
vulnerabilidad de apache. La herramienta en cuestin es un script escrito en perl para demostrar
dicha vulnerabilidad.
Cmo funciona?
Para tumbar el servidor apache, killapache hace uso del header HTTP range. Dicho header
est diseado para reducir los requisitos de ancho de banda, y permiten a un navegador cargar slo
algunas partes de un documento (por ejemplo, para reanudar una descarga). Pedir mltiples rangos
creando una cabecera mal formada causa en apache un comportamiento errneo, que acaba con el
servidor completamente saturado.
Qu parmetros podemos configurar?
Killapache toma dos parmetros. El host y el nmero de threads que queremos utilizar.
Cmo podemos defendernos de l?
La vulnerabilidad de Apache fu corregida en su versin 2.2.20, por lo que basta con
actualizarlo para estar protegidos ante killapache.

14

Ilustracin 9: killapache en funcionamiento. Debemos pasarle por parmetro la URL y el nmero


de threads con los que queremos atacar.

15

Ilustracin 10: En la imagen se puede apreciar el header range y su valor. En mis pruebas estoy
corriendo la versin 2.2.22 por lo que la vulnerabilidad ya estaba corregida.

16

Qslowloris
Qslowloris es una interfaz grfica qt para Slowloris. Como la nica diferencia entre
Qslowloris y Slowloris es la interfaz, y me parecen ms tiles las herramientas en lnea de
comandos (es ms sencillo crear scripts que las utilicen), me centrar en Slowloris.

Slowloris
Qu es?
Slowloris es una herramienta escrita en perl para realizar denegaciones de servicio de tipo
SYN Flood sobre HTTP.
Cmo funciona?
Funciona enviando peticiones HTTP parciales, la idea es mantener muchas conexiones
abiertas a la vez, enviando headers en intervalos regulares para conseguir que los sockets no se
cierren. La principal ventaja de este enfoque es que no necesitamos tanto ancho de banda para tirar
el servidor, ya que en lugar de inundar la red, nos dedicaremos a aduearnos de todos los sockets
posibles.
A medida que los usuarios legtimos liberen sus conexiones, slowloris continuar
compitiendo por las nuevas conexiones. Por este motivo puede pasar algn tiempo hasta que
consiga tener todos los sockets colapsados.
Otra ventaja de slowloris es que los ficheros de log no van a ser escritos hasta que las
peticiones se hayan completado. Gracias a cmo funciona slowloris podemos tirar un servidor sin
que se escriba ni una sola lnea en el log del servidor, consiguiendo as que no salte ninguna alarma.
Qu parmetros podemos configurar?
Con la opcin -dns podemos especificar la url de la vctima y con -port el puerto. Podemos
utilizar la opcin -test con la que encontraremos un timeout adecuado con el que realizar el ataque
(de forma que el servidor no cierre nuestras conexiones). Una vez encontrado el timeout adecuado
podemos hacer uso de las opciones -timeout, -num (nmero de sockets) y -tcpto. Tambin podemos
evitar cachs http con -cach o https con -https.
Cmo podemos defendernos de l?
Existen diversas tcnicas para miticar los ataques de slowloris. Una opcin sera limitar el
nmero de peticiones que el servidor acepta de una sola ip. Debido a la naturaleza de slowloris, si el
timeout de nuestro servidor es muy elevado esta solucin no es vlida por si misma, por lo que
deberamos considerar reducir el tiempo de conexin de un cliente.
Otra solucin podra ser aumentar la tasa de transferencia mnima de una conexin, para que
las peticiones tengan que completarse ms rpido.

17

Ilustracin 11: La opcin -test de slowloris nos permite realizar un test con el que buscar qu margen
de tiempo es el correcto para que no se cierren las conexiones. Una vez encontrado el timeout podemos
configurar el ataque con los parmetros -timeout, -num (nmero de sockets) y -tcpto (timeout de TCP)

18

Ilustracin 12: Ataque en marcha con un timeout de 30.

19

Ilustracin 13: It DOESN'T work! Slowloris colaps el servidor al momento, ya que no haba
usuarios con la conexin abierta en el momento del ataque.

20

Ilustracin 14: Pese a que el servidor estaba bajo ataque, slowloris no hizo saltar ninguna alarma.
el % de cpu y de memoria era normal para el proceso de apache2.

THC SSL DoS


Qu es?
THC SSL DoS es una herramienta para realizar denegaciones de servicio mediante SSL.
Cmo funciona?
Establecer una conexin SSL requiere mucho ms procesamiento en el servidor que en el
cliente, y esta herramienta trata de colapsar el servidor aprovechndose de sto.
La ventaja de este ataque es que se puede montar desde una sola conexin, ya que no
necesitamos tanto ancho de banda como en un HTTP Flood. Segn la documentacin, un porttil en
una lnea DSL podra competir con un servidor en un enlace 30Gbit.
Los servidores no estn preparados para procesar grandes cantidades de handshakes SSL.
Adems, no existen soluciones reales a este problema, aunque desabilitar las renegociaciones SSL
podra ayudar a reducir el impacto. El peor escenario posible sera un ataque desde mltiples nodos,
(un DDoS SSL).
Qu parmetros podemos configurar?
Los parmetros que toma thc-ssl-dos son la direccin ip y el puerto de la vctima. Tambin
debemos pasar el parmetro accept para confirmar que estamos autorizados a realizar el ataque
sobre dicho objetivo.
21

Cmo podemos defendernos de l?


Existen dos formas de mitigar el problema. Podemos intentar acelerar el cifrado en el
servidor, de modo que establecer la conexin no requiera tanto esfuerzo. Tambin podemos
deshabilitar las renegociaciones SSL iniciadas por el cliente, aunque esta es una solucin parcial ya
que la herramienta se puede modificar para que establezca una nueva conexin TCP para cada
handshake.
Para probar el funcionamiento de esta herramienta, lo primero que he hecho ha sido activar ssl en
apache2 (a2enmod ssl). Despus he activado el sitio https por defecto (a2ensite default-ssl).

Ilustracin 15: Parece que apache (v2.2.22), por defecto, desactiva las renegociaciones iniciadas
por el cliente, por lo que el ataque no funciona. No obstante la herramienta se puede modificar
para que establezca una nueva conexin TCP para cada handshake.

22

Tor's hammer
Qu es?
Tor's Hammer es una herramienta de denegacin de servicio mediante HTTP POST.
Cmo funciona?
Tor's Hammer realiza una peticin POST pasando los campos lentamente (entre 0.5 y 3
segundos) en la misma sesin. La herramienta va enviando byte por byte con un tiempo de espera
entre cada envo, lo que causa que los threads del servidor tengan que estar ocupados con estos
fragmentos.
Con los ataques de denegacin de servicio tradicionales necesitamos una gran cantidad de
mquinas inyectando trfico de forma simultnea, pero con esta tcnica, al igual que ocurra con
slowloris, basta una sola mquina para tumbar un servidor vulnerable porque el ataque se realiza
inyectando lentamente byte por byte.
Una funcionalidad de Tor's Hammer es la de poder pasar los ataques DoS a travs de la red
TOR, lo que permite lanzar el ataque desde direcciones IP aleatorias, por lo que, tericamente, no se
pueden rastrear.
Qu parmetros podemos configurar?
Tor's hammer puede tomar como parmetros el target, el nmero de threads que ejecutarn
las peticiones y el puerto al que ser dirigido. Adems podemos utilizar el parmetro -tor
PROXY:PUERTO para utilizar un proxy tor.
Cmo podemos defendernos de l?
Una solucin parcial a este problema sera mantener una lista con las diferentes urls que
requieren POST, y solo permitir los post para estas urls. No es una buena solucin porque el
atacante podra modificar la herramienta para realizar el post en una de las urls legtimas. Adems
no es muy cmodo tener que mantener una lista con las urls que pueden hacer post, ya que si la
aplicacin web cambia tambin tendramos que cambiar la lista.
En apache una solucin sera hacer uso de mod_reqtimeout. mod_reqtimeout est includo
por defecto desde la versin 2.2.15. Con este mdulo, si el cliente no enva el mensaje en el tiempo
configurado, la conexin caduca.
Otro mdulo que es til en este escenario es mod_qos. mod_qos implementa mecanismos de
control de calidad de servicio. mod_qos permite configurar parmetros como el nmero de
conexiones mximo del servidor, el nmero de conexiones mximo por IP, la velocidad mnima por
conexin (de modo que si es lenta, caduca), y adems permite cambiar el comportamiento de la
configuracin en funcin de la carga del servidor.
Con mod_security tambin podramos configurar reglas para que cada vez que apache
devuelva un 408 (request timeout) cuente cuntas veces ha ocurrido para una ip concreta, y si
excede el mximo bloquea esa IP durante un periodo determinado de tiempo.

23

Ilustracin 16: Tor's Hammer en accin

24

Ilustracin 17: En la imagen se puede apreciar que Tor's Hammer est realizando POSTs de 1 byte
de forma continuada.

25

Ilustracin 18: El proceso de apache2 est trabajando ms que si estuviese en reposo, pero no se
acerca a la carga que tuvo con LOIC, HOIC o Hulk. Esto es debido a que Tor's Hammer realiza el
ataque lentamente (slow-rate DoS), y es especialmente til para que el ataque sea menos
detectable. Aunque el ataque no tumb el servidor, tras unos minutos ya le costaba responder a las
peticiones legtimas.

26

UDPFlood
Qu es?
UDPFlood es una herramienta sencilla para realizar ataques de inundacin UDP.
Cmo funciona?
UDPFlood crea paquetes UDP con datos aleatorios e inunda con ellos a la vctima.
Qu parmetros podemos configurar?
Entre los parmetros que podemos configurar se encuentran, al igual que otras herramientas
comentadas anteriormente, la direccin de la vctima (que puede ser una direccin ipv4 o ipv6), el
nmero de threads que queremos crear y el puerto. Adems podemos configurar el tamao del
buffer.
Cmo podemos defendernos de l?
Los ataques por inundacin UDP se pueden agrupar en dos categoras, aquellos que se
realizan con paquetes pequeos y que intentan saturar la aplicacin (un servidor web por ejemplo) y
aquellos que se realizan con paquetes ms grandes y que intentan consumir el ancho de banda de la
conexin. Estos ltimos podran llegar a inutilizar la red donde se encuentre la vctima.
En el primer caso, la solucin sera filtrar los paquetes en un firewall, de modo que stos no
lleguen nunca a la vctima. En el segundo caso la solucin es ms compleja, y deberamos contactar
con nuestro proveedor para que sea l quien bloquee el ataque.

27

Ilustracin 19: Ataque en marcha con 10 threads. Los paquetes estn siendo dirigidios al puerto 9
(puerto en el que se descartan los paquetes entrantes)

28

Ilustracin 20: Wireshark est saturado capturando los paquetes entrantes, aunque son
descartados por la mquina ya que estn dirigidos al puerto 9.

29

S-ar putea să vă placă și