hacktricks/src/mobile-pentesting/ios-pentesting/ios-testing-environment.md

133 lines
19 KiB
Markdown

# iOS Testing Environment
{{#include ../../banners/hacktricks-training.md}}
## Apple Developer Program
एक **प्रावधान पहचान** एक Apple डेवलपर खाते से संबंधित सार्वजनिक और निजी कुंजियों का संग्रह है। **ऐप्स पर हस्ताक्षर** करने के लिए आपको **99$/वर्ष** का भुगतान करना होगा ताकि आप **Apple Developer Program** में पंजीकरण कर सकें और अपनी प्रावधान पहचान प्राप्त कर सकें। इसके बिना, आप भौतिक डिवाइस पर स्रोत कोड से एप्लिकेशन नहीं चला सकेंगे। ऐसा करने का एक और विकल्प **जेलब्रोकन डिवाइस** का उपयोग करना है।
Xcode 7.2 से Apple ने एक **मुफ्त iOS विकास प्रावधान प्रोफ़ाइल** बनाने का विकल्प प्रदान किया है जो आपको एक असली iPhone पर अपने एप्लिकेशन को लिखने और परीक्षण करने की अनुमति देता है। _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (अपने क्रेडेंशियल्स के लिए नया एप्लि ID जोड़ें) --> _निर्मित Apple ID पर क्लिक करें_ --> _Manage Certificates_ --> _+_ (Apple Development) --> _Done_\
\_\_फिर, अपने iPhone में एप्लिकेशन चलाने के लिए आपको पहले **iPhone को कंप्यूटर पर भरोसा करने के लिए संकेत देना होगा।** फिर, आप **Xcode से मोबाइल में एप्लिकेशन चलाने की कोशिश कर सकते हैं,** लेकिन एक त्रुटि दिखाई देगी। इसलिए _Settings_ --> _General_ --> _Profiles and Device Management_ पर जाएं --> अविश्वसनीय प्रोफ़ाइल का चयन करें और "**Trust**" पर क्लिक करें।
ध्यान दें कि **एक ही हस्ताक्षर प्रमाणपत्र द्वारा हस्ताक्षरित एप्लिकेशन सुरक्षित तरीके से संसाधनों को साझा कर सकते हैं, जैसे कि कीचेन आइटम**
प्रावधान प्रोफाइल फोन के अंदर **`/Library/MobileDevice/ProvisioningProfiles`** में संग्रहीत होते हैं।
## **Simulator**
> [!NOTE]
> ध्यान दें कि **सिम्युलेटर और एमुलेटर एक समान नहीं हैं**। सिम्युलेटर केवल डिवाइस के व्यवहार और कार्यों का अनुकरण करता है लेकिन वास्तव में उनका उपयोग नहीं करता है।
### **Simulator**
आपको जो पहली बात जाननी है वह यह है कि **सिम्युलेटर के अंदर पेंटेस्ट करना जेलब्रोकन डिवाइस की तुलना में बहुत अधिक सीमित होगा**
iOS ऐप बनाने और समर्थन के लिए आवश्यक सभी उपकरण **केवल आधिकारिक रूप से Mac OS पर समर्थित हैं**।\
Apple का वास्तविक उपकरण iOS एप्लिकेशन बनाने/डीबग करने/इंस्ट्रूमेंट करने के लिए **Xcode** है। इसका उपयोग अन्य घटकों को डाउनलोड करने के लिए किया जा सकता है जैसे कि **सिम्युलेटर** और विभिन्न **SDK** **संस्करण** जो आपके ऐप को बनाने और **परीक्षण** करने के लिए आवश्यक हैं।\
यह अत्यधिक अनुशंसित है कि आप **आधिकारिक ऐप स्टोर** से Xcode **डाउनलोड** करें। अन्य संस्करणों में मैलवेयर हो सकता है।
सिम्युलेटर फ़ाइलें `/Users/<username>/Library/Developer/CoreSimulator/Devices` में पाई जा सकती हैं।
सिम्युलेटर खोलने के लिए, Xcode चलाएँ, फिर _Xcode टैब_ में दबाएँ --> _Open Developer tools_ --> _Simulator_\
\_\_अगली छवि में "iPod touch \[...\]" पर क्लिक करके आप परीक्षण के लिए अन्य डिवाइस का चयन कर सकते हैं:
![](<../../images/image (270).png>)
![](<../../images/image (520).png>)
### Applications in the Simulator
`/Users/<username>/Library/Developer/CoreSimulator/Devices` के अंदर आप सभी **स्थापित सिम्युलेटर** पा सकते हैं। यदि आप उन फ़ाइलों तक पहुँच प्राप्त करना चाहते हैं जो एक एमुलेटर के अंदर बनाई गई एप्लिकेशन की हैं, तो यह जानना मुश्किल हो सकता है कि **किसमें ऐप स्थापित है**। सही UID **खोजने का एक त्वरित तरीका** यह है कि सिम्युलेटर में ऐप को चलाएँ और निष्पादित करें:
```bash
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
```
एक बार जब आप UID जान लेते हैं, तो इसके भीतर स्थापित ऐप्स को `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` में पाया जा सकता है।
हालांकि, आश्चर्यजनक रूप से, आप यहां एप्लिकेशन नहीं पाएंगे। आपको `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/` में पहुंचना होगा।
और इस फ़ोल्डर में आप **एप्लिकेशन का पैकेज ढूंढ सकते हैं।**
## एमुलेटर
Corellium एकमात्र सार्वजनिक रूप से उपलब्ध iOS एमुलेटर है। यह एक एंटरप्राइज SaaS समाधान है जिसमें प्रति उपयोगकर्ता लाइसेंस मॉडल है और कोई परीक्षण लाइसेंस प्रदान नहीं करता है।
## जेलब्रेक की आवश्यकता नहीं
इस ब्लॉग पोस्ट को देखें कि कैसे एक iOS एप्लिकेशन का परीक्षण किया जाए **गैर-जेलब्रेक किए गए डिवाइस** में:
{{#ref}}
ios-pentesting-without-jailbreak.md
{{#endref}}
## जेलब्रेकिंग
Apple सख्ती से आवश्यक करता है कि iPhone पर चलने वाला कोड **Apple द्वारा जारी किए गए प्रमाणपत्र से साइन किया गया हो****जेलब्रेकिंग** उस प्रक्रिया को कहते हैं जिसमें सक्रिय रूप से **ऐसी सीमाओं** और अन्य सुरक्षा नियंत्रणों को **बायपास** किया जाता है जो OS द्वारा लगाए गए हैं। इसलिए, एक बार जब डिवाइस जेलब्रेक हो जाता है, तो **इंटीग्रिटी चेक** जो ऐप्स के इंस्टॉल होने की जांच करता है, पैच किया जाता है ताकि इसे **बायपास** किया जा सके।
> [!NOTE]
> Android के विपरीत, **आप iOS में "डेवलपर मोड" में स्विच नहीं कर सकते** ताकि डिवाइस पर असाइन किए गए/अविश्वसनीय कोड चल सके।
### Android रूटिंग बनाम iOS जेलब्रेकिंग
हालांकि अक्सर इसकी तुलना की जाती है, **Android पर रूटिंग** और **iOS पर जेलब्रेकिंग** मौलिक रूप से अलग प्रक्रियाएं हैं। Android डिवाइस को रूट करने में **`su` बाइनरी** को **इंस्टॉल करना** या **रूटेड कस्टम ROM के साथ सिस्टम को बदलना** शामिल हो सकता है, जिसे अनलॉक किए गए बूटलोडर के साथ आवश्यक रूप से एक्सप्लॉइट की आवश्यकता नहीं होती है। **कस्टम ROM को फ्लैश करना** बूटलोडर को अनलॉक करने के बाद डिवाइस के OS को बदलता है, कभी-कभी एक एक्सप्लॉइट की आवश्यकता होती है।
इसके विपरीत, iOS डिवाइस कस्टम ROM को फ्लैश नहीं कर सकते हैं क्योंकि बूटलोडर केवल Apple द्वारा साइन की गई छवियों को बूट करने की अनुमति देता है। **iOS को जेलब्रेक करना** Apple के कोड साइनिंग सुरक्षा को बायपास करने का लक्ष्य रखता है ताकि असाइन किए गए कोड को चलाया जा सके, यह प्रक्रिया Apple के निरंतर सुरक्षा सुधारों द्वारा जटिल होती है।
### जेलब्रेकिंग चुनौतियाँ
iOS को जेलब्रेक करना तेजी से कठिन होता जा रहा है क्योंकि Apple जल्दी से कमजोरियों को पैच करता है। **iOS को डाउनग्रेड करना** केवल एक रिलीज के बाद सीमित समय के लिए संभव है, जिससे जेलब्रेकिंग एक समय-संवेदनशील मामला बन जाता है। सुरक्षा परीक्षण के लिए उपयोग किए जाने वाले डिवाइस को अपडेट नहीं किया जाना चाहिए जब तक कि फिर से जेलब्रेक करना सुनिश्चित न हो।
iOS अपडेट एक **चुनौती-प्रतिक्रिया तंत्र** (SHSH blobs) द्वारा नियंत्रित होते हैं, जो केवल Apple द्वारा साइन की गई प्रतिक्रियाओं के लिए इंस्टॉलेशन की अनुमति देता है। इस तंत्र को "साइनिंग विंडो" के रूप में जाना जाता है, जो OTA फर्मवेयर पैकेज को स्टोर करने और बाद में उपयोग करने की क्षमता को सीमित करता है। [IPSW Downloads वेबसाइट](https://ipsw.me) वर्तमान साइनिंग विंडो की जांच करने के लिए एक संसाधन है।
### जेलब्रेक की विविधताएँ
- **टेथर्ड जेलब्रेक** प्रत्येक रिबूट के लिए कंप्यूटर कनेक्शन की आवश्यकता होती है।
- **सेमी-टेथर्ड जेलब्रेक** बिना कंप्यूटर के गैर-जेलब्रेक मोड में बूट करने की अनुमति देते हैं।
- **सेमी-अनटेथर्ड जेलब्रेक** बिना कंप्यूटर की आवश्यकता के मैन्युअल रूप से फिर से जेलब्रेक करने की आवश्यकता होती है।
- **अनटेथर्ड जेलब्रेक** बिना फिर से आवेदन की आवश्यकता के एक स्थायी जेलब्रेक समाधान प्रदान करते हैं।
### जेलब्रेकिंग उपकरण और संसाधन
जेलब्रेकिंग उपकरण iOS संस्करण और डिवाइस के अनुसार भिन्न होते हैं। संसाधन जैसे [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com), और [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) अद्यतन जानकारी प्रदान करते हैं। उदाहरणों में शामिल हैं:
- [Checkra1n](https://checkra.in/) A7-A11 चिप डिवाइस के लिए।
- [Palera1n](https://palera.in/) Checkm8 डिवाइस (A8-A11) के लिए iOS 15.0-16.5 पर।
- [Unc0ver](https://unc0ver.dev/) iOS संस्करण 14.8 तक के लिए।
अपने डिवाइस को संशोधित करना जोखिम भरा है, और जेलब्रेकिंग को सावधानी से किया जाना चाहिए।
### जेलब्रेकिंग के लाभ और जोखिम
जेलब्रेकिंग **OS द्वारा लगाए गए सैंडबॉक्सिंग को हटा देती है**, जिससे ऐप्स को पूरे फाइल सिस्टम तक पहुंच मिलती है। यह स्वतंत्रता अस्वीकृत ऐप्स को इंस्टॉल करने और अधिक APIs तक पहुंचने की अनुमति देती है। हालांकि, नियमित उपयोगकर्ताओं के लिए, जेलब्रेकिंग **अनुशंसित नहीं है** क्योंकि संभावित सुरक्षा जोखिम और डिवाइस की अस्थिरता हो सकती है।
### **जेलब्रेकिंग के बाद**
{{#ref}}
basic-ios-testing-operations.md
{{#endref}}
### **जेलब्रेक डिटेक्शन**
**कई एप्लिकेशन यह पता लगाने की कोशिश करेंगे कि क्या मोबाइल जेलब्रेक किया गया है और इस मामले में एप्लिकेशन नहीं चलेगा।**
- जेलब्रेक करने के बाद iOS में **फाइलें और फ़ोल्डर आमतौर पर इंस्टॉल होते हैं**, इन्हें यह निर्धारित करने के लिए खोजा जा सकता है कि क्या डिवाइस जेलब्रेक किया गया है।
- एक जेलब्रेक किए गए डिवाइस में एप्लिकेशन को **नए फ़ाइलों** तक **पढ़ने/लिखने की पहुंच** मिलती है जो सैंडबॉक्स के बाहर होती हैं।
- कुछ **API** **कॉल** **अलग तरीके से व्यवहार करेंगी।**
- **OpenSSH** सेवा की उपस्थिति।
- `/bin/sh` को कॉल करने पर **1** लौटाएगा, 0 के बजाय।
**जेलब्रेकिंग का पता लगाने के तरीके के बारे में अधिक जानकारी** [**यहां**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**।**
आप **objection's** `ios jailbreak disable` का उपयोग करके इन डिटेक्शनों से बचने की कोशिश कर सकते हैं।
## **जेलब्रेक डिटेक्शन बायपास**
- आप **objection's** `ios jailbreak disable` का उपयोग करके इन डिटेक्शनों से बचने की कोशिश कर सकते हैं।
- आप **Liberty Lite** (https://ryleyangus.com/repo/) उपकरण भी इंस्टॉल कर सकते हैं। एक बार जब रिपॉजिटरी जोड़ी जाती है, तो ऐप 'सर्च' टैब में दिखाई देना चाहिए।
## संदर्भ
- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
{{#include ../../banners/hacktricks-training.md}}