Para responder a esa pregunta deberemos diferenciar 3 escenarios.
- El primer escenario es puramente con los protocolos WPA/WPA2 y su utilización sin tecnologías complementarias tales como WPS. En este escenario podemos considerar segura una red wifi que los implemente.
- El segundo escenario, que es el más extendido, es el uso de una de las variantes de WPA/WPA2 que es WPA PSK/WPA2 PSK. En este escenario, tal y como vamos a procedimentar a lo largo de este artículo, no se pueden considerar seguras al darse el caso de poderse crackear. Toda la seguridad de estas redes quedará soportada por la complejidad de la contraseña y este hecho en la mayoría de los casos es un riesgo en si mismo dado que muy poca gente/empresas cumplen una política de contraseñas adecuada (las empresas suelen tener unas políticas muy sesudas en cuanto a complejidad, longitud, frecuencia de cambio,…etc. Pero en pocos casos la cumplen).
- El tercer escenario es tener combinadas una red inalámbrica con WPA/WPA2 más otra tecnología como por ejemplo WPS. El problema está en que independientemente de la seguridad que pueda darnos WPA/WPA2, estaremos absolutamente supeditados a que la tecnología complementaria que estemos utilizando no tenga fallos de seguridad. Por ejemplo cualquier red inalámbrica que tenga WPS 1.0 puede comprometerse en cuestión de minutos gracias al error descubierto por Stefan Viehböck.
¿Cómo funcionan WPA PSK y WPA2 PSK?
A efectos de filosofía, WPA y WPA2 funcionan de la misma manera, la diferencia que tienen es en como cifran cada uno las comunicaciones y como garantizan la integridad de las mismas:- WPA basa su cifrado en TKIP (Temporary Key Integrity Protocol) que está basado en ARC4 (como el protocolo WEB) y utiliza una versión antigua de MIC (Message Integrity Code) para garantizar la integridad del mensaje.
- WPA2 basa su cifrado en CCMP (Counter-mode/CBC-MAC Protocol) basado en AES (Advanced Encrytion System) y utiliza una versión muy reciente de MIC (Message Integrity Code) para garantizar la integridad del mensaje.
¿Que hace posible el ataque a la clave PSK?
Lo que posibilita el ataque es que si escuchamos toda la autenticación del cliente, previamente autenticado (con WPA PSK/WPA2 PSK no realizará el proceso de re-autenticación), tendremos capturadas la PMK, las MAC, los números aleatorios y los SSID. Con esto y sabiendo que la PMK se genera mediante el algoritmo PBKDF2 y que el único valor que nos falta es la PSK lo único que tendremos que hacer es probar frases con este algoritmo, comparando el resultado y una vez obtenido el valor tendremos la clave PSK que se ha usado en la autenticación. Y esta situación la podremos forzar gracias al ataque 0 o ataque de desautenticación, por esto elegiremos redes que tengan algún cliente conectado.Pasos para realizar este ataque
Antes de empezar con los pasos indicar que el artículo se ha realizado con la tarjeta Tp-Link TL-WN722N que implementa un chip Atheros AR9271 y desde mi punto de vista es la mejor tarjeta para auditorías por su estabilidad, lo excelente que es escuchando y su gran relación calidad precio (menos de 15€). Si estáis probando con otra tarjeta y veis que no obtenéis el Handshake después de 5 minutos, creerme que es debido al chip que tenga vuestra tarjeta. Por ejemplo si probáis estos pasos con la tarjeta Edimax EW-7318USG que implementa un chip RT257, tardaréis una eternidad (o nunca lo conseguiréis) porque es algo sorda. Además de esto deberemos tener instalado el paquete aircrack-ng (para instalarlo en debian realizaremos un apt-get install aircrack-ng).1-. Comprobamos que nuestro sistema reconoce la tarjeta wifi que le hemos pinchado. Para ello usamos el comando iwconfig.
METEMPSICOSIS ~ # iwconfig
2-. Ponemos nuestra tarjeta en modo monitor con el comando airmon-ng. En el paso anterior comprobamos que mi tarjeta es la wlan0 así que lanzaré el siguiente comando para ponerla en modo monitor y la interfaz mon0 que resulta es la que está en modo monitor y por tanto la que usaremos a lo largo de los siguientes pasos.
METEMPSICOSIS # airmon-ng start wlan0
3-. Miramos todas las redes que tenemos disponibles y deberemos elegir una que el tipo de autenticación sea PSK y tenga clientes conectados (recordamos que sin clientes conectados no los podemos desautenticar y por tanto no podemos escuchar la autenticación para obtener el handshake). Yo he generado una red para esta prueba que es METEMPSICOSIS con el BSSID 84:9C:A6:B0:4D:E9, que está en el canal 2 y que tiene un cliente conectado con MAC 7C:FA:DF:45:0B:0B.
METEMPSICOSIS # airodump-ng mon0
4-. Ahora nos pondremos a capturar el tráfico. La estructura del comando es airodump-ng -w <nombre del archivo de la captura> -c <canal> --bssid <bssid del AP> <interfaz_en_modo_monitor>
METEMPSICOSIS # airodump-ng -w captura -c 2 --bssid 84:9C:A6:B0:4D:E9 mon0
5-.Ahora mientras estamos escuchado el trafico lanzamos el ataque de desautenticación o del 0 en otra pestaña/ventana/consola (es importantísimo no cerrar ni cancelar el comando anterior, tiene que seguir lanzado mientras ejecutemos este ataque, de lo contrario no escucharemos la autenticación.). La estructura del comando es aireplay-ng -0 <número de reintentos> -a <bssid del AP> -c <MAC del cliente conectado>. En principio con 50 reintentos tendremos suficiente pero si nuestra tarjeta es un poco sorda deberemos aumentarlo y si vemos que con más de 100 no conseguimos el handshake deberemos considerar el cambio de tarjeta.
METEMPSICOSIS # aireplay-ng -0 50 -a 84:9C:A6:B0:4D:E9 -c 7C:FA:DF:45:0B:0B mon0
6-. Una vez finalizado el ataque del 0 veremos cómo nos ha aparecido el handshake donde tenemos lanzado el comando que estaba escuchando las comunicaciones.
7-. Tras haber obtenido el handshake cancelaremos la escucha y comprobaremos que se ha generado el archivo .cap que contiene todo el contenido de nuestra escucha.
8-. Ahora tenemos 2 vertientes para conseguir la clave:
- Usar un diccionario que tenemos generado para probar las claves.
- A mi esta es la que más me gusta porque puedo generar un diccionario "especial" combinando los resultados de uno generado con crunch con otros diccionarios de referencia que podemos encontrar en la web,...etc.
- La sintaxis del comandos es aircrack-ng -a 2 <nombre del archivo .cap> -e default -b <bssid del AP> -w diccionario
- Utilizar crunch en vivo para, sin necesitar un diccionario previamente creado, probar claves.
- La gran ventaja de esto es que no necesitamos nada de espacio en disco para almacenar el diccionario. Podéis consultar el artículo que escribí sobre como generar diccionarios con crunch.
- La sintaxis del comandos es crunch <todas las opciones que requiera para generar el diccionario> || aircrack-ng -a 2 <nombre del archivo .cap> -e default -b <bssid del AP> -w -
10-. En el momento que dé con la clave el proceso se parará indicándonos en pantalla la que es (yo he preparado un diccionario para el artículo con el fin de no tardar unos días).
No hay comentarios:
Publicar un comentario