No cabe duda que la inventiva de la gente puede ser notable. Esto puede ser el caso Sprite_TM, un hacker que le gusta investigar cómo funcionan todo tipo de dispositivos. Recientemente vio un teclado que tiene asociado un LED para cada tecla, la cual puede manipularse cual direcciones de memoria. Jugando un poco con el teclado, Sprite_TM y un amigo llegaron a la conclusión que se podían hacer cosas interesantes con dicho teclado. Mientras hallaban la manera, uno de ellos dijo medio en broma: «suena triste pasar tantas horas en un teclado y no poder jugar ni el juego de la viborita». Este es precisamente el juego que venía casi por omisión en la mayoría de los teléfonos Nokia.
El teclado del que hablamos es un Coolermaster Quickfire Rapid-I, el cual tiene incluso un CPU Cortex ARM. Abriendo el teclado hallaron que había algunos LEDs, un Cortex de 72 MHz con 127Kbytes de memoria Flash y 32 de RAM. Es una impresionante cantidad de poder de cómputo para un teclado. Sprite halló el puerto SWD e intentó descargar el código hexadecimal que viene en la memoria Flash. No era tan fácil, venía protegido, pero debía haber alguna manera.
Coolermaster trabaja activamente en el firmware, añadiendo modos de luz, poniendo todo lo que hace en su sitio web. La actualización del firmware se distribuye como un ejecutable con versiones para Europa y América. La versión europea tiene otra tecla. Analizando ambas, Sprite halló la diferencia entre estas versiones y encontró que solamente un bloque de 16K de los datos era diferente en la parte final del archivo. El firmware estaba encriptado usando XOR por lo que la tarea estaba a punto de lograrse.
El firmware no estaba completo, a todo esto. Había brincos a posiciones de memoria fuera del código y parecía tener un bloque de datos corruptos. Entonces Sprite decidió correr el archivo. Con USBPcap corriendo en el fondo mientras ejecutaba el archivo de actualización, Sprite pudo leer exactamente lo que pasaba cuando el teclado se actualiza y entonces pudo hacer una copia del firmware del teclado. Ahora había que entender lo que estaba haciendo el firmware para entonces pasar a la tarea de crear el programa de la víbora.
La primera parte para escribir el nuevo firmware era hallar un lugar dentro del Flash y RAM para poner el código del programa. No fue difícil, porque había 64Kbytes libres de memoria Flash y 28K de memoria RAM sin usar. Las llamadas a las rutinas de la víbora fueron modificadas de las variables que el firmware original tenía.
El juego de la víbora es divertido por un rato, pero teniendo tanto poder en ese teclado, se pueden hacer muchas más cosas, por ejemplo, programar un keylogger, especialmente si el firmware del teclado se puede actualizar a través de la computadora. Para evitar hackeos, Sprite le añadió una serie de requerimientos físicos en el teclado, una combinación de teclas, para permitir las actualizaciones del firmware. Truco de un buen hacker, sin duda.
Habiendo entendido todo lo que se podía hacer con ese teclado, Sprite programó un nuevo modo de luces, una simulación de un fluido. He aquí los videos del autor de tan curioso hackeo:
Referencias: