El objetivo de este post es ver cómo se obtiene la clave de una red WiFi protegida por autenticación de sistema abierto (Open System Authentication) mediante un ataque de fragmentación.
En primer lugar, voy a configurar el punto de acceso para que emplee este tipo de seguridad, adicionalmente, para estas pruebas iniciales, voy a quitar el filtrado MAC que, por otra parte, se cómo saltármelo.
Accedo al punto de acceso a través de la interfaz web de gestión y veo las opciones de seguridad:
Las opciones de seguridad tienen que ver, no sólo con la autenticación sino con el cifrado de la comunicación. Voy a establecer la opción WEP Open System y a definir la clave de acceso:
Como se ve voy a usar una clave de 40 bits (5 bytes) bien sencillita. Lo bueno que tiene LuCi es que, según vas escribiendo la clave, el color es rojo y se pone en negro cuando es una clave válida. Salvo y aplico la nueva configuración.
Como se ve, la configuración aplicada es cifrado WEP de sistema abierto empleando una clave de 40-bits.
En un post anterior, vimos la secuencia de autenticación y asociación de 802.11, voy a echarle un ojo a las tramas intercambiadas. Para ello, voy a conectarme con el cliente legítimo (Raspberry PI) y voy a capturar la secuencia de paquetes intercambiados con Wireshark.
La solicitud de autenticación:
La respuesta a autenticación desde el punto de acceso:
En la interfaz de administración del punto de acceso, vemos el cliente asociado a la WiFi:
Naturalmente, para el resto del ejercicio vamos a asumir que conocemos el BSSID, ESSID y canal del punto de acceso así como lo relativo a las características del cifrado y autenticación empleadas. Hemos visto cómo obtener esta información en posts anteriores.
Lo primero que hago es poner la interfaz en modo monitor en el canal del punto de acceso. Una vez configurada la interfaz lo que voy a hacer es una autenticación falsa con el punto de acceso. Recordemos que el mecanismo de autenticación es Open System lo que, en esencia, significa que no hay autenticación.
Para hacer esta autenticación falsa voy a utilizar el comando aireplay-ng con la opción 1 (autenticación falsa):
Los parámetros proporcionados al comando aireplay-ng significan:
-1. Autenticación falsa
0. Tiempo de re-asociación (en segundos)
-e HACKME_001. ESSID de la WiFi.
-a <bssid>. Dirección MAC del punto de acceso (BSSID).
-h <MAC>. Dirección MAC de la interfaz WiFi de la máquina atacante.
wlan1mon. Interfaz en modo monitor.
Y vemos, en el punto de acceso, que la estación atacante queda asociada:
La estación atacante ya está autenticada con el punto de acceso y asociada al mismo. Para intentar determinar la clave WEP, voy a empezar con un ataque de fragmentación (ya haré un post con la teoría). Para ello, utilizamos el comando aireplay-ng:
El resultado del ataque nos indica que hemos obtenido 1500 bytes del PRGA mediante el envío de fragmentos de un paquete. El keystream correspondiente se almacena en el fichero indicado.
Vamos a crear un paquete ARP y cifrarlo con el keystream obtenido en el paso anterior. Para ello usamos el comando packetforge-ng y vamos a cifrarlo (flag –y) con el PRGA obtenido en el paso anterior.
Una vez que tenemos el paquete ARP (arp-req) procedemos a inyectarlo en la red. En una nueva ventana de terminal, lanzo el comando airodump-ng para capturar las respuestas a los paquetes ARP que voy a ir inyectando:
Lanzamos, en la primera ventana de terminal, el comando aireplay-ng para inyectar los paquetes ARP en la red:
Vemos que se va incrementando el contador de paquetes enviados y, en la salida del comando airodump-ng (segunda ventana), que aumenta el número de paquetes lanzados por nuestra estación.
Finalmente, abrimos una tercera ventana de terminal y lanzamos el comando aircrack-ng para intentar obtener la clave WEP empleada para el cifrado a partir del fichero de capturas obtenido por airodump-ng:
Hemos tenido éxito. Comprobamos que la clave funciona conectándonos a la WiFi desde Kali.