En este posteo quisiera mostrar cómo presentar los contenidos de una aplicación (app) de Android usado el mismo app dentro de un emulador. Un emulador es conocido también como una máquina virtual. En este análisis la máquina virtual nos permite usar Android desde una computadora Windows. Este método nos da el beneficio de ver el contenido en la misma forma que lo vería el usuario. Básicamente usamos el app mismo como nuestra herramienta de visualización sin alterar la evidencia original debido a que usamos el emulador. Es de notar que para este análisis se espera que el perito o practicante esté ya familiarizado con las herramientas de análisis. En futuros posteos al blog se discutirán al detalle el uso de las herramientas y como validarlas.
Teléfono móvil evidencial
- Samsung SM-G530T Galaxy Grand Prime
- Sistema Operativo (OS) 5.1.1
- Acceso de raiz (superusuario o root)
Herramientas de análisis
- Nox Player - Emulador de Android
- Magnet Forensics Acquire
- FTK Imager
- ADB - Android Debugging Bridge
- Android Discord App con datos de prueba
Extracción
Para extraer el app con los datos del usuario usaremos Magnet Forensics Acquire. En entradas futuras del blog discutiremos diferentes métodos de extracción y lo que significan. En este caso, debido a que tenemos acceso de superusuario, haremos una extracción física.
Extracción física finalizada |
Usando FTK Imager se puede ver el contenido de la imagen forense física que se completó en el primer paso. Con la misma se exportan los siguientes directorios con sus archivos correspondientes.
- /userdata/app/com.discord-1
- /userdata/data/com.discord
El directorio (o carpeta) 'app' contiene el app Discord mismo. El app dentro de el directorio se llama "base.apk". Discord es un app multiplataforma utilizado para enviar mensajes y archivos multimedios. Es un app muy popular en particular con usuarios de video juegos con sobre 10 millones de descargas al día de hoy.
10 millones de descargas y contando. |
En la próxima imagen podemos ver el app en el directorio indicado. Los apps en el sistema operativo Android usan la extensión apk. Esta significa 'Android application package' lo cual en espanol se traduce como paquete de aplicación Android.
Discord APK - base.apk |
El directorio 'data' tiene todo el contenido relacionado al app. Tenga en consideración que diferentes apps requieren que se identifiquen diferentes directorios o directorios adicionales para exportar. Por ejemplo algunos apps usan la tarjeta de Micro SD para almacenar datos necesarios para el funcionamiento del app. Usando un teléfono de prueba semejante al original podemos identificar todas los directorios usados por el app para poder entonces exportarlos de la imagen física que hemos creado del original.
Directorio data de Discord |
Después de exportar los directorios necesarios se comienza el emulador Nox. Dependiendo del app que estemos trabajando sería ideal cambiar la configuracion del emulador. De manera automática el emulador trabaja en modo tableta con la configuración de pantalla correspondiente.
Modo tableta |
Siendo que en nuestro ejemplo el app proviene de un teléfono móvil, cambiamos el modo y la resolución a uno que sea semejante al ambiente que estamos analizando.
Así es que se ve el emulador luego de cambiarlo a un modo y resolución de móvil.
Modo móvil. |
Deje el emulador encendido ya que nos conectaremos al mismo usando ADB.
ADB - Conectándonos e importando los datos extraídos al emulador
Usaremos ADB para conectarnos al emulador e importar (push) la data en los directorios exportados anteriormente. El enlace para bajar el programa ADB está en la sección anterior bajo herramientas de análisis. Instale antes de continuar. Ahora abra una terminal o línea de comandos (cmd.exe en Windows) y conéctese al emulador usando el siguiente comando:
- adb connect localhost:62001
Para probar la conectividad use el siguiente comando:
- adb devices
De tener éxito debería ver lo siguiente en su pantalla.
Conectados al emulador. |
Abra otra línea de comando y accedamos al terminal del emulador usando ADB.
La primera line de comando se usará para subir/enviar el apk al emulador. La segunda line de comando nos permitirá interactuar con el sistema de archivos (file system) del emulador.
Usando el siguiente comando, en la primera línea de comando, suba el apk al emulador en el directorio correspondiente. Tenga en cuenta que la línea de comando debe ejecutarse del directorio donde esta el apk. De no hacerlo así tendrá que definir dónde se encuentra el directorio con el apk.
- adb push base.apk /data/app
APK al emulador. |
El app aparecerá en la pantalla principal del emulador. Presionelo para inicializarlo. Al inicializarlo las estructuras necesarias para el app, en el sistema de archivos del emulador, son creadas.
App inicializado. |
Luego de ver la pantalla inicial del app, presione el botón de tareas recientes (Recent Tasks) en el emulador. Este sería el cuadrado encima del símbolo de >> en la parte baja del lado derecho de la pantalla. Proceda a deslizar el app cerrandolo.
Antes de subir los datos del app al emulador debemos eliminar los directorios creados por el app cuando lo inicializamos.
En la segunda linea de comandos, donde usamos el ADB shell, navegue al directorio siguiente:
- /data/data/com.discord
Allí vera todos los directorios que fueron creados en la inicialización. Use el siguiente comando para eliminarlos:
Note que el comando ls nos deja ver si hay carpetas o archivos disponibles. No se ve ninguno. Vaya a la línea de comando primera y suba la data extraída del app al directorio que acabamos de vaciar.
Si los datos subieron correctamente debera ver algo semejante a la siguiente pantalla:
Éxito total. |
En la line de comando donde esta el ADB shell podrá ver que los directorios exportados de la imagen física ahora se encuentran dentro del emulador. Use el comando ls.
Estructura de directorios. |
Para resumir a este punto hemos logrado lo siguiente:
- Hacer una imagen forense de modo físico extraída del teléfono móvil evidencial.
- Extraído el app de interés y los directorios del app correspondientes. En este caso del app Discord.
- Subimos el app extraído (el apk) al emulador y lo inicializamos.
- Cerramos el app y borramos los directorios creados por el app.
- Subimos los directorios y los contenidos extraídos del app al emulador.
Proceda a ir a la página principal del emulador y presione la aplicación de Discord. Todo el contenido del app se puede ver en el emulador.
Mensaje directo. |
Consideraciones
Este método es sumamente útil para mostrar los datos extraídos a una audiencia no técnica. Es una gran ayuda visual el poder ver los datos en la misma manera que el usuario original de los mismos lo hubiera visto.
Al hacer este tipo de análisis siempre debemos adherirnos a las mejore prácticas. Por ejemplo mi sistema de análisis ni mi emulador estaban conectados al internet. Nótese el punto verde justo al lado del nombre de usuario en la parte baja de la siguiente imagen.
Se conectó sin tener que proveer contraseña. |
Debe de asegurarse que el sistema que utiliza para hacer el análisis no esté conectado al internet siendo que ciertas aplicaciones se van a conectar automáticamente a los servidores que el app en cuestión use. Esto puede causar un problema donde el analista o perito inadvertidamente lleve a cabo una búsqueda ilegal del material remoto en el servidor sin tener la autorización legal propia.
Tenga en cuenta que el análisis usando un emulador puede no funcionar con apps que estén fuertemente integrados en el sistema operativo, por ejemplo Google apps.
En mis pruebas he visto que cerrando el app o apagando el emulador no permite que pueda accesar los datos que se subieron. El app solo provee un error de instalación al querer abrirlo por segunda vez. Asegúrese de tomar capturas de pantalla o tomar un video de la misma antes de cerrar el app o apagar el emulador. Para tener acceso al app luego de apagar el emulador tendrá que reinstalar Nox y hacer todo el proceso desde el comienzo.
Puedo ser contactado a través de twitter en @alexisbrignoni.