jueves, 11 de julio de 2013

"Prueba de concepto" TA13-088A: DNS Amplification Attacks

Para complementar el post anterior voy a hacer una demostración sencilla. La idea es demostrar la facilidad con que se pueden ganar varios Mbytes de tráfico con solo hacer consultas DNS.

Para generar las consultas utilizamos hping3 (http://www.hping.org/), una herramientita muuy interesante que permite generar paquetes de todo tipo, formas, etc, hacer ip spoofing, lanzar enormidad de paquetes por segundo, etc.

Los participantes serán:

IP_victima: la IP que falsificaremos y a donde volverá el tráfico dns amplificado.
IP_dns1, IP_dns2 : las IPs de los servidores de dns que vamos a utilizar para atacar.
IP_atacante: si bien dijimos que lo ideal sería realizar el ataque desde varias PCs, lo vamos a hacer desde solo una para la prueba.

Conseguir la consulta a enviar:

La consulta que vamos a enviar es la misma que mostré en el post anterior, por lo tanto hice una captura con wireshark el envío de la consulta y exporté el contenido del paquete UDP a un archivo llamado "query". Este archivo contiene todo lo respectivo a la consulta DNS


La parte sombreada es lo que exportamos al archivo query en formato binario, podemos ver que son 28 bytes de la consulta.
Podemos ver el tamaño del archivo exportado:

root@corrientes:/home/jpavlik/DoS# ll query 
-rw-r--r-- 1 root root 28 jul  8 17:35 query
root@corrientes:/home/jpavlik/DoS# 

Lanzamos hping contra el primer dns y vemos el efecto en la víctima:

Vamos a lanzar hping de la siguiente manera:

hping3 --faster --udp -p 53 --spoof IP_victima --file query -d 28 IP_dns1
  • Donde el parámetro "--faster" le indica a hping que envíe los paquetes con intervalos de espera de 1 microsegundo (aprox. 1000000 de paquetes por segundo). 
  • Los parámetros "--udp -p 53" indica el protocolo de transporte y el puerto destino al que irán los paquetes generados.
  • El parámetros "--spoof IP_victima" indica la IP de origen que tendrán los paquetes generados.
  • Los parámetros "--file query -d 28" indican por un lado, el archivo de donde se sacará el contenido a enviar en los paquetes y la longitud de este contenido.
  • Por último "IP_dns1" la IP del servidor de nombres recursivo que vamos a utilizar.
Por otro lado, en la víctima mediremos el tráfico con iftop de la siguiente manera:

iftop -f "port 53"
  • Iftop nos permite ver en tiempo real las conexiones y el consumo de estas en una interfaz de red
  • La opción "-f" permite definir un filtro y en nuestro caso filtramos por el puerto 53. 
Vemos que antes de lanzar no tenemos trafico alguno:


Ahora lanzamos el hping con los parámetros correspondientes:


  • Vemos como se generaron unos 47,5 Mb por segundo (solo con 1 máquina y 1 dns).
  • Vemos como solo se registra tráfico RX (entrante), esto se debe principalmente al spoofin, ya que las consultas jamás salieron de esta IP.

Lanzamos hping contra dos dns y vemos el efecto en la víctima:

Esta vez lanzamos una segunda instancia de hping, pero apuntando las consultas a un segundo servidor de dns para "duplicar" el impacto.


  • Con este segundo dns llegamos a un pico de 78Mb por segundo, un poco por debajo del doble.
  • Vemos ahora otro flujo solamente de llegada de paquetes, correspondiente a las respuestas del segundo servidor.

En fin, esto era para mostrarles que no es muy complicado de reproducior el problema de esta manera. Para que realmente el ataque sea exitoso son necesarios varios factores:
  • DNSs recursivos que respondan abiertamente y una tasa alta de respuestas por segundo.
  • Muchos HOSTS desde donde se pueda hacer spoof de la IP de la víctima.
  • Paciencia.

No hay comentarios:

Publicar un comentario