11 KiB
AVD - Dispositivo Virtual Android
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub HackTricks e HackTricks Cloud.
Muito obrigado ao @offsecjay pela ajuda na criação deste conteúdo.
O que é
O Android Studio permite executar máquinas virtuais do Android que você pode usar para testar APKs. Para usá-las, você precisará de:
- As ferramentas SDK do Android - Baixe aqui.
- Ou Android Studio (com ferramentas SDK do Android) - Baixe aqui.
No Windows (no meu caso) após instalar o Android Studio, eu tinha as ferramentas SDK instaladas em: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
No Mac, você pode baixar as ferramentas SDK e adicioná-las ao PATH executando:
brew tap homebrew/cask
brew install --cask android-sdk
Ou a partir da Interface Gráfica do Android Studio conforme indicado em https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a o que instalará os mesmos em ~/Library/Android/sdk/cmdline-tools/latest/bin/
, ~/Library/Android/sdk/platform-tools/
e ~/Library/Android/sdk/emulator/
Para os problemas com Java:
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
GUI
Preparar Máquina Virtual
Se você instalou o Android Studio, pode simplesmente abrir a visão principal do projeto e acessar: Ferramentas --> Gerenciador de AVD.
Em seguida, clique em Criar Dispositivo Virtual
selecione o telefone que deseja usar e clique em Próximo.
{% hint style="warning" %} Se você precisa de um telefone com a Play Store instalada, selecione um com o ícone da Play Store nele!
Na visão atual, você poderá selecionar e baixar a imagem do Android que o telefone vai executar:
Então, selecione-a e, se não estiver baixada, clique no símbolo Baixar ao lado do nome (agora espere até que a imagem seja baixada).
Uma vez baixada a imagem, basta selecionar Próximo
e Concluir
.
A máquina virtual será criada. Agora toda vez que você acessar o Gerenciador de AVD, ela estará presente.
Executar Máquina Virtual
Para executar, basta pressionar o Botão de Iniciar.
Ferramenta de Linha de Comando
Primeiro de tudo, você precisa decidir qual telefone deseja usar, para ver a lista de telefones possíveis execute:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device
d: 0 or "automotive_1024p_landscape"
Name: Automotive (1024p landscape)
OEM : Google
Tag : android-automotive-playstore
---------
id: 1 or "Galaxy Nexus"
Name: Galaxy Nexus
OEM : Google
---------
id: 2 or "desktop_large"
Name: Large Desktop
OEM : Google
Tag : android-desktop
---------
id: 3 or "desktop_medium"
Name: Medium Desktop
OEM : Google
Tag : android-desktop
---------
id: 4 or "Nexus 10"
Name: Nexus 10
OEM : Google
[...]
Uma vez que você decidiu o nome do dispositivo que deseja usar, você precisa decidir qual imagem Android você quer executar neste dispositivo.
Você pode listar todas as opções usando sdkmanager
:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
E baixe o(s) que você deseja usar com:
{% code overflow="wrap" %}
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
{% endcode %}
Uma vez que você tenha baixado a imagem Android que deseja usar, você pode **listar todas as imagens Android baixadas** com:
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
Neste momento, você decidiu qual dispositivo deseja usar e baixou a imagem do Android, então você pode criar a máquina virtual usando:
{% code overflow="wrap" %}
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"
{% endcode %}
No último comando criei uma VM chamada "AVD9" usando o dispositivo "Nexus 5X" e a imagem Android "system-images;android-28;google_apis;x86_64".
Agora você pode listar as máquinas virtuais que criou com:
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
Executar Máquina Virtual
Já vimos como você pode listar as máquinas virtuais criadas, mas você também pode listá-las usando:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
Você pode simplesmente executar qualquer máquina virtual criada usando:
{% code overflow="wrap" %}
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
{% endcode %}
Ou usando opções mais avançadas, você pode executar uma máquina virtual como:
{% code overflow="wrap" %}
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
{% endcode %}
Opções de linha de comando
No entanto, existem muitas opções diferentes de linha de comando úteis que você pode usar para iniciar uma máquina virtual. Abaixo você pode encontrar algumas opções interessantes, mas pode encontrar uma lista completa aqui
Inicialização
-snapshot name
: Iniciar snapshot da VM-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Listar todos os snapshots gravados
Rede
-dns-server 192.0.2.0, 192.0.2.255
: Permite indicar separados por vírgula os servidores DNS para a VM.-http-proxy 192.168.1.12:8080
: Permite indicar um proxy HTTP para usar (muito útil para capturar o tráfego usando Burp)-port 5556
: Define o número da porta TCP usada para o console e adb.-ports 5556,5559
: Define as portas TCP usadas para o console e adb.-tcpdump /path/dumpfile.cap
: Captura todo o tráfego em um arquivo
Sistema
-selinux {disabled|permissive}
: Define o módulo de segurança Security-Enhanced Linux para o modo desativado ou permissivo em um sistema operacional Linux.-timezone Europe/Paris
: Define o fuso horário para o dispositivo virtual-screen {touch(default)|multi-touch|o-touch}
: Define o modo de tela de toque emulado.-writable-system
: Use esta opção para ter uma imagem de sistema gravável durante sua sessão de emulação. Você também precisará executaradb root; adb remount
. Isso é muito útil para instalar um novo certificado no sistema.
Fazendo root em um dispositivo Play Store
Se você baixou um dispositivo com Play Store, não será possível obter acesso root diretamente, e você receberá esta mensagem de erro
$ adb root
adbd cannot run as root in production builds
Utilizando rootAVD com Magisk, consegui fazer root (siga, por exemplo, este vídeo ou este).
Instalar Certificado Burp
Consulte a seguinte página para aprender como instalar um certificado CA personalizado:
{% content-ref url="install-burp-certificate.md" %} install-burp-certificate.md {% endcontent-ref %}
Opções Interessantes do AVD
Tirar um Snapshot
Você pode usar a GUI para tirar um snapshot da VM a qualquer momento:
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o merchandising oficial do PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub HackTricks e HackTricks Cloud.