jueves, 9 de abril de 2015

NTP para ataques DDOS amplification. Identificación, explotación y mitigación.

Amigos de Inseguros.

En el capítulo de hoy vamos a ver algún consejo a la hora de trabajar con los servidores NTP y como los maleantes pueden utilizarlo para hacer el mal !!!

Para empezar, NTP es el protocolo utilizado para sincronizar equipos con un servidor...funciona por UDP. Cuando repasamos el protocolo UDP recordamos que no mantiene la conexión, solo envía el paquete y confía en su recepción.

Una de las amenazas mas reales que estamos sufriendo las organizaciones son los ataques de denegación de servicio. El objetivo de estos ataques, como sabes, es generar el mayor tráfico posible hacia nuestros sistemas para conseguir colapsarlo y hacer que esté deje de funcionar.

Vamos a imaginar que tenemos una conexión a Internet que nos proporciona 1kb de subida. Y tengo un servidor que procesa 10 kb de entrada. Con 10 conexiones como las mías colapsaría el servidor. Esto es lo que hace el ataque de la famosa herramienta Loic de Anonymous y similares ataques syn flood.


Que es la amplificación? Imagina que por cada 1kb de subida que yo tengo, que envio al servidor, magicamente se multiplica por 10. Con una conexión como la mia colapsaría los 10kb de capacidad del servidor, por lo que me es más fácil realizar la denegación de servicio.

Vamos a usar un fallo o mala configuración en servidores NTP accesibles en Internet que podemos usar para amplificar una petición NTP y dirigirla como si la hubiera pedido una víctima, para que sea la víctima la que reciba la respuesta.

Existe un comando en versiones antiguas de NTPd <4.2.17 que me permite en remoto, acceder al comando monlist y listar los últimos 600 equipos que han realizado una petición de tiempo.

Vamos a probarlo con un equipo público en Internet vulnerable.
Lo podemos realizar con el script NSE mon-list o directamente consultando el comando con el cliente ntp.



Mediante esta petición UDP que es muy pequeña podemos recibir gran cantidad de información. En este servidor de pruebas que he encontrado solo hay un par de ip´s clientes que han consultado al servidor NTP, pero es suficiente para amplificar mi petición. De una petición pequeña que hago me devuelve una respuesta más grande.

Aquí es donde vas a comprender porque se utilizan protocolos sobre UDP. Si yo realizo esa petición falseando la dirección ip de origen, y en su lugar ingreso la ip de una víctima de nuestro ataque, la respuesta le llegará a la víctima. Hemos conseguido amplificar nuestra petición a un "tercer equipo" que va a inundar de respuestas a la víctima. El ataque de denegación de servicio lo realiza el servidor NTP mal configurado que permite esta consulta.

Vamos a realizar una captura de red del tráfico de salida para la petición y otra para la respuesta para ver el ratio de amplificación en bytes.


Como se aprecia el ratio es muy pequeño, no llega ni a 1x2. Vamos a probar con otro servidor NTP expuesto con la mala configuración o vulnerabilidad.


El resultado de la captura de red lo dice todo.


El factor de amplificación para este servidor NTP es de x32. Deberíamos corregir un poco estos valores porque realmente el tamaño del paquete udp de la petición es de 234 bytes.


Al igual que con ataques de amplificación DNS, cualquier servicio basado en UDP es "susceptible" a ser empleado por este procedimiento. El profesor Nolla en su blog tiene unos artículos sobre amplificación ddos con servidores Quake3 que recomiendo leas.

Como es lógico, en el caso de implementar un servidor NTPd accesible en Internet por la razón que sea, debes comprobar que no tienes una versión vulnerable, o al menos, deshabilitar el comando monlist.

Existen listas públicas en Pastebin con listados de servidores NTP mal configurados disponibles para nuestras perrerías. Quizás muchos sean honeypots.

De cara a defendernos del ataque, tenemos pocas posibilidades aunque si que podemos parar/loguear en nuestro firewall los paquetes udp 123 con un tamaño de 482 bytes que es el tamaño de cada paquete pero al final si el ataque persiste y no se implementa una medida de desviación previa, con más capacidad de procesamiento, podremos registrar y mitigar el ataque, pero no pararlo. El DDOS es lo que tiene !!!

Como siempre, espero que os guste el artículo, gracias por leerme !!!