Jump to content
YOUR-AD-HERE
HOSTING
TOOLS
992Proxy

Locked [APP] Mercury: Auditoria de aplicaciones Android


Stuxnet

Recommended Posts

This is the hidden content, please

 

Una de las herramientas que más nos llamaron la atención de la BlackHat Europe la que presentó Tyrone Erasmus en su ponencia 'The Heavy Metal That Poisoned the Droid' (whitepaper y slides).

 

Se llama Mercury de MWR Labs y es un framework gratuito que ayudará a los "cazadores" de bugs a encontrar vulnerabilidades, escribir exploits PoC y, en definitiva, a jugar con Android.

 

Se trata de una herramienta que nos permitirá examinar de forma dinámica y a explotar las posibilidades de ataque de las aplicaciones que residen en un dispositivo Android. Se divide en dos partes: una aplicación servidor que requiere pocos privilegios y se instala en el teléfono y un cliente escrito en Python para interactuar con el servidor desde la línea de comandos.

 


 

Características

 

El principal objetivo de Mercury es ser una herramienta de auditoría que pueda utilizarse con muchos propósitos. Algunas de sus características nos permitirán:

 

- Encontrar más fácilmente información relevante acerca de los vectores de ataque de una aplicación

 

- Interactuar con los 4 endpoints IPC (actividades, broadcast receivers, proveedores de contenido y servicios) de una aplicación desde la línea de comandos con el fin de encontrar vulnerabilidades

 

- Jugar con el sistema operativo Linux desde el punto de vista de una aplicación sin privilegios (sorprende lo mucho que se pueden ver)

 

- Encontrar información sobre los paquetes instalados con filtros de búsqueda opcionales que permiten un mejor control

 

- Subir y bajar ficheros sin usar ADB (¡esto incluye poder hacerlo a través de Internet también!)

 

- Escribir nuevos módulos con exploits para las vulnerabilidades encontradas por medio de una rango de comandos

predefinidos, y utilizar los módulos que otros hayan creado

 


 

Requisitos previos

 

- Teléfono o emulador con Android 2.2 o superior

- PC con Linux y Python 2.7 – (el autocompletar de comandos no funciona en Windows)

 

Instalación

 

- Descarga el zip desde aquí

This is the hidden content, please

- Instala el servicio server/mercury.apk en el teléfono e inícialo:

 

This is the hidden content, please

 

- Arranca el cliente client/mercury.py en el PC

 

./mercury.py

 

- Conecta con el servidor Mercury:

 

Si tenemos conectado el teléfono al PC por USB o estamos usando un emulador, necesitaremos redireccionar el puerto 31415 (puedes hacerlo con el comando ‘adb forward tcp:31415 tcp:31415’)

 

Si nos vamos a conectar al teléfono por la red inalámbrica, necesitaremos obtener la IP del teléfono, en nuestro caso la 192.168.1.35

 

- Escribimos en el cliente "connect" seguido de la dirección IP del teléfono (127.0.0.1 si utilizamos un emulador o lo tenemos conectado por USB al PC)

 

This is the hidden content, please

 

This is the hidden content, please

 

Empezando a jugar con Mercury

 

Cuando buscamos fugas de información en un dispositivo Android, los proveedores de contenido exportados son un buen comienzo. Dentro de la sección 'provider', con 'info -p null' obtendremos un listado de todos estos proveedores y sólo tendremos que ver aquellos que no requieran permisos para leerlos (Required Permission - Read: null o Required Permission - Write: null).

 

El desarrollador de una aplicación tiene que configurar específicamente 'android:readPermission' o 'android:permission' en el proveedor de contenidos dentro del fichero 'AndroidManifest.xml' si no quiere que la información sea accesible por otras aplicaciones del dispositivo. Si no lo hace, a veces no encontraremos información delicada y otras veces encontraremos datos que al desarrollador no le gustaría que leyéramos.

 

This is the hidden content, please

 

Una vez que seleccionamos la aplicación objetivo, el siguiente paso será obtener las direcciones de sus contenedores (content URI). Para ello utilizaremos el comando 'finduri':

 

This is the hidden content, please

 

Para mostrarnos esta información el comando finduri ha tenido que seguir los siguientes pasos para la enumeración:

- Encontrar la localización del fichero APK

- Descomprimir el fichero classes.dex situado dentro del APK (si no lo hubiera, buscaría los ODEX del paquete)

- Emplear código similar al string de UNIX para encontrar todas las cadenas válidas dentro del binario (fichero DEX u ODEX)

- Filtrar la salida final parseando las cadenas con content://.

 

Ahora que tenemos las direcciones de los contenedores, con query podemos leer su contenido. Por ejemplo:

 

This is the hidden content, please

 

E incluso realizar inyecciones SQL:

 

This is the hidden content, please

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.