hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md

22 KiB

iOS मूल टेस्टिंग ऑपरेशन्स

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

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

ऐप बाइनरी निकालना

  1. आईपीए से: आईपीए को अनज़िप करें ताकि डिक्रिप्ट किया गया ऐप बाइनरी तक पहुंचा जा सके।
  2. जेलब्रोकन डिवाइस से: ऐप को इंस्टॉल करें और मेमोरी से डिक्रिप्ट किया गया बाइनरी निकालें।

डिक्रिप्शन प्रक्रिया

मैनुअल डिक्रिप्शन अवलोकन: 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 फ़ाइल को फिर से साइन करने की आवश्यकता होती है।

ध्यान दें: यदि ऐप्लिकेशन पुराने आईफोन या आईपॉड टच का उपयोग करते हुए नए आईपैड मॉडल्स के लिए विशेष क्षमताओं की मांग करता है, तो यह विधि विफल हो सकती है।

संदर्भ

Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

Other ways to support HackTricks: