Siguiendo con la colección de ataques informáticos “simples”, una variante interesante de ataques MitM puede ser generada a partir de una técnica de engaño (Spoofing) utilizando el protocolo DHCP.
En una red LAN habitualmente se configura un servidor DHCP dónde se indican las configuraciones que deben otorgarse a los clientes DHCP, sea Gateway, DNS, Máscara de subred y por supuesto dirección IP (ésta última es tomada de un pool de direcciones o asignada de una lista estática a partir de la MAC del cliente).
Gracias a DHCP, cuando un host es conectado a la red, las configuraciones y parámetros mencionados son aplicados automáticamente y no se requiere intervención del administrador de la red. Un caso típico de esto es cuando conectamos un laptop a la red doméstica y el modem nos asigna la configuración de red adecuada.
- Inicialmente un host cliente debe enviar al Broadcast de la red un paquete “DISCOVERY” para solicitar se le asignen y envíen los parámetros de configuración
- Cada servidor DHCP de la red, recibe el mensaje y responde con un paquete “OFFER” en el que incluye información relativa a la configuración asignada.
- El cliente puede seleccionar total o parcialmente los parámetros recibidos y responder con un mensaje “REQUEST” solicitando se le asignen dichos parámetros.
- Finalmente, el servidor valida la asignación de estos parámetros y responde con un mensaje “DHCP ACK” indicando al cliente que la configuración ha sido reservada.
El servidor DHCP “conoce” aquellas direcciones IP que ha asignado como así también las direcciones MAC de los equipos a los que ha “configurado”.
Normalmente la dirección IP tiene un “tiempo de alquiler DHCP” denominado “DHCP lease time”, que básicamente indica el tiempo durante el que se asigna la dirección IP al host. Cumplido este tiempo, la dirección IP podrá ser renovada (se reinicia un conteo de tiempo de alquiler) o bien se asigna una nueva dirección.
1. DHCP Spoofing, Simple
El escenario más Simple toma lugar cuando un atacante inicia una instancia de servidor DHCP en la LAN ofreciendo configuraciones IP a los host que lo soliciten. En este punto, el atacante entra en condición de carrera con el DHCP legítimo de la red.
Es posible que unas veces un host tome la configuración del Atacante y otras las del DHCP legítimo.
El atacante debe conocer la configuración de la red y podrá simular una asignación correcta al host (por ejemplo asignando la dirección IP que le habría asignado anteriormente el DHCP legítimo), pero indicando por ejemplo como Gateway o puerta de enlace predeterminada, la dirección IP del Atacante; de este modo el Atacante se convierte en la puerta de enlace predeterminada del host y gana una posición de intermediario.
2. Prueba de concepto
Alice es un host de la red, el servidor DHCP de la misma le asigna una dirección IP mediante DHCP.
Existe un atacante que ha iniciado un servidor DHCP con una configuración especialmente manipulada, indicando que dirección IP debe asignarse a Alice y en particular que la dirección IP del Atacante debe ser indicada como puerta de enlace predeterminada.
Si Alice solicita configuración mediante DHCP, es posible que el Atacante gane la carrera al DHCP legítimo y logre reconfigurar la puerta de enlace predeterminada de Alice, forzándola a utilizar como puerta de enlace predeterminada al Atacante.
Dirección MAC: AA:BB:CC:22:33:44
Dirección IP: 192.168.1.198/24
OS: Windows XP
Gateway de la red: (DNS + DHCP):
Dirección IP: 192.168.1.1/24
OS: openwrt
dominio: casa
Atacante:
Dirección MAC: AA:BB:CC:88:88:88
Dirección IP: 192.168.1.124/24
OS: GNU/Linux Ubuntu 14.04
Dominio: dhcp.spoofed.casa
3. Escenario Normal
Primero Alice solicita una IP al servidor DHCP de la red; en windows puede utilizarse el terminal para simular esta acción con el comando:
C:\ipconfig /renewEl servidor DHCP de la red asigna a Alice una dirección IP y demás parámetros de la red. Entre estos parámetros se ha indicado que la dirección IP de la puerta de enlace predeterminada es 192.168.1.1
Si se ejecuta una traza hacia 8.8.8.8 en la terminal de Alice con el comando:
C:\tracert 8.8.8.8 -dPuede observarse que el primer salto es la puerta de enlace predeterminada de la red, es decir, 192.168.1.1:
4. Escenario ataque sobre Alice
El atacante desea aplicar una técnica DHCP Spoofing sobre Alice.
Para ello puede identificar la dirección IP de Alice mediante el DNS local (nslookup), utilizando nbtscan, o cualquier otro método.
El Atacante instala un servidor DHCP, por ejemplo isc-dhcp-server. Para ello en Ubuntu ejecutar en una terminal:
$ sudo apt-get install isc-dhcp-serverPara configurar el servidor DHCP el Atacante utiliza datos conocidos, como la IP de Alice, MAC de Alice (gracias ARP), Subred, DNS, etc. La configuración se realiza mediante la edición del fichero dhcpd.conf, en una terminal del
$ sudo vim /etc/dhcp/dhcpd.confPara este caso de estudio, el fichero de configuración debe lucir así:
La sección “subnet” define la subred, máscara, puerta de enlace predeterminada de la red, servidor de nombres, etc.
Se ha especificado también como dominio dhcp.spoofed.casa (a propósito, sólo para resaltarlo en las capturas de este tutorial).
Nótese que debajo, se ha especificado explícitamente una configuración para el host de Alice (bien diferenciado por su dirección MAC). En particular, se ha especificado como puerta de enlace para Alice, la dirección IP del Atacante mediante la instrucción:
option routers 192.168.1.124Y se ha forzado que se asigne la IP 192.168.1.198 a la MAC de Alice, respetando la configuración que asignó inicialmente el DHCP legítimo de la red:
...hardware ethernet AA:BB:CC:22:33:44fixed-address 192.168.1.198...Una vez configurado, el atacante inicia el servicio de DHCP con el comando:
$ sudo /etc/init.d/isc-dhcp-server startEstaría iniciado.
5. Alice es engañada
Para simular la condición de carrera, en un entorno controlado puede obligarse a Alice a volver a solicitar configuración mediante DHCP.
Para ello, Alice libera la dirección IP asignada (ejecutar en una terminal de Alice el comando):
C:\ipconfig /release
Luego solicita nuevamente una dirección IP:
C:\ipconfig /renewSi el atacante “gana la carrera” al servidor DHCP legítimo de la red, se asignarán los parámetros de configuración DHCP preconfigurados:
Alice ha obtenido la dirección IP “correcta” y se le ha asignado como puerta de enlace predeterminada la dirección IP del Atacante. Nótese el dominio “dhcp.spoofed.casa, a modo de referencia respecto a la configuración inicial. A partir de este punto, Alice enviará los paquetes destinados a Internet al Atacante, dado que se le ha indicado que la dirección IP 192.168.1.124 es su puerta de enlace predeterminada. Si desde la terminal de Alice se ejecuta una traza a 8.8.8.8, se puede observar el cambio en el primer salto:
6. Consideraciones Finales
Adicionalmente el Atacante podría configurar el reenvío de paquetes y con iptables hacer un enmascaramiento para controlar la situación MitM. No se ha incluido dicha configuración ya que no es parte de la prueba de concepto de DHCP Spoofing pero vale la pena mencionarlo.
Existen otras técnicas un poco más complejas para realizar DHCP Spoofing, esta es una de las más simples y, casualmente, una de las más frecuentes.
Una ocurrencia típica de este ataque (aunque sin intención dañina) suele darse en redes donde un usuario conecta de manera incorrecta un router inalámbrico para acceder mediante wi-fi a la LAN. Si se conecta un puerto LAN (lo correcto sería conectar el puerto WAN) a la red local, el router ofrecerá servicio DHCP a los hosts de la red local, compitiendo con el servidor DHCP legítimo de la red (por ejemplo el router del ADSL).
En redes administradas, suele utilizarse la funcionalidad "DHCP Snooping" para mitigar este tipo de ataques. Básicamente lo que se hace es indicar a los Switches el puerto dónde el DHCP legítimo está conectado. De este modo se indica "el camino" a través de los Switches por el cual se permite tráfico de mensajes de servicio DHCP.
Enhorabuena por este genial tutorial, maestro del Hack.