¿Por qué las aplicaciones de rooteo ya no funcionan?

Hace un par de años, era fácil rootear cualquier dispositivo: instale KingRoot, KingoRoot o una aplicación similar, presione el botón ROOT grande y deje que haga el resto. Después de 5 minutos más o menos, un mensaje verde "Root Succeeded!" Aparecerá un mensaje y podemos optar por mantener la aplicación raíz o desinstalarla e instalar una aplicación de administrador raíz limpia como SuperSU/Superuser.

¿Cómo trabajan?
¿Por qué ya no están trabajando?
Y si funcionan, ¿debería usarlos o no?

Esto podría ser útil, particularmente la VERIFIED / SECURE BOOTsección: forum.xda-developers.com/android/general/…

Respuestas (1)

Tuve esta pregunta hace unos meses y encontré esta respuesta a través de algunas investigaciones, así que pensé en compartir mi investigación en este sitio respondiendo a mi pregunta, considerando la información falsa en línea. (Por ejemplo, el sitio oficial de KingoRoot dice que puede rootear Android Oreo, lo cual es información completamente incorrecta)

¿Cómo funcionan las aplicaciones de rooteo?

Hay bastantes aplicaciones de enraizamiento, KingRoot, KingoRoot, Z4Root, Root Genius, Universal Androot, por nombrar algunas aplicaciones populares/que solían ser populares. Todos ellos usan exploits/vulnerabilidades/lagunas en el sistema operativo Android para otorgarse privilegios reservados a las aplicaciones del sistema o incluso al propio sistema operativo Android. Y luego montan como lectura/escritura el directorio llamado /systemque alberga los procesos necesarios para que el sistema funcione y las aplicaciones del sistema, y ​​colocan un nombre binario suen un lugar del directorio, es decir /system/bin/su, . Si alguna aplicación requiere root, la aplicación ejecuta ese binario y verá un mensaje para permitir o rechazar el acceso de root.

Los exploits/vulnerabilidades que se descubren reciben un CVEID, y luego se detallan en el sitio web de CVE y se corrigen en los Boletines de seguridad de Android . Un ejemplo es la infame vulnerabilidad DirtyC0W a la que se le otorgó el CVEID CVE-2016-5195, que afectó y aún afecta a los kernels de Linux más antiguos. Casi todas las aplicaciones mencionadas anteriormente explotan esta vulnerabilidad.

¿Por qué las aplicaciones de rooteo ya no funcionan?

Como se menciona en los Boletines anteriores, Google corrige una serie de problemas en Android todos los meses. Por lo tanto, el alcance de las vulnerabilidades está disminuyendo considerablemente. Todas las vulnerabilidades que utilizan las aplicaciones de enraizamiento hasta la fecha se corrigieron en los parches de seguridad alrededor de enero de 2018 .

¡Pero puede haber problemas que algunos fabricantes olvidaron parchear! ¿Que hay de ellos?

En Android 6.0.0 o posterior, eso solo hará que el dispositivo ya no arranque. Para entender la razón de esto, tenemos que mirar un concepto llamado Cadena de Confianza .

Chain of Trust , abreviado CoT, es un mecanismo de seguridad que se introdujo para proteger el sistema operativo Android de virus y modificaciones no autorizadas. Funciona como una cadena de hardware y software, donde cada parte verifica la siguiente parte. Paso a paso:

  1. Cuando enciende el dispositivo, se inicia una función de hardware (a veces llamada ROM de arranque). La ROM de arranque está grabada en el hardware y no se puede cambiar.
  2. La ROM de arranque verifica el primer software en el CoT, el cargador de arranque, que es un blob binario sin procesar, a veces llamado precargador. (Además, la ROM de arranque a veces se carga y usa particiones/binarios personalizados especiales según el proveedor). Si el cargador de arranque no pasa las verificaciones, el dispositivo se apaga. Si pasa, la ROM de arranque ejecuta el gestor de arranque.
  3. El gestor de arranque comprueba las opciones que le ha pasado la ROM de arranque y selecciona el modo de arranque adecuado. Los modos de inicio habituales que existen en casi todos los dispositivos son el inicio normal de Android, Recuperación y Fastboot/Download.

Si el cargador de arranque está bloqueado , verifica si la siguiente parte de CoT que se ejecutará está intacta y, si lo está, el cargador de arranque la ejecuta. Si no es así, puede apagarse, reiniciarse o atascarse en un modo de cargador de arranque especial según el modelo del dispositivo.

Si el cargador de arranque está desbloqueado, no verifica la siguiente parte de CoT, sino que la carga directamente.

  1. La siguiente parte se llama la partición de arranque . Maneja la forma de arrancar el sistema en sí. En versiones de Android superiores a 6.0.0 (Lollipop), también verifica si el sistema está intacto y, si se modifica, se apaga.

Como se mencionó primero, estas aplicaciones raíz explotan las vulnerabilidades para modificar /system, lo cual es verificado por la partición de arranque como se mencionó en la Etapa 4 anterior. Por lo tanto, cualquier modificación hará que el dispositivo no arranque. Este estado se conoce comúnmente como un "ladrillo blando", que solo se puede solucionar con un re-flash.

Por lo tanto, los dispositivos más nuevos requieren que el cargador de arranque esté desbloqueado si desea rootear su dispositivo. Estos dispositivos se enraizan al actualizar una recuperación con más opciones que la recuperación normal (como TWRP, ClockWorkMod), generalmente denominada recuperación personalizada, y usarla para modificar la partición de arranque (y deshabilitar la verificación del sistema). También es posible modificar directamente la partición de arranque sin una recuperación personalizada.

Algunos fabricantes ofrecen una forma de desbloquear el gestor de arranque y otros no. Los dispositivos populares con cargas de arranque bloqueadas (por ejemplo, dispositivos Samsung S bloqueados por un operador de EE. UU.) tienden a ser explotados por la comunidad de modding de Android.

¡Mi dispositivo sigue siendo Android 5.1.1 o anterior! ¿Debo usar estos para rootear?

La mayoría de esos dispositivos más antiguos se pueden rootear con las aplicaciones de rooteo. Entonces, podrías. ¿Deberías? Eso depende de tus preferencias. El acceso a la raíz otorga el poder sobre todo en el sistema operativo, y con el acceso a la raíz, por lo general, no toma ni un microsegundo para asegurarse de que su dispositivo nunca vuelva a arrancar. Es muy probable que las aplicaciones de enraizamiento nunca hagan eso, pero podrían hacerlo. Además, con la raíz, una aplicación podría acceder a todo lo que hace su dispositivo y todo lo que tiene en su memoria, incluida la información de su tarjeta de crédito, contraseñas, etc. Si eso le parece una amenaza grave a la privacidad, tal vez no use las aplicaciones raíz. Si no te importa eso, puedes probarlos.

Si es lo suficientemente inteligente, existen las fuentes de casi todos los exploits que usan esas aplicaciones raíz. Puede intentar buscarlos por CVEID, buscarlos en Git, compilarlos y ejecutarlos e intentar obtener un shell raíz, y podrá instalar el subinario y las otras dependencias usted mismo.

Además, KingoRoot es conocido por enviar datos altamente confidenciales como IMEI y número de serie a sus servidores. Lo más probable es que nunca los usen, pero al final esa es su decisión. Y KingRoot es conocido por instalar una puerta trasera en su SDK que permitió que algunas aplicaciones obtuvieran acceso de root no autorizado por el usuario.

Conclusión

La era de las aplicaciones de enraizamiento se ha ido. Las aplicaciones de enraizamiento ya no funcionan y si las usa en versiones más nuevas de Android, corre el riesgo de dañar su dispositivo y probablemente perder todos sus datos. Si los usa en versiones de Android compatibles, funcionarán la mayor parte del tiempo, pero hay problemas de privacidad y seguridad que debe considerar antes de continuar.

Espero que mi investigación ayude a alguien en el futuro que tenga el mismo problema que yo. :)