Existen muchas herramientas que permiten analizar rápidamente el comportamiento de las muestras móviles, con el objeto de facilitar la tarea de analistas, testers y pentesters. En el caso de Android, una de esas aplicaciones es AppMon, que a través de la instrumentación de código permite acceder al registro de funciones utilizadas y sus respectivos parámetros.
A lo largo de este artículo echaremos un vistazo a su funcionalidad.
¿Cómo funciona AppMon?
Esta aplicación hace uso de potente entorno de instrumentación dinámica multiplataforma del cual ya hemos hablado en pasadas ocasiones: Frida. Con base en esta plataforma, AppMon incluye una serie de scripts que permitirán a los analistas espiar los eventos que la aplicación estudiada va generando en el sistema, cuyos resultados podrán luego ser visualizados a través de una interfaz web con filtros de búsqueda y ordenamiento.
Además, AppMon incluye scripts que permiten realizar una intrusión dentro de la aplicación modificando su normal curso de acción, como se muestra en el siguiente video. Claro que cada analista podrá también incluir sus propios scripts en la herramienta.
Además, permite instrumentar aplicaciones tanto en Android como iOS y, heredando la flexibilidad de Frida, puede ejecutarse en diferentes plataformas (Linux, Mac OS, y Windows con algunos cambios al código).
Instalación de la aplicación
Los prerrequisitos para correr AppMon son obviamente instalar Frida y además algunos módulos de python, lo que puede hacerse con el siguiente comando:
sudo -H pip install argparse frida flask termcolor
Luego podemos copiar el proyecto desde el repositorio en Github o descargar el correspondiente archivo comprimido. Si se está trabajando en un equipo Windows, además se deberá modificar la ruta absoluta definida en la variable merge_script_path
del archivo appmon.py
para apuntar a la carpeta temporal en el sistema de archivos de Windows o bien otra carpeta que el usuario desee. Por ejemplo, podría quedar de la siguiente manera:
merge_script_path = ‘C:/Users/<nombre_usuario>/AppData/Local/Temp/merged.js’
Deberemos crear nuestro emulador con una versión de Android 4.4.x ya que Frida solo ha sido demostrado estable para estas versiones, para luego transferir los archivos de Frida e iniciar el servidor, como lo hemos hecho con anterioridad en el tutorial para instrumentar apps.
¡Listo! Ahora debemos instalar la aplicación que deseamos analizar. Lo mejor es hacerlo vía adb ya que algunos emuladores inicializan la aplicación cuando se instala vía drag and drop y si no estamos listos para correr el comando de AppMon puede que nos perdamos de registrar funcionalidad crítica.
Análisis de la muestra
Pondremos a correr una muestra de Android/Torec.A, un malware capaz que registrar mensajes y llamadas del terminal, entre otra información crítica, y comunicarse vía Tor. El Android Manifest de la aplicación nos indica que el nombre del paquete es com.baseapp. Necesitaremos este dato para poder indicar a AppMon qué proceso interceptar.
Entonces, emitimos por consola los comandos que se ven a continuación:
Si estamos en Windows, la consola se verá como se indica en la siguiente imagen. Podemos ver que AppMon crea un servidor sencillo con python que por defecto se inicializa en el puerto 5000, donde podremos luego acceder a la interfaz web de filtrado, pero solo después de que vemos la indicación por consola que algo ha sido dumpeado.
Entonces podremos abrir el navegador, seleccionar del listado la aplicación que deseamos analizar y luego presionar “Next”.
Se abrirá un registro de eventos en el cual podremos ver algunas operaciones que tuvieron lugar en el sistema en el corto tiempo de ejecución:
Ahora realizaremos el mismo proceso con una muestra de Android/Monitor.Rasatremon.A, un aplicación “espía de enamorados” con mucha incidencia en Brasil. Instalamos la aplicación e iniciamos la instrumentación:
Luego de utilizar por un rato la aplicación podemos ver los resultados en el navegador, entre los que encontramos el detalle completo de los paquetes de red que han sido enviados con el protocolo HTTP:
Esta es una pequeña demostración de lo que AppMon puede lograr. Del mismo modo, esta aplicación permite recuperar claves de cifrado y muchos otros parámetros según la necesidad del analista. En definitiva, una gran aplicación para reducir el tiempo de análisis.