23 KiB
iOS मूल टेस्टिंग ऑपरेशन्स
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS और HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन, The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो करें।
- हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके HackTricks और HackTricks Cloud github repos में।
iOS डिवाइस पहचान और पहुंच का सारांश
iOS डिवाइस की UDID की पहचान
एक iOS डिवाइस को अद्वितीय रूप से पहचानने के लिए, एक 40-अंकी अनुक्रमिकता जिसे UDID के रूप में जाना जाता है, का उपयोग किया जाता है। macOS Catalina या नएरे में, यह Finder ऐप में पाया जा सकता है, क्योंकि iTunes अब और मौजूद नहीं है। डिवाइस, जब USB के माध्यम से कनेक्ट किया जाता है और फाइंडर में चयनित किया जाता है, तो जब उसके नाम के नीचे विवरणों पर क्लिक किया जाता है, तो अपना UDID दिखाता है।
Catalina से पहले macOS के संस्करणों के लिए, iTunes UDID की खोज को सुविधाजनक बनाता है। विस्तृत निर्देश यहाँ पाए जा सकते हैं यहाँ।
कमांड-लाइन उपकरण विकल्पिक तरीके प्रदान करते हैं UDID प्राप्त करने के लिए:
- I/O रजिस्ट्री एक्सप्लोरर उपकरण
ioreg
का उपयोग करके:
$ ioreg -p IOUSB -l | grep "USB Serial"
- मैकओएस (और लिनक्स) के लिए
ideviceinstaller
का उपयोग:
$ 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 -s devices
डिवाइस शैल तक पहुंचना
SSH एक्सेस को OpenSSH पैकेज को इंस्टॉल करके जेलब्रेक के बाद सक्षम किया जाता है, जिससे ssh root@<device_ip_address>
के माध्यम से कनेक्शन स्थापित किया जा सकता है। उपयोगकर्ताओं root
और mobile
के लिए डिफ़ॉल्ट पासवर्ड (alpine
) को सुरक्षित बनाना महत्वपूर्ण है।
USB के माध्यम से SSH की आवश्यकता होती है जब वाई-फाई की अनुपस्थिति में, iproxy
का उपयोग करके डिवाइस पोर्ट को मैप करने के लिए। यह सेटअप USB के माध्यम से SSH एक्सेस सक्षम करता है जिसे निम्नलिखित को चलाकर प्रारंभ किया जा सकता है:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
ऑन-डिवाइस शैल एप्लिकेशन, जैसे NewTerm 2, सीधे डिवाइस इंटरेक्शन को सुविधाजनक बनाते हैं, विशेष रूप से समस्या निवारण के लिए उपयोगी। रिवर्स SSH शैल भी होस्ट कंप्यूटर से रिमोट एक्सेस के लिए स्थापित किए जा सकते हैं।
भूले हुए पासवर्ड रीसेट करना
भूले हुए पासवर्ड को डिफ़ॉल्ट (alpine
) पर रीसेट करने के लिए, /private/etc/master.passwd
फ़ाइल को संपादित करना आवश्यक है। इसमें मौजूदा हैश को root
और mobile
उपयोगकर्ता एंट्री के बगल में alpine
के लिए हैश के साथ प्रतिस्थापित करना शामिल है।
डेटा स्थानांतरण तकनीकें
एप्लिकेशन डेटा फ़ाइलें स्थानांतरित करना
SSH और SCP के माध्यम से संग्रहण और पुनर्प्राप्ति: एप्लिकेशन के डेटा निर्देशिका को tar
का उपयोग करके संग्रहीत करना और फिर इसे scp
का उपयोग करके स्थानांतरित करना सरल है। नीचे दिया गया कमांड डेटा निर्देशिका को .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 निर्देशिका तक पहुंच मिलती है। यहाँ से, आप ऐप के दस्तावेज़ निर्देशिका तक नेविगेट कर सकते हैं और फ़ाइलों का प्रबंधन कर सकते हैं, जिसमें 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
ऐप बाइनरी निकालना
- आईपीए से: आईपीए को अनज़िप करें ताकि डिक्रिप्ट किया गया ऐप बाइनरी तक पहुंचा जा सके।
- जेलब्रोकन डिवाइस से: ऐप को इंस्टॉल करें और मेमोरी से डिक्रिप्ट किया गया बाइनरी निकालें।
डिक्रिप्शन प्रक्रिया
मैन्युअल डिक्रिप्शन अवलोकन: 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 उपकरणों से एप्लिकेशनों को स्वचालित रूप से डिक्रिप्ट और निकालने के लिए किया जाता है। प्रारंभ में, किसी को iOS उपकरण से कनेक्ट करने के लिए dump.py
को कॉन्फ़िगर करना होगा, जो iproxy के माध्यम से पोर्ट 2222 पर localhost के माध्यम से या सीधे उपकरण के 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 --raw Chrome
r2flutch
r2flutch, जो radare और frida दोनों का उपयोग करता है, ऐप डिक्रिप्शन और डम्पिंग के लिए सेवा प्रदान करता है। इसके GitHub पेज पर अधिक जानकारी उपलब्ध है।
ऐप्स को स्थापित करना
साइडलोडिंग आधिकारिक ऐप स्टोर के बाहर ऐप्लिकेशन स्थापित करने का अर्थ है। इस प्रक्रिया को installd डेमन द्वारा संभाला जाता है और ऐप्स को एक Apple जारी प्रमाणपत्र के साथ साइन करना आवश्यक है। जेलब्रोकन उपकरण इसे AppSync के माध्यम से छलकर सकते हैं, जिससे नकली साइन किए गए IPA पैकेज की स्थापना संभव होती है।
साइडलोडिंग उपकरण
-
Cydia Impactor: iOS पर IPA फ़ाइलों को साइन और स्थापित करने के लिए एक उपकरण। मार्गदर्शिकाएँ और समस्या समाधान yalujailbreak.net पर उपलब्ध हैं।
-
libimobiledevice: iOS उपकरणों के साथ संचार के लिए लिनक्स और macOS के लिए एक पुस्तकालय। ऐप्स को USB के माध्यम से स्थापित करने के लिए ideviceinstaller के लिए स्थापना कमांड और उपयोग उदाहरण प्रदान किए गए हैं।
-
ipainstaller: यह कमांड लाइन उपकरण iOS उपकरणों पर सीधी ऐप स्थापना की अनुमति देता है।
-
ios-deploy: macOS उपयोगकर्ताओं के लिए, ios-deploy कमांड लाइन से iOS ऐप्स को स्थापित करता है। IPA को अनज़िप करना और सीधी ऐप लॉन्च के लिए
-m
ध्वज का उपयोग प्रक्रिया का हिस्सा है। -
Xcode: Window/Devices and Simulators पर जाकर Installed Apps में ऐप जोड़कर ऐप्स को स्थापित करने के लिए Xcode का उपयोग करें।
गैर-आईपैड उपकरणों पर ऐप्लिकेशन स्थापना की अनुमति देना
आईपैड-विशिष्ट ऐप्लिकेशनों को आईफोन या आईपॉड टच उपकरणों पर स्थापित करने के लिए, Info.plist फ़ाइल में UIDeviceFamily मान को 1 में बदलना आवश्यक है। यह संशोधन, हालांकि, हस्ताक्षर मान्यता की जांच के कारण IPA फ़ाइल को फिर से साइन करने की आवश्यकता होती है।
ध्यान दें: यह विधि असफल हो सकती है अगर ऐप्लिकेशन पुराने आईफोन या आईपॉड टच का उपयोग करते हुए नए आईपैड मॉडल्स के लिए विशेष क्षमताओं की मांग करता है।
संदर्भ
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
शून्य से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या PDF में HackTricks डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान देखें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो करें।
- हैकिंग ट्रिक्स साझा करें हैकट्रिक्स और हैकट्रिक्स क्लाउड गिटहब रेपो में पीआर जमा करके।