Boletín de RedIRIS n. 57

DDoS: Un campo de batalla abierto en la seguridad de Internet

DDoS: An Open Battlefield in the Security of the Internet

S. González García y J. Barba

Resumen

Los ataques Distribuidos de Denegación de Servicio, en adelante ataques DDoS (Distributed Denial of Service), son un desarrollo relativamente reciente, y constituyen una gran amenaza para la seguridad de Internet en nuestros días.

Algunas de las grandes companías, que proporcionan servicios a través de Internet, han sido víctimas de ataques de este tipo. Así, Yahoo, Amazon, Buy.com, eBay y CNN no fueron accesibles durante horas, lo que ocasionó grandes pérdidas económicas.

El presente documento pretende dar una visión global del problema, describiendo detalladamente el funcionamiento de los ataques DDoS. De igual forma, muestra como evitar, controlar y minimizar los daños producidos por un ataque de este tipo.

Palabras clave: denegación de servicio, ataques distribuidos, Trinoo, TFN, ingress filtering, IP spoofing.

Summary

The Distributed Denial of Service attacks, from now on DDoS, are a relatively recent development, and constitute a great threat for the security of the Internet nowadays.

Some of the big companies that provide services through the Internet have been victims of attacks of this kind. Thus, Yahoo, Amazon, Buy.com, eBay y CNN weren't unreachable for hours, what caused great losses.

This document tries to release a global view of the problem, describing in detail the working of the DDoS attacks. In the some way, it shows how to avoid, control and minimize the damages produced by an attack of this kind.

Keywords: Denial of Service (DoS), distributed attacks, Trinoo, TFN, ingress filtering, IP spoofing.

1.- Introducción

1.1.- Un nuevo modelo de ataque

Resulta interesante identificar cuales son las propiedades que definen el paradigma de un ataque tradicional, de este modo, resulta más sencillo e intuitivo comprender las diferencias (y similitudes) con respecto a los nuevos ataques distribuidos. Típicamente en un ataque [10] se pueden distinguir las siguientes fases:

1.- Recopilación de información. Que puede incluir:

  • Detección de la máquina destino.
  • Detección de los servicios que se ejecutan en la máquina.
  • Conocimiento de la topología de la red.
  • Detección del sistema operativo de la máquina.

2.- Explotación. La información recopilada en la fase anterior es utilizada para obtener acceso a la máquina destino. Para ello se suelen aprovechar bugs del sistema operativo, servicios mal configurados, malas políticas de asignación de claves, etc.

3.- Metástasis1. Que a su vez tiene dos etapas:

  • Consolidación. Una vez que se tiene acceso a una determinada máquina, el atacante intenta borrar las pistas que ha dejado durante la fase de explotación. Es posible, incluso, que intente eliminar las evidencias generadas durante la fase de recogida de información. De igual forma el atacante con frecuencia instala en la máquina comprometida un software2 que le garantiza el acceso en futuras ocasiones.
  • Continuación. Cuando el atacante tiene acceso a una máquina de la red este utiliza técnicas pasivas (pe: password sniffing) y activas para aumentar el número de máquinas comprometidas de la red. En esta fase el atacante se suele aprovechar de las relaciones de confianza entre diferentes máquinas.

Una característica importante del paradigma de ataque tradicional consiste en la realización de las acciones descritas anteriormente usando el modelo uno a uno (figura 1a), o uno a muchos (figura 1b), es decir, un atacante realiza sus acciones contra una o varias máquinas3.

Los nuevos ataques distribuidos, por lo general, utilizan una aproximación basada en agentes. Estos agentes son programas instalados por el atacante, una vez que ya ha obtenido acceso, durante la fase de consolidación en varias máquinas. Los agentes, que son controlados por el atacante remotamente4, se ejecutan continuamente como procesos servidores en estas máquinas. De esta forma un único atacante puede ordenar (controlar) a todos sus agentes para dirigir un ataque coordinado contra su víctima.

Los ataques distribuidos utilizan el modelo muchos a uno (figura 1c), o bien, muchos a muchos (figura 1d). Utilizando estos modelos, el atacante dificulta la tarea de descubrir cuál es el origen real del ataque, ya que las máquinas donde residen los agentes pueden pertenecer a redes completamente diferentes (incluso distar miles de kilómetros). De igual forma, la detección de un ataque distribuido mediante NIDS (Network Intrusion Detection Systems) es más complicada.

1.2.- Denegación de servicio

La denegación de servicio, DoS (Denial of Service), viene definida porque un servicio no está disponible a una persona o proceso (aplicación) cuando es necesario (disponibilidad). Existen tres tipos básicos:

1.- Consumo de recursos escasos5.

  • Conectividad de la red. El objetivo es conseguir que no exista comunicación entre las máquinas.
  • Agotamiento del ancho de banda. Un atacante puede intentar consumir todo el ancho de banda disponible.
  • Consumo de otros recursos. El objetivo es consumir otro tipo de recursos que son necesarios para el funcionamiento del sistema (tiempo de CPU, espacio en disco, estructuras de datos internas, etc.).

2.- Destrucción o alteración de la información sobre la configuración.

3.- Destrucción o alteración física de los componentes de la red.

En algunas ocasiones, los ataques DoS pueden servir como complemento a otras técnicas (como IP spoofing), para obtener acceso a determinados sistemas.

Existe una gran variedad de técnicas para causar DoS a una determinada víctima, la mayoría de estas técnicas son conocidas por la comunidad desde hace bastante tiempo7. No obstante, hoy en día todavía se es muy vulnerable a este tipo de ataques.

A continuación se describen las técnicas DoS fundamentales, que son empleadas por las herramientas DDoS. Algunas de estas herramientas no se limitan a utilizar aisladamente alguno de estos mecanismos de DoS, sino que pueden utilizar todos, e incluso una combinación de estos.

1.2.1.- DoS mediante UDP flood

Básicamente este ataque consiste en generar grandes cantidades de paquetes UDP contra la víctima elegida. Debido a la naturaleza sin conexión del protocolo UDP, este tipo de ataques suele venir acompañado de IP spoofing6.

Es usual dirigir este ataque contra máquinas que ejecutan el servicio echo8 de forma que se generan mensajes echo de un elevado tamaño.

1.2.2.- DoS utilizando TCP syn flood

Cualquier sistema que proporcione servicios basados en TCP (ftp, http, etc.) es susceptible a este tipo de ataques. Para comprender el modo de funcionamiento de este ataque se ha de entender el mecanismo por el cual se establece una conexión TCP: El atacante se puede beneficiar de la siguiente forma: Una vez que ha enviado un mensaje SYN y el servidor ha respondido con un mensaje SYN-ACK, el cliente no responde con el mensaje ACK. De esta forma se crea una conexión "medio abierta"9 . El servidor tiene en memoria las estructuras de datos necesarias para describir todas las conexiones pendientes. Esta estructura de datos tiene un tamaño finito, por lo que puede ser desbordada intencionadamente creando múltiples conexiones "medio abiertas" y una vez que esta desbordada el sistema no es capaz de aceptar nuevas conexiones.

Normalmente hay un tiempo asociado a las conexiones pendientes, así las conexiones "medio abiertas" caducarán pasado un tiempo. No obstante, el atacante puede seguir enviando paquetes SYN (con dirección origen falsificada) más rápidamente que el servidor pueda cerrarlas debido al timeout.

Crear conexiones "medio abiertas" se consigue fácilmente con IP spoofing, de manera que una vez que el paquete SYN llega al servidor, resulta imposible saber cual es el verdadero origen del paquete.

1.2.3.- DoS mediante paquetes ICMP (ping)

Es una técnica DoS que pretender agota el ancho de banda de la víctima. Consiste en enviar de forma continuada un número elevado de paquetes ICMP echo request (ping) de tamaño considerable a la víctima, de forma que esta ha de responder con paquetes ICMP echo reply (pong) lo que supone una sobrecarga tanto en la red como en el sistema de la víctima. Dependiendo de la relación entre capacidad de procesamiento de la víctima y atacante, el grado de sobrecarga varía, es decir, si un atacante tiene una capacidad mucho mayor, la víctima no puede manejar el tráfico generado.

Figura 1. Modelos de ataques Existe una variante denominada smurf que amplifica considerablemente los efectos de un ataque ICMP. En el smurf el atacante dirige paquetes ICMP echo request a una dirección IP de broadcast10.

Existen tres partes en un ataque smurf: El atacante, el intermediario y la víctima (comprobaremos que el intermediario también puede ser víctima).

Cuando el atacante genera el paquete ICMP echo request, este es dirigido a una dirección IP de broadcast, pero la dirección origen del paquete IP la cambia por la dirección de la víctima (IP spoofing), de manera que todas las máquinas intermediarias (máquinas pertenecientes a la red donde se envió el paquete) responden con ICMP echo reply a la víctima. Como se dijo anteriormente, los intermediarios también sufren los mismos problemas que las propias víctimas.

2.- Descripción

Los ataques DDoS actuales 11 conllevan acceder a cientos o miles de máquinas. Una vez que el atacante ya tiene acceso, instala un software que le permite tener el control de esas máquinas para lanzar ataques coordinados. Estos ataques típicamente agotan el ancho de banda de la víctima, sobrepasan la capacidad de procesamiento de los routers, etc.

Para llevar a cabo un ataque de este tipo, en primer lugar el atacante tiene que acceder a varias máquinas, generalmente desprotegidas, para instalar el software necesario. Esto se realiza aprovechando las vulnerabilidades conocidas12 de los distintos sistemas operativos, servicios pobremente configurados, elección de contraseñas arbitraria, etc.

Según informes del CERT© los servicios que son escaneados con más frecuencia en busca de vulnerabilidades son los que figuran en la tabla I.

Tabla 1.

Una vez que el atacante ya está dentro del sistema, comienza la fase de consolidación, en esta fase el atacante intenta ocultar cualquier tipo de rastro que haya podido dejar en el sistema durante la fase de explotación. A continuación instala una serie de programas13 para ocultar su actividad en la fase de continuación. Por ejemplo, pueden sustituir los programas estándares para mostrar los procesos en ejecución de una máquina por versiones que no muestren los procesos "lanzados" por el atacante.

Una vez hecho esto, el intruso se dispone a instalar procesos especiales (agentes o demonios) para controlar remotamente la máquina comprometida. Para realizar el ataque simplemente el atacante ejecuta un simple comando, que manda instrucciones a todas las máquinas capturadas, indicando cual es el objetivo, así como el tipo de ataque realizar.

En la figura 2 se muestra un sistema típico de ataque distribuido. El atacante controla un pequeño número de masters (maestros), los cuales controlan un número elevado de demonios. Estos demonios se pueden usar para generar una gran cantidad de tráfico contra la víctima14.

Se sabe que el proceso de descubrir máquinas vulnerables, instalar en estas, demonios y ocultar la intrusión está altamente automatizado. Igualmente, se han descubierto demonios válidos para diferentes plataformas y distintos sistemas operativos.

Una vez que el demonio está operativo, este anuncia su presencia a varios (generalmente, tres o cuatro) maestros esperando instrucciones. El master registra en una lista interna que el demonio está preparado para recibir comandos, que son proporcionados por el atacante. Los distintos maestros pueden provocar que los demonios que controlan lancen ataques, se desactiven, o incluso que se anuncien ante un nuevo master. En algunos de estos maestros toda la información comprometedora esta encriptada.

Los maestros operan con frecuencia como programas de usuario en las máquinas comprometidas, donde su actividad puede ser ocultada fácilmente. Sin embargo, los demonios son concebidos para ejecutarse en lugares con un substancial ancho de banda. El tráfico desde o hacia los masters está limitado a mensajes de control.

2.1- Herramientas de denegación de servicio

Figura 2. Ataque distribuido tipico

La proliferación de este tipo de ataques, no hubiera sido en parte posible si no fuera por la existencia de herramientas de ataque distribuido que automatizan gran parte del proceso y que permiten a usuarios, no necesariamente con amplios conocimientos, lanzar ataques que ocasionan serios daños.

Hay que tener en cuenta que la comunidad de intrusos, gracias a las tecnologías de comunicación existentes15, han alcanzado una gran capacidad de organización y respuesta, con tiempos de desarrollo muy cortos entre las versiones beta de sus productos y las aplicaciones finales. Este aspecto hace más difícil, si cabe, la detección y lucha contra este tipo de ataques; si además de los aspectos puramente tecnológicos, tenemos que minimizar el efecto de la colaboración entre desarrolladores. Existen pues, gran cantidad de desarrolladores dispuestos a colaborar en la programación de este tipo de herramientas y además, hay una gran cantidad de código base que es susceptible de reutilización maximizando la eficiencia en el desarrollo y minimizando los tiempos.

De esta manera, no es difícil pensar que las herramientas16 de ataque distribuido sean cada vez más sofisticadas y automatizadas para permitir así su amplia distribución y que usuarios poco expertos puedan hacer uso de ellas.

Se realiza un análisis de las herramientas de ataque distribuido conocidas que han sido objeto de estudio por la comunidad internacional de expertos. Gracias a estos estudios, podemos saber como funcionan, sus debilidades, como poder descubrirlas y neutralizar sus efectos.

2.1.1.- Trinoo

Es la primera herramienta de ataque distribuido conocida. Constituye la base de otras herramientas más modernas y sofisticadas, diferenciándose unas de otras en la forma de comunicación entre agentes y ataques desplegados.

Los primeros demonios Trinoo fueron encontrados en forma binaria en un conjunto de máquinas Solaris 2.x que fueron comprometidas aprovechando los errores existentes en algunos de los servicios RPC (statd, cmsd, ttdbserverd...).

Mediante la utilización de programas de escaneo, sniffers, alojados en la cuenta origen y explotando errores conocidos en diversos sistemas operativos, Trinoo es capaz de expandirse a otros sistemas. De igual forma, puede hacer uso de los privilegios obtenidos para asegurar la ejecución del programa.

El resultado de esta primera fase es la instalación de los agentes Trinoo en un número considerable de máquinas de una forma relativamente fácil y automática. Adicionalmente, también se ha detectado la instalación en las máquinas comprometidas de programas que tienen la misión de ocultar los demonios Trinoo en funcionamiento, archivos, conexiones de red y evitar así que puedan ser descubiertas con facilidad17. Esto es más crítico en las máquinas que alojan los programas maestros que son la clave de entrada para la red Trinoo18.

Una vez completada la fase de contagio, la red Trinoo esta dispuesta para recibir comandos y actuar en consecuencia. La comunicación entre los distintos agentes se realiza mediante conexiones TCP/UDP y el envío de comandos y contraseñas. El control remoto de los maestros se realiza mediante una conexión TCP, mientras que la comunicación entre agentes maestros y esclavos (y viceversa) se realiza mediante UDP. Después de la conexión con un maestro, este solicita la entrada de una palabra de paso para validar dicha conexión al atacante; si otro intento de conexión es detectado mientras el atacante siga autenticado, un mensaje de aviso con la dirección IP que pide la conexión es enviada al atacante dando tiempo a este a borrar pistas del ataque.

La comunicación entre maestros y esclavos incluye un sencillo protocolo de sincronización que permite mantener en el maestro una lista de demonios controlados. Esta lista se almacena en un archivo en texto plano o bien encriptada utilizando el algoritmo Blowfish.

En cuanto al repertorio de comandos que utilizan este tipo de aplicaciones, podemos dividirlas en dos grandes grupos: comandos de atacante a maestro y comandos de maestro a esclavo. En el primer grupo podemos encontrar comandos orientados a la administración de la red Trinoo y establecimiento de parámetros relativos al ataque distribuido. En el segundo grupo encontramos comandos orientados a ejecutar el ataque.

Debido al método de intercambio de mensajes entre agentes Trinoo, la comunicación entre estos puede ser interceptada con herramientas de monitorización y búsqueda de patrones específicos. Otro punto débil se debe al almacenamiento de direcciones IP comprometidas en archivos.

2.1.2.- TFN y TFN2K

Estas dos herramientas son la evolución natural de la herramienta Trinoo, mejorando aspectos como la robustez, comunicación, etc. Esto conlleva una difícil detección de las nuevas herramientas. A su vez, TFN2K es una evolución de TFN encontrada a finales de Diciembre de 1999.

Las herramientas de la familia TFN (Tribe Flood Network) implementan la mayoría de ataques DDoS conocidos19: ICMP flood (con la variante smurf ), SYN flood, UDP flood. Estas herramientas también proporcionan un shell, en las máquinas remotas, asociado a un determinado puerto TCP.

Los primeros demonios TFN fueron descubiertos a la vez que los Trinoo en los mismos sistemas Solaris 2.x. Se aprovechan de los errores ya mencionados en algunos servicios RPC. Su instalación y forma de "apropiarse" de cuentas en máquinas remotas es prácticamente la misma que su predecesor Trinoo.

La principal diferencia con los demonios Trinoo es que la comunicación entre los distintos agentes que componen una red TFN (nombre que recibe el conjunto de máquinas involucradas en un ataque TFN) se realiza mediante paquetes ICMP echo reply, ya no se utilizan paquetes UDP o TCP. La razón de este cambio es que algunas herramientas de monitorización de red no son capaces de mostrar la zona de datos en este tipo de paquetes, donde viaja información valiosa. Esto hace disminuir la probabilidad de ser detectados utilizando técnicas convencionales de monitorización. Obviamente se ha escogido ICMP echo reply y no ICMP echo request para evitar que el sistema operativo maneje las respuestas a dichos paquetes.

Estas nuevas características en TFN lo hacen bastante más difícil de controlar y más aún de detener a no ser que no permitamos ningún tráfico ICMP en nuestra red, algo imposible en la mayoría de los casos. Un punto débil que podemos encontrar en TFN, es que no se realiza ninguna comprobación del origen de los paquetes ICMP. Esto hace que el envío de un sólo paquete a estos agentes con el valor de comando correcto pueda dejarlo fuera de combate.

TFN2K representa un nivel superior en el desarrollo de herramientas de ataque distribuido y es la más sofisticada descubierta hasta el momento. Entre sus características más novedosas destacan:

  • La comunicación entre los demonios maestro y esclavo está encriptada.
  • Los paquetes de comandos y los ataques propiamente dichos, pueden ser enviados de una forma aleatoria utilizando TCP, UDP, ICMP.
  • De manera adicional, el demonio maestro es capaz de falsificar su propia dirección IP lo que hace muy complicado el desarrollo de herramientas eficaces para prevenir este tipo de ataques.
  • La comunicación entre los demonios es totalmente "silenciosa". A diferencia de sus predecesores, ningún comando es reconocido con el envío de un paquete aceptando o diciendo haber entendido su contenido.
  • Los comandos utilizados no están basados en cadenas.
  • Comprobación de la autenticidad de los mensajes recibidos, aprovechando características del mecanismo de encriptación.

Por todas estas características es realmente difícil poder detectar la existencia de una red TFN2K mediante el análisis del tráfico de red utilizando técnicas normales de monitorización.

2.1.3.- Stacheldraht

Nombre que proviene del alemán "alambre de espino" es una herramienta de ataque distribuido basada en el código fuente de TFN y que combina características de Trinoo y el TFN original. Añade encriptación en la comunicación entre el atacante y los maestros y un modelo de actualización de agentes esclavos bajo demanda.

Stacheldraht es una modificación del original TFN y fue identificada como tal a finales de septiembre de 1999 en algunos sistemas de Europa y Estados Unidos. Comparte la mayoría de las características de TFN, incluido los ataques ICMP flood, UDP flood, TCP flood y smurf pero no hace uso del shell remoto conectado a un puerto TCP.

Una de las debilidades de Trinoo era la manera en que el atacante y los demonios maestros se comunicaban mediante comandos en texto plano. Para solucionar esto Stacheldraht añade encriptación a esta comunicación.

Al igual que Trinoo y TFN los demonios maestros obtienen de un archivo de texto una lista de direcciones IP donde residen los demonios esclavos que es capaz de controlar. Como complemento a lo anteriormente mencionado, "Stacheldraht", hace uso de la falsificación de direcciones IP origen en determinados paquetes ICMP para obtener nuevas direcciones de demonios esclavos. El agente esclavo construye un paquete ICMP echo request con una dirección de origen incorrecta (conocida por el agente maestro), un determinado identificador de paquete y en la sección de datos su dirección IP correcta. Cuando el maestro recibe este tipo de paquetes, responde a la dirección que aparece en la sección de datos con un paquete ICMP echo reply con un determinado identificador y un mensaje en texto plano en la zona de datos que confirma que la falsificación de direcciones funciona.

2.1.4.- Otras herramientas

Existen muchas más herramientas de este tipo que solamente varían en detalles de implementación, pero que se basan en los mismos principios. Algunas de ellas son:

  • Shaft: Su característica más distintiva es la capacidad de cambiar los servidores y puertos de comunicación en tiempo de ejecución. Hace especial hincapié en las estadísticas de los paquetes.
  • Mstream: Es la más primitiva de todas las herramientas, la comunicación entre agentes y maestro se realiza mediante el intercambio de paquetes UDP.
  • Wintrinoo: Es la variante de Trinoo para Windows. Hace uso de la modificación del registro del sistema para asegurar su ejecución. Es fácilmente detectable con software antivirus actualizado.
  • Trinity v2/Stacheldraht 1.666: Estas dos nuevas variantes del Trinity y Stacheldraht controlan la red de ataque a través de canales IRC o de ICQ.

3.- Prevención, Detección y Respuestas

No existe un remedio que solucione completamente el problema planteado con los ataques distribuidos de denegación de servicio. Este tipo de ataques, como hemos visto hasta ahora, se aprovechan de fallos de diseño e implementación de protocolos y aplicaciones que suponen la base de Internet en nuestros días; por ello, no se podrá dar una respuesta efectiva hasta que no se adopten medidas que alcancen a la raíz del problema. Pero es impensable, a corto y medio plazo, revisar protocolos como TCP y globalizar los cambios para evitar, por ejemplo, el grave problema que suponen las conexiones "medio abiertas".

Por ello, no se debe esperar a soluciones mágicas y sí adoptar medidas activas de prevención, detección y respuesta para mitigar los efectos de estos ataques. Cada grupo de la comunidad de Internet [3] (administradores de sistemas, ISPs, IRTs20) y, dentro de sus posibilidades, puede ayudar a cumplir estos objetivos.

3.1.- Prevención

3.1.1.- Conseguir que los servidores sean más seguros

Se ha de intentar eliminar el origen del ataque. Para ello, se debe conseguir que ningún intruso pueda instalar en nuestros sistemas demonios, maestros, esclavos o programas similares mediante los cuales el atacante tiene el control de la máquina. Si queremos que nuestro sistema sea seguro, hemos de tener en cuenta las siguientes consideraciones:

  • Escanear periódicamente las máquinas de la subred en busca de vulnerabilidades. En este sentido también es muy importante tener actualizado nuestro sistema con los diferentes patches para corregir fallos en el mismo.
  • Políticas adecuadas de administración y gestión de contraseñas.
  • Habilitar únicamente los servicios que sean estrictamente necesarios.
  • Los servicios que sean necesarios han de estar perfectamente configurados según las propias necesidades. Algunos de los fallos de seguridad más comunes son debidos a una mala configuración de los distintos servicios que se ejecutan en el sistema.
  • Se intentará evitar el uso de utilidades de administración remota.
  • Instalar un firewall. Esto nos permitirá que no se pueda acceder a determinados servicios remotamente.

Esto, junto con las seis reglas de oro R.U.N.S.A.F.E[4], permiten establecer una política de prevención adecuada en la mayoría de los casos.

Resulta sencillo priorizar las máquinas que deben ser más seguras, para determinar cuales necesitan una atención más urgente. Entre estás se incluyen las que tengan las conexiones más rápidas a Internet. Cualquier máquina que tenga un acceso T1 (1'5 millones de bits por segundo) o superior es un objetivo potencial de un atacante para instalar alguno de sus demonios.

3.1.2.- Filtrado de paquetes (Ingress filtering)

Una de las mayores dificultades para detener un ataque DDoS reside en saber cual es el verdadero origen del mismo, ya que en estos ataques se utilizan técnicas de IP spoofing. Si estos ataques no pudieran utilizar direcciones de origen falsas, se conseguiría una respuesta más rápida y efectiva al poder llevar acabo un rastreo eficaz de los paquetes y conocer el origen real de los ataques.

Mediante el ingress filtering realizado en los encaminadores conectados en la periferia de Internet se puede reducir de manera considerable la efectividad del IP spoofing en los ataques DDoS. El ingress filtering consiste básicamente en realizar un filtrado de paquetes, permitiendo únicamente el envío de paquetes con dirección origen válida21.

Por ejemplo, el problema del IP spoofing es perfectamente evitable en el escenario que muestra la figura 3 de la forma siguiente.

Supongamos que existe un filtro en la entrada del router, que proporciona la conectividad a la red del atacante (192.168.0.0/16), que restringe el tráfico de manera que únicamente permite tráfico que tenga como origen cualquier dirección válida de la red 192.168.0.0/16 y no permitir al atacante utilizar cualquier dirección origen que no pertenezca a la red. Es decir, el router debe tener las reglas de filtrado: 1.-. SI la dirección origen del paquete pertenece a 192.168.0.0/16 ENTONCES enviar el paquete a su destino.

2.-. SI el origen del paquete es cualquier otro ENTONCES descartar el paquete. Hay que darse cuenta que el ingress filtering no soluciona completamente el problema del IP spoofing, ya que un atacante puede utilizar una dirección de origen falsa que pertenezca al rango de direcciones válidas de filtrado.

3.2 Detección

Figura 3. Utilizacion Ingress Filter Esta claro, que sólo con las medidas enumeradas en la sección 3.1 no es suficiente: "siempre hay algo que falla o se nos escapa". Por ello, es aconsejable adoptar otro conjunto de medidas complementarias destinadas a la detección, en nuestros sistemas, de intrusos que estén utilizando la máquinas de nuestra red como plataforma de lanzamiento de ataques DDoS.

* Búsqueda en nuestro sistema de ejecutables de demonios o programas de ataque por nombre o patrones identificativos en los binarios (utilización de técnicas antivirus22 ).

* Utilización de herramientas para búsqueda de agentes en nuestra red: DDS23 , RIP (Remote Intrusion Detector) [7].

* Monitorización exhaustiva de servicios y tráfico en la red (a veces, la disminución significativa del ancho de banda efectivo es un síntoma claro de ser víctima de un ataque DDoS).

* Análisis periódico de los archivos de configuración. Por ejemplo: entradas no permitidas en el archivo de configuración de cron.

* Comprobación de la lista de procesos.

* Monitorización de paquetes con patrones sistemáticos de ataque. La mayoría de las herramientas actuales NIDS (Network Intrusion Detection Systems) detectan algunos de los ataques distribuidos.

* Monitorización de conexiones a servicios locales desde múltiples sistemas de la red (puede ser un síntoma inequívoco).

* Revisión de los archivos de log en busca de irregularidades.

* Establecer sistemas de referencia con el fin de detectar si ha habido modificaciones en nuestro sistema, para esto utilizaremos herramientas de suma de comprobación criptográficas24

3.3.- Respuestas

La peor situación posible, es determinar con seguridad que estamos siendo objetivo o plataforma de un ataque DDoS. Todos los esfuerzos realizados para evitar esta situación no han sido suficientes, pero tan importante es realizar una buena política de prevención como saber exactamente qué hacer ante una situación de ataque, ya que actuando de una forma metódica y precisa25 podemos obtener una información muy valiosa que nos servirá no sólo para poder determinar el origen del ataque (bastante difícil en la mayoría de los casos) sino también para analizar programas y descubrir patrones de ataque, comportamientos, técnicas empleadas y así poder desarrollar las defensas correspondientes.

* Tener un visión global de la extensión del ataque.

* Identificar las máquinas que actúan como agentes maestros del ataque es de una vital importancia para responder a un ataque DDoS. De esta forma obtendremos la información de contacto con estos lugares para que solucionen el problema.

* Si es posible, bloquear todo el tráfico proveniente de las máquinas que actúan como agentes maestros.

* Informar a todos los miembros de la lista de contactos según lo establecido en los planes de contingencia.

* Establecer detalladamente planes para la comunicación con, ISPs, IRTs y fuerzas de seguridad.

* Obtener experiencia en situaciones similares para: determinar los sistemas involucrados en el ataque, determinar el origen del ataque, etc.

* Aplicar técnicas forenses para obtener, analizar, recopilar cualquier evidencia del ataque. Esto es muy útil para desarrollar herramientas automáticas que nos asistan en el proceso de análisis forense.

* Compartir la información referente al ataque con el resto de involucrados.

* Documentar las lecciones aprendidas, esto nos ayudará a decidir si son necesarios cambios la política de seguridad.

Uno de los mayores problemas que nos encontramos consiste en determinar cual es el origen real de ataque, ya que los ataques DDoS vienen acompañados de IP spoofing. Determinar el origen de un ataque DoS es una tarea que consume tiempo y requiere la cooperación entre todas las redes que transportan el tráfico y debe ser completado mientras este se produce. No obstante, existen algunas herramientas que automatizan gran parte del proceso26.

4.- Conclusión

Aunque los ataques distribuidos de denegación de servicio actualmente son ampliamente conocidos y se sabe como enfrentarse a ellos, todavía se siguen dando condiciones para que se sigan produciendo a menor escala.

Conseguir que nuestros servidores sean más seguros, emplear filtrado de paquetes y saber como reaccionar ante un ataque, etc. puede reducir considerablemente el riesgo de sufrir un ataque de este tipo.

La seguridad en Internet es un esfuerzo que debe involucrar a diferentes colectivos dentro de la comunidad (administradores de sistemas, ISPs, IRTs, usuarios, etc.). Es por esto, que se intenta destacar la importancia que cobra la cooperación entre los distintos grupos relacionados con la seguridad de Internet para mitigar el problema de los DDoS.

La proliferación de herramientas automáticas para la denegación de servicio demuestra la forma en que la comunidad de intrusos, así como su tecnología avanza de manera considerable.

Referencias:

[1] CERT© Coordination Center. Denial of Service Tools.
http://www.cert.org/advisories/CA-99-17-denial-of-service-tools.html.

[2] CERT© Coordination Center. Steps for recovering from UNIX or NT system compromise.
http://www.cert.org/tech-tips/root-compromise.html.

[3] CERT© Coordination Center. Distributed System Intruders Tools Workshop. Pittsburgh, Pennsylvania USA, Noviembre 1999.

[4] Computing and Telecommunications. R.U.N.S.A.F.E Security Engineering.
http://www.jmu.edu/computing/info-security/engineering/runsafe.shtml.

[5] http://staff.washington.edu/dittrich/misc/ddos_scan.tar.

[6] Coretez Giovanni. Topology of denial-of-service. Technical report, Endeavor Systems, 2000.

[7] Theory Group. Remote Intrusion Detector.
http://theorygroup.com/Software/RID/index.html.

[8] Daniel Senie Paul Fergusson. RFC 2827. Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing, 2000.

[9] http://staff.washington.edu/dittrich/misc/faqs/rootkits.faq

[10] Andrew J. Stewart. Distributed metastasis: A computer network penetration methodology.
Phrack Magazine, Vol 9. Issue 55, Septiembre 1999.

[11] Robert Stone. CenterTrack: An IP overlay network for tracking DoS floods.
http://www.us.uu.net/gfx/projects/security/centertrack.pdf.

[12] Steven M. Bellovin Willian R. Cheswick. Firewalls and Internet Security. Addison-Wesley, 1994.

Notas:

1.- Es un término médico que se referiere a la propagación del cáncer desde su origen hacia otros lugares del cuerpo. Este término fue sugerido por primera vez en el contexto de la seguridad informática por Willian Cheswick y Steven Bellovin [12].

2.- En el argot, back-door (puerta trasera).

3.- Aunque los conceptos de uno a uno y uno a muchos son triviales, cobran una gran importancia para modelar la actividad en la red generada por atacante.

4.- Estos agentes pueden diferir según la función que realicen: obtención de información (escaneo de puertos, password sniffing ... ), denegación de servicio, etc.

5.- Según Coretez [6] esto ocurre porque los sistemas digitales se basan en el concepto matemático de anillo.

6.- Consistente en falsificar la dirección de origen del paquete IP con el fin de suplantar la identidad para obtener algún tipo de beneficio.

7.- En 1996 el CERT" publica varios advisories describiendo el funcionamiento de estas técnicas.

8.- Es un servicio estándar que fue concebido para comprobar la conectividad del sistema, aunque en nuestros días su uso está obsoleto.

9.- Del inglés, half-open.

10.- Cuando un paquete llega a una dirección de broadcast de una red local, ese paquete es redirigido a todas la máquinas de la red local.

11 .- En Agosto de 1999 se empiezan a registrar los primeros ataques de este tipo. El CERT publica en Septiembre una nota de incidente donde se describe la aparición de herramientas DDoS.

12.- Recientemente se han descubierto varias vulnerabilidades que afectan a un gran número de sitios en Internet. p.e: rpc.statd, wu-ftpd, SGI objectserver.

13.- Comúnmente conocidos con el nombre de rootkit.

14.- En algunos casos el tráfico generado supera 1Gb/s.

15.- Correo electrónico, chat, foros de discusión ...

16.- Se puede encontrar una breve descripción de varias herramientas en [1].

17.- Para más informacion sobre "rootkits" consultar [9].

18.- Término utilizado para denotar el grupo de máquinas que son plataforma de un ataque distribuido con Trinoo.

19.- Véase sección 1.2.

20.- Equipos de respuesta a incidentes.

21.- Para más información sobre ingress filtering consultar [8].

22.- Aunque existe la posibilidad de que las herramientas de DDoS sean polimórficas, no existe en la actualidad una herramienta de este tipo.

23.- Desarrollada por Dave Dittrich, Marcus Ranum, George Weaver. Esta herramienta detecta agentes de Trinoo, TFN, Stacheldraht. Se puede encontrar el programa en [5].

24.- P.e: md5sum, Tripwire.

25.- En [2] se muestran los pasos que se deben seguir una vez que la seguridad de alguna de nuestras máquinas ha sido comprometida.

26.- Robert Stone describe un sistema [11] desarrollado en el UUNET para determinar el origen de una ataque de forma rápida y sencilla.

Salvador González García
(dirección de correo salva [at] mauchly [dot] inf-cr.uclm.es)
Jesús Barba Romero
(dirección de correo jbarba [at] inf-cr [dot] uclm.es)
Escuela Superior de Informática de Ciudad Real
Universidad de Castilla-La Mancha