iOS Basic Testing Operations
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
iOS डिवाइस को अद्वितीय रूप से पहचानने के लिए, 40 अंकों का अनुक्रम जिसे UDID कहा जाता है, का उपयोग किया जाता है। macOS Catalina या नए संस्करणों पर, इसे Finder ऐप में पाया जा सकता है, क्योंकि iTunes अब मौजूद नहीं है। जब डिवाइस को USB के माध्यम से कनेक्ट किया जाता है और Finder में चुना जाता है, तो इसके नाम के तहत विवरण पर क्लिक करने पर UDID अन्य जानकारी के साथ प्रकट होता है।
macOS के Catalina से पहले के संस्करणों के लिए, iTunes UDID की खोज में सहायता करता है। विस्तृत निर्देश यहां मिल सकते हैं।
कमांड-लाइन उपकरण UDID प्राप्त करने के वैकल्पिक तरीके प्रदान करते हैं:
I/O रजिस्ट्रि एक्सप्लोरर टूल ioreg
का उपयोग करना:
ideviceinstaller
का उपयोग macOS (और Linux) के लिए:
system_profiler
का उपयोग करना:
instruments
का उपयोग करके उपकरणों की सूची बनाना:
SSH एक्सेस को OpenSSH पैकेज को जेलब्रेक के बाद स्थापित करके सक्षम किया जाता है, जो ssh root@<device_ip_address>
के माध्यम से कनेक्शन की अनुमति देता है। डिवाइस को सुरक्षित करने के लिए उपयोगकर्ताओं root
और mobile
के लिए डिफ़ॉल्ट पासवर्ड (alpine
) को बदलना महत्वपूर्ण है।
USB के माध्यम से SSH Wi-Fi की अनुपस्थिति में आवश्यक हो जाता है, iproxy
का उपयोग करके SSH कनेक्शनों के लिए डिवाइस पोर्ट को मैप किया जाता है। यह सेटअप USB के माध्यम से SSH एक्सेस को सक्षम करता है, जिसे चलाकर:
On-device shell applications, जैसे NewTerm 2, सीधे डिवाइस इंटरैक्शन को सुविधाजनक बनाते हैं, जो समस्या निवारण के लिए विशेष रूप से उपयोगी है। Reverse SSH shells भी होस्ट कंप्यूटर से दूरस्थ पहुंच के लिए स्थापित किए जा सकते हैं।
भूल गए पासवर्ड को डिफ़ॉल्ट (alpine
) पर रीसेट करने के लिए, /private/etc/master.passwd
फ़ाइल को संपादित करना आवश्यक है। इसमें मौजूदा हैश को root
और mobile
उपयोगकर्ता प्रविष्टियों के बगल में alpine
के लिए हैश के साथ बदलना शामिल है।
Archiving and Retrieval via SSH and SCP: एप्लिकेशन के Data निर्देशिका को tar
का उपयोग करके संग्रहित करना और फिर इसे scp
का उपयोग करके स्थानांतरित करना सीधा है। नीचे दिया गया कमांड Data निर्देशिका को .tgz फ़ाइल में संग्रहित करता है, जिसे फिर डिवाइस से खींचा जाता है:
iFunbox और iExplorer का उपयोग करना: ये GUI टूल iOS उपकरणों पर फ़ाइलों को प्रबंधित करने के लिए उपयोगी हैं। हालाँकि, iOS 8.4 से शुरू होकर, Apple ने इन टूल्स की पहुँच को एप्लिकेशन सैंडबॉक्स तक सीमित कर दिया है जब तक कि उपकरण जेलब्रोकन न हो।
Objection के साथ इंटरएक्टिव शेल: Objection लॉन्च करने से एक ऐप के Bundle निर्देशिका तक पहुँच मिलती है। यहाँ से, आप ऐप के Documents निर्देशिका में नेविगेट कर सकते हैं और फ़ाइलों का प्रबंधन कर सकते हैं, जिसमें उन्हें iOS उपकरण से डाउनलोड और अपलोड करना शामिल है।
ओवर-दी-एयर (OTA) वितरण लिंक: परीक्षण के लिए OTA के माध्यम से वितरित ऐप्स को ITMS सेवाओं के संपत्ति डाउनलोडर टूल का उपयोग करके डाउनलोड किया जा सकता है, जिसे npm के माध्यम से स्थापित किया गया है और स्थानीय रूप से IPA फ़ाइल को सहेजने के लिए उपयोग किया जाता है।
IPA से: IPA को अनज़िप करें ताकि डिक्रिप्टेड ऐप बाइनरी तक पहुंच सकें।
जेलब्रोकन डिवाइस से: ऐप इंस्टॉल करें और मेमोरी से डिक्रिप्टेड बाइनरी निकालें।
मैनुअल डिक्रिप्शन अवलोकन: iOS ऐप बाइनरी को Apple द्वारा FairPlay का उपयोग करके एन्क्रिप्ट किया गया है। रिवर्स-इंजीनियरिंग के लिए, डिक्रिप्टेड बाइनरी को मेमोरी से डंप करना आवश्यक है। डिक्रिप्शन प्रक्रिया में PIE फ्लैग की जांच करना, मेमोरी फ्लैग को समायोजित करना, एन्क्रिप्टेड सेक्शन की पहचान करना, और फिर इस सेक्शन को इसके डिक्रिप्टेड रूप के साथ डंप और बदलना शामिल है।
PIE फ्लैग की जांच और संशोधन:
एन्क्रिप्टेड सेक्शन की पहचान करना और मेमोरी डंप करना:
otool
का उपयोग करके एन्क्रिप्टेड सेक्शन के प्रारंभ और अंत पते निर्धारित करें और जेलब्रोकन डिवाइस से gdb का उपयोग करके मेमोरी डंप करें।
एन्क्रिप्टेड सेक्शन को ओवरराइट करना:
मूल ऐप बाइनरी में एन्क्रिप्टेड सेक्शन को डिक्रिप्टेड डंप से बदलें।
अंतिम डिक्रिप्शन: बाइनरी के मेटाडेटा को संशोधित करें ताकि एन्क्रिप्शन की अनुपस्थिति को इंगित किया जा सके, जैसे कि MachOView का उपयोग करते हुए, cryptid
को 0 पर सेट करें।
frida-ios-dump उपकरण का उपयोग iOS उपकरणों से ऐप्स को स्वचालित रूप से डिक्रिप्ट और निकालने के लिए किया जाता है। प्रारंभ में, dump.py
को iOS उपकरण से कनेक्ट करने के लिए कॉन्फ़िगर करना आवश्यक है, जिसे iproxy के माध्यम से लोकलहोस्ट पर पोर्ट 2222 के माध्यम से या सीधे उपकरण के IP पते और पोर्ट के माध्यम से किया जा सकता है।
उपकरण पर स्थापित ऐप्स को सूचीबद्ध करने के लिए कमांड का उपयोग किया जा सकता है:
एक विशिष्ट ऐप, जैसे कि Telegram, को डंप करने के लिए निम्नलिखित कमांड का उपयोग किया जाता है:
यह कमांड ऐप डंप शुरू करता है, जिसके परिणामस्वरूप वर्तमान निर्देशिका में Telegram.ipa
फ़ाइल का निर्माण होता है। यह प्रक्रिया जेलब्रोकन उपकरणों के लिए उपयुक्त है, क्योंकि बिना हस्ताक्षरित या नकली हस्ताक्षरित ऐप्स को ios-deploy जैसे उपकरणों का उपयोग करके फिर से स्थापित किया जा सकता है।
flexdecrypt उपकरण, इसके रैपर flexdump के साथ, स्थापित अनुप्रयोगों से IPA फ़ाइलों को निकालने की अनुमति देता है। उपकरण पर flexdecrypt के लिए स्थापना कमांड में .deb
पैकेज को डाउनलोड और स्थापित करना शामिल है। flexdump का उपयोग ऐप्स की सूची बनाने और डंप करने के लिए किया जा सकता है, जैसा कि नीचे दिए गए कमांड में दिखाया गया है:
bagbak, एक और Frida-आधारित उपकरण, ऐप डिक्रिप्शन के लिए एक जेलब्रोकन डिवाइस की आवश्यकता होती है:
r2flutch, radare और frida दोनों का उपयोग करते हुए, ऐप डिक्रिप्शन और डंपिंग के लिए कार्य करता है। अधिक जानकारी इसके GitHub पृष्ठ पर मिल सकती है।
Sideloading का अर्थ है आधिकारिक ऐप स्टोर के बाहर एप्लिकेशन इंस्टॉल करना। यह प्रक्रिया installd daemon द्वारा संभाली जाती है और इसके लिए ऐप्स को Apple द्वारा जारी किए गए सर्टिफिकेट के साथ साइन किया जाना आवश्यक है। जेलब्रोकन डिवाइस इस प्रक्रिया को AppSync के माध्यम से बायपास कर सकते हैं, जो नकली-साइन किए गए IPA पैकेजों के इंस्टॉलेशन की अनुमति देता है।
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 में जोड़ें।
iPhone या iPod touch डिवाइस पर iPad-विशिष्ट एप्लिकेशन इंस्टॉल करने के लिए, Info.plist फ़ाइल में UIDeviceFamily मान को 1 में बदलना होगा। हालांकि, इस संशोधन के लिए IPA फ़ाइल को फिर से साइन करने की आवश्यकता होती है क्योंकि सिग्नेचर वैलिडेशन चेक होते हैं।
नोट: यदि एप्लिकेशन नई iPad मॉडल के लिए विशेष क्षमताओं की मांग करता है जबकि पुरानी iPhone या iPod touch का उपयोग किया जा रहा है, तो यह विधि विफल हो सकती है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)