Proceso Arranque Xbox 360

Entrevista de la web Xlife.nl al hacker que posibilitó el hack de firmware del lector DVD, TheSpecialist. La entrevista ha sido limpiada, modificada y traducida, para detallar en este Wiki, todo lo relativo a la seguridad en el arranque de la consola Xbox360.

Todos los ejecutables de Xbox360 tienen una firma digital. Esta firma es revisada por el HyperVisor. Si se pudiera modificar el hipervisor, podríamos ejecutar Homebrew. Sin embargo, valga la redundancia, el Hypervisor también esta firmado.

El proceso de arranque es el siguiente:

La CPU empieza cargando el 1BL, un archivo, muy pequeño, puesto que resulta extremadamente caro colocar archivos grandes en la CPU. El 1bl esta integrado en la CPU, y teóricamente, es imposible cambiarlo, puesto que viene 'serigrafiado' en el mismo chip. Este 1bl simplemente hace algo que se asemeja al POST de la BiOS. Después, carga el 2bl, un archivo más grande guardado en la NAND de la consola. Este archivo se puede dumpear y desencriptar con los métodos ya conocidos.

Después de cargar el 1BL, todos los núcleos van desde el modo real al modo traducido (solo instrucciones)., y todos, menos uno entran en un loop. El restante es el que se ocupa de arrancar el sistema. La parte encriptada del CB se desencripta y se pasa a la memoria/cache, su firma RSA y sus datos parejantes HMAC son comprobados. Si todo es correcto, se pasa a la parte CB.

Al comienzo de la parte CB, la segunda parte del CB se pasa a una parte diferente de la memoria. También, el código que los otros núcleos ejecutaran (que contiene un pase al Hypervisor) se carga en la memoria. Después, se carga la segunda parte del CB. Después de unas configuraciones, la segunda parte del CB desencripta y carga la sección CD en la memoria. El CB comprueba el hash SHA1 (guardado en la parte del CS firmada por RSA) y, si es correcto, carga el CD (carga el mtlr/blr, no el rfid)

En la sección CD, la traducción para datos de acceso se activa (no se redireccionan los datos del modo real más). Después, desencripta y carga la sección CE en la memoria, y comprueba otro hash SHA1. Si es correcto, descomprime el CE en la parte de la memoria donde el Hypervisor empieza. Recuerda que esto se hace en modo de datos traducido (empezando en la dirección efectiva 00000000). Básicamente, el kernel/hypervisor 1888 se carga en la memoria. Después carga y desencripta una de las secciones CF. Comprueba la firma RSA y los datos de emparejamiento HMAC y si todo está bien, carga la sección CF.

La sección CF comprueba si su correspondiente sección CG (que contiene los datos de los parches) es correcta mediante otro hash SHA1. Si es correcta, descomprime los parches CG en el kernel/hypervisor. Después, vuelve al CD. En la sección CD, hay un rfid-jump al punto de comienzo del hypervisor (cambiando a modo de direccionamiento real de nuevo).

En el hv (Modo real Hypervisor), un montón de cosas MMU se configura y después, se pasa al kernel (de nuevo en modo traducido, con un montones de direcciones 800xxxxx). En el kernel, las llamadas del sistema son usadas para salir y entrar del HyperVisor. Una de las primeras cosas que hace es despertar los otros núcleos, que también cargaran el HyperVisor primero. Y, por supuesto, el sistema Xbox 360 completo es configurado durante el resto del arranque del kernel.

Una vez todo esto es realizado, se muestra la animación o bootsplash de carga de la Xbox 360, y acto seguido, se carga Dashboard.

Y más o menos esta es la manera de arrancar de la Xbox 360.

Esta redundancia de pruebas de firmas SHA1 y RSA hace que cargar código sin firmar sea difícil, si no imposible.

En la arquitectura de la CPU de la Xbox se encuentra el 1BL. Este 1BL es teóricamente inmodificable, puesto que se encuentra en el interior del encapsulado del CPU. Puesto que nada más el 1BL se carga, comprueba una firma y comienza el bucle de comprobaciones de distintas firmas, la carga de código sin firmar se hace casi imposible.

No se encuentra forma barata de alterar el 1BL, y sin romper ningún copyright, ya que ese 1BL está en un ROM en el encapsulado de la CPU y este encapsulado tiene copyright de IBM y Microsoft Corp. El único punto flaco sería modificar 1BL o conseguir firmar un 2BL modificado, pero, aunque se parece imposible, George Hotz ya consiguío volar el HyperVisor de la PS3, y solo es cuestión de tiempo que a alguien le dé por descuadrar el HyperVisor de la Xbox 360. Por ahora, la única forma de cargar código sin firmar es el JTAG, pero, dandole tiempo al tiempo, se encontrará algún exploit de software.

UPDATE: Se ha descubierto un método de ataque, conocido como TimingAttack que permite cargar un 2BL con firma personalizada, permitiendo el arranque de cualquier kernel, vulnerables o no. De ser esto cierto, la Xbox pasaría de ser un tanque blindado Panther a ser una simple bicicleta.


Fuente: http://www.xboxhacker.net/index.php?topic=8668.msg55011 Fuente: http://www.xlife.nl/article.php?id=21676