VIKIROOT
Esto es un PoC de CVE-2016-5195 para Android 6.0.1 Marshmallow de 64 bits (¿quizás 7.0?), así como una herramienta de root temporal universal y estable. No requiere un ejecutable SUID ni cambios en el sistema de archivos.
Características
- Bypass de SELinux (ver más abajo para detalles).
- Solo memoria: no modifica el sistema de archivos ni necesita un ejecutable especial.
- Estable: no afecta la estabilidad de tu dispositivo.
- Escalable: fácil de añadir nuevo kernel y/o nuevos dispositivos.
- Reversible: la puerta trasera se limpia automáticamente después de que termina el shell root, lo que significa que no se requiere reinicio después del uso.
Atención
Cuando digo "bypass de SELinux" me refiero a que el payload se ejecutará en el dominio init incluso si SELinux está en modo enforcing, sin embargo, todavía se necesita un parche a sepolicy para que el dominio init sea sin restricciones. Generalmente esto significa que se requiere una imagen de arranque modificada.
Requisito previo
- Yo, Robot de Isaac Asimov.
- Dispositivo "capaz de dirtycow".
- sepolicy parcheado.
Compilación
Los binarios precompilados están disponibles en la página de lanzamiento. De lo contrario, solo agrega la cadena de herramientas independiente de NDK al PATH y ejecuta make.
Uso
Puedes ejecutarlo a través de un shell adb (colócalo en /data/local/tmp) y obtener un shell root ya sea en el terminal incorporado o en un servidor terminal remoto como nc. Para más detalles, ejecútalo sin ningún parámetro.
Solución de problemas
- Primero, por favor lee la sección "Atención" anterior.
- "lugar insuficiente para el payload" o "kernel desconocido": se requiere un reinicio.
- "esperando shell de conexión reversa": por favor despierta tu dispositivo, abre la aplicación de reloj/alarma o alterna el interruptor de bluetooth para activar la puerta trasera.
- Si aún no hay suerte: ejecuta la versión "dbg" y envíame un correo electrónico con los archivos generados, que son solo un volcado de alguna parte del kernel y no contienen información personal.
Créditos
- scumjr por el método de parcheo vDSO.
- Tzul por ayudarme a depurar el problema de sepolicy.
- RenaKunisaki por hacerlo funcionar con bionic.
POR HACER
- Enriquecer la base de datos del kernel para soporte x86 y demás.
- Probarlo en Android 7 Nougat (¡se necesita ayuda!).