hacktricks/mobile-pentesting/android-app-pentesting/avd-android-virtual-device.md

11 KiB

AVD - Android Virtual Device

{% hint style="success" %} Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Vielen Dank an @offsecjay für seine Hilfe bei der Erstellung dieses Inhalts.

Was ist

Android Studio ermöglicht es, virtuelle Maschinen von Android auszuführen, die du zum Testen von APKs verwenden kannst. Um sie zu nutzen, benötigst du:

In Windows (in meinem Fall) nach der Installation von Android Studio hatte ich die SDK-Tools installiert in: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools

In mac kannst du die SDK-Tools herunterladen und sie im PATH haben, indem du Folgendes ausführst:

brew tap homebrew/cask
brew install --cask android-sdk

Oder über die Android Studio GUI, wie in https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a angegeben, die sie in ~/Library/Android/sdk/cmdline-tools/latest/bin/ und ~/Library/Android/sdk/platform-tools/ und ~/Library/Android/sdk/emulator/ installieren wird.

Für die Java-Probleme:

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home

GUI

Virtuelle Maschine vorbereiten

Wenn Sie Android Studio installiert haben, können Sie einfach die Hauptprojektansicht öffnen und auf: Tools --> AVD Manager.

Klicken Sie dann auf Create Virtual Device

Wählen Sie das Telefon aus, das Sie verwenden möchten und klicken Sie auf Next.

{% hint style="warning" %} Wenn Sie ein Telefon mit installiertem Play Store benötigen, wählen Sie eines mit dem Play Store-Symbol aus!

{% endhint %}

In der aktuellen Ansicht können Sie das Android-Image auswählen und herunterladen, das das Telefon ausführen wird:

Wählen Sie es aus, und wenn es nicht heruntergeladen ist, klicken Sie auf das Download-Symbol neben dem Namen (warten Sie jetzt, bis das Image heruntergeladen ist).
Sobald das Image heruntergeladen ist, wählen Sie einfach Next und Finish.

Die virtuelle Maschine wird erstellt. Jetzt wird sie jedes Mal, wenn Sie auf den AVD-Manager zugreifen, vorhanden sein.

Virtuelle Maschine ausführen

Um sie auszuführen, drücken Sie einfach die Starttaste.

Befehlszeilenwerkzeug

Zunächst müssen Sie entscheiden, welches Telefon Sie verwenden möchten. Um die Liste der möglichen Telefone anzuzeigen, führen Sie aus:

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
[...]

Sobald Sie den Namen des Geräts, das Sie verwenden möchten, festgelegt haben, müssen Sie entscheiden, welches Android-Image Sie auf diesem Gerät ausführen möchten.
Sie können alle Optionen mit sdkmanager auflisten:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list

Und lade diejenige (oder alle), die du verwenden möchtest, mit:

{% 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 %}

Sobald Sie das Android-Image heruntergeladen haben, das Sie verwenden möchten, können Sie alle heruntergeladenen Android-Images auflisten mit:

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

Zu diesem Zeitpunkt haben Sie das Gerät ausgewählt, das Sie verwenden möchten, und das Android-Image heruntergeladen, sodass Sie die virtuelle Maschine mit:

{% 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 %}

Im letzten Befehl habe ich eine VM mit dem Namen "AVD9" erstellt, die das Gerät "Nexus 5X" und das Android-Image "system-images;android-28;google_apis;x86_64" verwendet.
Jetzt können Sie die virtuellen Maschinen, die Sie erstellt haben, mit folgendem Befehl auflisten:

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

Virtuelle Maschine ausführen

Wir haben bereits gesehen, wie Sie die erstellten virtuellen Maschinen auflisten können, aber Sie können sie auch auflisten mit:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27

Sie können einfach jede erstellte virtuelle Maschine ausführen mit:

{% 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 %}

Oder indem Sie fortgeschrittenere Optionen verwenden, können Sie eine virtuelle Maschine wie folgt ausführen:

{% 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 %}

Befehlszeilenoptionen

Es gibt jedoch eine Menge nützlicher Befehlszeilenoptionen, die Sie verwenden können, um eine virtuelle Maschine zu starten. Unten finden Sie einige interessante Optionen, aber Sie können eine vollständige Liste hier finden

Boot

  • -snapshot name : VM-Snapshot starten
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : Alle aufgezeichneten Snapshots auflisten

Netzwerk

  • -dns-server 192.0.2.0, 192.0.2.255 : Ermöglicht die Angabe von durch Kommas getrennten DNS-Servern für die VM.
  • -http-proxy 192.168.1.12:8080 : Ermöglicht die Angabe eines HTTP-Proxys (sehr nützlich, um den Verkehr mit Burp zu erfassen)
  • -port 5556 : Setzt die TCP-Portnummer, die für die Konsole und adb verwendet wird.
  • -ports 5556,5559 : Setzt die TCP-Ports, die für die Konsole und adb verwendet werden.
  • -tcpdump /path/dumpfile.cap : Erfasst den gesamten Verkehr in einer Datei

System

  • -selinux {disabled|permissive} : Setzt das Security-Enhanced Linux-Sicherheitsmodul entweder auf deaktiviert oder permissiv auf einem Linux-Betriebssystem.
  • -timezone Europe/Paris : Setzt die Zeitzone für das virtuelle Gerät
  • -screen {touch(default)|multi-touch|o-touch} : Setzt den emulierten Touchscreen-Modus.
  • -writable-system : Verwenden Sie diese Option, um während Ihrer Emulationssitzung ein beschreibbares Systemabbild zu haben. Sie müssen auch adb root; adb remount ausführen. Dies ist sehr nützlich, um ein neues Zertifikat im System zu installieren.

Rooten eines Play Store-Geräts

Wenn Sie ein Gerät mit Play Store heruntergeladen haben, können Sie nicht direkt Root erhalten, und Sie erhalten diese Fehlermeldung

$ adb root
adbd cannot run as root in production builds

Using rootAVD with Magisk konnte ich es rooten (folgen Sie zum Beispiel diesem Video oder diesem hier).

Burp-Zertifikat installieren

Überprüfen Sie die folgende Seite, um zu lernen, wie man ein benutzerdefiniertes CA-Zertifikat installiert:

{% content-ref url="install-burp-certificate.md" %} install-burp-certificate.md {% endcontent-ref %}

Nette AVD-Optionen

Snapshot erstellen

Sie können die GUI verwenden, um jederzeit einen Snapshot der VM zu erstellen:

{% hint style="success" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks unterstützen
{% endhint %}