DHCP Starvation con Yersinia

Esta entrada ha sido creada únicamente con fines educativos, nunca para su uso ilícito. Se pretende explicar el funcionamiento de ataques de agotamiento contra un servidor DHCP.

El protocolo DHCP (Dynamic Host Configuration Protocol), es un protocolo de red de tipo cliente/servidor mediante el cual un servidor DHCP asigna dinámicamente una diercción IP y otros parámetros de configuración a cada dispositivo en una red para que puedan comunicarse con otras redes IP. (Descripción obtenida de la Wikipedia, enlace aquí).

Los pasos de este protocolo para obtener una dirección IP dinámica es el siguiente:

  • Discover, el pc solicita una IP que esté libre al servidor DHCP.
  • Offer, este le contesta con la asignación de los parámetros DHCP.
  • Request, el pc selecciona la configuración recibida y solicita de nuevo la IP.
  • Ack, el servidor envía acuse de recibo al cliente y le envía toda la configuración.

Dentro de una LAN, mediante este servidor los equipos conectados a la red privada reciben una dirección IP, también privada, con la que se comunican con el GateWay para poder salir a Internet con la IP pública que tenga este asignada, pudiendo conectarse con equipos dentro de la misma red y de otras redes externas.

También se usan en otros entornos, pero en esta entrada vamos a centrarnos en uno sencillo y fácil de entender como es una red local (LAN).

Vamos a explicar un ataque típico contra servidores DHCP, como es el agotamiento DHCP (DHCP Starvation), en donde un atacante puede inundar con peticiones DHCP Discover al servidor simulando diferentes direcciones MAC, consiguiendo una IP nueva por cada una de ellas hasta llegar a agotar por completo el espacio de direcciones asignables por un periodo indefinido de tiempo. Con esto se consigue que el resto de equipos de la red afectada no consigan renovar u obtener una dirección IP, al haber sido todas consumidas por el atacante. Podría catalogarse como un ataque de denegación de servicio (DoS).

Existen muchos métodos para lanzar este tipo de ataques, DHCPig, Gobbler, Metasploit, … pero en nuestro caso vamos a utilizar Yersinia.

Vamos al lío!!!


Intro

Vamos a realizar un ataque al servidor DHCP dentro de una LAN para consumir todas sus direcciones IP dinámicas, con el fin de agotar todo el rango de direcciones e impedir que otros equipos renueven o consigan una nueva.

Hay que tener en cuenta que los equipos que ya estuvieran conectados a la red no ser verán afectados por esta técnica de DoS.


Entorno

El entorno que vamos a utilizar es el siguiente:

  • Red de área local (LAN).
  • Router/GW con servidor DHCP como objetivo del ataque.
  • Host atacante con Parrot instalado.
  • Host víctima con Windows XP instalado.

Laboratorio empleado


Ataque

Estado inicial

Arrancamos el programa Wireshark desde el equipo atacante, seleccionando la interfaz de red utilizada para lanzar el ataque (eth0 en nuestro caso) y filtrando por el parámetro bootp. De esta forma veremos todas las peticiones realizadas con el protocolo DHCP desde el equipo que va a realizar masivamente este tipo de tráfico. En estos momentos se encuentra vacío de este tipo de peticiones.

Inicio ataque

Iniciamos el ataque con Yersina en modo gráfico con el siguiente comando:

yersinia -G

Se inicia la interfaz gráfica del programa.
Seleccionamos la interfaz en la opción Edit interfaces del menú superior. En nuestro caso seleccionamos la eth0.

Seleccionamos el tipo de ataque, en este caso sending DISCOVER packet con DoS seleccionado, indicando que será un ataque de denegación de servicio.


Lanzamos el ataque tras pulsar el botón OK y observamos en Wireshark como se inunda al servidor destino con peticiones DHCP Discoverconsumiendo todas las direcciones IP disponibles.
Desde la consola de Yersinia vemos las peticiones que está enviando y como los paquetes DHCP van en aumento.

 

Host víctima

Si arrancamos el host víctima vemos como no se el asigna dirección IP alguna.

 

Fin ataque

Si estamos realizando el ataque desde nuestra LAN doméstica es posible que perdamos la conexión a Internet desde el equipo con el que estamos lanzando el ataque.

Paramos el ataque desde el menú List attacks.

OJO!!! En ocasiones no es suficiente con solo parar el ataque y tenemos que salir del entorno gráfico de Yersinia, ya que aunque el contador de paquetes de DHCP no sigue aumentando si que vemos más envíos de paquetes Discover en Wireshark hacia el servidor. Incluso puede que el PC atacante quede bloqueado por el intenso tráfico de red que ha generado.

Recuperamos el servicio, tanto el acceso al Gateway dentro de la LAN como el acceso desde el servidor víctima. Es posible que tengamos que forzar el renovar la IP o incluso reiniciar la máquina.


Conclusión

Con esta técnica de DoS observamos lo fácil que puede ser bloquear la conectividad de una red. Por eso es muy importante implementar medidas de seguridad en los servidores DHCP, si fuera posible, y sobre todo identificar claramente a quien se le da acceso a la red.

Algunas medidas a tener en cuenta podrían ser:

  • Control de acceso por MAC.
  • No permitir acceso a la DMZ.
  • Deshabilitar administración del router vía Wifi.
  • Utilizar contraseñas seguras.

Enlaces

Protocolo DHCP, pinchar aquí.

DHCP Starvation, pinchar aquí.

Yersinia, pinchar aquí.

DHCPig, pinchar aquí.