iOS Testing Environment

Support HackTricks

Apple Developer Program

एक प्रावधान पहचान एक Apple डेवलपर खाते से संबंधित सार्वजनिक और निजी कुंजियों का संग्रह है। ऐप्स पर हस्ताक्षर करने के लिए आपको 99$/वर्ष का भुगतान करना होगा ताकि आप Apple Developer Program में पंजीकरण कर सकें और अपनी प्रावधान पहचान प्राप्त कर सकें। इसके बिना, आप भौतिक डिवाइस पर स्रोत कोड से एप्लिकेशन नहीं चला सकेंगे। ऐसा करने का एक और विकल्प है जेलब्रोकन डिवाइस का उपयोग करना।

Xcode 7.2 से Apple ने एक विकल्प प्रदान किया है जिससे आप एक मुफ्त iOS विकास प्रावधान प्रोफ़ाइल बना सकते हैं जो आपको एक असली iPhone पर अपने एप्लिकेशन को लिखने और परीक्षण करने की अनुमति देती है। Xcode पर जाएं --> Preferences --> Accounts --> + (अपने क्रेडेंशियल्स के साथ नया एप्लि आईडी जोड़ें) --> निर्मित Apple ID पर क्लिक करें --> Manage Certificates --> + (Apple Development) --> Done __फिर, अपने iPhone पर अपने एप्लिकेशन को चलाने के लिए आपको पहले iPhone को कंप्यूटर पर भरोसा करने के लिए संकेत देना होगा। फिर, आप Xcode से मोबाइल पर एप्लिकेशन चलाने की कोशिश कर सकते हैं, लेकिन एक त्रुटि दिखाई देगी। इसलिए Settings --> General --> Profiles and Device Management पर जाएं --> अविश्वसनीय प्रोफ़ाइल का चयन करें और "Trust" पर क्लिक करें।

ध्यान दें कि एक ही हस्ताक्षर प्रमाणपत्र द्वारा हस्ताक्षरित एप्लिकेशन सुरक्षित तरीके से संसाधनों को साझा कर सकते हैं, जैसे कि कीचेन आइटम

प्रावधान प्रोफ़ाइल फोन के अंदर /Library/MobileDevice/ProvisioningProfiles में संग्रहीत होती हैं।

Simulator

ध्यान दें कि एक सिम्युलेटर एक एमुलेटर के समान नहीं है। सिम्युलेटर केवल डिवाइस के व्यवहार और कार्यों का अनुकरण करता है लेकिन वास्तव में उनका उपयोग नहीं करता।

Simulator

आपको जो पहली बात जाननी है वह यह है कि सिम्युलेटर के अंदर एक पेंटेस्ट करना जेलब्रोकन डिवाइस की तुलना में बहुत अधिक सीमित होगा

iOS ऐप बनाने और समर्थन करने के लिए आवश्यक सभी उपकरण केवल आधिकारिक रूप से Mac OS पर समर्थित हैं। Apple का वास्तविक उपकरण iOS एप्लिकेशन बनाने/डीबग करने/इंस्ट्रूमेंट करने के लिए Xcode है। इसका उपयोग अन्य घटकों को डाउनलोड करने के लिए किया जा सकता है जैसे कि सिम्युलेटर और विभिन्न SDK संस्करण जो आपके ऐप को बनाने और परीक्षण करने के लिए आवश्यक हैं। यह अत्यधिक अनुशंसित है कि आप आधिकारिक ऐप स्टोर से Xcode डाउनलोड करें। अन्य संस्करणों में मैलवेयर हो सकता है।

सिम्युलेटर फ़ाइलें /Users/<username>/Library/Developer/CoreSimulator/Devices में पाई जा सकती हैं।

सिम्युलेटर खोलने के लिए, Xcode चलाएं, फिर Xcode टैब में दबाएं --> Open Developer tools --> Simulator __अगली छवि में "iPod touch [...]" पर क्लिक करके आप परीक्षण के लिए अन्य डिवाइस का चयन कर सकते हैं:

Applications in the Simulator

/Users/<username>/Library/Developer/CoreSimulator/Devices के अंदर आप सभी स्थापित सिम्युलेटर पा सकते हैं। यदि आप एक एमुलेटर के अंदर बनाए गए एप्लिकेशन की फ़ाइलों तक पहुँच प्राप्त करना चाहते हैं, तो यह जानना मुश्किल हो सकता है कि किसमें ऐप स्थापित हैसही UID खोजने का एक त्वरित तरीका है कि सिम्युलेटर में ऐप को चलाएं और निष्पादित करें:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Once you know the UID the apps installed within it can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

हालांकि, आश्चर्यजनक रूप से आप यहाँ एप्लिकेशन नहीं पाएंगे। आपको /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/ तक पहुँचने की आवश्यकता है।

और इस फ़ोल्डर में आप एप्लिकेशन का पैकेज ढूंढ सकते हैं।

Emulator

Corellium एकमात्र सार्वजनिक रूप से उपलब्ध iOS एमुलेटर है। यह एक एंटरप्राइज SaaS समाधान है जिसमें प्रति उपयोगकर्ता लाइसेंस मॉडल है और कोई परीक्षण लाइसेंस प्रदान नहीं करता है।

Jailbeaking

Apple सख्ती से आवश्यक करता है कि iPhone पर चलने वाला कोड Apple द्वारा जारी किए गए प्रमाणपत्र से हस्ताक्षरित होना चाहिएJailbreaking उस प्रक्रिया को कहते हैं जिसमें सक्रिय रूप से ऐसी सीमाओं और अन्य सुरक्षा नियंत्रणों को बायपास किया जाता है जो OS द्वारा लगाए गए हैं। इसलिए, एक बार जब डिवाइस जेलब्रेक हो जाता है, तो इंटीग्रिटी चेक जो एप्लिकेशन के इंस्टॉल होने की जांच करता है, पैच किया जाता है ताकि इसे बायपास किया जा सके।

Android के विपरीत, आप iOS में "डेवलपर मोड" में स्विच नहीं कर सकते ताकि डिवाइस पर असाइन किए गए/अविश्वसनीय कोड को चलाया जा सके।

Android Rooting vs. iOS Jailbreaking

हालांकि अक्सर इसकी तुलना की जाती है, Android पर रूटिंग और iOS पर जेलब्रेकिंग मौलिक रूप से अलग प्रक्रियाएँ हैं। Android उपकरणों को su बाइनरी स्थापित करने या रूटेड कस्टम ROM के साथ सिस्टम को बदलने की आवश्यकता हो सकती है, जो अनिवार्य रूप से शोषण की आवश्यकता नहीं होती यदि बूटलोडर अनलॉक हो। कस्टम ROM को फ्लैश करना बूटलोडर को अनलॉक करने के बाद डिवाइस के OS को बदलता है, कभी-कभी शोषण की आवश्यकता होती है।

इसके विपरीत, iOS उपकरण कस्टम ROM को फ्लैश नहीं कर सकते क्योंकि बूटलोडर केवल Apple द्वारा हस्ताक्षरित छवियों को बूट करने की अनुमति देता है। iOS को जेलब्रेक करना Apple के कोड साइनिंग सुरक्षा को बायपास करने का लक्ष्य रखता है ताकि असाइन किए गए कोड को चलाया जा सके, यह प्रक्रिया Apple के निरंतर सुरक्षा सुधारों द्वारा जटिल होती है।

Jailbreaking Challenges

Jailbreaking iOS तेजी से कठिन होता जा रहा है क्योंकि Apple जल्दी से कमजोरियों को पैच करता है। iOS को डाउनग्रेड करना केवल एक रिलीज के बाद सीमित समय के लिए संभव है, जिससे जेलब्रेकिंग एक समय-संवेदनशील मामला बन जाता है। सुरक्षा परीक्षण के लिए उपयोग किए जाने वाले उपकरणों को अपडेट नहीं किया जाना चाहिए जब तक कि फिर से जेलब्रेकिंग की गारंटी न हो।

iOS अपडेट एक चुनौती-प्रतिक्रिया तंत्र (SHSH blobs) द्वारा नियंत्रित होते हैं, जो केवल Apple द्वारा हस्ताक्षरित प्रतिक्रियाओं के लिए स्थापना की अनुमति देता है। इस तंत्र को "साइनिंग विंडो" के रूप में जाना जाता है, जो OTA फर्मवेयर पैकेज को स्टोर करने और बाद में उपयोग करने की क्षमता को सीमित करता है। IPSW Downloads वेबसाइट वर्तमान साइनिंग विंडो की जांच करने के लिए एक संसाधन है।

Jailbreak Varieties

  • Tethered jailbreaks प्रत्येक रिबूट के लिए कंप्यूटर कनेक्शन की आवश्यकता होती है।

  • Semi-tethered jailbreaks बिना कंप्यूटर के गैर-जेलब्रेक मोड में बूट करने की अनुमति देते हैं।

  • Semi-untethered jailbreaks बिना कंप्यूटर की आवश्यकता के मैन्युअल रूप से फिर से जेलब्रेकिंग की आवश्यकता होती है।

  • Untethered jailbreaks बिना फिर से आवेदन की आवश्यकता के एक स्थायी जेलब्रेक समाधान प्रदान करते हैं।

Jailbreaking Tools and Resources

Jailbreaking उपकरण iOS संस्करण और डिवाइस के अनुसार भिन्न होते हैं। Can I Jailbreak?, The iPhone Wiki, और Reddit Jailbreak जैसे संसाधन अद्यतन जानकारी प्रदान करते हैं। उदाहरणों में शामिल हैं:

  • Checkra1n A7-A11 चिप उपकरणों के लिए।

  • Palera1n Checkm8 उपकरणों (A8-A11) के लिए iOS 15.0-16.5 पर।

  • Unc0ver iOS संस्करणों के लिए 14.8 तक।

अपने उपकरण को संशोधित करना जोखिम उठाता है, और जेलब्रेकिंग को सावधानी से किया जाना चाहिए।

Jailbreaking Benefits and Risks

Jailbreaking OS द्वारा लगाए गए सैंडबॉक्सिंग को हटा देता है, जिससे ऐप्स को पूरे फ़ाइल सिस्टम तक पहुँचने की अनुमति मिलती है। यह स्वतंत्रता अस्वीकृत ऐप्स को स्थापित करने और अधिक APIs तक पहुँचने की अनुमति देती है। हालाँकि, नियमित उपयोगकर्ताओं के लिए, संभावित सुरक्षा जोखिमों और डिवाइस की अस्थिरता के कारण जेलब्रेकिंग अनुशंसित नहीं है

After Jailbreaking

iOS Basic Testing Operations

Jailbreak Detection

कई एप्लिकेशन यह पता लगाने की कोशिश करेंगे कि क्या मोबाइल जेलब्रेक किया गया है और इस मामले में एप्लिकेशन नहीं चलेगा

  • जेलब्रेकिंग के बाद iOS फाइलें और फ़ोल्डर आमतौर पर स्थापित होते हैं, इन्हें यह निर्धारित करने के लिए खोजा जा सकता है कि क्या डिवाइस जेलब्रेक किया गया है।

  • एक जेलब्रेक किए गए डिवाइस में एप्लिकेशन को नए फ़ाइलों तक पढ़ने/लिखने की पहुँच मिलती है जो सैंडबॉक्स के बाहर होती हैं।

  • कुछ API कॉल अलग तरीके से व्यवहार करेंगी

  • OpenSSH सेवा की उपस्थिति।

  • /bin/sh को कॉल करने पर 0 के बजाय 1 लौटेगा।

Jailbreaking का पता लगाने के तरीके के बारे में अधिक जानकारी यहाँ

आप objection's ios jailbreak disable का उपयोग करके इन पहचान से बचने की कोशिश कर सकते हैं।

Jailbreak Detection Bypass

  • आप objection's ios jailbreak disable का उपयोग करके इन पहचान से बचने की कोशिश कर सकते हैं।

  • आप Liberty Lite (https://ryleyangus.com/repo/) उपकरण भी स्थापित कर सकते हैं। एक बार जब रिपॉजिटरी जोड़ी जाती है, तो ऐप 'सर्च' टैब में दिखाई देना चाहिए।

References

Support HackTricks

Last updated