jueves, 18 de junio de 2009

Ataques a servidores DHCP

Muchas veces me hacen comentarios acerca del costo de los switches administrables, como por ejemplo un Cisco Catalyst 2960 que vale más de 1000 dólares, en comparación con los switches que se consiguen por cualquier lado y rondan los 100 dólares por la misma cantidad de puertos.

Es obvio que el equipo más caro debe tener algunas funcionalidades extra que deben utilizarse para sacarle el máximo provecho al equipo. De otra forma no sería necesario hacer tremenda inversión.

Este post habla acerca de una de las ventajas de contar con un equipo administrable, que nos provee muchos features que hacen la red más segura, y le dan una mejor performance.

Servidores DHCP


Los servers {es:Dhcp|DHCP} son muy utilizados en las redes de hoy en día, y hay varios ataques posibles que pueden realizarse contra ellos, ya sea de {es:Denegación_de_servicio|denegación de servicio} o bien de {es:Man_in_the_Middle|Hombre en el medio}.

En este post no voy a analizar en detalle el funcionamiento del protocolo DHCP, pero voy a destacar sus partes más importantes.

Diagrama inicial




Funcionamiento básico


  1. El cliente se conecta al switch y envía una petición de DHCP Discovery mediante broadcast (ip destino 255.255.255.255 puerto udp 67).
  2. El server ofrece unos datos determinados (opciones DHCP) que pueden ser: IP, Máscara, Default Gateway, DNS, Ntp, etc...
  3. El cliente acepta la oferta y se configura de acuerdo a las opciones obtenidas.
  4. El server DHCP marca la dirección IP como alquilada y la saca de los rangos permitidos.

Denegación de servicio


En el server DHCP (sin importar que implementación use) se configuran pooles (rangos) de direcciones, por lo que un usuario malicioso podría generar una denegación de servicio de la siguiente manera:
  1. El cliente se conecta al switch, pide una dirección IP, completa el proceso definido anteriormente. Esa IP ya no queda disponible en el pool del server.
  2. A continuación, el cliente cambia su dirección {es:Direccion_MAC|MAC} y vuelve a pedir  otra IP al server.
  3. El cliente malicioso repite esta técnica hasta que el servidor DHCP entregue todas las direcciones configuradas en el pool, por lo que ya ningún cliente puede acceder al servicio.

Hombre en el medio




Este tipo de ataque tiene más posibilidades de éxito cuando hay un servidor DHCP centralizado en una red apartada de los clientes y el router que hace de default gateway para cada LAN hace relay de DHCP.
Para conocer detalles sobre relay de DHCP ver: este post.

El traspaso de la petición DHCP hacia el servidor centralizado genera un tiempo de espera mayor que el que se tiene cuando el servidor DHCP está conectado a la misma LAN que los clientes. Por esto es posible que se haga el ataque de la siguiente forma:
  1. La PC Cliente  hace el pedido de DHCP.
  2. El atacante responde antes que el servidor de la compañía.
  3. El atacante asigna a la víctima una dirección IP válida pero envía su propia IP como puerta de enlace de la víctima.
  4. La víctima envía los paquetes al atacante pensando que él es su puerta de enlace.
  5. El atacante reenvía la información al router, convirtiéndose en el 'Hombre en el medio'.

Toda la información que las víctimas quieran reenviar fuera de la LAN puede ser analizada y procesada por el atacante, que luego reenvía los datos para que las víctimas no se den cuenta del ataque.

Mitigando los ataques a los servidores DHCP.


DHCP Snooping


El DHCP Snooping es un feature de seguridad que filtra mensajes de DHCP desde fuentes no válidas (puertos, VLANs, VLANs privadas, etc).

Básicamente con este feature vamos a decirle al switch en qué puertos pueden generarse respuestas DHCP requeridas por los clientes.

En el caso del diagrama, el puerto donde se conecta el Router al Switch de la LAN de clientes debería configurarse como confiable (trusted) y todos los demás puertos como no confiables (untrusted).
Por defecto, todos los puertos son untrusted.

Una vez configurado, el paso a paso sería así:
  1. La PC Cliente hace el pedido de DHCP.
  2. El atacante responde antes que el servidor de la compañía.
  3. El switch ve una respuesta de DHCP desde un puerto untrusted.
  4. El switch descarta las tramas de la respuesta DHCP del atacante.
  5. La respuesta llega desde el servidor DHCP de la compañía .
  6. El switch ve una  respuesta DHCP en un puerto trusted.
  7. El switch deja pasar la respuesta.
  8. El cliente se configura con los datos del servidor de la compañía.

Cuando se activa el switch mantiene en memoria una tabla que contiene dirección MAC, dirección IP, tiempo del alquiler, tipo de alquiler, VLAN e información de la interfase no confiable en donde está el cliente que hizo el pedido de DHCP. Con esto se puede monitorear el funcionamiento del feature.

La configuración se realiza de la siguiente manera:
! Habilito el feature
Switch(config)#ip dhcp snooping
! Configuro el feature para el rango VLAN 1 hasta 100
Switch(config)#ip dhcp snooping vlan 1 100
! Acepto la inclusión de la opción 82 de DHCP
Switch(config)#ip dhcp snooping information option
!
Switch(config)#interface FastEthernet0/1
! Seteo la interfase como trusted
Switch(config-if)#ip dhcp snooping trust
! Para evitar los ataques DOS, solo dejo pasar 10 respuestas por segundo
Switch(config-if)#ip dhcp snooping limit rate 10
!

Ahora vamos a monitorear los cambios aplicados:
Switch# show ip dhcp snooping
DHCP Snooping is configured on the following VLANs:
1-100
Insertion of option 82 information is enabled.
Interface           Trusted        Rate limit (pps)
---------           -------        ----------------
FastEthernet0/1     yes            10

Y vemos la tabla que mencionamos anteriormente:
Switch#show ip dhcp snooping binding
Option 82 on untrusted port is not allowed
MacAddress          IpAddress        Lease(sec)  Type     VLAN  Interface
------------------  ---------------  ----------  -------  ----  --------------------
00:D0:4B:87:64:8D   192.168.90.10    599740      dynamic  1     FastEthernet0/3

Podemos ver que el ataque de denegación de servicio puede ser mitigado solo en parte, dado que a 10 paquetes por segundo el pool de direcciones del servidor DHCP se agotará en un par de minutos. Para tener la solución definitiva a esto debemos usar otros features de seguridad en los puertos que limitan la cantidad de direcciones MAC que pueden ser aprendidas en una interfase. Pero eso es motivo de otro post que realizaré más adelante.

Espero que les sirva.

Saludos

2 comentarios:

sash dijo...

Y SI MI SERVIDOR DE DHCP ES EL MISMO ROUTER O SWITCH?

sash dijo...

Y si mi servidor DHCP ES UN SWITCH DE CAPA 3 (CON VLAN'S CONFIGURADAS)

Publicar un comentario