Hacking The 3ds I: Introducción
Bienvenido a una nueva serie de entradas del blog! En esta ocasión recorreré un largo camino hasta conseguir hackear las consolas de la familia Nintendo 3DS. Hay varias razones de ser de estos posts:
- Interés personal: Cuándo la scene de 3ds empezó a crecer en 2014, yo estaba allí, y tengo ganas de aprender todo lo que no pude en su momento.
- Comunidad Tóxica: Durante muchos años la comunidad se ha centrado solo en la pirateria y los resultados finales; poca gente estaba interesada en aprender
- La falta de información en internet sobre ingeniería inversa y hacking de sistemas “black box”.
- El desarrollo de exploits es un reto de cierta complejidad, lo cual atrae mi curiosidad.
- La necesidad de todos estos contenidos, ¡En español!
Introducción
Antes de dar ningún otro paso, necesitamos saber qué hay dentro de las consolas, de las 3Ds. El hardware del interior es lo que define cómo funciona el software y qué puede llegar a hacer. El primer paso es desmontar la consola, mirar a los chips, e identificarlos. Este suele ser el trabajo de los hackers especializados en hardware, aunque más adelante nos especializaremos y veremos más sobre hardware. De momento es información pública que el primer modelo de 3DS (2011) tiene las siguientes características:
- 128mb (2x64) de memoria RAM (FCRam) -GPU DMP PICA
- 6mb de VRAM (Video RAM, dedicada para la GPU)
- Procesador ARM11 x2 cores a 268MHz
- Procesador ARM9 46 a 124MHz
Estos son solo algunos de los componentes más importantes que deberemos tener siempre en cuenta. Para más detalles (incluyendo Nintendo New3DS) puedes visitar esta página .
Durante esta serie de posts, veremos el conocido exploit MSET. A finales de 2014, el equipo Gateway 3DS lanzó una solución de hardware y software que permitía piratear consolas con firmware comprendido entre 4.1 y 4.5. Para ello utilizaron en primer lugar un exploit en la aplicación de Ajustes del Sistema de la consola, que posteriormente cargaba más código desde la tarjeta SD. Varias personas fueron capaces de hacer ingeniería inversa a estos archivos y liberar una versión gratuita y libre del exploit, antes de que Gateway implementase una ofuscación más efectiva. Mi objetivo es explotar esta vulnerabilidad por mi propia cuenta, sin hacer ingeniería inversa del trabajo de otros, empezando desde 0.
Ideas y objetivos
En resumen, no tenemos ninguna información. Estamos trabajando con lo que generalmente se conoce como sistema Black Box o caja negra, es decir, un sistema totalmente desconocido. El primer paso para empezar a descubrir y aprender cómo funciona la consola es el hardware. Es lo único a lo que tenemos acceso. La complejidad de los sistemas informáticos se incrementa con cada año que pasa, así que es complicado atacar el hardware de una consola medianamente moderna. Aun asi, más adelante veremos cómo hacerlo. Desafortunadamente, durante el tiempo de vida de una videoconsola, no se comparten muchos conocimientos de forma desinteresada, por temor a que la compañía creadora pueda arreglar fallos antes de que sean útiles para el público general.
Por el momento, procedamos a enumerar los diferentes componentes del hardware y qúe información viaja a través de ellos. En la 3DS original podemos encontrar…
- Chip de memoria NAND
- Tarjeta SD
- Memoria RAM
Comenzando con la memoria NAND, se puede observar que el fabricante es Samsung, y una búsqueda en internet nos revela que su capacidad es de 1GB. Más adelante veremos como, después de investigar el modelo de chip, aprenderemos a volcar sus contenidos. Si analizamos cuidadosamente el volcado, podríamos probar a:
- Encontrar cadenas de texto de las aplicaciones
- Buscar estructuras o patrones de datos; imagenes, formatos conocidos como ELF…
- Modificar el volcado y escribirlo de nuevo a la memoria. Arrancar la consola y observar si arranca o devuelve algún error.
- Restaurar un volcado anterior, de la misma consola, o de otra unidad diferente.
Para la 3DS, estos tests muestran que:
- No se puede encontrar ninguna cadena de texto en todo el volcado
- No existen archivos ni patrones conocidos
- La consola no arranca con datos modificados. Puede estar cifrada o firmada digitalmente.
- La consola no arranca con datos de otra máquina. Fuerte indicativo de que podría estar firmada digitalmente con una clave única que varía para cada consola.
Podemos concluir que los contenidos de la memoria NAND estén seguramente cifrados, y además, reforzados por alguna firma criptográfica.
El siguiente punto de interés es la tarjeta SD. Sus contenidos pueden leerse desde un PC y examinar los archivos es trivial. Podemos intentar:
- Identificar los archivos existentes. Puede haber imágenes, videos, música, aplicaciones e incluso metadatos.
- Identificar cuáles de los contenidos anteriores están cifrados, firmados, o tienen alguna suma de comprobación. Podemos modificarlos y ver si la consola los reconoce y los lee correctamente.
- Explotar la aplicación que gestiona esos contenidos multimedia. Utilizando unas herramientas conocidas como fuzzers es posible crashear las aplicaciones. Aun asi, en este momento sería difícil explotar satisfactoriamente ninguna vulnerabilidad, ya que no conocemos como funciona el sistema.
La última baza, la memoria RAM. Necesitaríamos una modificación del hardware que nos permitiese leer o volcar los contenidos de esta. Algunos hackers han logrado con éxito este ataque, accediendo a los valiosos datos de la memoria RAM. Más adelante profundizaremos en ello.
Conclusiones
Esta ha sido una breve introducción a los posibles puntos de entrada que nos proporcionarán conocimientos más adelante, con el fin de explotar el software de la Nintendo 3DS. Puedo adelantar que trabajaremos con la memoria RAM, y para ello dedicaré más de un artículo. ¡Habrá un montón de hacking, reversing, y exploiting!
Espero que te haya gustado. ¡Nos vemos en la próxima!