22 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 के माध्यम से localhost पर पोर्ट 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 --raw Chrome
r2flutch
r2flutch, जो radare और frida दोनों का उपयोग करता है, ऐप डिक्रिप्शन और डम्पिंग के लिए सेवा प्रदान करता है। इसके बारे में अधिक जानकारी इसके GitHub पेज पर उपलब्ध है।
ऐप्स को स्थापित करना
साइडलोडिंग आधिकारिक ऐप स्टोर के बाहर ऐप्लिकेशन स्थापित करने के लिए है। इस प्रक्रिया को installd डेमन द्वारा संभाला जाता है और ऐप्स को एक Apple द्वारा जारी किए गए प्रमाणपत्र के साथ साइन करना आवश्यक है। जेलब्रोकन डिवाइसेस इसे AppSync के माध्यम से छलकर सकते हैं, जिससे नकली-साइन आईपीए पैकेज की स्थापना संभव होती है।
साइडलोडिंग टूल्स
-
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/
Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!
Other ways to support HackTricks:
- If you want to see your company advertised in HackTricks or download HackTricks in PDF Check the SUBSCRIPTION PLANS!
- Get the official PEASS & HackTricks swag
- Discover The PEASS Family, our collection of exclusive NFTs
- Join the 💬 Discord group or the telegram group or follow me on Twitter 🐦 @carlospolopm.
- Share your hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.