viernes, 18 de octubre de 2013

Cracking WPA/WPA2 con reaver

Hace poco estuve cacharreando con reaver-wps, una herramienta que se publicó hace un tiempo para crackear las contraseñas de tipo WPA y WPA2 en conexiones Wifi.

Esta herramienta aprovecha una vulnerabilidad en el método de asocación cliente-router WPS, por el cual el cliente envía un número pin de 8 dígitos, y si éste coincide con el configurado en el router, se permite la asociación. De esta forma, existen 100 millones de combinaciones posibles.

El fallo reside en que el router envía una respuesta ante el envío de los 4 primeros dígitos. Si éstos no son correctos, el router envía una señal EAP-NACK, con lo cual reducimos el número de combinaciones a 10.000 en una primera atacada (10 elementos en grupos de 4 donde el orden es relevante y se pueden repetir). Una vez tenemos los 4 primeros dígitos correctos, nos quedarían 3 dígitos restantes, puesto que el último dígito es un checksum.

De esta forma tenemos en total 11.000 combinaciones posibles, las cuales se pueden completar en un período de tiempo medio de entre 4 y 10 horas (en mis pruebas, en la mayoría de los casos he conseguido descifrar la contraseña en torno al 95% del proceso total, unas 8 horas aprox.), pero también depende del tiempo entre cada comprobación de pin, de que el router bloquee durante un tiempo el intento de acceso, etc...

La herramienta en sí tiene varias opciones:


Entre ellas, las más típicas son:
   -i Para seleccionar la interfaz wifi que utilizaremos para el ataque
   -b Para seleccionar el BSSID del PA que queremos atacar
   -v o -vv Para que la herramienta nos reporte información adicional sobre el proceso
   --mac Para especificar la mac de nuestra tarjeta wifi

Para nuestras pruebas, lo primero que haremos será cambiar la mac de la tarjeta wifi para no revelar datos "comprometedores" en el ataque:


Después ponemos la tarjeta wifi en modo monitor:


Iniciamos airodump para ver las redes a nuestro alcance, el tipo de cifrado y el bssid:


Sé lo que estáis pensando, ¿para qué te vas a complicar con WPA2 si tienes disponible una WEP? Ya, pero no es el caso.

Así que iniciamos reaver (utilizaremos NUESTRO punto de acceso con nombre H0m3). Cabe destacar que como hemos spoofeado la mac de la tarjeta wifi, a reaver le tenemos que indicar la mac nueva que nos hemos puesto:



Al cabo de un tiempo (dependiendo de los segundos que pasen entre cada comprobación de pin), si el router que queremos atacar tiene activado la asociación por WPS, obtendremos la contraseña de acceso:



Hay que decir que durante el proceso se cayó la conexión wifi varias veces, con lo cual podemos estar provocando un DoS con este ataque.

La herramienta posee otras opciones también bastante interesantes, como restaurar una sesión o enviar claves DH pequeñas para incrementar la velocidad, pero esto lo dejamos para el lector.

La forma de protegerse frente a este tipo de ataques es desactivando la asociación por WPS en el router, dependiendo del modelo se hará de una forma u otra, pero básicamente basta con entrar en la configuración avanzada y desactivar esta opción.

Como dijeron al final de la RootedCon '10, Hack The World!

--EOF--

jueves, 10 de octubre de 2013

Wireless usb TP-Link TL-WN821N en Debian Wheezy

Normalmente suelo tener una máquina para hacer pruebas y cacharrear un poco, conectada a un router mediante cable ethernet. Pero esta vez se trataba de jugar con la tarjeta wifi, para lo cual eché mano de una tarjeta wireless usb que tenía por ahí. Cual fue mi sorpresa que al conectar el usb la típica interfaz wlan0 no se levantaba (que raro...) en mi Debian Wheezy. Reviso el syslog y encuentro lo siguiente: 



Vale, no encuentra el firmware. Reviso el directorio /lib/firmware y efectivamente, allí no está. Googleando un poco encuentro la descarga de carl9170-1.fw, puesto que el fabricante sólo proporciona drivers para Windows en este caso. Descargo el archivo, lo muevo al directorio de firmware, hago un rmmod carl9170 y modprobe carl9170, y la interfaz sigue sin levantarse. Vuelvo a revisar el syslog, el directorio, y lo que encuentro es un carl9170-1.bin.

Googleando un poco más, veo en las páginas de Debian que para instalar ese driver basta con instalar desde repositorios el paquete firmware-linux-free:



Instalo, hago un ifconfig y allí está, una bonita interfaz wlan0 levantada (entre otras).



Por curiosidad, vuelvo a revisar el directorio de firmware, y efectivamente, ahí está nuestro carl9170-1.fw