AVD - Android Virtual Device
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Thank you very much to @offsecjay for his help while creating this content.
Android Studio permite ejecutar máquinas virtuales de Android que puedes usar para probar APKs. Para usarlas necesitarás:
Las herramientas del SDK de Android - Descargar aquí.
O Android Studio (con herramientas del SDK de Android) - Descargar aquí.
En Windows (en mi caso) después de instalar Android Studio tenía las herramientas del SDK instaladas en: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
En mac puedes descargar las herramientas del SDK y tenerlas en el PATH ejecutando:
O desde Android Studio GUI como se indica en https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a que los instalará en ~/Library/Android/sdk/cmdline-tools/latest/bin/
y ~/Library/Android/sdk/platform-tools/
y ~/Library/Android/sdk/emulator/
Para los problemas de Java:
Si instalaste Android Studio, solo puedes abrir la vista principal del proyecto y acceder a: Tools --> AVD Manager.
Luego, haz clic en Create Virtual Device
selecciona el teléfono que deseas usar y haz clic en Next.
¡Si necesitas un teléfono con Play Store instalado, selecciona uno con el ícono de Play Store!
En la vista actual podrás seleccionar y descargar la imagen de Android que el teléfono va a ejecutar:
Así que, selecciónala y si no está descargada haz clic en el símbolo de Download junto al nombre (ahora espera hasta que la imagen se descargue).
Una vez que la imagen esté descargada, solo selecciona Next
y Finish
.
La máquina virtual será creada. Ahora cada vez que accedas al AVD manager estará presente.
Para ejecutarla solo presiona el Start button.
Primero que nada, necesitas decidir qué teléfono quieres usar, para ver la lista de teléfonos posibles ejecuta:
Una vez que hayas decidido el nombre del dispositivo que deseas usar, necesitas decidir qué imagen de Android quieres ejecutar en este dispositivo.
Puedes listar todas las opciones usando sdkmanager
:
Y descarga el que (o todos) que quieras usar con:
Una vez que hayas descargado la imagen de Android que deseas usar, puedes listar todas las imágenes de Android descargadas con:
En este momento has decidido el dispositivo que deseas usar y has descargado la imagen de Android, así que puedes crear la máquina virtual usando:
En el último comando creé una VM llamada "AVD9" usando el dispositivo "Nexus 5X" y la imagen de Android "system-images;android-28;google_apis;x86_64". Ahora puedes listar las máquinas virtuales que has creado con:
Ya hemos visto cómo puedes listar las máquinas virtuales creadas, pero también puedes listarlas usando:
Puedes simplemente ejecutar cualquier máquina virtual creada usando:
O utilizando opciones más avanzadas, puedes ejecutar una máquina virtual como:
Sin embargo, hay muchas opciones útiles de línea de comandos que puedes usar para iniciar una máquina virtual. A continuación, puedes encontrar algunas opciones interesantes, pero puedes encontrar una lista completa aquí
Arranque
-snapshot name
: Iniciar instantánea de VM
-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Listar todas las instantáneas grabadas
Red
-dns-server 192.0.2.0, 192.0.2.255
: Permitir indicar separados por comas los servidores DNS a la VM.
-http-proxy 192.168.1.12:8080
: Permitir indicar un proxy HTTP a usar (muy útil para capturar el tráfico usando Burp)
-port 5556
: Establecer el número de puerto TCP que se usa para la consola y adb.
-ports 5556,5559
: Establecer los puertos TCP utilizados para la consola y adb.
-tcpdump /path/dumpfile.cap
: Capturar todo el tráfico en un archivo
Sistema
-selinux {disabled|permissive}
: Establecer el módulo de seguridad Security-Enhanced Linux en modo deshabilitado o permisivo en un sistema operativo Linux.
-timezone Europe/Paris
: Establecer la zona horaria para el dispositivo virtual
-screen {touch(default)|multi-touch|o-touch}
: Establecer el modo de pantalla táctil emulada.
-writable-system
: Usa esta opción para tener una imagen del sistema escribible durante tu sesión de emulación. También necesitarás ejecutar adb root; adb remount
. Esto es muy útil para instalar un nuevo certificado en el sistema.
Si descargaste un dispositivo con Play Store, no podrás obtener root directamente, y recibirás este mensaje de error
Usando rootAVD con Magisk pude obtener acceso root (sigue por ejemplo este video o este otro).
Consulta la siguiente página para aprender cómo instalar un certificado CA personalizado:
Install Burp CertificatePuedes usar la GUI para tomar una instantánea de la VM en cualquier momento:
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)