Logo Euskal16 Creative Commons License

Wii: Hardware, seguridad, hacking y homebrew

Héctor Martín, <hector@marcansoft.com>

Euskal Encounter 16, BEC (Barakaldo), Julio de 2008

Introducción

Nuestras metas:

Los fabricantes insisten en ponérnoslo difícil...

En esta conferencia veremos:

¿Qué es la Wii?

Tras las decepcionantes ventas de la GameCube, Nintendo decidió reinventar la consola:

De GameCube a Wii

Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1 Diagrama hardware 1

Se complican las cosas...

En la GameCube, ejecutar homebrew era relativamente fácil

Nintendo parece haber aprendido la lección con la Wii

O al menos esa es la teoría...

El software de la Wii

Hay muchos componentes de software independientes:

Excepto las etapas de arranque, todos son títulos y comparten un sistema de instalación, firmado, y ejecución común

Títulos

Un título es un paquete de software, compuesto por:

El TMD

El TMD es la base que se usa para firmar los contenidos, y contiene:

Los TMDs llevan firmas digitales RSA de 2048 bits

El eTicket

El eTicket nos da acceso a un título, con posibles restricciones. Contiene:

Los eTickets también llevan firmas digitales RSA de 2048 bits

Se distinguen dos variantes:

Claves, claves, claves

En la Wii se utilizan varias claves criptográficas. Algunas son comunes a todas las consolas:

Y otras son privadas y cambian de consola a consola:

IOS

IOS es el sistema operativo que se ejecuta en Starlet durante el uso normal de la Wii:

Hay varias versiones de IOS instaladas en la consola, ya que cada título siempre usa la misma. Cada versión es un título de IOS distinto, y los llamamos IOS21, IOS30, IOS37, etc.

IOS (cont.)

Algunos componentes de IOS importantes:

El proceso de arranque de la Wii

El proceso de arranque está diseñado para garantizar que el software que se ejecuta sea oficial de Nintendo:

Este ingenioso sistema le permite a Nintendo cambiar boot1 en consolas nuevas cuando quieran, sin tener que tirar chips Hollywood ya fabricados.

boot2 se puede actualizar por software (es la primera parte del proceso de arranque que puede cambiar después de que la Wii deja la fábrica)

Y ahora, ¿que?

Hasta ahora, todo parece un sistema bastante bien diseñado

Hay varios ataques que se han usado para romper el sistema de seguridad:

Twiizer Attack

En el modo de GameCube, pronto se pudo usar homebrew gracias a los chips

Podemos atacar el hardware para conseguir información interesante

Nace el Twiizer Attack, que nos permitió extraer todas las claves importantes, incluyendo la clave común, gracias a la cual podemos:

Fakesigning o firmas trucha

Ahora que podemos ver un IOS en claro, podemos desensamblarlo y analizarlo

Se encontró un curioso problema en la comprobación de firmas de IOS:

Una grave metedura de pata: se comprueba dicho hash ¡como si fuera texto! Entonces:

Con este fallo podemos generar firmas que la Wii considerará válidas. Se conocen como firmas trucha ya que el primer programa en hacer uso de ellas fue Trucha Signer.

Twilight Hack

Nos queda el problema de conseguir meter nuestro código en algún sitio para que la Wii lo ejecute

Sin embargo, gracias al Twiizer Attack tenemos las claves privadas de nuestra consola

Gracias a un fallo en el conocido juego The Legend of Zelda: Twilight Princess, podemos ejecutar código en el PowerPC

Con esto nace el Twilight Hack: un save del juego que, explotando el bug, carga un ejecutable desde la tarjeta SD.

Contraataques

Nintendo ha ido solucionando algunos de los problemas:

Es muy dificil que consigan cerrar todo en actualizaciones futuras:

Estado actual del homebrew

Tenemos un control casi total sobre la consola:

Sin embargo, todavía dependemos mucho del software de Nintendo:

Proyecto: firmware de recuperación

La idea: un código personalizado delante de boot2 que implemente un sistema de recuperación

Nos daría inmunidad contra cualquier actualización, siempre y cuando no se toque boot2

Estamos desarrollando una alternativa básica a IOS que de acceso directo a todo el hardware de la Wii, sin restricciones, para usarse en programas tales como:

Futuro: parcheador de IOS inteligente

Un parcheador que dinámicamente parchee IOS desde boot2

Con esto ya tendríamos un control prácticamente total sobre la consola y sus actualizaciones

Homebrew

Tenemos librerías para acceder a casi todo el hardware de Wii

Herramientas de desarrollo:

Cargadores:

Demostración

Demostración

Links