Dumpeo, dumpeo…

Las auditorías móviles no se basan únicamente en la captura de las peticiones con un proxy al interactuar con la aplicación, ya que hay muchos más elementos que hay que revisar como pueden ser los ficheros de código fuente, el log de Android, datos almacenados en la memoria, conexiones, permisos de la aplicación, etc…

En este pequeño artículo vamos a ver como realizar el contenido de la memoria de un dispositivo móvil de dos formas diferentes de entre muchas otras: adb y fridump.

FRIDUMP

Instalación

Comenzaremos por instalar frida ya que es requisito para poder hacer uso de los scripts de fridump:

Seguidamente procederemos a clonar el repositorio de la herramienta que vamos a utilizar. En este caso fridump, ubicada en el repositorio https://github.com/Nightbringer21/fridump :

Con el repositorio clonado, listaremos los ficheros que contiene, de los que vamos a utilizar fridump.py:

Antes de utilizarlo, vamos a revisar como es la ejecución del script en cuanto a parámetros a través del comando python fridump.py -h:

Con esto ya podremos intentar volcar la memoria del dispositivo.

Listando procesos

Con el móvil rooteado, conectado y el servidor frida corriendo en él, que ya se habló en un artículo anterior (https://thehackingfactory.com/bypass-de-certificate-pinning), listaremos los procesos que se encuentran corriendo con frida-ps -U . Si la aplicación sobre la cual queremos realizar el volcado de la memoria no se encuentra corriendo, es necesario abrirla:

Identificando el proceso correspondiente a nuestra aplicación, utilizamos el script fridump para volcar la memoria, con el objetivo de ver si se almacena información sensible en la misma y si esta se encuentra cifrada o no.

Iniciaremos el volcado con el comando python fridump.py -U <nombre del proceso> que en este caso coincide con el nombre del paquete de la aplicación (com.xxxxx.xxxxx):

Al finalizar el proceso, se habrá creado un directorio denominado dump que contendrá todos los ficheros creados durante el volcado de la memoria:

Se podrían utilizar herramientas para poder observar el contenido de estos ficheros, pero lo haremos utilizando el comando Strings de Linux con el que podremos, de forma algo “bestia”, buscar información sensible en la memoria del dispositivo.

En este caso buscaremos la cadena Bearer ya que sabemos que la aplicación hace uso de OAuth para la autenticación mediante la cabecera HTTP Authorization: Bearer xxxxxxxxxxx :


En el resultado, como se puede observar en la imagen anterior, se observa el Bearer token del usuario, información sensible almacenada en texto claro sin hacer uso de ningún tipo de cifrado.

ADB

Instalación

Con adb podremos interactuar con el dispositivo móvil, como por ejmplo, abriendo una shell en el propio dispositivo.

Listaremos los procesos corriendo en el sistema y filtraremos por la aplicación que queremos volcar con adb shell ps | grep <nombre_aplicación>:

Con el id de la aplicación, procederemos a realizar el volcado con adb de la siguinte forma adb shell am dumphead <id> <ruta> según nos indica la ayuda:

Ejecutando el comando se produce el volcado de la memoria del dispositivo a un fichero almacenado en el propio dispositivo:

Accediendo a la ruta indicada para realizar el volcado, se identifica el fichero creado:

Como último paso, extraemos el fichero del dispositivo para su posterior tratamiento:

Al igual que en el ejemplo anterior con Fridump, buscaremos información sensible en el fichero de volcado de memoria a través del comando Strings.

Mitigación

Debería recomendarse el uso de objetos para el cifrado de la información en memoria de forma que, aunque se realice el volcado, la información sea ilegible.

Don’t give up. Great things take time.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *