24 junio 2014

English version of this post also available => http://www.securitybydefault.com/2014/06/r2dr2-analysis-and-exploitation-of-udp-amplification-vulns.html

------------------------

Desde que comenzamos nuestros estudios en el Máster Universitario de Seguridad de las TIC en la Universidad Europea, nos llamó la atención la posibilidad de realizar un proyecto bajo la tutela de Alejandro Ramos (@aramosf), profesional del mundillo que admiramos. Después de varias ideas y propuestas por ambas partes, decidimos realizar un proyecto centrado en la búsqueda de nuevos vectores de ataque de denegación de servicio distribuidos reflejados (DRDoS). Recientemente en este blog se ha hablado de ello en un artículo centrado en el protocolo SNMP, llegándose a publicar incluso una herramienta de explotación.

Nos marcamos como objetivo encontrar algún vector de amplificación nuevo en algún protocolo. Para ello, primero hicimos un research de cuales eran las vulnerabilidades conocidas, publicadas por CERTs y algunas comunidades relacionadas a la seguridad informática. Nos percatamos de la complejidad técnica al evaluar las condiciones que tenía que tener la vulnerabilidad: basarse en UDP, no tener autenticación, tener amplificación de al menos 2 veces los bytes enviados, encontrarse implantado en un gran número de sitios y no haber sido explotado anteriormente.

Clasificamos nuestra búsqueda en tres grandes “sitios” donde mirar, para organizarnos entre tanto protocolo: 
  • Protocolos comunes basados en UDP (como DNS o NTP) 
  • Plataformas de streaming o juegos. 
  • Aplicaciones privadas que usen UDP por alguna razón
La mayoría de los protocolos sin documentación no son más que ristras de bytes y más bytes entrando y saliendo. Cada uno de los bytes significa algo que, si el protocolo es privado, sólo la empresa desarrolladora conoce. Luego de meses de análisis y de, por qué no decirlo, frustraciones, hemos logrado aprovecharnos de varias implementaciones basadas en UDP que pueden ser utilizadas para hacer ataques a gran escala:

El método OPTIONS en el protocolo SIP

SIP es un protocolo de señalización para VoIP cuya implementación es idéntica que HTTP: basada en mensajes. La principal diferencia, aparte de su utilidad final, es que SIP funciona bajo UDP en el puerto 5060. Después de unas búsquedas en Shodan y ver que existen más de 40 millones de dispositivos, rebuscamos por el RFC y concluimos que era posible reducir la petición OPTIONS a pocos bytes con el fin de obtener una respuesta amplificada. Aquellos servidores que implementan en la respuesta al OPTIONS el protocolo SDP, responden con un mensaje más grande.

RESPUESTA AL MÉTODO OPTIONS CON PROTOCOLO SDP ACTIVADO.

El mensaje de regreso tiene un factor multiplicador de 5 veces por cada byte enviado, en promedio. Un poco por encima de algunos de los protocolos publicados por el US-CERT. Hay más de 2 millones de equipos con este factor multiplicador, por lo que un ataque muy distribuido podría hacer mella.

Amplificación en juegos móviles

El crecimiento de juegos multijugador es algo que nos entusiasmó, un lugar muy fresco donde buscar. Sin embargo muchos de estos juegos no utilizan UDP como capa de transporte, decantándose por usar APIs bajo TCP. Afortunadamente, para los juegos de más interacción, que si suelen utilizar UDP, se encontraron vulnerabilidades importantes con factores de multiplicación bastante altos, algunos entre 500 y 700 veces por cada byte enviado. El problema es que no suelen ser servicios masificados lo suficiente como para considerarse peligrosos. Además, algunas plataformas de hosting de juegos móviles ampliamente distribuidas como exitgames.com implementan triple handshake sobre UDP, lo que impide completamente este tipo de ataques.

AMPLIFICACIÓN GRANDE EN JUEGO “DEADZONE” PARA IOS.

Amplificación en aplicaciones: protocolo Citrix ICA

En una búsqueda casi obsesiva por encontrar factores de amplificación grandes, logramos detectar que había una característica de un protocolo privado que no había sido tenida en cuenta como posible vector de amplificación UDP en el protocolo ICA de Citrix, que es un protocolo diseñado para servidores de aplicaciones compartidas.

Una de las características del protocolo, en determinadas versiones, es comunicar al cliente qué aplicaciones compartidas existen en el servidor, así como los servidores disponibles. Este mensaje se transmite por UDP en el puerto 1604 y además no implementa autenticación. Cuando la lista de aplicaciones y servidores es considerablemente grande, este Information Disclosure se convierte en un vector de ataque de amplificación UDP distribuido.

AMPLIFICACIÓN EN CITRIX ICA BROWSER.

Con un sencillo payload de 84 bytes, se recibe una respuesta con un factor de amplificación de entre 25 y 40 veces por cada byte enviado. Lo interesante de esta vulnerabilidad es que en nuestra fase de descubrimiento detectamos más de 12.000 servidores Citrix de los cuales al menos 2.000 corroboramos vulnerables.

Herramienta de explotación: r2dr2 DRDoS attack tool

Para llevar a cabo la prueba de concepto, hemos desarrollado una completa herramienta de explotación de ataques de amplificación UDP, a la que hemos llamado “r2dr2”. La principal diferencia respecto a otras herramientas, es que ésta recibe de un archivo JSON varias configuraciones, entre las que destaca la recepción del payload de explotación del servicio en formato hexadecimal. Nuestro objetivo es que la herramienta fuese capaz de explotar no solo las vulnerabilidades encontradas por nosotros si no también cualquier otra del pasado y del futuro; hemos comprobado que funciona correctamente con varios protocolos.

En el siguiente vídeo se demuestra, en un entorno real, que un ataque distribuido de amplificación UDP utilizando apenas 10 servidores Citrix ICA es capaz de denegar el servicio a un servidor real en Internet. 


 
Configuración de payloads en r2dr2

El vídeo únicamente explota el protocolo ICA de Citrix, pero al archivo JSON que recibe r2dr2 se le puede configurar más payloads de distintos servicios y configurar las veces que se desea que se explote determinada IP. En este ejemplo se muestra el payload necesario para conseguir amplificación UDP en los protocolos Citrix ICA, SIP, NTP y CharGEN:


Descarga un archivo de configuración JSON de r2dr2
Descarga la aplicación r2dr2 DRDoS UDP Amplification

Conclusiones

Este proyecto nos ha enseñado mucho más de lo que esperábamos; esta es la verdadera conclusión. Encontrar protocolos vulnerables no es tarea trivial, pero como se demuestra en el vídeo la efectividad es muy grande. Existen y existirán formas de realizar ataques DRDoS, la mitigación depende del talento y del presupuesto de cada organización.

Daniel Ferreira (@daniel0x00)
Pablo Alobera (@IllegalPointer)