Introducción
Para la realización de una auditoría de seguridad de una aplicación de Android es necesaria la creación de un entorno personalizado, el cual puede estar basado en un dispositivo físico o en un emulador. Para la mayoría de los casos un emulador será suficiente. En este artículo crearemos una máquina virtual de Android en su arquitectura x86_64, y la modificaremos instalando Magisk, para obtener permisos de superusuario y poder instalar módulos, e instalaremos algunas aplicaciones.
Instalación del emulador Android
Para el emulador de Android, hemos elegido el IDE oficial de Android, Android Studio, que incluye soporte para dispositivos virtuales de Android (AVD). Para instalar el IDE simplemente nos dirigimos a su sitio web oficial, y podremos descargar el instalador aceptando los términos de licencia. En el proceso de instalación, al seleccionar los componentes a instalar, deseleccionaremos la opción Android Virtual Device, ya que la configuraremos posteriormente. En este caso instalaremos el IDE en nuestro directorio de Documentos.

Al terminar la instalación, no iniciaremos el programa, y opcionalmente, estableceremos la variable de entorno de usuario ANDROID_USER_HOME con el directorio en el que queramos que se alojen los archivos de configuración y los datos de las máquinas virtuales, que serán alojados en un directorio llamado .android.
ANDROID_USER_HOME = C:\Users\Usuario\Documents\Android\Home
A continuación ya podremos iniciar Android Studio eligiendo la opción de no importar la configuración. Nos aparecerá un asistente en el que seleccionaremos una instalación personalizada.
Cuando seleccionemos los elementos a instalar, dejaremos la instalación por defecto de instalar todo, y cambiaremos el directorio de instalación si es necesario. Aceptaremos las licencias e instalaremos el SDK.
Al terminar la instalación se abrirá la ventana principal de Android Studio. Agregaremos al PATH en las variables el directorio de las herramientas de depuración de Android. Se encuentran en el directorio de instalación del SDK, en la carpeta platform-tools.
Después volviendo a Android Studio pulsaremos el enlace More Actions y abriremos el Virtual Device Manager, el administrador de máquinas virtuales de Android, en el que encontraremos una máquina virtual ya creada.
Eliminaremos la máquina virtual preexistente y crearemos una nueva basada en el móvil Pixel 6, con la imagen de sistema Google APIs, la versión API 34 y la arquitectura ABI x86_64. Otra opción sería utilizar la imagen de sistema Google Play con el dispositivo Pixel 7. El resto de configuración de hardware puede ser la seleccionada por defecto excepto la de Boot option que será configurada como Cold boot, pulsando el botón Show Advanced Settings. En caso de que queramos asignar más recursos a la máquina virtual podemos modificar los ajustes. Después de crearla podemos ejecutarla.
Si nos aparece un aviso del Firewall de Windows, podemos aceptarlo. Finalmente tendremos una máquina virtual basada en Android 14.
Configuración de la máquina virtual
Después de instalar la máquina comprobaremos de que está configurada en inglés, podremos cambiar el idioma desde Settings > System > Languages > System Languages. La máquina virtual tiene varias aplicaciones de Google preinstaladas por lo que las inhabilitaremos con la herramienta ADB desde la terminal con los siguientes comandos.
$ adb shell pm disable-user --user 0 com.google.android.calendar
$ adb shell pm disable-user --user 0 com.android.chrome
$ adb shell pm disable-user --user 0 com.google.android.contacts
$ adb shell pm disable-user --user 0 com.google.android.apps.docs
$ adb shell pm disable-user --user 0 com.google.android.apps.photos
$ adb shell pm disable-user --user 0 com.google.android.gm
$ adb shell pm disable-user --user 0 com.google.android.googlequicksearchbox
$ adb shell pm disable-user --user 0 com.google.android.apps.maps
$ adb shell pm disable-user --user 0 com.google.android.deskclock
$ adb shell pm disable-user --user 0 com.google.android.youtube
$ adb shell pm disable-user --user 0 com.google.android.apps.youtube.music
Instalación de Magisk y rooteo
A continuación, instalaremos Magisk que es un programa que nos permitirá rootear la máquina virtual obteniendo permisos de superusuario e instalar módulos en el sistema sin modificarlo directamente. Para ello vamos a utilizar el script rootAVD, el cual descargaremos y descomprimiremos.
En primer lugar necesitaremos copiar el archivo ramdisk.img correspondiente a la imagen de sistema operativo y copiarla a la carpeta de nuestra máquina virtual. En este caso el archivo se encuentra en la ruta del SDK SDK/system-images/android-34/google-apis/x86_64/ramdisk.img y la máquina virtual en la ruta de la variable de entorno que establecimos anteriormente Home/avd/Pixel_6_API_34.avd.
Abrimos una terminal CMD en el directorio donde hemos extraído el script de rootAVD y encendemos la máquina virtual. Copiaremos el archivo, estableceremos una variable de entorno para rootAVD y ejecutaremos el script. Cuando nos pregunte la versión de Magisk a instalar, seleccionaremos la opción 2 (última versión estable).
$ copy C:\Users\Usuario\Documents\Android\SDK\system-images\android-34\google_apis\x86_64\ramdisk.img C:\Users\Usuario\Documents\Android\Home\avd\Pixel_6_API_34.avd\
$ set ANDROID_HOME=C:\Users\Usuario\Documents\Android\SDK
$ rootAVD.bat ..\Home\avd\Pixel_6_API_34.avd\ramdisk.img
[?] Choose a Magisk Version to install and make it local
[s] (s)how all available Magisk Versions
[1] local stable '25.2' (ENTER)
[2] stable 26.3
[3] canary 0352ea2c(26302)
[4] alpha 15e13a8d-alpha(26302)
2
[-] You choose Magisk stable Version 26.3
La máquina se apagará y al reiniciarla tendremos la aplicación de Magisk instalada. Al abrirla nos indicará que el dispositivo necesita una configuración adicional, aceptaremos seleccionando el método de Instalación directa y se reiniciará el dispositivo. En ocasiones el mensaje seguirá apareciendo después del reinicio, solamente habrá que ignorarlo ya que en la aplicación se indica que Magisk se encuentra instalado.
Luego configuraremos Magisk para que las aplicaciones no puedan detectarlo y bloquear su ejecución. Primero, en la configuración seleccionaremos la opción Ocultar la app de Magisk, e introduciremos un nombre aleatorio. Esto hará que Magisk se reinstale con un nombre de paquete aleatorio.
Finalmente activaremos la opción de Zygisk para que Magisk se ejecute en el proceso Zygote de Android, la opción de Aplicar lista de denegación y en la opción de Configurar lista de denegación seleccionaremos las aplicaciones que no queremos que detecten que tenemos Magisk instalado y realizamos un reinicio al dispositivo.
Instalación de los módulos de Magisk
Con Magisk instalado, vamos a instalar varios módulos de Magisk que facilitarán tareas futuras. Para instalarlos es necesario descargar el archivo comprimido ZIP de cada modulo, enviarlos a la máquina virtual arrastrando el archivo a la ventana. Posteriormente se abrirá Magisk, se seleccionará la opción Módulos y se seleccionará el archivo subido pulsando en el botón Instalar desde almacenamiento. El archivo se encuentra en la carpeta de Descargas.
- MagiskFrida [Descarga]: Este módulo nos permite instalar el servidor de Frida e iniciarlo al arrancar el sistema operativo automáticamente.
Instalación de aplicaciones adicionales
Opcionalmente se puede instalar la aplicación Aurora Store, que es una alternativa a la Play Store de código abierto para descargar aplicación en el caso de que falte en la máquina virtual. Las aplicaciones se instalan arrastrándolas a la ventana del emulador o usando ADB.
$ adb install aplicacion_a_instalar.apk
Instalación de Frida
Anteriormente se ha instalado el módulo de Magisk de MagiskFrida. Frida nos permite inyectar código en programas en ejecución, utilizado comúnmente en análisis de ingeniería inversa. Para usarlo es necesaria la instalación de su cliente en nuestro sistema operativo anfitrión. Como prerequisito necesita la instalación de Python. A continuación, creamos un nuevo entorno virtual de Python, lo activamos e instalamos desde el gestor de paquetes Pip las herramientas de Frida.
$ python -m virtualenv frida_env
$ fridaenv\Scripts\activate
$ pip install frida-tools
Conclusión
Con la instalación del entorno del emulador de Android, procederemos a observar varias técnicas de análisis dinámico de aplicaciones Android en futuros artículos.