Archivo por meses: agosto 2015

Ataque de denegación de servicio II

En la primera parte de este artículo vimos el concepto genérico sobre cómo funcionan los ataques de denegación de servicio (DoS, DDoS…) y algunos ejemplos tradicionales de ataques utilizando vulnerabilidades de los protocolos base de la red de Internet. En este artículo veremos cómo se han utilizado este tipo de ataques aprovechando debilidades de otros protocolos de red.

Denegación por ataques teardrop

Los ataques teardrop (que podría traducirse como lagrimeo) consisten en el envío de paquetes IP malformados de tamaño excesivo y con una secuenciación superpuesta. De esta manera se fuerza al receptor a dedicar recursos para restructurar y reorganizar los paquetes de información recibida para poder entregar la información a las capas superiores del nivel IP. Se trata de una técnica clásica que era efectiva en sistemas operativos de Microsoft previos a Windows XP y a los entronos Linux que utilizasen una versión anterior a la 2.1.63.

Lectura o escritura lenta

El protocolo TCP incluye una característica (denominada ventana TCP) que permite que tanto cliente como servidor negocien el ritmo de envío de información. Esta funcionalidad es muy útil cuando un cliente dispone de una línea de baja velocidad y desea recibir información de un servidor con mayor capacidad: el cliente indica al servidor el ritmo de paquetes a los que puede gestionar la información y así el servidor no satura al cliente. Este mecanismo puede ser utilizado de forma malintencionada cuando se fuerza al servidor a transmitir demasiado lento obligando a mantener recursos de memoria para gestionar este tráfico lo que si se combina con muchas peticiones puede causar que el servidor se quede sin recursos y generar una denegación de servicio.

HTTP POST

La opción POST dentro del protocolo HTTP permite que el cliente envíe información al servidor. Aunque inicialmente se pensó para enviar información de formularios actualmente se puede enviar casi cualquier archivo por este sistema (adjunto documentos a un webcorreo, subir imágenes a una red social, etc.). El ataque consiste en indicarle al servidor, dentro de una sesión válida, que queremos enviar un fichero de gran tamaño (p.e. 2GB) y hacerlo a una velocidad muy baja. El servidor deberá reservar memoria para almacenar ese fichero y dedicar recursos tanto de red como de procesamiento para gestionar esta petición. Si el envío de información se hace de forma lenta pero lo suficientemente rápido para que no se de la sesión por rota se consigue que el servidor bloquee recursos durante un tiempo excesivo. Si se pueden lanzar diversas sesiones con el mismo sistema podemos llegar a generar una denegación de servicio.

R-U-Dead-Yet? (RUDY)

Se trata de un ataque a aplicaciones web muy similar al HTTP POST. La idea es conseguir que el servicio web no pueda gestionar más sesiones y que mantendría multitud de sesiones semiactivas con el envío de información POST que nunca acabaría.

Redes P2P

En los primeros protocolos de las redes peer-to-peer no se había tenido en cuenta la securización de las conexiones por lo que rápidamente aparecieron algunos ataques que utilizaban vulnerabilidades y defectos de diseño de los mismos. En lo referente a los ataques de DDoS se aprovecharon de una debilidad del protocolo Direct Connect. El protocolo permitía la redirección de las conexiones a otros clientes P2P por lo que se podía forzar a todos los clientes que se conectasen a un servidor comprometido para que se conectase contra una víctima elegida. El resultado era que la víctima recibía tal cantidad de peticiones de conexión que directamente era incapaz de gestionarlas y se producía una denegación de servicio.

Ataques espejo

Diagrama de un ataque de espejo

Diagrama de un ataque de espejo Fuente imagen:Wikimedia

En inglés suelen denominarse como reflected attacks o spoofed attacks. En las comunicaciones IP legítimas la información es solicitada por un equipo (con una dirección IP concreta) y el servidor responde a esa dirección IP. Como ya vimos si utilizamos el protocolo TCP hay que realizar una fase previa de establecimiento de conexión pero no así si utilizamos el protocolo UDP. ¿Qué pasaría si el atacante falsease la dirección IP origen de un paquete UDP? Simplemente que se servidor enviaría la información solicitada a la dirección IP indicada en el paquete. Un usuario malintencionado podría solicitar una gran volumen de información falseando (en inglés: spoofing) la dirección IP  de tal forma que los servidores enviasen la información a la víctima deseada. Así la víctima recibirá una gran cantidad de información no deseada desde servidores que creen estar respondiendo a sus peticiones. Con esta estrategia el verdadero atacante queda oculto tras estos servidores que actúan como DDoS sin tener constancia de ello. Este tipo de ataques utilizan protocolos de uso común en Internet que al utilizar UDP, que no mantiene sesiones ni conexiones, dificultan su protección. Los más típiscos sería NTP, DNS, QOTDo SNMPv2.

Por ejemplo en el protocolo de DNS un usuario puede solicitar toda la información sobre un dominio de tal forma que ante una petición pequeña (que es lo que genera el atacante) se genera una respuesta de un tamaño considerable que la víctima recibirá y deberá gestionar. Así un atacante pueden lanzar múltiples peticiones pequeñas a servidores diferentes y que sean éstos quienes saturen las capacidades de la víctima.

Denegación de servicio telefónico

La irrupción de la Voz sobre IP (VoIP) ha permitido la aparición de servicios de telefonía con llamadas gratuitas y automatizables. La posibilidad de modificar la identificación de llamada (caller ID Spoofing) ha abierto nuevas posibilidades a los atacantes maliciosos.  La denegación del servicio telefónico (Telephony dinial-of-service – TDoS) consiste en realizar tal cantidad de llamadas a un objetivo que sature su capacidad de gestión dejando así el servicio de recepción y envío de llamadas. Al poder falsear la identificación de llamada es posible dirigir las actuaciones policiales posteriores a un ataque TDoS a nuestra verdadera víctima generando así un problemas y complicaciones reales a una persona o empresa.

Ataque de denegación de servicio I

Diagrama DDoS

Esquema ataque DDoS – Fuente imagen: Wikimedia

Se denomina como ataque de denegación de servicio aquel ataque que busca que un servicio o sistema sea inaccesible para los usuarios legítimos. Generalmente se suelen denominar como DoS (Denial od Service) o DDoS (Distributed Denial of Service) en caso de ser un ataque coordinado desde diferentes orígenes.

Los ataques de denegación de servicio buscan saturar las capacidades del sistema atacado ya sea enviando una gran cantidad de tráfico para ser gestionado o bien lanzando múltiples conexiones hasta que llega un punto que el servicio atacado ya no es capaz de responder. Se consigue así que los legítimos usuarios no puedan acceder al servicio generando pérdidas, ya sean económicas o de reputación a las víctimas.

Un ataque de estas características no busca pasar desapercibido sino más bien al contrario. Se tratan de ataques muy visibles, tanto para los administradores de los sistemas atacados como para sus clientes. Debido a la mejora en las líneas de comunicaciones de los usuarios y empresas, tanto en capacidad de transferencia bruta como en la posibilidad de ampliar esta capacidad según las necesidades, cada vez es más complicado realizar un ataque de saturación efectivo simplemente enviando tal cantidad de tráfico que las líneas queden saturadas e inoperativas por lo que es común lanzar el ataque de forma coordinada desde diferentes equipos de tal manera que actualmente los ataques DDoS son más comunes que los DoS.

En este artículo veremos los ataques clásicos utilizados para generar DoS y los conceptos de su funcionamiento. Actualmente existen técnicas más complejas y que aprovechan fallos en el diseño de los protocolos de red que usamos diariamente.

Envío de gran cantidad de información

Probablemente sea el ejemplo más sencillo de este tipo de ataques. Se trata de enviar grandes volúmenes de tráfico de tal manera que se llegue a saturar el servicio bien porque los servidores no sean capaces de gestionarlo o bien porque la línea de comunicaciones que conecta con el servicio quede saturada. Un ejemplo sería el envío de ficheros de gran tamaño (cientos de MB) a un servidor FTP hasta conseguir que el servicio quede bloqueado.

Una técnica conocida que entraría dentro de esta categoría es el ICMP Flood (también conocido como ping de la muerte) en el que se envían a la víctima una gran cantidad de peticiones de ping con un tamaño excesivo.  En este caso se busca saturar el ancho de banda de las comunicaciones y no tanto los servidores que hay detrás.

Una variante de la inundación por ICMP, conocida como SMURF, consiste en aprovechar el funcionamiento de las direcciones broadcast. El atacante genera peticiones ICMP con la dirección de origen de la víctima. Todos los ordenadores que reciban la petición de ping (que pueden ser cientos o miles en función del tamaño de la red) responderá a la dirección que creen que es el origen, por lo que éste equipo se verá colapsado por una gran cantidad de tráfico inesperado.

Ataques en la negociación TCP

Three Way Handshake

Esquema proceso Three-Way Handshake – Fuente imagen: Wikimedia

El protocolo TCP requiere que antes de empezar a enviar información entre servidores se establezca una conexión. El establecimiento de esta conexión implican un protocolo de tres pasos. Podemos resumir los tres pasos (three way handshake)  en un establecimiento inicial (SYN), una respuesta a ese establecimiento (SYN-ACK) y una confirmación final (ACK).

La manipulación de estos tres pasos es permite algunos de los ataques de denegación de servicio más clásicos:

SYN Flood

El primer ataque consiste simplemente en enviar una gran cantidad de paquetes SYN para iniciar una nueva conexión pero sin responder nunca con la confirmación final. El servidor que reciba la petición reservará recursos (memoria, puertos en protocolos TCP, etc.) para dar servicio a estas peticiones durante un tiempo (momento en el que el sistema decida que ha ocurrido un error y no se podrá establecer la conexión). Si el atacante consigue enviar suficientes peticiones nuevas antes de que se vayan descartando las más antiguas puede saturar la capacidad del servicio dejándolo inutilizado para cualquier usuario legítimo.

RST Flood

Cuando los administradores establecieron sistemas de protección que evitaban el establecimiento de conexiones maliciosas usando la técnica anterior se empezó a aprovecharse del sistema de cierre de conexiones establecidas (que también implica tres pasos). Así los atacantes realizaban una conexión completa para, acto seguido, pedir el cierre de la misma (mensaje RST) sin llegar a cumplir el último paso que confirmaría el cierre. Así el servidor víctima debía mantener información de estado de la conexión (consumiendo recursos) hasta que la diera por finalizada pasado un tiempo. Nuevamente si el atacante podía generar suficientes cierres malintencionados podía colapsar la capacidad de respuesta del servidor víctima.

——-

Tipos de firewall

La definición de cortafuegos, aunque el anglicismo firewall sea más usado, sería todo aquel sistema diseñado para bloquear los accesos no autorizados en una red mientras se mantienen operativas las comunicaciones autorizadas. Veamos algunas categorizaciones utilizadas y su significado, si bien estas categorías no son excluyentes entre sí y podemos encontrar sistemas híbridos.

Firewall hardware o software

Esta quizás sea la distinción más obsoleta de las que veremos ya que hoy en día ha dejado de tener el sentido inicial. Hace años se denominaban firewall hardware cuando el sistema completo estaba implementado por el mismo fabricante: los usuarios simplemente conectaban un equipo a su red y lo gestionaban según las instrucciones del fabricante. Por el contrario los firewall software eran programas que se instalaban en un equipo del usuario y funcionaban como cualquier otra aplicación sobre ese servidor.

Actualmente los fabricantes y desarrolladores pueden vender tanto sistemas cerrados completos como sólo software, pero siempre habrá un programa corriendo el servicio de firewall analizando y bloqueando tráfico. El que este programa esté en una caja cerrada por el fabricante o funcione sobre un sistema operativo propiedad del usuario es irrelevante.

Firewall perimetrales o de núcleo

En este caso la distinción no es tanto de cómo es el firewall sino de qué función está realizando. Los cortafuegos perimetrales son los responsables de gestionar las conexiones entrantes y salientes de una red (típicamente la conexión a Internet de una empresa) mientras que los de núcleo realizan un trabajo de control de las conexiones dentro de una misma red corporativa (accesos a redes DMZ, separación entre red cableada y Wifi, etc.).

La funcionalidad es la misma: proteger la conexión entre diferentes redes. El hecho de que una red sea interna o externa a la empresa es una distinción funcional pero no afecta al trabajo del firewall.

Firewall de red o de aplicación

Esta categorización sí tiene implicaciones importantes en el funcionamiento del cortafuegos y es uno de los puntos a tener en cuenta.

Los firewall de red únicamente trabajan con información de direcciones IP y puertos. El usuario configura qué comunicaciones quiere permitir de tal forma que indica las direcciones IP y puertos tanto del origen del tráfico como del receptor. Aplicando estas políticas permitirá o no la comunicación.

Los cortafuegos de aplicación son equipos más avanzados, necesitan más potencia de cálculo que los de red, que lo que evalúan es que la comunicación se establezca, y mantenga, según el protocolo estándar.

Podemos ejemplarizar el diferente funcionamiento si pensamos que un firewall de red (los más comunes) se permiten todas las conexiones de cualquier usuario de Internet al puerto 80 de nuestro servidor web (así puedes ver está página) mientras que un cortafuegos de aplicación revisará el tráfico y confirmará que realmente se esté siguiendo el protocolo http y en caso contrario bloqueará la comunicación.

Los firewall de aplicación tienen una gran parte de coincidencia con los sistemas de detección e protección de intrusos (IDS, IPS) si bien no es exactamente lo mismo.

Lista blanca o lista negra

Más que al tipo de firewall aquí se indica la política de accesos que se ha configurado. Las listas blancas facilitan el control de accesos si sabemos las conexiones que queremos permitir mientras que las de listas blancas son preferibles cuando no podemos saber el origen de todas las comunicaciones y sólo queremos bloquear el acceso a partes específicas.

Un ejemplo de lista blanca en la vida real sería una fiesta privada donde el personal de seguridad (que haría de cortafuegos) sólo deja pasar a las personas que están en su lista de invitados y a nadie más. En el lado opuesto tenemos los casinos donde se permite el paso a cualquier persona mayor edad y sólo se deniega a aquellos que están el Registro de personas con acceso prohibido a los salones de juego (este registro sería nuestra lista negra).