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

11 KiB
Raw Blame History

AVD - Android Sanal Cihazı

AWS hacklemeyi sıfırdan ileri seviyeye öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

Bu içeriği oluştururken yardımları için @offsecjay'e çok teşekkür ederim.

Nedir

Android Studio, APK'leri test etmek için kullanabileceğiniz Android sanal makinelerini çalıştırmaya izin verir. Bunları kullanabilmek için şunlara ihtiyacınız olacak:

Windows'ta (benim durumumda) Android Studio'yu yükledikten sonra SDK Araçları şuraya yüklendi: C:\Users\<KullanıcıAdı>\AppData\Local\Android\Sdk\tools

Mac'te SDK araçlarını indirebilir ve PATH'te çalıştırarak sahip olabilirsiniz:

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

Ya da Android Studio GUI'den belirtildiği gibi https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a adresinde belirtildiği gibi ~/Library/Android/sdk/cmdline-tools/latest/bin/ ve ~/Library/Android/sdk/platform-tools/ ve ~/Library/Android/sdk/emulator/ dizinlerine yükleyecektir.

Java sorunları için:

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

GUI

Sanal Makineyi Hazırla

Eğer Android Studio'yu yüklediyseniz, ana proje görünümünü açabilir ve şuraya erişebilirsiniz: Tools --> AVD Manager.

Ardından, Create Virtual Device üzerine tıklayın

Kullanmak istediğiniz telefonu seçin ve Next üzerine tıklayın.

{% hint style="warning" %} Eğer Play Store yüklü bir telefon gerekiyorsa, Play Store simgesi olan birini seçin!

{% endhint %}

Mevcut görünümde, telefonun çalışacağı Android görüntüsünü seçebileceksiniz:

Bunu seçin ve eğer indirilmediyse, ismin yanındaki Download simgesine tıklayın (şimdiye kadar görüntünün indirilmesini bekleyin).
Görüntü indirildikten sonra, sadece Next ve Finish'e tıklayın.

Sanal makine oluşturulacak. Artık her AVD yönetimine eriştiğinizde mevcut olacak.

Sanal Makineyi Çalıştır

Çalıştırmak için sadece Start button'a basın.

Komut Satırı Aracı

Öncelikle hangi telefonu kullanmak istediğinize karar vermeniz gerekiyor, olası telefonların listesini görmek için şunu çalıştırın:

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

Bir cihaz adı belirledikten sonra, bu cihazda çalıştırmak istediğiniz Android görüntüsünü belirlemelisiniz.
Tüm seçenekleri sdkmanager kullanarak listeleyebilirsiniz:

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

Ve istediğiniz birini (veya tümünü) kullanmak için şunları indirin:

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

İstediğiniz Android görüntüsünü indirdikten sonra, indirilen tüm Android görüntülerini listeleyebilirsiniz.

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

Şu anda kullanmak istediğiniz cihazı seçtiniz ve Android imajını indirdiniz, bu yüzden şu adımları kullanarak sanal makine oluşturabilirsiniz:

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

Son komutta "AVD9" adında bir VM oluşturdum ve cihazı "Nexus 5X" ve Android görüntüsünü "system-images;android-28;google_apis;x86_64" kullanarak.
Şimdi oluşturduğunuz sanal makineleri listelemek için şunu yapabilirsiniz:

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

Sanal Makineyi Çalıştır

Zaten oluşturulan sanal makineleri nasıl listeleyebileceğinizi gördük, ancak onları şu şekilde de listeleyebilirsiniz:

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

Sadece şu komutu kullanarak oluşturulan herhangi bir sanal makineyi çalıştırabilirsiniz:

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

Ya da daha gelişmiş seçenekler kullanarak sanal bir makine çalıştırabilirsiniz:

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

Komut satırı seçenekleri

Ancak, bir sanal makineyi başlatmak için kullanabileceğiniz birçok farklı komut satırı kullanışlı seçenek bulunmaktadır. Aşağıda bazı ilginç seçenekleri bulabilirsiniz ancak burada tam bir liste bulabilirsiniz

Başlatma

  • -snapshot name : VM anlık görüntüsünü başlat
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : Kaydedilen tüm anlık görüntüleri listele

  • -dns-server 192.0.2.0, 192.0.2.255 : VM için virgülle ayrılmış DNS sunucularını belirtmeye izin verir.
  • -http-proxy 192.168.1.12:8080 : Kullanılacak bir HTTP proxy'sini belirtmeye izin verir (trafiği Burp kullanarak yakalamak için çok kullanışlıdır)
  • -port 5556 : Konsol ve adb için kullanılan TCP port numarasını ayarlar.
  • -ports 5556,5559 : Konsol ve adb için kullanılan TCP portlarını ayarlar.
  • -tcpdump /path/dumpfile.cap : Tüm trafiği bir dosyada yakalar

Sistem

  • -selinux {disabled|permissive} : Güvenlik Geliştirilmiş Linux güvenlik modülünü bir Linux işletim sisteminde devre dışı veya izinli moduna ayarlar.
  • -timezone Europe/Paris : Sanal cihaz için zaman dilimini ayarlar
  • -screen {touch(default)|multi-touch|o-touch} : Taklit edilen dokunmatik ekran modunu ayarlar.
  • -writable-system : Emülasyon oturumunuz sırasında yazılabilir bir sistem görüntüsüne sahip olmak için bu seçeneği kullanın. Ayrıca adb root; adb remount komutlarını çalıştırmanız gerekecektir. Bu, sisteme yeni bir sertifika yüklemek için çok kullanışlıdır.

Play Store cihazını rootlama

Play Store ile bir cihaz indirdiyseniz, doğrudan root alamayacak ve aşağıdaki hata mesajını alacaksınız

$ adb root
adbd cannot run as root in production builds

rootAVD kullanarak Magisk ile root yetkisi aldım (örneğin bu videoyu veya bu videoyu takip edin).

Burp Sertifikası Kurulumu

Özel bir CA sertifikası nasıl kurulacağını öğrenmek için aşağıdaki sayfaya bakın:

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

Güzel AVD Seçenekleri

Anlık Görüntü Al

Herhangi bir zamanda VM'in anlık görüntüsünü almak için GUI'yi kullanabilirsiniz:

Sıfırdan kahraman olmak için AWS hackleme becerilerini htARTE (HackTricks AWS Red Team Expert) ile öğrenin!

HackTricks'i desteklemenin diğer yolları: