Mostrando entradas con la etiqueta belkin linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta belkin linux. Mostrar todas las entradas

jueves, marzo 20, 2008

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

En el artículo anterior vimos como se podía romper el protocolo WPA con clave precompartida PSK (TKIP), a través de un ataque de fuerza bruta.

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:

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:

# 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:

# 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.

Collected 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.

miércoles, febrero 27, 2008

Belkin F5D7051 en Linux

Extrañamente no hay ningun tutorial ni nada similar que explique como configurar este dispositivo wireless en Linux. En algunas paginas explican como instalarlo utilizando ndiswrapper (es el unico modo que he conseguido hacerlo hasta ahora). Pero falta informacion. Este ha sido testeado en Mandriva Linux 2006 y funciona sin problemas, al cargar los drivers de windows desde ndiswrapper estos detectan la red sin problemas. El problema viene en otras distros donde extrañamente no detecta el dispositivo debido a un error de configuracion. Aqui van los pasos necesarios para poder instalarlo y funcionar en cualquier distro de Linux:

- Instalar la ultima version estable de ndiswrapper. La que suelen traer de serie en algunas distros da problemas al no detectar ndiswrapper como modulo. Pagina oficial de Ndiswrapper

su
tar -xvf ndiswrapper-XXX.tar.gz
cd ndiswrapper-xxx
./configure
make
make install

- Una vez instalada la ultima version de ndiswrapper procedeos a crear el alias para la conexion wlan
ndiswrapper -m

- Copiamos en un directorio los drivers de windows, en concreto solo son necesarios 3 archivos (bcmrndis.inf, usb8023k.sys y rndismpk.sys). Si no se utiliza windows se pueden descargar los drivers para el dispositivo desde la web de belkin.
cd Belkin
ndiswrapper -i bcmrndis.inf
cp *.sys /etc/ndiswrapper/bcmrndis/
modprobe ndiswrapper

- Con esto ya estaria configurado el dispositivo en un principio en Mandriva 2006, solo seria necesario configurar la ip asi como los demas parametros de conexión.

- En otras distros queda un parametro por configurar del usb que por defecto esta configurado como apagado. Para ello:
echo -n 1 > /sys/bus/usb/devices/xx-xx/bConfigurationValue

- xx-xx, es el id del usb donde se encuentra conectado el dispositivo usb. Para saber este simplemente haciendo un lsusb puede obtenerse la id del mismo.

- Con esto ya fincionaria el dispositivo en cualquier distro de Linux. Problema agregado, la configuracion del dispositivo se reinicia cada vez que el SO se apaga o se reinicia con lo cual el valor de bConfogurationValue habra que cambiarlo cada vez que esto ocurra. Se que se puede configurar mediante udev mediante la creación de ciertas reglas aunque aún no lo he probado.Manual reglas Udev Espero les sirva.

- Es posible que las reglas udev no funcionen. Un metodo facil y rapido para cambiar la configuracion del fichero bConfigurationValue y que se cargue al inicio es:

como root editar el fichero /etc/rc.local y añadir echo -n 1 > /sys/bus/usb/devices/xx-xx/bConfigurationValue.
Esta linea hara que se cargue al inicio el dispostivo wiffi sin necesidad de agregar el valor en cada reinicio o inicio del sistema.