¿Cómo un dispositivo / os Android no me permite obtener root?

5

Nunca he usado un teléfono con Android y espero que esta no sea una mala pregunta.

Sé que en iOS, el propio kernel está firmado y, por lo tanto, no se puede ampliar y todas las aplicaciones están firmadas. Por lo tanto, no puedo ssh / telnet en él por ejemplo y obtener un shell. A menos que lo jailbreak, deshabilite la verificación de firmas y haga otras cosas, tampoco puede instalar aplicaciones personalizadas.

Entonces, ¿cómo funciona en Android? ¿Está el kernel firmado? Si es así, ¿el rooting y el dispositivo Android son similares a jailbreaking en un dispositivo iOS? Leí algunos artículos que dicen que puedes instalar un kernel personalizado en un dispositivo Android, que indica que el kernel no está firmado. Entonces, ¿es así como se evita el acceso de root? ¿El kernel no permite userid 0? ¿Qué sucede exactamente o debe suceder para evitar el acceso de root? ¿O qué es lo que realmente debe suceder con la funcionalidad del sistema operativo para habilitar la raíz?

    
pregunta user220201 25.07.2015 - 02:00
fuente

1 respuesta

1

Como ya lo indicó @Cube en el comentario, algunos (no todos) los teléfonos con Android permiten desbloquear el gestor de arranque para actualizar kernels y firmware personalizados para su dispositivo. Sin embargo, solo hay un número limitado de modelos que lo admiten, ya que está destinado a investigadores y desarrolladores. Además, durante el proceso de desbloqueo, pierdes todos tus datos, por lo que no puedes usar esto para enviar silenciosamente un sistema o kernel malicioso al dispositivo de alguien sin que él / ella lo note. Pero, en general, el gestor de arranque está bloqueado, por lo que esta es la única línea de defensa contra la obtención de root: no permite flashear software personalizado. Como característica experimental, Android también introdujo recientemente dm-verity para hacer que los rootkits persistentes sean aún más difíciles.

La otra forma es usar ataques de escalamiento de privilegios, lo que significa que usted explota activamente una vulnerabilidad en Android que le permite obtener privilegios de root. Por ejemplo, algunos servicios deben ejecutarse como root, por lo que si puede ejecutar código en su contexto, ejecute su código con privilegios de root. Sin embargo, volvamos a tu pregunta sobre las defensas. Primero, los procesos de la aplicación están aislados de otros procesos y del middleware por el núcleo. Más concretamente, Android (ab) utiliza la separación de usuarios de Linux al asignar a cada aplicación un ID de usuario único. Así que el kernel los aísla de la misma manera que los usuarios están aislados en los sistemas Linux clásicos. Por lo tanto, los virus clásicos donde otros programas / aplicaciones están infectadas no son posibles en Android si no existe una vulnerabilidad crítica. Además, el middleware contiene una gran cantidad de puntos de control de acceso donde se verifica y verifica al llamante. Adicionalmente, a partir de Android 4 Google comenzó a integrar SELinux en Android como las denominadas extensiones de seguridad para Android o SE para Android. Aquí, se agrega un control de acceso obligatorio más detallado para reducir aún más la posibilidad de un ataque exitoso. Cuando se trata de prevenir tipos especiales de ataques, Android también agregó soporte para ASLR en las versiones 4.x y lo extendió desde entonces. Por ejemplo, en las versiones más recientes de Android 5, los binarios solo se cargan si se compilan como ejecutables independientes de la posición.

Entonces, este es un subconjunto de todas las defensas que Android proporciona contra ataques en general o ataques de raíz en particular. Esta lista no está completa, pero te da una idea de lo que los atacantes deben superar y cuánto les importa a los desarrolladores de Android la seguridad (lo que personalmente aprecio mucho).

    
respondido por el user3363866 03.09.2015 - 10:10
fuente

Lea otras preguntas en las etiquetas