[HOWTO] Sacar claves WPA con COWPATTY

Iniciado por kikerap, 21 Agosto 2011, 16:09 PM

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

kikerap

COWPATTY


Ya hace tiempo que he visto por ahi esta herramienta para auditorias wpa/wpa2. Lo que hace este programa es optimizar el ataque de diccionario. Para que funcione hace falta el handshake completo (four-way handshake), cosa que no conseguiremos a menudo, a no ser que inatalen un parche que permita hacer el ataque a uno incompleto, como hace aircrack-ng.



Comenzemos por descargar cowpatty, desde aqui:



http://wirelessdefence.org/Contents/Files/cowpatty-4.6.tgz



Y aqui esta el parche (existe la version 16, pero esta es mas estable):



http://proton.cygnusx-1.org/~edgan/cowpatty/cowpatty-4.6-fixup14.patch



Vamos a comenzar con la practica:





$ sudo apt-get install openssl #Instalamos las dependencias necesarias.

$ sudo apt-get install libpcap0.8-dev

$ sudo apt-get install libssl-dev

$ tar zxvf cowpatty-4.6.tgz #Descomprimimos el archivo previamente descargado.

$ mv cowpatty-4.6-fixup14.patch cowpatty-4.6 #Movemos el parche a la carpeta extraida.

$ cd cowpatty-4.6/ #Nos movemos a dicha carpeta.

$ patch < cowpatty-4.6-fixup14.patch #Aplicamos el parche.

$ sudo make install #Instalamos la aplicación.







Tambien se instalara genpmk, para crear diccionarios precomputados.







Para las pruebas he tenido que buscar por la red (en aircrack-ng.org) una captura de un handshake, ya que en ese momento no disponia de uno propio. Ya solo me falta el diccionario, en el que pondre cuidadosamente la contraseña correcta. Para esta labor "tire" de StrinGenerator, y en medio segundo ya me habra creado unas 300.000 claves. ¿Y por que lo cortas tan rapido?, pues como he dicho anteriormente ahora tengo que poner la contraseña correcta al final, y el "gedit" aguanta, pero hasta un punto.







Ahora voy a proceder a probar el ataque con aircrack-ng para asegurar que lo encuentra, y asi comparo las velocidades de cada herramienta. Vamos a empezar con el primer handshake cuya contraseña es Password1.



Prueba con aircrack-ng:



sudo aircrack-ng -w prueba.txt prueba.cap







Es muy importante revisar la temperatura de vez en cuando:







Bien ahora vamos con cowpatty, para esta prueba vamos a utilizar el segundo handshake cuya contraseña es preinstall, ademas he bajado considerablemente el tamaño del diccionario:



Prueba con cowpatty+diccionario:



cowpatty -r prueba2.cap -f prueba.txt -s virgin\ broadband







Y ahora vamos ha ver el verdadero poder de cowpatty, vamos a crear un diccionario precomputado, para esto nececitamos el essid de la red y el diccionario (esta vez si voy a usar el de 300.000 palabras). Tarda bastante a generarlo.



Creando diccionario precomputado para el essid "virgin broadband".



genpmk -f prueba.txt -d salida_precom -s virgin\ broadband







Ahora probamos el handshake junto con el nuevo diccionario precomputado.



cowpatty -r prueba2.cap -d salida_precom -s virgin\ broadband







Bien, pues vamos ha hacer el estudio, de cada herramienta. La velocidad de crackeo varía segun el hardware:



*Aircrack-ng: Velocidad--> unas 1.200 claves por segundo. Es sin duda el mas fiable de todos, ya que no es tan escrupuloso con el handshake, y permite que este sea imcompleto. La velocidad en ataque con diccionario es mayor que en cowpatty, al utilizar el 100% del procesador.

*Cowpatty+diccionario: Velocidad--> unas 150 claves por segundo. Como hemos dicho anteriormente, requiere de la instalacción de un parche para trabajar con handshake incompletos. Ademas de esta forma tendremos muchas incompatibilidades con determinados handshake, por lo que el programa parcheado no es muy fiable. Va mucho mas lento que aircrack-ng, pero solo utiliza el 50% del procesador.

*Cowpatty+diccionario precomputado: Velocidad--> unas 100.000 claves por segundo. Como veis la velocidad es enorme, pero tambien es verdad que tarda bastante a generar el diccionario precom. (unas 150 claves por segundo). Aunque una vez generado nos puede servir para ataques en otras redes con el mismo essid.





Lo ideal es tener el handshake completo, y si nos podemos descargar diccionarios ya precomputados pues mucho mejor, pero fijate que esta generado para tu essid, si no no valdra, ok.







Os dejo un enlace a una recopilación de diccionarios: http://foro.seguridadwireless.net/enlaces-descarga-aplicaciones-wireless-linux/diccionarios-wordlist-listas-de-palabras/

moikano→@

Muy bueno el estudio, gracias por aportarlo.

unas dudas...

CitarY ahora vamos ha ver el verdadero poder de cowpatty, vamos a crear un diccionario precomputado, para esto nececitamos el essid de la red y el diccionario (esta vez si voy a usar el de 300.000 palabras). Tarda bastante a generarlo.

Citarpero fijate que esta generado para tu essid

Por que es tan importante el essid? crea un diccionario expresamente para el essid, como por ejemplo en una red llamada Juanwifi prueba combinaciones alfanuméricas por delante y por detras del nombre (Juanwifi1234, 893Juanwifi,...)?

Según yo he visto, el essid junto con la MAC del Access point se utiliza para sacar un diccionario que se calcula mediante el algoritmo generado por la compañia que monta el router wifi, como por ejemplo wlandecrypter.

Pero claro, aquí estamos hablando de una llave que puede ser cualquiera, y que el essid podría ser perfectamente Pepe o wlan1 con un essid en definitiva que no tiene nada que ver con el password.

O lo entendí mal y realmente el diccionario precomputado no tiene nada que ver con los algoritmos de las compañias que montan internet ni con el nombre de la red?




kikerap

El ESSID o SSID (Service Set IDentifier), es el nombre de la red, pero este metodo no tiene nada que ver con los algoritmos de cifrado de la contraseña por defecto, que utilizan los ISP's.

moikano→@

Entonces el essid es simplemente para diferenciar un diccionario de otro? o para que es?

kikerap

Citar
genpmk is used to precompute the hash files in a similar way to Rainbow tables is used to pre-hash passwords in Windows LANMan attacks.  There is a slight difference however in WPA in that the SSID of the network is used as well as the WPA-PSK to "salt" the hash.  This means that we need a different set of hashes for each and every unique SSID i.e. a set for "linksys" a set for "tsunami" etc..

http://wirelessdefence.org/Contents/coWPAttyMain.htm

moikano→@

CitarEntonces el essid es simplemente para diferenciar un diccionario de otro? o para que es?


CitarThis means that we need a different set of hashes for each and every unique SSID i.e. a set for "linksys" a set for "tsunami" etc..

Como va ha utilizar diferentes hashes en un essid que se llama "tsunami", en un linksys pues aún, porque el router será linksys y se puede hacer una rainbow table para sacar la contraseña, pero si se llama PEPE la red, como creará la rainbow table para sacarlo si no tiene nada que ver con la marca del router¿?

O según el essid la contraseña contiene un tipo de hash relacionado con la contraseña¿?

Perdona que insista, pero no lo acabo de entender como con un essid crea un diccionario que puede sacar mas rápido un password...

kikerap

En este foro esta la respuesta:

Citar
Precomputación de diccionarios
Tambien hay que comentar que mejoró el proceso de obtención por fuerza bruta de la WPA mediante el empleo de diccionarios precomputados gracias al GENPMK del COWPATTY. En resumen, consiste en disponer del diccionario que vas a utilizar en el ataque con las claves ya cifradas en parte, de manera que durante el proceso del ataque se ahorra el tiempo de cifrado. Se puede pasar unas 100 veces más rapido utilizando claves precomputadas que en texto plano... Si si, ya se...en su contra decir que como en el proceso de precomputación interviene el ESSID de la red así como su longitud, pues eso limita en gran medida el alcance de objetivos del diccionario.

http://foro.elhacker.net/hacking_wireless/proyectos_de_diccionarios_precomputados_wpa_espanol_factible_viable_o_no-t184322.0.html

moikano→@

Ok, muchas gracias, ahora si que lo entendí  :)