¿Cómo funciona el enraizamiento?

23

O, ¿cómo puedo rootear mi dispositivo sin un rooter?

Las instrucciones de enrutamiento para dispositivos Android que he visto suelen tener la siguiente forma:

  1. Descargar Gingerbreak.apk
  2. Ejecute Gingerbreak, haga clic en "dispositivo raíz"
  3. Observe que Superuser.apkse ha instalado mágicamente, posiblemente junto con busyboxy otras cosas, y disfrute de su bondad fundamental.

Lo que quiero saber es esto: ¿cómo ocurre realmente el rooting? ¿Qué hace Gingerbreak?

Entiendo el resultado final del enraizamiento:

  • su está presente y trabajando
  • Superuser.apk está instalado y controla el acceso a su
  • Varias utilidades están presentes, proporcionadas por BusyBox (¿opcional?)

También creo que entiendo la idea básica de cómo Gingerbreak comienza: explota alguna vulnerabilidad de escalada de privilegios locales y utiliza sus nuevos poderes para implementar Superusuario y todo lo que sea necesario.

Entonces, a menos que me equivoque en algo de lo que he explicado anteriormente, lo esencial que quiero saber es qué hace el instalador raíz para implementar y activar Superusuario. Parece que simplemente poner Superuser.apken el lugar correcto no sería suficiente: ¿cómo se permite el acceso a la raíz? ¿Cómo se engancha para moderar ese acceso para otras aplicaciones?

¿Qué hace Gingerbreak después de la explotación para habilitar y asegurar el acceso a la raíz?

Michael Ekstrand
fuente

Respuestas:

16

Lo que hacen el APK y el exploit (generalmente) es lo siguiente:

  • El APK coloca los archivos correctos en el lugar correcto para ejecutar el exploit
  • El APK ejecuta el exploit
  • El exploit intenta obtener acceso root
  • Si tiene éxito, el exploit vuelve a montar / sistema como lectura-escritura y ejecuta el script de instalación
  • La secuencia de comandos del instalador intenta instalar el APK de su binary y superuser y se reinicia

Como ejemplo, esta página detalla cómo la ira contra la explotación de la jaula intenta obtener privilegios elevados.

Sparx
fuente
2
Gracias. Creo que esto reduce aún más mi pregunta real: ¿ qué hace exactamente el script de instalación? ¿O dónde puedo encontrar una copia de uno para leer? La mayoría de los documentos que veo son muy opacos: "descargue este APK, funciona" con un enlace a un sitio aleatorio para compartir archivos.
Michael Ekstrand
su permite la elevación de privilegios en entornos similares a Unix (en qué se basa Android). Cuando se instala el binario su, las aplicaciones / scripts pueden usar los comandos su y sudo para ejecutar y acceder a partes del sistema de archivos que normalmente están restringidas para usuarios comunes. En esencia, es por eso que uno enraiza un teléfono: para poder acceder a partes "restringidas" del sistema y para poder ejecutar comandos que un usuario ordinario no puede realizar.
Sparx
9

Después de mucho cavar, finalmente lo descubrí. Me equivoqué acerca de dónde está la magia: no está en el script del instalador; todo lo que tiene que hacer es poner el suy Superuser.apklos binarios en el lugar correcto y establecer sus permisos. Por lo tanto, es tan simple como colocar archivos en su lugar y establecer permisos. Sin cableado mágico.

La magia ocurre en el subinario (ver la fuente y también esta pregunta ). Estaba (incorrectamente) pensando que suera un estándar su, y que las cosas de alguna manera estaban conectadas a un acceso moderado a ese binario Superuser.apk.

Incorrecto. Lo que sucede es mucho más simple: Superuser proporciona una implementación personalizada suque autentica el acceso a través de Superuser y su base de datos de aplicaciones autorizada.

Entonces, el proceso de rooting es tan simple como dijo @Sparx. El software desplegado contiene la magia.

Michael Ekstrand
fuente
Creo que esto echa de menos una cosa importante: el hecho de suque no sea mágico en absoluto, lo único mágico es que el sistema operativo lo trata especialmente. Todo lo que tiene que hacer es devolver "OK" o "Not OK" cuando el sistema operativo le pregunte si permite que una aplicación en particular eleve los permisos. Si falta o siempre devuelve "No está bien", las aplicaciones normales nunca pueden obtener root. Por lo tanto, el enraizamiento es básicamente el proceso de colocar un subinario que a veces puede devolver "OK", a la ubicación protegida en un sistema que se supone que no permite que esto se haga.
RomanSt
44
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionscomo si esto fuera fácil sin un exploit, el exploit es la magia.
Alex
1
@ Alex No del todo. Estaba tratando específicamente de descubrir qué hace un rooter después de la explotación . En este caso, porque tenía acceso raíz a través de ADB, por lo que no quería ejecutar un exploit innecesariamente.
Michael Ekstrand