domingo, 11 de enero de 2009

Seguridad Wireless (III de IV)

Crackeo de clave WPA/WPA2 PSK - Teoría

En el modo WPA/WPA2 PSK la clave PMK de la cual se deriva luego la PTK se obtiene con la siguiente función:

PMK = PBKDF2(PSK, SSID, longitud SSID, 4096, 256)

Donde PBKDF2 es una función de derivación de claves que forma parte de los estándares criptográficos de clave pública de los laboratorios RSA (PKCS). Se trata de una función pseudoaleatoria que se utiliza para derivar la clave (PMK) haciendo uso de la frase PSK y SSID.

Para derivar a partir de aquí la clave de cifrado por sesión (PTK) se hace uso de la PMK, los números aleatorios intercambiados, conocidos como anonce y snonce, y las direcciones MAC de cliente y punto de acceso. Dado que todo lo que se utiliza ha sido capturado salvo la PSK, basta con probar diferentes frases ya sea por fuerza bruta o mediante el uso de diccionario, para dar con la clave que se ha utilizado en el cifrado.

Para realizar este proceso de crackeo existe la posibilidad de utilizar tablas pre-calculadas [Rainbow tables] de modo que se incremente el número de pruebas que se pueden realizar por segundo para tratar de averiguar la clave. Esto es factible, sin embargo, existe una gran diferencia con el uso de este tipo de tablas en el crackeo de otras contraseñas.

El problema radica en que los hashes precalculados dependen del SSID de la red, con lo que no es posible tener precalculados todos los hashes para todos los posibles nombres de red. Existen proyectos, como el de Renderlab donde es posible obtener hasta 33 GB de hashes precalculados, partiendo de un diccionario (en inglés) y listado de SSID. Lógicamente aquí en España su utilidad es bastante más limitada.

Crackeo de clave WPA/WPA2 PSK - Práctica

Una vez que se han capturado los paquetes de una sesión de autenticación de un cliente, entonces puede ejecutarse un proceso de cracking de la clave PSK. Para realizar este proceso es posible utilizar Cain, una herramienta de auditoría de seguridad que entre otros módulos trae uno especial para craquear contraseñas. En la pestaña Cracker de Cain, en el apartado “802.11 Captures” se debe importar el fichero .cap que contiene la captura de la autenticación de un cliente. Cain analiza el fichero de captura e indica si dentro del fichero .cap se encuentra algún Handshake válido del que se pueda extraer la clave PSK.

Imagen 8: Hanshake WPA2 capturado

Una vez que se tiene capturado el intercambio se envía a craquear, es posible utilizar un ataque por fuerza bruta o basarse en un diccionario para tratar de agilizar el proceso.

Imagen 9: Ataque sobre el hash de autenticación

El éxito del ataque ahora radica única y exclusivamente en la fortaleza de las password que haya utilizado el administrador de la red. Si ha colocado una clave de red que aparezca en un diccionario o la clave es suficientemente pequeña e insegura será factible romperla. Para tratar de romperla por fuerza bruta es necesario elegir el alfabeto a utilizar, las longitudes mínimas y máximas y empezar a probar.

Imagen 10: Ataque por fuerza bruta sobre el hash de autenticación

Para el ataque basado en diccionario, es necesario contar con un buen diccionario, e indicar las posibles pruebas a realizar con cada una de las palabras disponibles en el diccionario.

Imagen 11: Ataque por diccionario sobre el hash de autenticación

En cualquiera de los dos casos si consigue dar con la clave nos lo mostrará en la parte inferior con un mensaje como el siguiente:

Imagen 12: Resultado exitoso en el ataque sobre el hash de autenticación

La última versión de Cain tiene como limitación que no es capaz de trabajar con ciertos caracteres, con lo cual no sería posible crackear algunos hash de autenticación. Como alternativa a Cain se puede utilizar la suite aircrack, disponible tanto en Linux como en Windows, que permite trabajar con todo el abanico posible de caracteres.

Imagen 13: Éxito en el ataque sobre el hash de autenticación con aircrak

No hay comentarios: