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

16 KiB

AVD - Android Virtual Device

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

इस सामग्री बनाने में मदद के लिए @offsecjay का बहुत बहुत धन्यवाद।

क्या है

Android स्टूडियो को Android के वर्चुअल मशीन चलाने की अनुमति है जिन्हें आप APKs का परीक्षण करने के लिए उपयोग कर सकते हैं। इनका उपयोग करने के लिए आपको निम्नलिखित की आवश्यकता होगी:

Windows में (मेरे मामले में) Android स्टूडियो स्थापित करने के बाद मेरे पास SDK टूल्स स्थापित थे: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools

Mac में आप SDK टूल्स डाउनलोड कर सकते हैं और PATH में रख सकते हैं चलाकर:

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

या Android Studio GUI से जैसा https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a में दिखाया गया है जो इन्हें ~/Library/Android/sdk/cmdline-tools/latest/bin/ और ~/Library/Android/sdk/platform-tools/ और ~/Library/Android/sdk/emulator/ में इंस्टॉल करेगा।

जावा समस्याओं के लिए:

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

GUI

वर्चुअल मशीन तैयार करें

यदि आपने Android स्टूडियो इंस्टॉल किया है, तो आप सीधे मुख्य परियोजना दृश्य खोल सकते हैं और पहुंच सकते हैं: Tools --> AVD Manager.

फिर, Create Virtual Device पर क्लिक करें

**उस फोन को चुनें जिसका उपयोग करना चाहते हैं और Next पर क्लिक करें।

{% hint style="warning" %} यदि आपको Play Store स्थापित फोन की आवश्यकता है तो Play Store आइकन वाला एक चुनें!

{% endhint %}

वर्तमान दृश्य में आपको Android इमेज का चयन और डाउनलोड करने की सुविधा मिलेगी जिस पर फोन चलेगा:

इसलिए, इसे चुनें और यदि यह डाउनलोड नहीं है तो नाम के पास Download प्रतीक पर क्लिक करें (अब तक इमेज डाउनलोड होने तक प्रतीक्षा करें).
जब इमेज डाउनलोड हो जाए, तो बस Next और Finish का चयन करें।

वर्चुअल मशीन बना दी जाएगी। अब हर बार जब आप AVD मैनेजर तक पहुंचेंगे तो यह मौजूद होगा

वर्चुअल मशीन चलाएं

इसे चलाने के लिए बस Start button दबाएं।

कमांड लाइन टूल

सबसे पहले आपको यह तय करना होगा कि आप कौन सा फोन उपयोग करना चाहते हैं, संभावित फोनों की सूची देखने के लिए निम्नलिखित का प्रयोग करें:

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

जैसे ही आप उस उपकरण का नाम तय कर लेते हैं जिसका इस्तेमाल करना चाहते हैं, तो आपको इस उपकरण में चलाने के लिए कौन सा Android इमेज चाहिए यह तय करना होगा।
आप sdkmanager का उपयोग करके सभी विकल्पों की सूची देख सकते हैं:

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

और डाउनलोड करें जिसे आप उपयोग करना चाहते हैं (या सभी) के साथ:

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

जब आप वह Android छवि डाउनलोड कर लेते हैं जिसे आप उपयोग करना चाहते हैं, तो आप निम्नलिखित कमांड के साथ सभी डाउनलोड की गई Android छवियों की सूची देख सकते हैं:

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

इस समय आपने यह निर्णय लिया है कि आप कौन सा उपकरण उपयोग करना चाहते हैं और आपने Android छवि डाउनलोड कर ली है, तो आप वर्चुअल मशीन बना सकते हैं उपयोग करके:

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

अंतिम कमांड में मैंने एक वीएम बनाई "AVD9" नामक, डिवाइस "Nexus 5X" और एंड्रॉयड इमेज "system-images;android-28;google_apis;x86_64" का उपयोग किया।
अब आप निम्नलिखित के साथ बनाए गए वर्चुअल मशीनों की सूची देख सकते हैं:

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

वर्चुअल मशीन चलाएं

हमने पहले ही देखा है कि आप कैसे बनाई गई वर्चुअल मशीनों की सूची देख सकते हैं, लेकिन आप इसका उपयोग करके उन्हें सूचीबद्ध कर सकते हैं:

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

आप बस निम्नलिखित का उपयोग करके बनाई गई किसी भी वर्चुअल मशीन को चला सकते हैं:

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

या आप एक वर्चुअल मशीन चला सकते हैं जैसे:

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

कमांड लाइन विकल्प

हालांकि, कई विभिन्न कमांड लाइन उपयोगी विकल्प हैं जिन्हें आप एक वर्चुअल मशीन प्रारंभ करने के लिए उपयोग कर सकते हैं। नीचे आप कुछ दिलचस्प विकल्प पा सकते हैं लेकिन यहाँ पूरी सूची पा सकते हैं

बूट

  • -snapshot name : VM स्नैपशॉट शुरू करें
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : रिकॉर्ड किए गए सभी स्नैपशॉट्स की सूची दें

नेटवर्क

  • -dns-server 192.0.2.0, 192.0.2.255 : VM के लिए DNS सर्वर को अंकित करने की अनुमति दें।
  • -http-proxy 192.168.1.12:8080 : उपयोग करने के लिए एक HTTP प्रॉक्सी को अंकित करने की अनुमति दें (Burp का उपयोग करके ट्रैफिक को कैप्चर करने के लिए बहुत उपयोगी)
  • -port 5556 : कंसोल और adb के लिए उपयोग किए जाने वाले TCP पोर्ट नंबर सेट करें।
  • -ports 5556,5559 : कंसोल और adb के लिए उपयोग किए जाने वाले TCP पोर्ट सेट करें।
  • -tcpdump /path/dumpfile.cap : एक फ़ाइल में सभी ट्रैफ़िक को कैप्चर करें

सिस्टम

  • -selinux {disabled|permissive} : एक लिनक्स ऑपरेटिंग सिस्टम पर सुरक्षा-वर्धित लिनक्स सुरक्षा मॉड्यूल को या तो अक्षम या अनुमोदनात्मक मोड में सेट करें।
  • -timezone Europe/Paris : वर्चुअल डिवाइस के लिए समय क्षेत्र सेट करें
  • -screen {touch(default)|multi-touch|o-touch} : नकली टच स्क्रीन मोड सेट करें।
  • -writable-system : अपने अनुकरण सत्र के दौरान एक लिखने योग्य सिस्टम इमेज होने के लिए इस विकल्प का उपयोग करें। आपको adb root; adb remount भी चलाने की आवश्यकता होगी। इसका उपयोग सिस्टम में एक नया प्रमाणपत्र स्थापित करने के लिए बहुत उपयोगी है।

प्ले स्टोर डिवाइस को रूट करना

यदि आपने प्ले स्टोर के साथ एक डिवाइस डाउनलोड किया है तो आप सीधे रूट प्राप्त नहीं कर पाएंगे, और आपको यह त्रुटि संदेश मिलेगा

$ adb root
adbd cannot run as root in production builds

Using rootAVD with Magisk मैंने इसे रूट करने में सफल रहा (उदाहरण के लिए इस वीडियो या इस वीडियो का पालन करें)।

बर्प प्रमाणपत्र इंस्टॉल करें

कस्टम CA प्रमाणपत्र को कैसे इंस्टॉल करें इसे सीखने के लिए निम्नलिखित पृष्ठ की जाँच करें:

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

अच्छे AVD विकल्प

स्नैपशॉट लें

आप GUI का उपयोग करके किसी भी समय VM का स्नैपशॉट ले सकते हैं: