DOCUMENTACIÓN
HACKING XBOX.
Por David Senabre. 9 de octubre de 2006
El objetivo principal de este documento es explicar de forma más o menos clara los principios que han permitido hackear la Xbox, y de ofrecer información sobre los sistemas de seguridad que emplea, cómo se rompieron, y el funcionamiento general de los modchip. Para ello, expondré muy brevemente algunos fundamentos de criptografía. Siempre con fines educativos, nunca con intención de promover un uso ilícito ni de la consola ni de esta información. No me responsabilizo por el uso que se le de. Si todavía no sabes de esto, y tienes curiosidad, esta es tu oportunidad :-)
¿Qué sistema usa la Xbox para rechazar copias de seguridad?
El software original viene firmado con un código, a partir del cuál la consola puede comprobar que el soporte es original. Esta firma se genera a partir del contenido del DVD, usando una clave privada que sólo Microsoft tiene. Cuando se mete un juego en el lector de la Xbox, ésta busca un archivo ejecutable, en cuya cabecera se encuentra, entre otras cosas, la firma de Microsoft. ¿Pero cómo se supone que puede proteger esta firma? Para explicarlo, es necesario conocer el concepto de hash y clave pública.
¿Qué es un hash? |
El hash es un número que se obtiene a partir de una porción de información, a la que vamos a llamar mensaje. Por ejemplo, el contenido de un archivo. Cada mensaje nos va a dar un hash, y si cambiamos el mensaje, el hash cambiará.
|
¿Qué es la encriptación de clave pública? |
Nosotros estamos habituados a la encriptación de clave simétrica. Es decir, le ponemos un password a algo, y el mismo password se usa para identificarnos. La encriptación de clave pública es una encriptación asimétrica. Es decir, se trata de usar una clave privada para encriptar un mensaje, mientras que se usa otra clave pública para desencriptarlo.
La clave privada sólo la conoce el emisor del mensaje. Pero la clave pública es, cómo su nombre indica, conocida por cualquiera. Lo que se consigue es que nadie pueda generar mensaje válidos menos el emisor. Porque si nosotros nos inventamos una clave privada, para encriptar mensajes, cuando los receptores los desencripten, sólo obtendran basura. Únicamente los mensajes encriptados con la clave privada verdadera, y desconocida, los receptores leerán el mensaje. Este sistema evita que un intruso pueda manipular un mensaje. |
Como decía, cuando la Xbox detecta que hemos metido un CD o DVD en su lector, busca un archivo ejecutable, y va directamente a su cabecera, a comprobar la firma. Para generar la firma, Microsoft cálcula el hash de la cabecera, y le aplica una clave privada, para encriptarla. Entonces, la consola, para validar la firma, lo que hace es desencriptarla con la clave pública, para obtener el hash que Microsoft calculó de la cabecera original. Y ya sólo queda cálcular el hash de la cabecera actual. Si coinciden, la consola sabe que la cabecera no ha sido alterada. Si no coinciden, la consola rechazará ejecutar el soporte.
Todo esto es difícil de explicar a personas que no han oído de esto nunca. Si no lo entiendes muy bien, o te parece un poco lioso, tranquilo/a, lo es. Así que vamos con el ejemplo gráfico que siempre nos salva el cuello.
![]() La zona gris se desarrolla en privado por Microsoft. Mediante ese proceso, se crea la firma digital del ejecutable. La zona amarilla se desarolla cuando la Xbox se dispone a ejecutar una aplicación. Si el hash de la cabecera, y el que se obtiene de la firma, que es el correspondiente a la cabecera otiginal, coinciden, entonces el soporte es legal, y se puede ejecutar. Sino, a casa. |
El software original está correctamente firmado, y por lo tanto, funciona con normalidad. Pero el software casero, por ejemplo, no se puede firmar, porque nadie puede generar una firma menos Microsoft, al no conocer la clave privada. Una aplicación sin firma digital, provoca que cuando la Xbox calcule el hash, aplicando la clave pública, éstas no coincidan, y por lo tanto no se pueda ejecutar. Los modchips se encargan de que la consola arranque código sin firmar, o erróneamente firmado.
La BIOS de la Xbox
Este sistema de seguridad está programado en la BIOS de la consola. Si consiguieramos modificar la BIOS, podríamos decirle que se saltará la comprobación de la firma, y ejecutara el software directamente. Es decir, nos permitiría ejecutar software no firmado. Esto es precisamente lo que hacen los modchips. Pero esta tarea no era posbile a priori. La BIOS está ligeramente blindada a intrusiones. Veamos por encima a qué me refiero.
El código secreto de la Xbox
La BIOS está encriptada. Es decir, si extraes la información en bruto de su interior, cosa que no es muy difícil, no verás código válido, sino un contenido sin sentido. Para poder trabajar con ella, necesitamos la clave con la que desencriptarla. Así que se podría pensar que basta con encontrar la clave, que tiene que estar, forzosamente, almacenada en algún lugar. Pero el problema es dónde. Los hackers tuvieron bastantes dolores de cabeza intentándo encontrarla. Lo más lógico era explorar el código que se ejecutaba al principio de la BIOS, porque la desencriptación tendría que llevarse a cabo pronto, si se quería usar el resto de la BIOS, donde estaba la chicha. Lo que desconcertó a los hackers, fue averiguar que el principio de la BIOS ¡no era válido! Era simplemente código "falso" que nunca se ejecutaba realmente. Entonces... ¿dónde estaba metido el código de inicio? Esto complicaba mucho lat area, pero tenía una desventaja para Microsoft; acababan de delatar que ese código que intentaban esconder almacenaba algo muy valioso. Y qué más valioso que la clave para desencriptar la BIOS.
Durante un tiempo se especuló donde podría estar escondido el código de incio. Finalmente se dedujo que estaría integrado en el chip southbridge de la placa, usado para la comunicación con el DVD, el disco duro, el puerto de mandos, la red y la BIOS. Esto hacía imposible su lectura. Así que se tuvo que recurrir a métodos indirectos, interceptando las comunicaciones del southbridge con el northbridge, y se consiguió leer el código secreto. Este código se encargaba de desencriptar la BIOS, y contenía la clave requerida para ello. Así que finalmente, clave en mano, se pudo desencriptar la BIOS, y modificarla.
LA PLACA BASE DE LA XBOX ![]() En amarillo, el southbridge, centro de comunicaciones, donde está oculto el código secreto. En blanco, aunque no se ve bien, está la BIOS, grabada en un chip de memoria flash. Lo demás es historieta. En verde la CPU, y en azul el chip gráfico (ambos cubirtos por disipadores metálicos, que sirven para enfriarlos). En rojo los 2 chips de memoria RAM. Al lado de la BIOS se ven cablecitos de colores, unidos a una placa pegada al lateral. Es un modchip, soldado correctamente. El tercero que instalé :-) |
Hacer una BIOS nueva
Para poder sustituir la BIOS original, había que encriptar la nueva BIOS con la clave correcta, de manera que cuando la consola intentara desencriptarla, obtuviera código válido. De lo contrario, sólo vería basura y se colgaría. ¿Qué clave había que usar para encriptar las nuevas BIOS? Sencillamente, la misma que se usó para desencriptarla. En este caso, Microsoft eligió encriptar la BIOS usándo un sistema de clave simétrica (la misma clave para encriptar que para desencriptar), por lo que habiendo encontrado una, teníamos la otra.
El sistema de seguridad de Microsoft había sido violado.
La revisión de seguridad v1.1
Todo lo que he expuesto se aplica a las primeras Xbox. Las versión 1.0.