12 KiB
AVD - Dispositivo Virtual de Android
AVD - Dispositivo Virtual de Android
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Muchas gracias a @offsecjay por su ayuda en la creación de este contenido.
¿Qué es?
Android Studio permite ejecutar máquinas virtuales de Android que se pueden utilizar para probar APKs. Para poder utilizarlas, necesitarás:
- Las herramientas del kit de desarrollo de software (SDK) de Android - Descargar aquí.
- O Android Studio (con las herramientas del kit de desarrollo de software de Android) - Descargar aquí.
En Windows (en mi caso) después de instalar Android Studio, las herramientas del kit de desarrollo de software (SDK) se instalaron en: C:\Users\<NombreDeUsuario>\AppData\Local\Android\Sdk\tools
JDK
Para las máquinas MacOS, te recomiendo que instales la siguiente versión para poder utilizar los comandos de la línea de comandos mencionados en las siguientes secciones:
brew install openjdk@8
GUI
Preparar la Máquina Virtual
Si has instalado Android Studio, simplemente abre la vista principal del proyecto y accede a: Herramientas --> Administrador de AVD.
Luego, haz clic en Crear dispositivo virtual, selecciona el teléfono que deseas utilizar y haz clic en Siguiente.
En la vista actual, vas a poder seleccionar y descargar la imagen de Android que el teléfono va a ejecutar:
Así que, selecciónala y haz clic en Descargar (ahora espera hasta que se descargue la imagen).
**Una vez que se haya descargado la imagen, simplemente selecciona _**Siguiente**_ y _Finalizar_.
La máquina virtual será creada. Ahora cada vez que accedas al administrador de AVD, estará presente.
Ejecutar la Máquina Virtual
Para ejecutarla, simplemente presiona el botón de inicio.
Herramienta de Línea de Comandos
Preparar la Máquina Virtual
{% hint style="info" %}
En sistemas MacOS, el ejecutable se encuentra en /Users/<nombre de usuario>/Library/Android/sdk/tools/bin
{% endhint %}
En primer lugar, necesitas decidir qué teléfono quieres usar, para ver la lista de posibles teléfonos, ejecuta:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device
id: 0 or "tv_1080p"
Name: Android TV (1080p)
OEM : Google
Tag : android-tv
---------
id: 1 or "tv_720p"
Name: Android TV (720p)
OEM : Google
Tag : android-tv
---------
id: 2 or "wear_round"
Name: Android Wear Round
OEM : Google
Tag : android-wear
---------
id: 3 or "wear_round_chin_320_290"
Name: Android Wear Round Chin
OEM : Google
Tag : android-wear
---------
id: 4 or "wear_square"
Name: Android Wear Square
OEM : Google
Tag : android-wear
---------
id: 5 or "Galaxy Nexus"
Name: Galaxy Nexus
OEM : Google
---------
id: 6 or "Nexus 10"
Name: Nexus 10
OEM : Google
---------
id: 7 or "Nexus 4"
Name: Nexus 4
OEM : Google
---------
id: 8 or "Nexus 5"
Name: Nexus 5
OEM : Google
---------
id: 9 or "Nexus 5X"
Name: Nexus 5X
OEM : Google
Una vez que hayas decidido el nombre del dispositivo que deseas utilizar, necesitas decidir qué imagen de Android deseas ejecutar en este dispositivo.
Puedes listar todas las opciones usando sdkmanager
:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
Y descargue el que desee utilizar (o todos) con:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
Una vez que hayas descargado la imagen de Android que deseas utilizar, puedes listar todas las imágenes de Android descargadas con:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target
----------
id: 1 or "android-28"
Name: Android API 28
Type: Platform
API level: 28
Revision: 6
----------
id: 2 or "android-29"
Name: Android API 29
Type: Platform
API level: 29
Revision: 4
En este momento has decidido el dispositivo que deseas utilizar y has descargado la imagen de Android, por lo que puedes crear la máquina virtual utilizando:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat -v create avd -k "system-images;android-28;google_apis;x86_64" -n "AVD9" -d "Nexus 5X"
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:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list avd
Name: AVD9
Device: Nexus 5X (Google)
Path: C:\Users\cpolo\.android\avd\AVD9.avd
Target: Google APIs (Google Inc.)
Based on: Android API 28 Tag/ABI: google_apis/x86_64
The following Android Virtual Devices could not be loaded:
Name: Pixel_2_API_27
Path: C:\Users\cpolo\.android\avd\Pixel_2_API_27_1.avd
Error: Google pixel_2 no longer exists as a device
Ejecutar Máquina Virtual
Ya hemos visto cómo se pueden listar las máquinas virtuales creadas, pero también se pueden listar usando:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
Simplemente puedes ejecutar cualquier máquina virtual creada usando:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
O usando opciones más avanzadas, puedes ejecutar una máquina virtual como:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
Opciones de línea de comandos
Sin embargo, hay muchas opciones útiles de línea de comandos diferentes que se pueden utilizar para iniciar una máquina virtual. A continuación, se pueden encontrar algunas opciones interesantes, pero se puede encontrar una lista completa aquí
Arranque
-snapshot name
: Iniciar instantánea de la VM-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Enumerar todas las instantáneas grabadas
Red
-dns-server 192.0.2.0, 192.0.2.255
: Permite indicar los servidores DNS separados por comas a la VM.-http-proxy 192.168.1.12:8080
: Permite indicar un proxy HTTP para usar (muy útil para capturar el tráfico usando Burp)-port 5556
: Establecer el número de puerto TCP que se utiliza 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 de Linux mejorado (SELinux) en modo desactivado 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 emulado.-writable-system
: Use esta opción para tener una imagen de sistema escribible durante su sesión de emulación. También deberá ejecutaradb root; adb remount
. Esto es muy útil para instalar un nuevo certificado en el sistema.
Instalar el certificado Burp en una máquina virtual
En primer lugar, es necesario descargar el certificado Der de Burp. Se puede hacer esto en Proxy --> Options --> Import / Export CA certificate
Exporte el certificado en formato Der y transformémoslo a una forma que Android va a poder entender. Tenga en cuenta que para configurar el certificado de burp en la máquina Android en AVD es necesario ejecutar esta máquina con la opción -writable-system
.
Por ejemplo, se puede ejecutar así:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
Entonces, para configurar el certificado de Burp, haga lo siguiente:
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
mv burp_cacert.pem $CERTHASHNAME #Correct name
adb root && adb remount #Allow to write on /syste
adb push $CERTHASHNAME /sdcard/ #Upload certificate
adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correct location
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
adb reboot #Now, reboot the machine
Una vez que la máquina termine de reiniciarse, el certificado de Burp estará en uso por ella.
Tomar una instantánea
Puede usar la GUI para tomar una instantánea de la VM en cualquier momento:
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabaja en una empresa de ciberseguridad? ¿Quiere ver su empresa anunciada en HackTricks? ¿O quiere tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulte los PLANES DE SUSCRIPCIÓN!
- Descubra The PEASS Family, nuestra colección exclusiva de NFTs
- Obtenga el swag oficial de PEASS y HackTricks
- Únase al 💬 grupo de Discord o al grupo de telegram o sígame en Twitter 🐦@carlospolopm.
- Comparta sus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.