Los ataques de denegación de servicio (DoS) son probablemente uno de los tipos de ataques más sencillos de llevar a cabo y a la vez uno de los más complicados de contrarrestar. Estos hechos han provocado en los últimos tiempos que este tipo de ataques informáticos se hayan convertido en recurso habitual para todo tipo de hackers, aunque también nos pueden servir a los administradores de red como test para comprobar hasta que punto pueden llegar a responder nuestros sistemas.
La denegación de servicio (Dos) consiste básicamente y a grandes rasgos en enviar un gran número de peticiones a un servidor de manera que los usuarios legítimos del servicio no puedan acceder a esos recursos, por ejemplo cuando se satura una web a través de un ataque DoS un usuario que quiera consultar esa web la encontrará caída.
Históricamente los ataques DoS se reservaban y solo solían ejecutarlos hackers contra grupos rivales, websites, servidores... pero la aparición de herramientas públicas (LOIC..) y el gran crecimiento de las botnets y con ellas la evolución de los ataques DoS a DDoS (Distributed Denial of Service) han hecho como comentábamos que este tipo de ataques se hayan convertido en muy habituales, causando pérdidas multimillonarias cada año.
Principales tipos de ataques DoS
Ataque de inundación de buffer (Buffer Overflow)
Este tipo de ataque DoS diríamos que es el clásico, consiste en enviar más paquetes de las que el buffer del servicio puede manejar, por tanto llegado al límite del buffer, el servidor comienza a no poder responder a las nuevas peticiones. Saturando el buffer el atacante impide que peticiones legítimas sean correctamente contestadas por el servidor.
Ataque de inundación de SYN (SYN Flood)
Cuando se inicia una conexión TCP entre un cliente y el servidor se ejecuta el llamado saludo a tres bandas, durante este saludo normalmente el cliente envía un mensaje SYN (synchronize) al servidor, este le responde con un mensaje SYN-ACK (synchronize aknowledge) y finalmente el cliente envía un ACK (aknowledge) con lo que la conexión queda establecida.
Durante este proceso de saludo a tres bandas, el servidor espera durante un tiempo determinado a recibir el ACK final por parte del cliente, ya que por ejemplo una congestión de tráfico puede hacer que este ACK no llegue al instante. El ataque de inundación de SYN consiste en que el atacante envía una gran cantidad de SYN, sin llegar a completar el saludo a tres bandas con el ACK final, con lo que el servidor permanece con un gran número de peticiones a medio completar con lo que no es capaz de atender las peticiones legítimas.
Ataque Teardrop
El ataque Teardrop explota la manera en la que el protocolo IP requiere que un paquete demasiado grande para el siguiente router sea dividido en fragmentos. El paquete una vez dividido identifica un offset hacía el principio del primer paquete el cual permite que una vez llegan todos los fragmentos al destino el paquete original sea reconstruido.
Lo que hace el atacante es insertar un valor alterado en el segundo fragmento (o posterior) causando que el sistema destinatario no pueda reconstruir el paquete provocando el consecuente fallo en ese sistema. Este ataque afecta únicamente a sistemas operativos antiguos.
Ataque de inundación ICMP
En este caso el atacante envía una gran cantidad de peticiones ICMP echo request (ping), a las que el servidor responde con un ICMP echo reply (pong) lo cual sobrecarga tanto el sistema como la red de la víctima, llegando al punto de que el objetivo no puede responder a otras peticiones.
Ataque Smurf
Este es similar al ataque anterior, en este caso el atacante envía paquetes ICMP echo request (ping) a una IP de broadcast usando como dirección origen la dirección de la víctima, el resto de equipos conectados a la red enviarán un ICMP echo reply a la víctima, si imaginamos que estamos en una red de 100 máquinas, por cada ICMP echo request (ping) que enviemos simulando ser la víctima (spoofing), la víctima recibirá 100 paquetes ICMP echo reply (pong) es decir una inundación de ICMP multiplicada por el total de equipos en la red.
Contramedidas
No existe una solución perfecta contra ataques DoS, ya que se basan en peticiones legítimas que obviamente no podemos bloquear completamente en nuestros servidores en cambio podemos configurar algunos elementos de nuestra red, como Firewalls o sistemas IPS y IDS,para minimizar sus efectos.
Estos elementos correctamente configurados con balanceos de carga, detección de anomalías en el tráfico de red, bloqueo de fuentes de tráfico automatizadas en base a anomalías... pueden ayudarnos a soportar casi cualquier tipo de DoS aunque todo dependerá del número de máquinas que emplee el atacante (botnet) y la cantidad de recursos de los que dispongamos.