hacktricks/mobile-pentesting/android-app-pentesting/avd-android-virtual-device.md
2024-02-11 01:46:25 +00:00

11 KiB

AVD - Wirtualne urządzenie Android

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Bardzo dziękuję @offsecjay za pomoc przy tworzeniu tego materiału.

Co to jest

Android Studio umożliwia uruchamianie wirtualnych maszyn Androida, które można używać do testowania plików APK. Aby z nich skorzystać, będziesz potrzebować:

W systemie Windows (w moim przypadku) po zainstalowaniu Android Studio narzędzia SDK zostały zainstalowane w: C:\Users\<NazwaUżytkownika>\AppData\Local\Android\Sdk\tools

Na Macu możesz pobrać narzędzia SDK i umieścić je w PATH, uruchamiając:

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

Lub z interfejsu graficznego Android Studio, jak wskazano w https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a, co spowoduje ich instalację w ~/Library/Android/sdk/cmdline-tools/latest/bin/ i ~/Library/Android/sdk/platform-tools/ oraz ~/Library/Android/sdk/emulator/

W przypadku problemów z Javą:

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

GUI

Przygotuj wirtualną maszynę

Jeśli zainstalowałeś Android Studio, możesz po prostu otworzyć główne widok projektu i przejść do: Narzędzia --> Menedżer AVD.

Następnie kliknij Utwórz wirtualne urządzenie

wybierz telefon, który chcesz użyć i kliknij Dalej.

{% hint style="warning" %} Jeśli potrzebujesz telefonu z zainstalowanym Sklepem Play, wybierz ten z ikoną Sklepu Play!

{% endhint %}

W bieżącym widoku będziesz mógł wybrać i pobrać obraz Androida, na którym będzie działał telefon:

Wybierz go i jeśli nie jest jeszcze pobrany, kliknij na symbol Pobierz obok nazwy (teraz poczekaj, aż obraz zostanie pobrany).
Po pobraniu obrazu, po prostu wybierz Dalej i Zakończ.

Wirtualna maszyna zostanie utworzona. Teraz za każdym razem, gdy będziesz korzystać z menedżera AVD, będzie ona dostępna.

Uruchomienie wirtualnej maszyny

Aby ją uruchomić, po prostu naciśnij przycisk Uruchom.

Narzędzie wiersza poleceń

Przede wszystkim musisz zdecydować, który telefon chcesz użyć, aby zobaczyć listę możliwych telefonów wykonaj:

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

Kiedy już zdecydujesz, jaką nazwę chcesz użyć dla urządzenia, musisz zdecydować, jaką wersję Androida chcesz uruchomić na tym urządzeniu.
Możesz wyświetlić listę wszystkich opcji, używając polecenia sdkmanager:

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

I pobierz jeden (lub wszystkie), które chcesz użyć za pomocą:

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

Po pobraniu obrazu Androida, który chcesz użyć, możesz wyświetlić listę wszystkich pobranych obrazów Androida za pomocą:

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

W tym momencie zdecydowałeś się na urządzenie, które chcesz użyć, i pobrałeś obraz Androida, więc możesz utworzyć wirtualną maszynę, używając:

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

W ostatniej komendzie utworzyłem maszynę wirtualną o nazwie "AVD9" używając urządzenia "Nexus 5X" i obrazu Androida "system-images;android-28;google_apis;x86_64".
Teraz możesz wyświetlić listę maszyn wirtualnych, które utworzyłeś za pomocą:

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

Uruchom wirtualną maszynę

Już widzieliśmy, jak można wyświetlić utworzone wirtualne maszyny, ale można je również wyświetlić za pomocą:

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

Możesz po prostu uruchomić dowolną utworzoną maszynę wirtualną za pomocą:

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

Lub używając bardziej zaawansowanych opcji, możesz uruchomić wirtualną maszynę, taką jak:

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

Opcje wiersza poleceń

Jednak istnieje wiele różnych przydatnych opcji wiersza poleceń, które można użyć do uruchomienia maszyny wirtualnej. Poniżej znajdują się niektóre interesujące opcje, ale można znaleźć pełną listę tutaj

Uruchamianie

  • -snapshot name : Uruchomienie migawki maszyny wirtualnej
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : Wyświetlenie listy wszystkich zarejestrowanych migawek

Sieć

  • -dns-server 192.0.2.0, 192.0.2.255 : Pozwala na wskazanie oddzielonych przecinkami serwerów DNS dla maszyny wirtualnej.
  • -http-proxy 192.168.1.12:8080 : Pozwala na wskazanie serwera proxy HTTP do użycia (bardzo przydatne do przechwytywania ruchu za pomocą Burp)
  • -port 5556 : Ustawia numer portu TCP używanego dla konsoli i adb.
  • -ports 5556,5559 : Ustawia numery portów TCP używane dla konsoli i adb.
  • -tcpdump /path/dumpfile.cap : Przechwytuje cały ruch w pliku

System

  • -selinux {disabled|permissive} : Ustawia moduł zabezpieczeń Linux Security-Enhanced na tryb wyłączony lub permisywny w systemie operacyjnym Linux.
  • -timezone Europe/Paris : Ustawia strefę czasową dla urządzenia wirtualnego
  • -screen {touch(default)|multi-touch|o-touch} : Ustawia tryb emulowanego ekranu dotykowego.
  • -writable-system : Użyj tej opcji, aby mieć zapisywalny obraz systemu podczas sesji emulacji. Będziesz musiał również uruchomić adb root; adb remount. Jest to bardzo przydatne do instalacji nowego certyfikatu w systemie.

Rootowanie urządzenia z Google Play

Jeśli pobrałeś urządzenie z Google Play, nie będziesz w stanie uzyskać bezpośrednio uprawnień root, i otrzymasz ten komunikat o błędzie

$ adb root
adbd cannot run as root in production builds

Korzystając z rootAVD z Magisk udało mi się go zrootować (postępuj zgodnie na przykład z tego filmu lub tego).

Instalacja Certyfikatu Burp

Sprawdź następującą stronę, aby dowiedzieć się, jak zainstalować niestandardowy certyfikat CA:

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

Przydatne opcje AVD

Wykonaj migawkę

Możesz użyć interfejsu graficznego do wykonania migawki wirtualnej maszyny w dowolnym momencie:

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: