Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo detecta la aplicación Android SuperUser que una aplicación solicite root?

Estoy escribiendo una aplicación que utilizará su para ejecutar algunos comandos en el kernel de linux. Me preguntaba cómo SuperUser calcula que la aplicación está pidiendo privilegios de root? Además, ¿hay formas conocidas (a través de ofuscación) en las que esta comprobación puede ser anulada?

En otras palabras: ¿Cómo sabe Android / (SuperUser) que una aplicación requiere privilegios de root a pesar de que no hay permisos explícitamente solicitados en el archivo de manifiesto android.

Estoy haciendo esta pregunta desde el punto de vista de la seguridad. Quiero saber los detalles de cómo funciona esto para asegurarse de que una aplicación malintencionada no puede omitir SuperUser.

  • Android Recomendación de seguridad en la aplicación: ¿qué significa esto?
  • Cómo validar el origen de una invocación de servicio web
  • ¿Cómo funciona la aplicación de instalación de AppBrain?
  • Java.security.cert.CertPathValidatorException: Ancla de confianza para ruta de certificación no encontrada. Android 2.3
  • ¿Alguien puede explicar OAuth?
  • Encriptación de Android
  • Protección de las claves de twitter en Android
  • ¿Cómo funciona la autenticación de WhatsApp?
  • 3 Solutions collect form web for “¿Cómo detecta la aplicación Android SuperUser que una aplicación solicite root?”

    Hay dos partes en el sistema de superusuario: el superusuario binario (su en el terminal) y el SuperUser.apk (aplicación de Android para administrar aplicaciones con su). Observando el código fuente del binario su , cuando se solicita acceso a través de

     Process p = Runtime.getRuntime().exec("su"); 

    publica una intención a través del administrador de mensajería android que una aplicación ha solicitado para el acceso de superusuario.

     sprintf(command, "/system/bin/am broadcast -a '%s' --es socket '%s' --ei caller_uid '%d' --ei allow '%d' --ei version_code '%d' > /dev/null",action, socket_path, ctx->from.uid, allow, VERSION_CODE); 

    La aplicación de administrador escucha esta intención y le pide al usuario que maneje la solicitud (allow / deny).

    Cuando ejecuta esto:

     Process p = Runtime.getRuntime().exec("su"); 

    Estás tratando de ejecutar "su" que sólo una aplicación con permisos de superusuario puede hacer! Así que cada vez que Android detecta que está tratando de ejecutar "su" Se obtendrá que la aplicación tendrá permisos superusuario.

    Además, Android tiene alguna área reservada que sólo el sistema Android puede acceder. Si su aplicación está intentando acceder a algo allí, Android entenderá que se necesita superusuario.

    Por ejemplo, digamos que está intentando modificar el archivo host o modificar algunas configuraciones de red como DHCP. O usted está intentando tener acceso a los archivos del área del sistema eg /data Android comprobará si la aplicación tiene permisos del superusuario, y entonces solamente le concederá acceso a tales cosas.

    Acerca del software malintencionado, siempre que una aplicación necesite acceso de superusuario, el sistema solicitará al usuario que conceda o deniegue permisos de superusuario a la aplicación. Sólo entonces la aplicación puede tener acceso root. Así que depende del usuario decidir si acepta o niega el acceso root para cualquier aplicación. (El sistema solicitará al usuario cada vez que una aplicación esté intentando acceder a algo que necesite acceso root, A MENOS QUE le diga al sistema que recuerde su opción de aceptación o denegación para una aplicación determinada).

    PS: Es posible que considere visitar el sitio web de la aplicación Superusuario .

    En realidad es bastante simple. Vanilla Android ni siquiera tiene su o superuser . Cuando root el dispositivo ejecuta un shell como root. A continuación, instale su binario y superuser.apk . Después de la instalación, establezca el shell de nuevo a sus permisos normales. Todas estas aplicaciones sólo para root ahora pueden llamar a su para solicitar acceso root.

    Cuando se ejecuta su, llama a superuser.apk con un mensaje que le pregunta si desea elevar privilegios. El su binario y el superuser.apk están protegidos a través de la caja de arena normal de Android. Tenga en cuenta que una vez que otorgue los privilegios de la raíz de una aplicación, es libre de hacer lo que quiera, incluyendo sobrescribir su con su propia versión.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.