lunes, 27 de octubre de 2008

Claves Web/Wpa al descubierto

Desde El Hacker.net he podido leer un articulo bastante interesante sobre como sacar las claves de acceso a una Red Wi-fi simplemente teniendo el numero de serie del aparato en este caso el ejemplo se lleva al Router Thomson “SpeedTouchXXXXXX”.

Introducción
A la hora de comprobar la vulnerabilidad del WPA, a día de hoy continúa siendo imposible de romper el cifrado. En cuanto a puntos débiles, el ataque contra la clave PSK es la práctica habitual, donde se centran los programas como Aircrack y coWPAtty.

Así pues, si el sistema goza de buena robustez en la actualidad, nos planteamos… hay algún otro punto débil que afecte el sistema? Pues si, estudiar el proceso de generación de los datos preconfigurados en los equipos subministrados por los fabricantes y/o ISPs.

Hay un dato relevante para este planteamiento: La mayoría de gente que dispone de una red inalámbrica mantiene los parámetros preconfigurados en los equipos, tanto WEP/WPA, ya sea por el desconocimiento de la materia, o simplemente por dejadez. Y si no, para comprobarlo basta con hacer un escaneo de redes en el que observarás que un alto porcentaje de las redes encontradas mantienen los parámetros de fábrica o establecidos por el ISP en su ESSID, lo que da a pensar que con la contraseña pasa lo mismo.

Con esto, pensaréis que los fabricantes y/o ISPs utilizan un proceso muy complejo para la generación de estos parámetros, con el fin de evitar que toda la fortaleza del protocolo de cifrado (al menos en el WPA) se vea mermada por culpa de este proceso. Pues no es del todo así.

De todos es conocido la fragilidad de los algoritmos de generación de estos datos en redes tipo como las Wlan-XX, Dlinkwireless, adsl-xxxx, …, que han llevado a la generación de aplicaciones que utilizan la fuerza bruta y/o la aplicación inversa del algoritmo facilitando el descubrimiento de la clave.

En este caso, nos propusimos aplicar esta prueba en las redes WEP/WPA SpeedTouchXXXXXX de routers del fabricante Thomson.

El protagonista: Router Thomson.
Como veremos, en este caso la fragilidad en la implementación de los datos preconfigurados afecta al router, con lo que puede verse afectado no uno solo, sino otros ISPs e incluso de otros países.

Estas redes son generadas por routers Thomson modelos 580i i 585v6. A la vista del proceso de instalación y configuración de estos routers, se aprecia que en el propio software se encontraba el algoritmo para la generación de los datos preconfigurados. En este caso, el único dato introducido durante el proceso que haga única una red, es el número de serie del router. Esto ya da una pista importante.

Anteriormente, había leído algo sobre Kevin Devine, sobre un descubrimiento similar que había hecho en el caso de las redes Eircom, en las que había descifrado el algoritmo que utilizaba para la generación de la clave WEP con que vienen configuradas.

Por lo que me puse en contacto con el, le expuse el caso, y nos pusimos a investigar. Mediante ingeniería inversa, Kevin pudo establecer un primer apunte de cómo eran generados los parámetros basándose en el número de serie. A partir de ahí, era necesario disponer de un router para las “practicas”, dado que si no el programa de instalación se paraba.

Así que me puse a buscar un “donante”. Gracias a Pazienzia, dispusimos de uno. Luego nos dimos cuenta que hubiera ido bien enviarle también la tarjeta wifi usb que acompaña el router (ver texto completo de Kevin), pero no fue necesario dado que el asunto tenía expectación y contó también con la colaboración de otra gente. A partir de aquí, la cosa fue rodando y rodando…

El algoritmo al descubierto. Caso redes SpeedTouchXXXXXX.
Como he dicho, se pudo comprobar que la base del proceso es el número de serie. Así que, vamos a analizar por ejemplo CP0615JT109 (53). De las observaciones realizadas se llegó al siguiente planteamiento:

CP YY WW PP XXX (CC)

Donde, que significa cada cosa?...

YY es el año de fabricación. ( 2006 ) ?
WW es la semana del año. ( 15 ) una semana de Abril ?
PP es el código de producción/fabricación. ( JT ) ?
CC es el código de configuración. ( 53 ) ? del estilo 00 - ZZ (0-9/A-Z)

Sobre el valor XXX, solo especular. Quizá representa el número de unidad?

Con esto, y tomando como ejemplo "CP0615JT109 (53)" el proceso es el siguiente:

Se eliminan los valores CC y PP del número de serie

"CP0615109"

Convertimos los valores de XXX a hexadecimal.

"CP0615313039"

Procesamos mediante el algoritmo SHA-1

742da831d2b657fa53d347301ec610e1ebf8a3d0

Los últimos 3 bytes hexadecimales se convierten en una cadena ASCII de 6 bytes, los añadimos a la palabra "SpeedTouch", con lo que tenemos el ESSID por defecto.

"SpeedTouchF8A3D0"

Los primeros 5 bytes hexadecimales se convierten en una cadena ASCII de 10 bytes, con lo que tenemos la clave WEP/WPA por defecto.

"742DA831D2"

Y esto es todo...

Recuperación.
El método desarrollado aquí utilizando la fuerza bruta es un poco simple... pero suficiente por el momento. Se utilizan los datos del ESSID para averiguar el hash entero, mediante la aplicación del algoritmo sobre los posibles números de serie y por comparación.

Teóricamente, con los 3 octetos del ESSID en el caso de estas redes, no se requieren más de 2 intentos para tener acceso satisfactoriamente a la red.

En casos en que solo se utilizan 2 octetos en el ESSID se generan muchas más claves potenciales, así como tentativas a realizar (siendo una media de 80).

Aún así, esto mejora notablemente las posibilidades a un atacante de acceder al router, aún protegido con WPA - más si este puede capturar un handshake y utiliza el Aircrack, Cain&Abel o incluso el coWPAtty en modo offline para descifrarlo.

En todo caso, hay que recordar que esta herramienta la podemos utilizar para que podamos comprobar en nuestra red este punto débil, o con el permiso del propietario.

La herramienta: stkeys.

- Descarga del código fuente en español (compilable en linux/windows):
http://download.wifislax.com:8080/stkeys_ES_src.zip
m5d: 6472d51a88010754756154d93d7fb2be

- Linux (compilado+instalador+lanzador). Desde cónsola teclead:
gzip -d install.sh.gz
chmod +x install.sh
./install.sh

- Windows (compilado):
http://download.wifislax.com:8080/SpeedTouchKeys-v0.1.zip
MD5: 2b5ea7d4539ea5b02fc8ea569e5566f6


(ver "notas del programa" al final de este mensaje, sobre cambios de parámetros antes de compilar)

Para compilar el código en linux, usar gcc:

gcc -fomit-frame-pointer -O3 -funroll-all-loops stkeys.c sha1.c -ostkeys

Es posible que al compilar os lance unos errores tipo “implicit declaration…”, que no afectan al proceso. Destacar que en el código se ha utilizado la implementación del algoritmo OpenSSL SHA-1, que es por lo que realiza el proceso muy rápido.

Al ejecutar el programa, os saldrá:



Caso práctico

Ejemplo de uso en un router Thomson modelo ST585v6 con ESSID “SpeedTouchF8A3D0":



En este ejemplo, la clave correcta es la obtenida en la primera opción.

2 comentarios:

Anónimo dijo...

MMm que interesante posiblemente sea el comienzo del fin para WPA
Realmente parece tan sencillo
Aunque como dices aplica para esos modems que aun cuentan con las claves de fábrica.

excelente post
Saludos!!

Anónimo dijo...

mmmm interesante post
te felicito,
Parece vastante sencillo :)
cuidado a aquellos que dejan las claves de fábrica jajaj

Saludos