hacktricks/mobile-pentesting/android-app-pentesting/avd-android-virtual-device.md
2024-02-10 15:36:32 +00:00

12 KiB

AVD - Android Virtual Device

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

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 Sie zum Testen von APKs verwenden können. Um sie zu verwenden, benötigen Sie:

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

Unter Mac können Sie die SDK-Tools herunterladen und sie im PATH ausführen:

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

Oder aus der 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 zugreifen.

Klicken Sie dann auf Virtuelles Gerät erstellen

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

{% 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 auf dem Telefon ausgeführt wird:

Wählen Sie es also aus und klicken Sie auf das Download-Symbol neben dem Namen (warten Sie nun, bis das Image heruntergeladen ist).
Sobald das Image heruntergeladen ist, wählen Sie einfach Weiter und Fertig aus.

Die virtuelle Maschine wird erstellt. Jetzt ist sie immer verfügbar, wenn Sie auf den AVD-Manager zugreifen.

Virtuelle Maschine ausführen

Um sie auszuführen, drücken Sie einfach die Start-Schaltfläche.

Befehlszeilentool

Zunächst müssen Sie sich entscheiden, welches Telefon Sie verwenden möchten. Um die Liste der möglichen Telefone anzuzeigen, führen Sie den folgenden Befehl 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 festgelegt haben, das Sie verwenden möchten, 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 denjenigen herunter (oder alle), den 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 sich für das Gerät entschieden, das Sie verwenden möchten, und das Android-Image heruntergeladen. Sie können nun die virtuelle Maschine erstellen, indem Sie:

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

In dem letzten Befehl habe ich eine VM namens "AVD9" mit dem Gerät "Nexus 5X" und dem Android-Image "system-images;android-28;google_apis;x86_64" erstellt.
Jetzt kannst du die virtuellen Maschinen auflisten, die du erstellt hast, mit:

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 mit folgendem Befehl auflisten:

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

Sie können einfach eine beliebige erstellte virtuelle Maschine ausführen, indem Sie Folgendes verwenden:

{% 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 Sie können eine virtuelle Maschine wie folgt verwenden:

{% 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 viele verschiedene nützliche Befehlszeilenoptionen, mit denen Sie eine virtuelle Maschine starten können. Im Folgenden finden Sie einige interessante Optionen, aber Sie können hier eine vollständige Liste finden

Boot

  • -snapshot name : Starten Sie eine VM-Snapshot
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : Listet alle aufgezeichneten Snapshots auf

Netzwerk

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

System

  • -selinux {disabled|permissive} : Legt das Security-Enhanced Linux-Sicherheitsmodul auf einem Linux-Betriebssystem entweder auf den deaktivierten oder den permissiven Modus fest.
  • -timezone Europe/Paris : Legt die Zeitzone für das virtuelle Gerät fest
  • -screen {touch(default)|multi-touch|o-touch} : Legt den emulierten Touchscreen-Modus fest.
  • -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.

Rooting eines Play Store-Geräts

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

$ adb root
adbd cannot run as root in production builds

Mit rootAVD und Magisk konnte ich es rooten (folge zum Beispiel diesem Video oder diesem).

Burp-Zertifikat installieren

Überprüfen Sie die folgende Seite, um zu erfahren, wie Sie ein benutzerdefiniertes CA-Zertifikat installieren:

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

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: