iOS बुनियादी परीक्षण संचालन

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

iOS डिवाइस पहचान और एक्सेस का सारांश

iOS डिवाइस का UDID पहचानना

किसी iOS डिवाइस की अनूठी पहचान के लिए 40-अंकीय अनुक्रम जिसे UDID कहा जाता है, उपयोग किया जाता है। macOS Catalina या नए संस्करणों पर, इसे Finder app में पाया जा सकता है, क्योंकि iTunes अब मौजूद नहीं है। डिवाइस को USB के माध्यम से कनेक्ट करने और Finder में चुनने पर, उसके नाम के नीचे विवरण पर क्लिक करने पर यह अन्य जानकारी के साथ उसका UDID दिखाता है।

Catalina से पहले के macOS संस्करणों के लिए, UDID खोजने में iTunes सहायक है। विस्तृत निर्देश यहाँ मिल सकते हैं।

कमांड-लाइन टूल्स UDID प्राप्त करने के वैकल्पिक तरीके देते हैं:

  • I/O Registry Explorer tool ioreg का उपयोग:
$ ioreg -p IOUSB -l | grep "USB Serial"
  • macOS (और Linux) के लिए 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 का उपयोग करके डिवाइसों की सूची बनाना:
$ instruments -s devices

डिवाइस शेल तक पहुँच

SSH access जेलब्रेक के बाद OpenSSH package इंस्टॉल करने से सक्षम होता है, जिससे ssh root@<device_ip_address> के माध्यम से कनेक्शन किए जा सकते हैं। डिवाइस को सुरक्षित रखने के लिए उपयोगकर्ताओं root और mobile के डिफ़ॉल्ट पासवर्ड (alpine) बदलना अनिवार्य है।

SSH over USB Wi-Fi की अनुपस्थिति में आवश्यक हो जाता है, और SSH कनेक्शनों के लिए डिवाइस पोर्ट्स को मैप करने के लिए iproxy का उपयोग किया जाता है। यह सेटअप USB के माध्यम से SSH access सक्षम करता है, जिसे चलाकर:

$ iproxy 2222 22
$ ssh -p 2222 root@localhost

डिवाइस-आधारित shell applications, जैसे NewTerm 2, सीधे डिवाइस के साथ इंटरैक्शन की सुविधा देती हैं, जो समस्या निवारण के लिए विशेष रूप से उपयोगी है। Reverse SSH shells को होस्ट कंप्यूटर से रिमोट एक्सेस के लिए भी स्थापित किया जा सकता है।

भूल गए पासवर्ड को रीसेट करना

भूला हुआ पासवर्ड डिफॉल्ट (alpine) पर वापस सेट करने के लिए /private/etc/master.passwd फ़ाइल को संपादित करना आवश्यक है। इसमें मौजूदा हैश को root और mobile उपयोगकर्ता एंट्रीज़ के पास alpine के हैश से बदलना शामिल है।

डेटा ट्रांसफर तकनीकें

ऐप Data फ़ाइलें स्थानांतरित करना

SSH और SCP के माध्यम से आर्काइविंग और पुनर्प्राप्ति: ऐप के Data डायरेक्टरी को tar से आर्काइव करना और फिर scp के जरिए ट्रांसफर करना सीधा-साधा है। नीचे दिया गया कमांड Data डायरेक्टरी को .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 .

Graphical User Interface Tools

Using iFunbox and iExplorer: ये GUI tools iOS devices पर फाइलें मैनेज करने के लिए उपयोगी हैं। हालाँकि, iOS 8.4 से, Apple ने इन tools की application sandbox तक पहुँच को प्रतिबंधित कर दिया है जब तक कि डिवाइस jailbroken न हो।

Using Objection for File Management

Interactive Shell with Objection: objection लॉन्च करने पर किसी ऐप की Bundle directory तक पहुँच मिलती है। यहाँ से आप ऐप के Documents directory में नेविगेट कर सकते हैं और फाइलें मैनेज कर सकते हैं, जिनमें iOS device से डाउनलोड और अपलोड करना शामिल है।

objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>

ऐप्स प्राप्त करना और निकालना

IPA फ़ाइल प्राप्त करना

Over-The-Air (OTA) Distribution Link: टेस्टिंग के लिए OTA के माध्यम से वितरित किए गए ऐप्स को ITMS services asset downloader tool का उपयोग करके डाउनलोड किया जा सकता है, जिसे 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. From an IPA: IPA को अनज़िप करके डिक्रिप्टेड ऐप बाइनरी प्राप्त करें।
  2. From a Jailbroken Device: ऐप इंस्टॉल करें और मेमोरी से डिक्रिप्टेड बाइनरी निकालें।

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

Manual Decryption Overview: iOS ऐप बाइनरी Apple द्वारा FairPlay का उपयोग करके एन्क्रिप्ट की जाती हैं। reverse-engineer करने के लिए, मेमोरी से डिक्रिप्टेड बाइनरी को dump करना आवश्यक है। डिक्रिप्शन प्रक्रिया में PIE flag की जाँच, मेमोरी फ़्लैग्स समायोजित करना, एन्क्रिप्टेड सेक्शन की पहचान करना, और फिर उस सेक्शन को dump करके उसके डिक्रिप्टेड फॉर्म से बदलना शामिल है।

PIE Flag की जाँच और संशोधन:

otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World

एन्क्रिप्टेड सेक्शन की पहचान और मेमोरी dump करना:

एन्क्रिप्टेड सेक्शन की start और end addresses का पता लगाने के लिए otool का उपयोग करें, और jailbroken device से मेमोरी को gdb का उपयोग करके dump करें।

otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000

Encrypted Section को ओवरराइट करना:

Original app binary में encrypted section को decrypted dump से बदलें।

dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App

Finalizing Decryption: बाइनरी के metadata को संशोधित करके encryption की अनुपस्थिति दर्शाएँ, जैसे टूल MachOView का उपयोग करते हुए cryptid को 0 सेट करें।

Decryption (Automatically)

frida-ios-dump

The frida-ios-dump tool का उपयोग iOS devices से automatically decrypting and extracting apps के लिए किया जाता है। शुरूआत में, dump.py को iOS device से connect करने के लिए configure करना होता है, जिसे localhost पर port 2222 के माध्यम से iproxy द्वारा या सीधे device के IP address और port के जरिए किया जा सकता है।

डिवाइस पर इंस्टॉल किए गए Applications को निम्न command से सूचीबद्ध किया जा सकता है:

$ python dump.py -l

किसी विशिष्ट ऐप को dump करने के लिए, जैसे Telegram, निम्नलिखित कमांड का उपयोग किया जाता है:

$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph

यह कमांड ऐप डंप शुरू करता है, जिससे वर्तमान निर्देशिका में Telegram.ipa फ़ाइल बन जाती है। यह प्रक्रिया jailbroken devices के लिए उपयुक्त है, क्योंकि unsigned या fake-signed apps को ios-deploy जैसे टूल्स का उपयोग करके फिर से इंस्टॉल किया जा सकता है।

frida-ipa-extract

Frida-based IPA extractor jailbroken devices के लिए; फ़ाइलों को तेज़ी से खींचने के लिए USB Frida sessions और optional SSH/SFTP का उपयोग करता है।

  • आवश्यकताएँ: Python 3.9+, frida, paramiko, jailbroken device with frida-server (OpenSSH for SSH mode).
  • सेटअप:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  • उपयोग:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
  • फ्लैग्स: -f <bundle> स्पawns/attaches करता है (या PID के लिए --pid); -o आउटपुट नाम सेट करता है। -U USB का उपयोग करता है; -H/-P/-u/-p frida-server 27042 के लिए एक SSH टनल खोलता है और SFTP के माध्यम से पुल करता है (इसे -U के साथ जोड़ा जा सकता है)। --sandbox sandbox को dump करता है; --no-resume ऐप को suspended रखता है ताकि session drop होने पर crashes और system process द्वारा retries से बचा जा सके।
  • समस्या निवारण: Frida attach timed out → use -f or --no-resume; script has been destroyed--no-resume or SSH transfer; No running apps found → start or spawn the app.

flexdecrypt

The flexdecrypt tool, along with its wrapper flexdump, allows for the extraction of IPA files from installed applications. Installation commands for flexdecrypt on the device include downloading and installing the .deb package. flexdump can be used to list and dump apps, as shown in the commands below:

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

bagbak, एक अन्य Frida-based tool, app decryption के लिए एक jailbroken device आवश्यक है:

bagbak --raw Chrome

r2flutch

r2flutch, radare और frida दोनों का उपयोग करके app decryption और dumping के लिए उपयोग होता है। अधिक जानकारी इसकी GitHub page पर मिलती है।

ऐप्स इंस्टॉल करना

Sideloading का मतलब official App Store के बाहर applications को install करना है। यह प्रक्रिया installd daemon द्वारा संभाली जाती है और apps को Apple-issued certificate से signed होना आवश्यक है। Jailbroken devices इसे AppSync के माध्यम से बायपास कर सकते हैं, जिससे fake-signed IPA packages install करने की सुविधा मिलती है।

Sideloading Tools

  • Cydia Impactor: iOS पर IPA files और Android पर APK files को sign और install करने का टूल। Guides और troubleshooting yalujailbreak.net पर मिलती हैं।

  • libimobiledevice: Linux और macOS के लिए एक library जो iOS devices के साथ communicate करने के काम आती है। ideviceinstaller के लिए installation commands और usage examples USB के जरिए apps install करने के लिए दिए गए हैं।

  • ipainstaller: यह command-line टूल iOS devices पर सीधे app installation की अनुमति देता है।

  • ios-deploy: macOS उपयोगकर्ताओं के लिए, ios-deploy command line से iOS apps install करता है। IPA को unzip करना और सीधे app launch के लिए -m flag का उपयोग करना इस प्रक्रिया का हिस्सा है।

  • Xcode: Xcode का उपयोग करके apps install करने के लिए Window/Devices and Simulators में जाएँ और app को Installed Apps में जोड़ें।

Allow Application Installation on Non-iPad Devices

iPhone या iPod touch डिवाइस पर iPad-specific applications install करने के लिए, Info.plist फ़ाइल में UIDeviceFamily value को 1 में बदलने की आवश्यकता होती है। यह संशोधन signature validation checks के कारण IPA फ़ाइल को re-sign करने की मांग करता है।

Note: यह तरीका विफल हो सकता है यदि application ऐसी capabilities मांगती है जो नए iPad models तक ही सीमित हैं और आप पुराने iPhone या iPod touch का उपयोग कर रहे हैं।

References

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें