[Hacking] SpeedTouch Para Linux: Contraseñas de Módems Infinitum/Thompson en 1 minuto (WEP/WPA)


NOTA: Éste es un Post Didáctico, (con fines puramente de enseñanza) El uso que le des a lo aquí aprendido es 100% tu responsabilidad, Recuerda que robarte el Wi-Fi del vecino es ilegal y te puede acarrear consecuencias, a las que tendrás que atenerte si usas éste conocimiento para incurrir en prácticas fuera de la ley.

El Prólogo

El otro día en la mañana me habla un amigo y me dice: "Oye, sé que tú no haces éste tipo de cosas, pero necesito tu ayuda, verás: Me acabo de cambiar de casa y me conectan el Internet hasta dentro de unos días, pero necesito ver un video que me enviaron antes de irme al trabajo, es para hacer una presentación, entonces necesito que descargues un programa y me ayudes a obtener la clave de un módem Prodigy Infinitum *(de Telmex, estamos en México)* que tengo cerca, sólo te paso 6 dígitos, los pones en el programa y éste genera las claves posibles y me las das, es de vida o muerte por favor, es que yo no tengo Internet o cómo conseguirlo antes de irme"...

La Historia

Total que accedí por curiosidad, me dijo el nombre del dichoso programa y que lo buscara en Google como "SpeedTouch 6 dígitos infinitum" hallé un video que demostraba su uso en Youtube y tenía un enlace de descarga. Al ver el programa, lo primero que pensé fue: Ésto es un programa hecho por algún muchacho aburrido en notepad y compilado a través de un BAT para luego hacerlo EXE (Ya que era para Windows). No soy (digamos, oficialmente) un programador "de escritorio" y mucho menos de Windows, pero al principio pensé que el programa éste SpeedTouch no era más que un generador de claves muy simple basado en algún algoritmo o fórmula matemática el cual se corría en una consola Windows y ya, nada del otro mundo. Tras verlo funcionar, me dispuse a hacer una versión para Linux, y lo primero que se me ocurrió fue decompilar el EXE que descargué para sacar el código original, o transponerlo a BAT para ver si podía sacar el script original y luego hacerlo en bash o algo así, pero mis intentos de decompilación fueron infructuosos, y lo que conseguí fue únicamente código basura (Lo más que se me ocurrió al principio finalmente fue hacer un script que por medio de Wine corriera la versión para Windows de manera amigable en consola para el usuario Linux valiéndose de un BAT que encontré y decompilé pero al final no me quedé con ésto ya que el dichoso BAT sólo llamaba al EXE y no había nada de "fuente" propiamente en él).

Como sabía que no podía ser muy complicado (Ya que yo hice el Xenode Sweeper) Decidí buscar a ver si había un fork o versión para Linux que pudiera usar, o al menos el código fuente de la aplicación; Investigando un poco más, encontré un comentario por ahí en donde alguien decía que ése programa originalmente había sido escrito en y para Linux y tras continuar mi búsqueda ya con más ánimo debido a ésto, hallé el dichoso código fuente. La aplicación está escrita en C me parece y es un poco más compleja de lo que me esperaba, pero sabía que teniendo el código fuente era posible hacer una compilación funcional en y para Linux, así que lo que hice fue abrir el archivo que me sonó más importante y esperar que estuviera comentado, ésto fue lo que hallé:



En pocas palabras, el creador nos dice que se valió de un pequeño "bug" que afecta a los Routers de éstas marcas con los ajustes de fábrica establecidos (La mayoría son dejados funcionando así por las personas durante toda su vida útil ya que la mayoría de usuarios no sabe mucho sobre su configuración a fondo y sólamente los usan para lo que los necesitan y ya), Nos dice cómo se generan las claves de seguridad para éstos dispositivos en base a una especie de modelo "01-800-Producto" usando la fecha de manufacturación de Router y otros datos, convirtiéndolos a hexadecimal, procesándolos con algo de criptografía y aunando parte de la palabra del nombre del Router, (en el ejemplo "SpeedTouch").

Más abajo nos explica más sobre su código y finalmente cómo compilarlo estando en Linux. Si quieren saber más acerca del trabajo de éste tipo, cómo llegó a ésas conclusiones y todo el proceso de ingeniería inversa que aplicó, está por acá. Bastante interesante para los que quieren aprender sobre seguridad informática, hacking, ingeniería inversa y demás.

Uso y Explicación

Una versión compilada del SpeedTouch Para Linux se encuentra disponible para su descarga por acá, si bien las instrucciones de uso se incluyen en el paquete descargado, explicaré rápidamente cómo y porqué funciona ésta aplicación:

1.- Haciendo Ejecutable

El SpeedTouch es un archivo binario en Linux, por lo tanto tenemos que hacerlo ejecutable para que funcione. Basta con darle un click con el botón secundario de nuestro ratón e irnos a "Propiedades>Permisos" y marcar "es ejecutable", aplicamos los cambios.

2.- Modo de Uso

cd ruta/a/carpeta/speedtouch-linux
./speedtouch -i xxxxxx -v

Donde "xxxxxx" se refiere a los 6 dígitos del nombre del módem, que veremos en nuestra lista de redes disponibles si lo tenemos al alcance. Por ejemplo:

Para "INFINITUMF8A3D0"
f8a3d0 = xxxxxx

Tras una pequeña espera, la consola nos soltará las posibles claves (de 1 a 3 generalmente). Como ya comenté arriba, el programa se basa en una pequeña función que por medio de técnicas de ingeniería inversa y criptografía nos genera la clave del módem, la cual sabemos que es generada por los fabricantes en base a una metodología del tipo "01-800-Producto" (por llamarla de alguna manera) gracias a la investigación del creador de SpeedTouch/Stkeys (Nombre del Programa Original). La versión compilada que descargan desde el enlace que les puse hace referencia a un enlace con el código fuente del programa original en su archivo "Léeme" para todos aquellos que quieran estudiarlo.

3.- Concluyendo

Es por ésto que los módems más recientes de las marcas afectadas tienen solo 4 dígitos en el nombre en lugar de 6, ya que se descubrió este agujero de seguridad y se trató de parchear de ésta manera, mientras menos dígitos se pongan en el programa por lógica más claves posibles se generarán, porque se tienen menos datos sobre el módem en sí (recordemos que cada combinación de 4-6 dígitos no es más que una manera hexadecimal de presentar información sobre el aparato específico en cuestión, el cual desde tienda viene con una clave especificada en base a un algoritmo/método bastante soso). Se han reportado casos de usuarios que usan con éxito el SpeedTouch para descubrir las claves de módems con 4 dígitos en el nombre, tras tratar con varias/todas las generadas, ésto nos indica que no se ha cambiado la manera/algoritmo de generar las claves de seguridad y sólo sería cosa de que alguien modificase el SpeedTouch/Stkeys para dar soporte a los nuevos aparatos...

¿Qué les parecen los métodos de seguridad y criptografía de las empresas ISP? jajaja a mi me causan gracia XD, ¿Bastante interesante éste rollo no?

Saludos.

P.D. La moraleja del post es: "Siempre lee bien tus archivos de código fuente o readme, puedes encontrar todo lo que necesitas ahí dentro jajaja.