08 enero 2014

Ataques de red clásicos. Aquellos maravillosos años





Últimamente me encuentro preparando bastante material para el curso de Análisis Forense Digital en Profundidad, una asignatura de un máster de la Universidad de León, así como ampliando y mejorando los temarios y cursos que ofrecemos desde Securízame por lo que tengo la vena academicista a flor de piel. 

Por ello, y porque en el máster explicaré diferentes ataques de red que pueden sufrir nuestros servidores, me he puesto nostálgico y he querido recordar tiempos mejores, en los que el ingenio y la investigación primaban en aprovechar vulnerabilidades de pila TCP/IP, más que de seres humanos.

Como mucho de nuestro público sois estudiantes que, a lo mejor, no estabais dedicados a la seguridad informática y las redes hace 15 años, espero que os sea de utilidad esta recopilación.

Spoofing
Consiste en suplantar la identidad de otro origen. Lo solemos ver en diferentes capas/objetivos de la pila de red. Ya sea tanto a nivel ARP o IP, así como en aplicaciones como correo electrónico (para ataques de phishing), DNS (Farming o envenenamiento), etc...

Flooding
O inundación de peticiones. Aunque hay variantes en ICMP, UDP y TCP, dependiendo el protocolo utilizado, el objetivo es el mismo en todos ellos, saturar los recursos del servidor objetivo y hacer que ofrezca un servicio degradado, o simplemente generar una Denegación de Servicio del mismo. En el caso de la inundación UDP, el origen (o LOS orígenes si se cuenta con una botnet) bombardean de paquetes UDP a la víctima, que tendrá que comprobar si tiene un servicio escuchando en dicho puerto, comprobará que no lo tiene y generará un paquete ICMP al origen con un ICMP Destination Unreachable. Esto como podéis imaginar, hace que consuma muchos más recursos en la víctima que en el atacante. Si además lo combinamos con spoofing del origen, haremos que el paquete ICMP le llegue a otro inocente (u otra víctima). 

En caso que el protocolo utilizado sea TCP, se enviarán montones de peticiones con el flag SYN al servidor víctima a un puerto abierto por un servicio existente, que reservará recursos para dicha conexión (memoria fundamentalmente) y abrirá un proceso nuevo para siguientes conexiones. Aparte generará un paquete con los flags SYN+ACK a la dirección origen. Estos recursos quedarán reservados en la víctima hasta que la sesión se cierre por expirar el timeout definido a nivel de kernel, por inactividad de la sesión. Si se hace desde muchos orígenes, se logra una ralentización de recursos y finalmente una denegación de servicio por falta de recursos en el servidor. Esta técnica también se puede combinar con spoofing para evitar la recepción del SYN+ACK como atacantes. 

Con ICMP, también es posible desde conexiones con mayor ancho de banda que la víctima, o desde múltiples orígenes (como puede ser una botnet), un bombardeo ICMP también logra generar una denegación de servicio, en este caso por consumo de ancho de banda de la víctima como por carga de contestar a todas las peticiones ICMP.

Smurf
Variante de ataque de inundación que consiste en enviar un paquete ICMP Request a la dirección de broadcast de una red. Todas las máquinas que pertenezcan a dicha red, que no hayan adoptado medidas para no contestar al broadcast, enviarán un ICMP a la dirección IP que aparece como remitente del paquete. Si esto se combina con Spoofing de dicha IP origen, inundaremos con ICMP Reply al host víctima por parte de las máquinas que contesten. 

Teardrop
Aunque el objetivo del ataque es la denegación del servicio de la víctima, la mecánica del mismo es diferente. Se basa en las opciones de fragmentación de paquetes grandes. Fundamentalmente, cuando el payload a enviar a un host destino supera la capacidad de lo que cabe en el paquete a enviar (dependiendo del protocolo seleccionado) existe la opción de la fragmentación. Esto hace que al construir los paquetes, incluyan un número de secuencia que el host destino debe recibir, ordenar, re-ensanblar y procesar, antes de entregárselo a la aplicación correspondiente. Si se construye maliciosamente los paquetes, era posible hacer que ciertas máquinas cuya pila TCP/IP no está convenientemente parcheada, queden inestables. Esto desemboca en un servicio degradado o literalmente denegando el servicio. 

Land
Este ataque es muy curioso y causó furor en 1997, cuando se descubrió. Las siglas del nombre, que suena a tierra, realmente es Local Area Network Denial. Es algo tan sencillo como enviar un paquete a un servicio existente en un host víctima, spoofeando tanto la dirección IP como el puerto origen, haciendo que coincida con el destino y su servicio. Es decir, imaginemos que el host 192.168.1.1 tiene el puerto 80 abierto. Si enviamos un paquete TCP con el flag SYN, con IP origen 192,168.1.1 y puerto origen 80, IP destino 192.168.1.1 y puerto destino 80, si hay servicio escuchando y no está preparado para este ataque, la máquina al devolver el SYN+ACK lo hará a sí misma al puerto 80 y generará un bucle,… si esta petición la ejecutamos varias veces terminará cayendo el sistema. Este ataque tuvo, lo que se llama, una regresión que afectó a Windows 2003 y Windows XP SP2. Es decir, que una vulnerabilidad corregida en un sistema operativo anteriormente, vuelve a existir.

Ping of Death
En este caso, el ataque, que utiliza ICMP como protocolo, consiste en el envío de un payload mayor de 64K, que es el tamaño máximo permitido en el RFC. En este caso, el paquete se fragmenta, y  el destino, al reensamblar los fragmentos y recibir algo mayor de lo que espera, no puede interpretar correctamente el paquete y sus comunicaciones quedan inoperativas. 

Ataques de amplificación DNS/NTP
Estos ataques se han utilizado incluso hace relativamente poco tiempo, y se basan en realizar peticiones pequeñas que desencadenan respuestas mucho más grandes y/o de varios servidores a la vez, contra una víctima que está spoofeada en los paquetes origen. El caso Cloudflare, del que ya hablamos en SecurityByDefault consistió en utilizar DNS configurados como "Open Resolvers”, de manera que desde una botnet o desde un host, enviemos peticiones con origen la dirección IP spoofeada de la víctima haciendo una petición DNS de un dominio que devuelva varios registros (A, MX, TXT, etc,…) de manera que una sencilla petición puede llegar a multiplicar por 73 el tráfico generado y enviado por los DNS a la inocente víctima, con tráfico UDP.


En el caso del protocolo NTP, se está dando hace poco un caso similar, de manera que un atacante (o una botnet) envía con IP origen spoofeada con la dirección de la víctima a servidores NTP,  un paquete que pide los últimos 600 servidores que han contactado con el mismo. Como imagináis, la respuesta es mucho mayor que la petición, de manera que si bombardeamos con peticiones NTP (UDP 123) a los servidores correspondientes, generaremos una inundación de UDP en el destino

1 comments :

deadlock dijo...

Técnicas de Guerra en el Irc, por Romansoft.