Skip to main content

El Ataque Slowloris

el-ataque-slowloris

Slowloris: El asesino silencioso de los sitios web

Imagine un escenario en el que está ejecutando un sitio web popular que recibe miles de visitantes todos los días. Ha invertido mucho tiempo y dinero para crear un servidor web rápido y confiable que pueda manejar el tráfico y entregar el contenido a sus usuarios. Todo parece funcionar bien hasta que un día, su sitio web de repente se vuelve lento y no responde. Verifica los registros de su servidor y descubre que no hay picos en el tráfico ni mensajes de error. Intenta reiniciar su servidor pero nada cambia. Te preguntas qué está pasando y cómo solucionarlo.

Puede ser víctima de un ataque Slowloris, uno de los tipos de ataques de denegación de servicio (DoS) más sigilosos y efectivos que pueden paralizar su sitio web sin que usted se dé cuenta. El ataque Slowloris es una técnica que explota una falla en la forma en que algunos servidores web manejan las solicitudes HTTP. Al enviar solicitudes incompletas o con formato incorrecto al servidor, un atacante puede mantener el servidor ocupado y evitar que procese solicitudes legítimas de otros usuarios. A diferencia de otros ataques DoS que se basan en inundar el servidor con una gran cantidad de tráfico, un ataque Slowloris se puede realizar con una sola máquina y un ancho de banda bajo.

En este artículo, explicaremos qué es un ataque Slowloris y cómo funciona, qué impacto puede tener en su servidor web y aplicación, cómo detectarlo y prevenirlo, y qué mejores prácticas puede seguir para mitigarlo. También proporcionaremos algunos ejemplos y estudios de casos de ataques Slowloris que han afectado a sitios web reales en el pasado. Al final de este artículo, tendrá una mejor comprensión de este asesino silencioso de sitios web y cómo protegerse de él.

La definición y la historia de los ataques de Slowloris

El nombre Slowloris puede sonar lindo e inofensivo, pero no dejes que te engañe. Un Slowloris es en realidad un tipo de primate nocturno que vive en el sudeste asiático y África. Tiene una cabeza redonda, ojos grandes y una lengua larga que usa para atrapar insectos y lamer glándulas venenosas en sus codos. Se mueve muy lentamente y en silencio, por lo que es difícil de detectar tanto para los depredadores como para las presas. También puede imitar una rama muerta o una serpiente para evitar ser notado.

Un ataque de Slowloris está inspirado en el comportamiento y la apariencia de este animal. Es un ataque DoS que imita una solicitud HTTP normal pero nunca la completa, lo que hace que el servidor espere más datos. Se mueve muy lentamente y en silencio, lo que dificulta su detección por parte de los firewalls y los sistemas de detección de intrusos. También puede imitar a un usuario legítimo o un navegador para evitar ser bloqueado.

La primera mención pública de un ataque de Slowloris fue en 2009, cuando un investigador de seguridad llamado Robert "RSnake" Hansen publicó una publicación de blog y un script de Perl que demostraba cómo realizar el ataque. Nombró el ataque en honor al primate Slowloris porque lo encontró divertido e irónico. También afirmó que había descubierto el ataque varios años antes, pero lo había mantenido en secreto hasta entonces.

Desde entonces, han surgido muchas variantes e implementaciones del ataque Slowloris, como PyLoris, SlowHTTPTest, OWASP HTTP Post Tool y más. Algunos de ellos han agregado funciones como encriptación, soporte de proxy, aleatorización y subprocesos múltiples. Algunos de ellos también se han dirigido a servidores o protocolos web específicos, como Apache HTTP Server, Internet Information Services (IIS), Secure Sockets Layer (SSL), Hypertext Transfer Protocol Secure (HTTPS) y más.

El ataque Slowloris ha sido utilizado por varios actores con diferentes propósitos, como hacktivistas, ciberdelincuentes, bromistas e investigadores.

El ataque Slowloris es uno de los ataques DoS más simples pero efectivos que pueden acabar con un sitio web con recursos y esfuerzo mínimos. También es uno de los ataques DoS más sigilosos y persistentes que pueden evadir las medidas de detección y prevención. En la siguiente sección, explicaremos en detalle cómo funciona el ataque Slowloris y por qué es tan poderoso.

El mecanismo básico de los ataques de Slowloris

Para comprender cómo funciona un ataque Slowloris, primero debemos comprender cómo funciona una solicitud HTTP normal. HTTP significa Protocolo de transferencia de hipertexto, y es el protocolo estándar para la comunicación entre navegadores web y servidores web. Una solicitud HTTP típica consta de tres partes: una línea de solicitud, un encabezado y un cuerpo.

La línea de solicitud contiene el método (como GET o POST), el recurso (como /index.html o /login.php) y la versión (como HTTP/1.1) de la solicitud. El encabezado contiene información adicional sobre la solicitud, como el nombre de host, el agente de usuario, el tipo de contenido, la longitud del contenido y más. El cuerpo contiene los datos reales de la solicitud, como los datos del formulario, la carga del archivo o la cookie. Una solicitud HTTP normal se parece a esto:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Cuando un navegador web envía una solicitud HTTP a un servidor web, espera recibir una respuesta HTTP del servidor dentro de un límite de tiempo determinado. La respuesta HTTP también consta de tres partes: una línea de estado, un encabezado y un cuerpo.

La línea de estado contiene la versión (como HTTP/1.1), el código de estado (como 200 OK o 404 Not Found) y la frase de motivo (como OK o Not Found) de la respuesta. El encabezado contiene información adicional sobre la respuesta, como el nombre del servidor, el tipo de contenido, la longitud del contenido y más. El cuerpo contiene los datos reales de la respuesta, como el código HTML, el archivo de imagen o la cookie. Una respuesta HTTP normal se parece a esto:

HTTP/1.1 200 OK
Date: Thu, 08 Jun 2023 12:50:58 GMT
Server: Apache/2.4.46 (Ubuntu)
Last-Modified: Mon, 12 Oct 2020 14:28:20 GMT
ETag: "2aa6-5b1f486c7e280"
Accept-Ranges: bytes
Content-Length: 10918
Vary: Accept-Encoding
Content-Type: text/html

<html>
<head>
<title>Example Domain</title>
...
</html>

Cuando un servidor web recibe una solicitud HTTP de un navegador web, procesa la solicitud y envía una respuesta HTTP al navegador. El servidor web también asigna una cierta cantidad de recursos (como memoria, tiempo de CPU y ancho de banda de la red) para manejar cada solicitud. El servidor web solo puede manejar un número limitado de solicitudes a la vez, según su configuración y capacidad. Este límite se denomina número máximo de conexiones simultáneas.

Un ataque Slowloris explota este límite al enviar solicitudes HTTP incompletas o con formato incorrecto al servidor web. Un ataque de Slowloris puede verse así:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
X-a:

Tenga en cuenta que a esta solicitud le faltan algunas partes de una solicitud normal:

No hay carácter de final de línea (\r\n) después del último campo de encabezado (X-a). No hay una línea en blanco (\r\n\r\n) después de la sección del encabezado.

Esto significa que esta solicitud está incompleta. Los servidores web seguirán aceptando esta solicitud y esperarán más datos del cliente antes de enviar una respuesta o cerrar la conexión.

Un atacante de Slowloris enviará muchas solicitudes de este tipo al servidor web utilizando múltiples conexiones y las mantendrá abiertas el mayor tiempo posible. El atacante también enviará periódicamente algunos datos adicionales (como un carácter de espacio u otro campo de encabezado) a cada conexión para evitar que el servidor agote el tiempo de espera y cierre la conexión. De esta forma, el atacante puede ocupar todas las conexiones disponibles en el servidor web e impedir que otros usuarios legítimos accedan al sitio web.

El ataque Slowloris es muy efectivo porque requiere muy pocos recursos y ancho de banda del atacante, pero consume muchos recursos y ancho de banda del servidor. El ataque Slowloris también es muy sigiloso porque no genera mucho tráfico ni mensajes de error que puedan ser detectados por firewalls o sistemas de detección de intrusos. El ataque Slowloris también puede eludir algunas defensas comunes contra los ataques DoS, como la limitación de velocidad, el bloqueo de IP o las cookies SYN, porque imita el comportamiento normal del usuario y no utiliza una gran cantidad de paquetes o conexiones.

Los tipos y variantes de los ataques de Slowloris

Desde que se publicó el ataque Slowloris original en 2009, han surgido muchos tipos y variantes de ataques Slowloris, dirigidos a diferentes servidores web y protocolos. Algunos tipos y variantes comunes de los ataques de Slowloris son:

  • Encabezados lentos: este es el tipo básico de ataque Slowloris que describimos en la sección anterior. Envía solicitudes HTTP incompletas o mal formadas con encabezados lentos al servidor web y mantiene abiertas las conexiones. Este tipo de ataque puede afectar a cualquier servidor web que no valide o limite el tamaño del encabezado o el tiempo de espera del encabezado de las solicitudes HTTP.
  • Cuerpo lento: este tipo de ataque Slowloris envía solicitudes HTTP completas con cuerpos lentos al servidor web y mantiene abiertas las conexiones. Envía los datos del cuerpo muy lentamente, un byte a la vez, para mantener al servidor esperando más datos. Este tipo de ataque puede afectar a cualquier servidor web que no valide o limite el tamaño del cuerpo o el tiempo de espera del cuerpo de las solicitudes HTTP.
  • Lectura lenta: este tipo de ataque Slowloris envía solicitudes HTTP completas al servidor web, pero lee las respuestas HTTP muy lentamente, un byte a la vez, para mantener abiertas las conexiones. Obliga al servidor a almacenar en búfer los datos de respuesta hasta que se puedan enviar al cliente. Este tipo de ataque puede afectar a cualquier servidor web que no limite el tamaño del búfer o el tiempo de espera del búfer de las respuestas HTTP.
  • POST lento: este tipo de ataque Slowloris envía solicitudes POST con cuerpos lentos al servidor web y mantiene abiertas las conexiones. Envía los datos del cuerpo muy lentamente, un byte a la vez, para mantener al servidor esperando más datos. Este tipo de ataque puede afectar a cualquier servidor web que procese solicitudes POST, como los que gestionan el envío de formularios o la carga de archivos.
  • SSL lento: este tipo de ataque Slowloris envía solicitudes de protocolo de enlace SSL/TLS con encabezados o cuerpos lentos al servidor web y mantiene las conexiones abiertas. Envía los datos del protocolo de enlace muy lentamente, un byte a la vez, para mantener al servidor esperando más datos. Este tipo de ataque puede afectar a cualquier servidor web que admita el cifrado SSL/TLS, como los que utilizan el protocolo HTTPS.
  • HTTPS lento: este tipo de ataque Slowloris combina SSL lento y encabezados lentos o ataques de cuerpo lento para apuntar al protocolo HTTPS. Envía solicitudes de protocolo de enlace SSL/TLS con encabezados o cuerpos lentos y luego envía solicitudes HTTP con encabezados o cuerpos lentos a través de la conexión cifrada. Este tipo de ataque puede afectar a cualquier servidor web que admita el protocolo HTTPS.

Otras variantes pueden usar diferentes métodos (como PUT o DELETE) o recursos (como /cgi-bin o /admin) para desencadenar diferentes comportamientos en el servidor web. Otras variantes también pueden usar diferentes técnicas (como encriptación, soporte de proxy, aleatorización o subprocesos múltiples) para mejorar su efectividad o sigilo.

Impacto de los ataques de Slowloris en servidores web y aplicaciones

Los ataques de Slowloris pueden tener un impacto significativo en los servidores web y las aplicaciones, afectando su rendimiento y funcionalidad. Aquí puedes encontrar algunos efectos de los ataques de Slowloris:

  • Disponibilidad reducida: los ataques de Slowloris pueden reducir la disponibilidad de los servidores web y las aplicaciones al consumir todas las conexiones disponibles e impedir que otros usuarios legítimos accedan al sitio web. Esto puede resultar en una condición de denegación de servicio (DoS), donde el sitio web se vuelve lento o inaccesible para los usuarios. Esto también puede afectar la reputación y los ingresos del propietario del sitio web, así como la satisfacción y lealtad de los usuarios.
  • Mayor consumo de recursos: los ataques de Slowloris pueden aumentar el consumo de recursos de los servidores web y las aplicaciones al obligarlos a asignar y mantener más recursos (como memoria, tiempo de CPU y ancho de banda de red) para cada conexión. Esto puede resultar en una degradación del rendimiento, así como un aumento en los costos operativos y el consumo de energía. Esto también puede crear una vulnerabilidad para otros tipos de ataques, como el agotamiento de la memoria o los ataques de desbordamiento del búfer, que pueden explotar el uso excesivo de recursos.
  • Funcionalidad deteriorada: los ataques de Slowloris pueden afectar la funcionalidad de los servidores web y las aplicaciones al interferir con sus operaciones y procesos normales. Por ejemplo, algunos servidores web pueden tener un límite en la cantidad de solicitudes o procesos simultáneos que pueden manejar, y exceder este límite puede provocar que se bloqueen o funcionen mal. Algunas aplicaciones web también pueden depender de la finalización o el tiempo de ciertas solicitudes o procesos, y retrasarlos o bloquearlos puede hacer que fallen o se comporten de forma inesperada.

Los ataques de Slowloris pueden causar daños graves al servidor web y la aplicación, así como al propietario del sitio web y a los usuarios.

Cómo detectar y prevenir ataques de Slowloris

Los ataques de Slowloris pueden ser difíciles de detectar y prevenir, ya que no generan mucho tráfico ni mensajes de error que los cortafuegos o los sistemas de detección de intrusos puedan detectar fácilmente. Aquí puede encontrar herramientas y métodos que pueden ayudar a detectar y prevenir los ataques de Slowloris:

  • Herramientas de monitoreo: las herramientas de monitoreo pueden ayudar a detectar ataques de Slowloris al analizar el tráfico y el rendimiento del servidor web y la aplicación. Por ejemplo, algunas herramientas de monitoreo pueden medir la cantidad de conexiones simultáneas, el tiempo de respuesta, el uso de recursos y la tasa de error del servidor web y la aplicación. Si estas métricas muestran un aumento o disminución anormal, puede indicar un ataque de Slowloris. Algunas herramientas de monitoreo también pueden alertar al propietario o administrador del sitio web cuando se detecta un ataque de Slowloris y proporcionar información sobre el origen y la naturaleza del ataque.
  • Herramientas de configuración: las herramientas de configuración pueden ayudar a prevenir los ataques de Slowloris al ajustar la configuración y los parámetros del servidor web y la aplicación. Por ejemplo, algunas herramientas de configuración pueden limitar la cantidad de conexiones simultáneas, el tamaño del encabezado, el tiempo de espera del encabezado, el tamaño del cuerpo, el tiempo de espera del cuerpo, el tamaño del búfer y el tiempo de espera del búfer del servidor web y la aplicación. Estos límites pueden ayudar a reducir el impacto de los ataques de Slowloris al cerrar o rechazar solicitudes o respuestas incompletas o con formato incorrecto. Algunas herramientas de configuración también pueden habilitar o deshabilitar ciertas funciones o módulos del servidor web y la aplicación que pueden ser vulnerables o innecesarios para los ataques de Slowloris.
  • Herramientas de seguridad: las herramientas de seguridad pueden ayudar a prevenir los ataques de Slowloris al filtrar o bloquear el tráfico malicioso o las solicitudes para que no lleguen al servidor web y la aplicación. Por ejemplo, algunas herramientas de seguridad pueden usar firmas o heurísticas para identificar y bloquear solicitudes de Slowloris en función de sus características o patrones. Algunas herramientas de seguridad también pueden usar listas blancas o listas negras para permitir o denegar el acceso a ciertas direcciones IP o dominios que pueden estar involucrados en los ataques de Slowloris. Algunas herramientas de seguridad también pueden utilizar la limitación o aceleración de la velocidad para controlar la frecuencia o la intensidad de las solicitudes de ciertos orígenes o destinos que pueden estar involucrados en los ataques de Slowloris.

Una de las herramientas de seguridad más efectivas que puede proteger contra los ataques de Slowloris es PowerWAF. PowerWAF es un firewall de aplicaciones web o WAF, que brinda protección integral para servidores web y aplicaciones contra varios tipos de ataques, incluidos los ataques Slowloris. PowerWAF puede detectar y bloquear solicitudes de Slowloris utilizando algoritmos y reglas avanzados que pueden distinguir entre tráfico legítimo y malicioso.

Servidores conocidos vulnerables a los ataques de Slowloris

Los ataques de Slowloris pueden afectar a cualquier servidor web que no valide o limite el tamaño del encabezado, el tiempo de espera del encabezado, el tamaño del cuerpo, el tiempo de espera del cuerpo, el tamaño del búfer o el tiempo de espera del búfer de las solicitudes o respuestas HTTP. Algunos servidores web son más vulnerables que otros debido a su diseño o configuración.

Los servidores web más vulnerables son aquellos basados en subprocesos, como Apache HTTP Server 1.x y 2.x, dhttpd 0.9c e Internet Information Services (IIS) 6.0 y anteriores. Los servidores web basados en subprocesos utilizan un subproceso independiente para cada conexión, y cada subproceso consume una cierta cantidad de recursos (como memoria y tiempo de CPU). Cuando un ataque de Slowloris ocupa todos los subprocesos disponibles en el servidor web, evita que el servidor web procese otras solicitudes.

Algunos servidores web que admiten cifrado SSL/TLS o protocolo HTTPS también son vulnerables a los ataques de Slowloris, como Apache HTTP Server 2.2.15 y anteriores e Internet Information Services (IIS) 7.0 y anteriores. El cifrado SSL/TLS o protocolo HTTPS agrega una capa adicional de seguridad y complejidad a la comunicación entre el servidor web y el cliente. Sin embargo, también agrega una capa adicional de vulnerabilidad y sobrecarga al servidor web. Un ataque Slowloris puede explotar esto mediante el envío de solicitudes de protocolo de enlace SSL/TLS lentas o solicitudes HTTP lentas a través de la conexión cifrada.

NGINX 1.5.9 y versiones anteriores también son vulnerables a los ataques de Slowloris utilizando su configuración predeterminada.

En cualquier caso, es importante probar y monitorear su servidor web en busca de signos de ataques Slowloris y aplicar las medidas de mitigación adecuadas.

Recomendaciones para la configuración del servidor web para mitigar los ataques de Slowloris

Los servidores web suelen ser el objetivo de los ataques de Slowloris, que pueden consumir todas las conexiones disponibles en el servidor web y provocar una condición de denegación de servicio (DoS). Para prevenir o mitigar tales ataques, los administradores de servidores web deben configurar sus servidores web correctamente y usar herramientas y módulos de seguridad apropiados.

Las siguientes son las recomendaciones para la configuración del servidor web para mitigar los ataques de Slowloris:

  • Establezca un tiempo de espera para las solicitudes HTTP: una de las formas de evitar los ataques de Slowloris es establecer un tiempo de espera para recibir la línea de solicitud, el encabezado de la solicitud y el cuerpo de la solicitud de una solicitud HTTP. Si el cliente no envía la solicitud completa dentro del tiempo especificado, el servidor web debe cerrar la conexión. Esto puede ayudar a prevenir ataques de Slowloris que envían solicitudes incompletas o mal formadas o envían datos muy lentamente.
  • Limite el número de conexiones simultáneas por dirección IP: Otra forma de prevenir los ataques de Slowloris es limitar el número de conexiones simultáneas que una sola dirección IP puede abrir en el servidor web. Esto puede ayudar a prevenir los ataques de Slowloris que usan múltiples conexiones desde la misma fuente.

Configuración de Apache para prevenir ataques de Slowloris

Los ataques de Slowloris pueden explotar la forma en que Apache maneja las solicitudes HTTP y consumir todas las conexiones disponibles en el servidor web, lo que provoca una condición de denegación de servicio (DoS).

Afortunadamente, hay algunas formas de configurar Apache HTTP Server para prevenir o mitigar los ataques de Slowloris:

  • Utilice el módulo mod_reqtimeout: este módulo le permite establecer un tiempo de espera para recibir la línea de solicitud y el encabezado de solicitud de una solicitud HTTP. Si el cliente no envía la solicitud completa dentro del tiempo especificado, la conexión se cierra. Esto puede ayudar a prevenir los ataques de Slowloris que envían solicitudes incompletas o mal formadas. Para usar este módulo, debe habilitarlo y agregar algo como esto a su archivo de configuración:
<IfModule reqtimeout_module>
RequestReadTimeout header=10-20,MinRate=500 body=10,MinRate=500
</IfModule>

Este ejemplo establece un tiempo de espera de 10 segundos para recibir la línea de solicitud, un tiempo de espera de 10 a 20 segundos para recibir el encabezado de la solicitud (según el tamaño del encabezado) y un tiempo de espera de 10 segundos para recibir el cuerpo de la solicitud. También establece una velocidad de datos mínima de 500 bytes por segundo tanto para el encabezado como para el cuerpo. Puede ajustar estos valores según sus necesidades.

  • Utilice el módulo mod_limitipconn: Este módulo le permite limitar la cantidad de conexiones simultáneas desde una sola dirección IP. Esto puede ayudar a prevenir los ataques de Slowloris que usan múltiples conexiones desde la misma fuente. Para usar este módulo, debe habilitarlo y agregar algo como esto a su archivo de configuración:
<IfModule mod_limitipconn.c>
<Location />
MaxConnPerIP 30
</Location>
</IfModule>

Este ejemplo limita la cantidad de conexiones por dirección IP a 30 para cualquier ubicación en el servidor web. Puede ajustar este valor según sus necesidades.

  • Usar otros módulos: existen otros módulos que pueden ayudar a prevenir los ataques de Slowloris agregando varios controles o límites a las solicitudes o respuestas HTTP, como mod_qos, mod_evasive, mod_security, mod_noloris y mod_antiloris. Puede encontrar más información sobre estos módulos y cómo usarlos en sus respectivos sitios web o documentación.

Conclusión: cómo proteger su sitio web de los ataques de Slowloris

En este artículo, hemos explicado qué es un ataque Slowloris y cómo funciona, qué impacto puede tener en su servidor web y aplicación, cómo detectarlo y prevenirlo, y qué mejores prácticas puede seguir para mitigarlo.

Ahora debería tener una mejor comprensión de este asesino silencioso de sitios web y cómo protegerse de él. Sin embargo, recuerde que los ataques de Slowloris no son el único tipo de ataques DoS que pueden amenazar la seguridad y el rendimiento de su sitio web. Hay muchos otros tipos de ataques DoS que pueden explotar diferentes vulnerabilidades o características de su servidor web o aplicación. Por lo tanto, es importante mantener siempre actualizados y parcheados su servidor web y su aplicación, monitorear su tráfico y rendimiento con regularidad, y utilizar una herramienta de seguridad confiable como PowerWAF para defenderse contra varios tipos de ataques.

Esperamos que haya encontrado este artículo útil e informativo. Si tiene alguna pregunta o comentario, no dude en contactarnos o dejar un comentario a continuación. ¡Gracias por leer y mantente a salvo!

Comienza tu prueba gratis de 7 días

Implementa WAF y CDN en tus sitios web