11 KiB
AVD - Android Virtual Device
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Dziękuję bardzo @offsecjay za pomoc w tworzeniu tej treści.
Co to jest
Android Studio pozwala na uruchamianie maszyn wirtualnych Android, które możesz wykorzystać do testowania APK. Aby z nich skorzystać, będziesz potrzebować:
- Narzędzi SDK Android - Pobierz tutaj.
- Lub Android Studio (z narzędziami SDK Android) - Pobierz tutaj.
W systemie Windows (w moim przypadku) po zainstalowaniu Android Studio miałem zainstalowane narzędzia SDK w: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
Na Macu możesz pobrać narzędzia SDK i mieć je w PATH, uruchamiając:
brew tap homebrew/cask
brew install --cask android-sdk
Lub z Android Studio GUI, jak wskazano w https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a, co zainstaluje je w ~/Library/Android/sdk/cmdline-tools/latest/bin/
oraz ~/Library/Android/sdk/platform-tools/
i ~/Library/Android/sdk/emulator/
W przypadku problemów z Javą:
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
GUI
Przygotuj Maszynę Wirtualną
Jeśli zainstalowałeś Android Studio, możesz po prostu otworzyć główny widok projektu i uzyskać dostęp do: Narzędzia --> Menadżer AVD.
Następnie kliknij na Utwórz Wirtualne Urządzenie
wybierz telefon, którego chcesz użyć i kliknij na Dalej.
{% hint style="warning" %} Jeśli potrzebujesz telefonu z zainstalowanym Sklepem Play, wybierz jeden z ikoną Sklepu Play!
{% endhint %}W bieżącym widoku będziesz mógł wybrać i pobrać obraz Androida, który telefon będzie uruchamiał:
Więc, wybierz go, a jeśli nie jest pobrany, kliknij na symbol Pobierz obok nazwy (teraz poczekaj, aż obraz zostanie pobrany).
Gdy obraz zostanie pobrany, po prostu wybierz Dalej
i Zakończ
.
Maszyna wirtualna zostanie utworzona. Teraz za każdym razem, gdy uzyskasz dostęp do menedżera AVD, będzie obecna.
Uruchom Maszynę Wirtualną
Aby uruchomić ją, po prostu naciśnij Przycisk Start.
Narzędzie Wiersza Poleceń
Przede wszystkim musisz zdecydować, którego telefonu 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
[...]
Gdy zdecydujesz o nazwie urządzenia, które chcesz użyć, musisz zdecydować, który obraz Androida chcesz uruchomić na tym urządzeniu.
Możesz wylistować wszystkie opcje używając sdkmanager
:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
I pobierz ten (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 Android, którego chcesz użyć, możesz wyświetlić wszystkie pobrane obrazy Android 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ś, jakiego urządzenia chcesz użyć i pobrałeś obraz Androida, więc możesz utworzyć maszynę wirtualną za pomocą:
{% 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 stworzyłem VM o nazwie "AVD9" używając urządzenia "Nexus 5X" oraz obrazu Android "system-images;android-28;google_apis;x86_64".
Teraz możesz wyświetlić listę maszyn wirtualnych, które stworzył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 Maszynę Wirtualną
Już widzieliśmy, jak możesz wylistować utworzone maszyny wirtualne, ale możesz je również wylistować używając:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
Możesz po prostu uruchomić dowolną maszynę wirtualną utworzoną 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 korzystając z bardziej zaawansowanych opcji, możesz uruchomić maszynę wirtualną, 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żesz wykorzystać do uruchomienia maszyny wirtualnej. Poniżej znajdziesz kilka interesujących opcji, ale możesz znaleźć pełną listę tutaj
Uruchamianie
-snapshot name
: Uruchom snapshot VM-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Wyświetl wszystkie zarejestrowane snapshoty
Sieć
-dns-server 192.0.2.0, 192.0.2.255
: Pozwól wskazać oddzielone przecinkami serwery DNS dla VM.-http-proxy 192.168.1.12:8080
: Pozwól wskazać proxy HTTP do użycia (bardzo przydatne do przechwytywania ruchu za pomocą Burp)-port 5556
: Ustaw numer portu TCP używanego dla konsoli i adb.-ports 5556,5559
: Ustaw porty TCP używane dla konsoli i adb.-tcpdump /path/dumpfile.cap
: Przechwyć cały ruch do pliku
System
-selinux {disabled|permissive}
: Ustaw moduł zabezpieczeń Security-Enhanced Linux na tryb wyłączony lub zezwalający na działanie w systemie operacyjnym Linux.-timezone Europe/Paris
: Ustaw strefę czasową dla urządzenia wirtualnego-screen {touch(default)|multi-touch|o-touch}
: Ustaw emulowany tryb 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
. To jest bardzo przydatne do zainstalowania nowego certyfikatu w systemie.
Rootowanie urządzenia z Play Store
Jeśli pobrałeś urządzenie z Play Store, nie będziesz mógł uzyskać roota bezpośrednio i otrzymasz ten komunikat o błędzie
$ adb root
adbd cannot run as root in production builds
Using rootAVD with Magisk udało mi się uzyskać dostęp do roota (zobacz na przykład ten film lub ten).
Zainstaluj certyfikat 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 %}
Fajne opcje AVD
Zrób zrzut ekranu
Możesz użyć GUI, aby w dowolnym momencie zrobić zrzut ekranu VM:
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na GitHubie.