iOS Basic Testing Operations

Support HackTricks

iOS डिवाइस पहचान और पहुंच का सारांश

iOS डिवाइस का UDID पहचानना

iOS डिवाइस को अद्वितीय रूप से पहचानने के लिए, 40 अंकों का अनुक्रम जिसे UDID कहा जाता है, का उपयोग किया जाता है। macOS Catalina या नए संस्करणों पर, इसे Finder ऐप में पाया जा सकता है, क्योंकि iTunes अब मौजूद नहीं है। जब डिवाइस को USB के माध्यम से कनेक्ट किया जाता है और Finder में चुना जाता है, तो इसके नाम के तहत विवरण पर क्लिक करने पर UDID अन्य जानकारी के साथ प्रकट होता है।

macOS के Catalina से पहले के संस्करणों के लिए, iTunes UDID की खोज में सहायता करता है। विस्तृत निर्देश यहां मिल सकते हैं।

कमांड-लाइन उपकरण UDID प्राप्त करने के वैकल्पिक तरीके प्रदान करते हैं:

  • I/O Registry Explorer टूल ioreg का उपयोग करते हुए:

$ ioreg -p IOUSB -l | grep "USB Serial"
  • ideviceinstaller का उपयोग macOS (और Linux) के लिए:

$ brew install ideviceinstaller
$ idevice_id -l
  • system_profiler का उपयोग करना:

$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
  • instruments का उपयोग करके उपकरणों की सूची बनाना:

$ instruments -s devices

डिवाइस शेल तक पहुँचना

SSH पहुँच को OpenSSH पैकेज को जेलब्रेक के बाद स्थापित करके सक्षम किया जाता है, जो ssh root@<device_ip_address> के माध्यम से कनेक्शन की अनुमति देता है। डिवाइस को सुरक्षित करने के लिए उपयोगकर्ताओं root और mobile के लिए डिफ़ॉल्ट पासवर्ड (alpine) को बदलना महत्वपूर्ण है।

USB के माध्यम से SSH Wi-Fi की अनुपस्थिति में आवश्यक हो जाता है, iproxy का उपयोग करके SSH कनेक्शनों के लिए डिवाइस पोर्ट को मैप करने के लिए। यह सेटअप USB के माध्यम से SSH पहुँच सक्षम करता है, इसे चलाकर:

$ iproxy 2222 22
$ ssh -p 2222 root@localhost

On-device shell applications, जैसे NewTerm 2, सीधे डिवाइस इंटरैक्शन को सुविधाजनक बनाते हैं, जो समस्या निवारण के लिए विशेष रूप से उपयोगी है। Reverse SSH shells को होस्ट कंप्यूटर से दूरस्थ पहुंच के लिए भी स्थापित किया जा सकता है।

Resetting Forgotten Passwords

भूल गए पासवर्ड को डिफ़ॉल्ट (alpine) पर रीसेट करने के लिए, /private/etc/master.passwd फ़ाइल को संपादित करना आवश्यक है। इसमें मौजूदा हैश को root और mobile उपयोगकर्ता प्रविष्टियों के बगल में alpine के लिए हैश के साथ बदलना शामिल है।

Data Transfer Techniques

Transferring App Data Files

Archiving and Retrieval via SSH and SCP: एप्लिकेशन के Data निर्देशिका को tar का उपयोग करके संग्रहित करना और फिर scp का उपयोग करके स्थानांतरित करना सीधा है। नीचे दिया गया कमांड Data निर्देशिका को .tgz फ़ाइल में संग्रहित करता है, जिसे फिर डिवाइस से खींचा जाता है:

tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .

ग्राफिकल यूजर इंटरफेस टूल्स

iFunbox और iExplorer का उपयोग करना: ये GUI टूल iOS उपकरणों पर फ़ाइलों को प्रबंधित करने के लिए उपयोगी हैं। हालाँकि, iOS 8.4 से शुरू होकर, Apple ने इन टूल्स की पहुँच को एप्लिकेशन सैंडबॉक्स तक सीमित कर दिया है जब तक कि उपकरण जेलब्रोकन न हो।

फ़ाइल प्रबंधन के लिए Objection का उपयोग करना

Objection के साथ इंटरएक्टिव शेल: Objection लॉन्च करने से एक ऐप के Bundle निर्देशिका तक पहुँच मिलती है। यहाँ से, आप ऐप के Documents निर्देशिका में नेविगेट कर सकते हैं और फ़ाइलों का प्रबंधन कर सकते हैं, जिसमें उन्हें iOS उपकरण से डाउनलोड और अपलोड करना शामिल है।

objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>

ऐप्स प्राप्त करना और निकालना

IPA फ़ाइल प्राप्त करना

ओवर-दी-एयर (OTA) वितरण लिंक: परीक्षण के लिए OTA के माध्यम से वितरित ऐप्स को ITMS सेवाओं के संपत्ति डाउनलोडर टूल का उपयोग करके डाउनलोड किया जा सकता है, जिसे npm के माध्यम से स्थापित किया गया है और स्थानीय रूप से IPA फ़ाइल को सहेजने के लिए उपयोग किया जाता है।

npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa

ऐप बाइनरी निकालना

  1. IPA से: IPA को अनज़िप करें ताकि डिक्रिप्टेड ऐप बाइनरी तक पहुंचा जा सके।

  2. जेलब्रोकन डिवाइस से: ऐप इंस्टॉल करें और मेमोरी से डिक्रिप्टेड बाइनरी निकालें।

डिक्रिप्शन प्रक्रिया

मैनुअल डिक्रिप्शन अवलोकन: iOS ऐप बाइनरी को Apple द्वारा FairPlay का उपयोग करके एन्क्रिप्ट किया गया है। रिवर्स-इंजीनियरिंग के लिए, डिक्रिप्टेड बाइनरी को मेमोरी से डंप करना आवश्यक है। डिक्रिप्शन प्रक्रिया में PIE फ्लैग की जांच करना, मेमोरी फ्लैग को समायोजित करना, एन्क्रिप्टेड सेक्शन की पहचान करना, और फिर इस सेक्शन को इसके डिक्रिप्टेड रूप के साथ डंप और बदलना शामिल है।

PIE फ्लैग की जांच और संशोधन:

otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World

एन्क्रिप्टेड सेक्शन की पहचान करना और मेमोरी डंप करना:

otool का उपयोग करके एन्क्रिप्टेड सेक्शन के प्रारंभ और अंत पते निर्धारित करें और जेलब्रोकन डिवाइस से gdb का उपयोग करके मेमोरी डंप करें।

otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000

एन्क्रिप्टेड सेक्शन को ओवरराइट करना:

मूल ऐप बाइनरी में एन्क्रिप्टेड सेक्शन को डिक्रिप्टेड डंप से बदलें।

dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App

अंतिम डिक्रिप्शन: बाइनरी के मेटाडेटा को संशोधित करें ताकि एन्क्रिप्शन की अनुपस्थिति को इंगित किया जा सके, जैसे कि MachOView का उपयोग करते हुए, cryptid को 0 पर सेट करें।

डिक्रिप्शन (स्वचालित रूप से)

frida-ios-dump

frida-ios-dump उपकरण का उपयोग iOS उपकरणों से ऐप्स को स्वचालित रूप से डिक्रिप्ट और निकालने के लिए किया जाता है। प्रारंभ में, dump.py को iOS उपकरण से कनेक्ट करने के लिए कॉन्फ़िगर करना आवश्यक है, जिसे iproxy के माध्यम से लोकलहोस्ट पर पोर्ट 2222 के माध्यम से या सीधे उपकरण के IP पते और पोर्ट के माध्यम से किया जा सकता है।

उपकरण पर स्थापित ऐप्स को सूचीबद्ध करने के लिए कमांड का उपयोग किया जा सकता है:

$ python dump.py -l

एक विशिष्ट ऐप, जैसे कि Telegram, को डंप करने के लिए निम्नलिखित कमांड का उपयोग किया जाता है:

$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph

यह कमांड ऐप डंप शुरू करता है, जिसके परिणामस्वरूप वर्तमान निर्देशिका में Telegram.ipa फ़ाइल का निर्माण होता है। यह प्रक्रिया जेलब्रोकन उपकरणों के लिए उपयुक्त है, क्योंकि बिना हस्ताक्षरित या नकली हस्ताक्षरित ऐप्स को ios-deploy जैसे उपकरणों का उपयोग करके फिर से स्थापित किया जा सकता है।

flexdecrypt

flexdecrypt उपकरण, इसके रैपर flexdump के साथ, स्थापित अनुप्रयोगों से IPA फ़ाइलों को निकालने की अनुमति देता है। डिवाइस पर flexdecrypt के लिए स्थापना कमांड में .deb पैकेज को डाउनलोड और स्थापित करना शामिल है। flexdump का उपयोग ऐप्स को सूचीबद्ध और डंप करने के लिए किया जा सकता है, जैसा कि नीचे दिए गए कमांड में दिखाया गया है:

apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app

bagbak

bagbak, एक और Frida-आधारित उपकरण, ऐप डिक्रिप्शन के लिए एक जेलब्रोकन डिवाइस की आवश्यकता होती है:

bagbak --raw Chrome

r2flutch

r2flutch, radare और frida दोनों का उपयोग करते हुए, ऐप डिक्रिप्शन और डंपिंग के लिए कार्य करता है। अधिक जानकारी इसके GitHub पृष्ठ पर मिल सकती है।

ऐप्स इंस्टॉल करना

Sideloading का अर्थ है आधिकारिक ऐप स्टोर के बाहर ऐप्स इंस्टॉल करना। यह प्रक्रिया installd daemon द्वारा संभाली जाती है और इसके लिए ऐप्स को Apple द्वारा जारी किए गए सर्टिफिकेट के साथ साइन किया जाना आवश्यक है। जेलब्रोकन डिवाइस इस प्रक्रिया को AppSync के माध्यम से बायपास कर सकते हैं, जो नकली-साइन किए गए IPA पैकेजों की इंस्टॉलेशन की अनुमति देता है।

Sideloading टूल्स

  • Cydia Impactor: iOS पर IPA फ़ाइलों और Android पर APK फ़ाइलों को साइन और इंस्टॉल करने के लिए एक टूल। गाइड और समस्या निवारण yalujailbreak.net पर मिल सकते हैं।

  • libimobiledevice: Linux और macOS के लिए एक लाइब्रेरी जो iOS डिवाइस के साथ संवाद करती है। USB के माध्यम से ऐप्स इंस्टॉल करने के लिए ideviceinstaller के लिए इंस्टॉलेशन कमांड और उपयोग के उदाहरण प्रदान किए गए हैं।

  • ipainstaller: यह कमांड-लाइन टूल iOS डिवाइस पर सीधे ऐप इंस्टॉलेशन की अनुमति देता है।

  • ios-deploy: macOS उपयोगकर्ताओं के लिए, ios-deploy कमांड लाइन से iOS ऐप्स इंस्टॉल करता है। IPA को अनज़िप करना और सीधे ऐप लॉन्च के लिए -m फ्लैग का उपयोग करना प्रक्रिया का हिस्सा है।

  • Xcode: Xcode का उपयोग करके ऐप्स इंस्टॉल करने के लिए Window/Devices and Simulators पर जाएं और ऐप को Installed Apps में जोड़ें।

गैर-iPad डिवाइस पर ऐप इंस्टॉलेशन की अनुमति दें

iPhone या iPod touch डिवाइस पर iPad-विशिष्ट ऐप्स इंस्टॉल करने के लिए, Info.plist फ़ाइल में UIDeviceFamily मान को 1 में बदलना आवश्यक है। हालांकि, इस संशोधन के लिए IPA फ़ाइल को फिर से साइन करने की आवश्यकता होती है क्योंकि सिग्नेचर वैलिडेशन चेक होते हैं।

नोट: यदि ऐप नई iPad मॉडल के लिए विशेष क्षमताओं की मांग करता है जबकि पुरानी iPhone या iPod touch का उपयोग किया जा रहा है, तो यह विधि विफल हो सकती है।

संदर्भ

Support HackTricks

Last updated