Βασικές Λειτουργίες Δοκιμών iOS
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Σύνοψη Ταυτοποίησης και Πρόσβασης Συσκευής iOS
Εντοπισμός του UDID μιας συσκευής iOS
Για να ταυτοποιηθεί μοναδικά μια συσκευή iOS, χρησιμοποιείται μια ακολουθία 40 ψηφίων γνωστή ως UDID. Σε macOS Catalina ή νεότερο, αυτό μπορεί να βρεθεί στην εφαρμογή Finder, καθώς το iTunes δεν είναι πια διαθέσιμο. Η συσκευή, μόλις συνδεθεί μέσω USB και επιλεγεί στο Finder, εμφανίζει το UDID μαζί με άλλες πληροφορίες όταν γίνουν κλικ οι λεπτομέρειες κάτω από το όνομά της.
Για εκδόσεις του macOS προ του Catalina, το iTunes διευκολύνει την ανακάλυψη του UDID. Λεπτομερείς οδηγίες υπάρχουν εδώ.
Τα εργαλεία γραμμής εντολών προσφέρουν εναλλακτικές μεθόδους για την ανάκτηση του UDID:
- Χρήση του εργαλείου I/O Registry Explorer (
ioreg):
$ ioreg -p IOUSB -l | grep "USB Serial"
- Χρήση
ideviceinstallerγια macOS (και Linux):
$ 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
Πρόσβαση στο Shell της συσκευής
SSH access ενεργοποιείται με την εγκατάσταση του OpenSSH package μετά το jailbreak, επιτρέποντας συνδέσεις μέσω ssh root@<device_ip_address>. Είναι κρίσιμο να αλλάξετε τους προεπιλεγμένους κωδικούς (alpine) για τους χρήστες root και mobile ώστε να ασφαλίσετε τη συσκευή.
SSH over USB γίνεται απαραίτητο όταν δεν υπάρχει Wi-Fi, χρησιμοποιώντας iproxy για να αντιστοιχίσετε ports της συσκευής για συνδέσεις SSH. Αυτή η ρύθμιση επιτρέπει πρόσβαση SSH μέσω USB εκτελώντας:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Εφαρμογές shell στη συσκευή, όπως το NewTerm 2, διευκολύνουν την άμεση αλληλεπίδραση με τη συσκευή, ιδιαίτερα χρήσιμες για αντιμετώπιση προβλημάτων. Reverse SSH shells μπορούν επίσης να δημιουργηθούν για απομακρυσμένη πρόσβαση από τον host υπολογιστή.
Επαναφορά Ξεχασμένων Κωδικών
Για να επαναφέρετε έναν ξεχασμένο κωδικό στο προεπιλεγμένο (alpine), είναι απαραίτητο να επεξεργαστείτε το αρχείο /private/etc/master.passwd. Αυτό περιλαμβάνει την αντικατάσταση του υπάρχοντος hash με το hash για το alpine δίπλα στις εγγραφές χρηστών root και mobile.
Τεχνικές Μεταφοράς Δεδομένων
Μεταφορά Αρχείων Δεδομένων Εφαρμογών
Δημιουργία αρχείου και ανάκτηση μέσω 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 .
Εργαλεία Γραφικού Περιβάλλοντος Χρήστη
Χρήση iFunbox και iExplorer: Αυτά τα GUI εργαλεία είναι χρήσιμα για τη διαχείριση αρχείων σε συσκευές iOS. Ωστόσο, από το iOS 8.4 και μετά, η Apple περιόρισε την πρόσβαση αυτών των εργαλείων στο application sandbox εκτός αν η συσκευή είναι jailbroken.
Χρήση Objection για Διαχείριση Αρχείων
Διαδραστικό Shell με Objection: Το ξεκίνημα του objection παρέχει πρόσβαση στο Bundle directory μιας εφαρμογής. Από εδώ, μπορείτε να πλοηγηθείτε στο Documents directory της εφαρμογής και να διαχειριστείτε αρχεία, συμπεριλαμβανομένης της λήψης και του ανεβάσματός τους προς και από τη συσκευή iOS.
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): Οι εφαρμογές που διανέμονται για δοκιμή μέσω 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
Εξαγωγή του binary της εφαρμογής
- Από ένα IPA: Αποσυμπιέστε το IPA για να αποκτήσετε πρόσβαση στο decrypted app binary.
- Από ένα Jailbroken Device: Εγκαταστήστε την εφαρμογή και εξάγετε το decrypted binary από τη memory.
Διαδικασία Decryption
Επισκόπηση Manual Decryption: Τα iOS app binaries κρυπτογραφούνται από την Apple χρησιμοποιώντας FairPlay. Για να reverse-engineer, πρέπει να γίνει dump του decrypted binary από τη memory. Η διαδικασία decryption περιλαμβάνει έλεγχο για το PIE flag, προσαρμογή των memory flags, εντοπισμό του encrypted section, και στη συνέχεια dumping και αντικατάσταση αυτού του section με την decrypted μορφή του.
Έλεγχος και Τροποποίηση του PIE Flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Εντοπισμός κρυπτογραφημένης ενότητας και εξαγωγή μνήμης:
Καθόρισε τις διευθύνσεις έναρξης και λήξης της κρυπτογραφημένης ενότητας χρησιμοποιώντας otool και εξήγαγε τη μνήμη από τη jailbroken συσκευή χρησιμοποιώντας gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Επικάλυψη της Κρυπτογραφημένης Ενότητας:
Αντικαταστήστε την κρυπτογραφημένη ενότητα στο αρχικό app binary με το decrypted dump.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalizing Decryption: Τροποποιήστε τα μεταδεδομένα του binary για να δηλώσετε την απουσία encryption χρησιμοποιώντας εργαλεία όπως MachOView, ορίζοντας το cryptid σε 0.
Decryption (Automatically)
frida-ios-dump
Το εργαλείο frida-ios-dump χρησιμοποιείται για automatically decrypting and extracting apps από συσκευές iOS. Αρχικά, πρέπει να διαμορφώσετε το dump.py για σύνδεση στη συσκευή iOS, κάτι που μπορεί να γίνει μέσω localhost στην port 2222 μέσω του iproxy ή απευθείας μέσω της διεύθυνσης IP της συσκευής και της θύρας.
Οι εφαρμογές που είναι εγκατεστημένες στη συσκευή μπορούν να απαριθμηθούν με την εντολή:
$ python dump.py -l
Για να dump μια συγκεκριμένη εφαρμογή, όπως το Telegram, χρησιμοποιείται η ακόλουθη εντολή:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Αυτή η εντολή ξεκινά το app dump, δημιουργώντας ένα αρχείο Telegram.ipa στον τρέχοντα κατάλογο. Αυτή η διαδικασία είναι κατάλληλη για jailbroken devices, καθώς unsigned ή fake-signed apps μπορούν να επανεγκατασταθούν χρησιμοποιώντας εργαλεία όπως ios-deploy.
frida-ipa-extract
Frida-based IPA extractor για jailbroken devices; χρησιμοποιεί USB Frida sessions και προαιρετικό SSH/SFTP για ταχύτερα pulls.
- Απαιτήσεις: 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
- Flags:
-f <bundle>spawns/attaches (or--pidfor PID);-oορίζει το όνομα εξόδου.-Uχρησιμοποιεί USB;-H/-P/-u/-pανοίγει ένα SSH tunnel στοfrida-server27042 και τραβά μέσω SFTP (μπορεί να συνδυαστεί με-U).--sandboxεξάγει το sandbox;--no-resumeδιατηρεί την εφαρμογή σε αναστολή για να αποφευχθούν crashes και retries μέσω μιας system process αν η συνεδρία πέσει. - Troubleshooting:
Frida attach timed out→ χρησιμοποιήστε-fή--no-resume;script has been destroyed→--no-resumeή μεταφορά μέσω SSH;No running apps found→ ξεκινήστε ή spawn την εφαρμογή.
flexdecrypt
Το flexdecrypt εργαλείο, μαζί με τον wrapper του 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
bagbak, ένα ακόμα Frida-based tool, απαιτεί ένα jailbroken device για app decryption:
bagbak --raw Chrome
r2flutch
r2flutch, χρησιμοποιώντας τόσο radare όσο και frida, χρησιμεύει για την αποκρυπτογράφηση και το dumping εφαρμογών. Περισσότερες πληροφορίες στην GitHub page.
Εγκατάσταση Εφαρμογών
Sideloading αναφέρεται στην εγκατάσταση εφαρμογών εκτός του επίσημου App Store. Αυτή η διαδικασία διαχειρίζεται από το installd daemon και απαιτεί οι εφαρμογές να είναι υπογεγραμμένες με πιστοποιητικό που εκδίδεται από την Apple. Σε Jailbroken συσκευές αυτό μπορεί να παρακαμφθεί μέσω του AppSync, επιτρέποντας την εγκατάσταση fake-signed IPA packages.
Εργαλεία Sideloading
-
Cydia Impactor: Ένα εργαλείο για την υπογραφή και εγκατάσταση αρχείων IPA σε iOS και αρχείων APK σε Android. Οδηγοί και λύσεις προβλημάτων είναι διαθέσιμες στο yalujailbreak.net.
-
libimobiledevice: Μια βιβλιοθήκη για Linux και macOS για επικοινωνία με iOS συσκευές. Παρέχονται εντολές εγκατάστασης και παραδείγματα χρήσης για το ideviceinstaller για εγκατάσταση εφαρμογών μέσω USB.
-
ipainstaller: Αυτό το εργαλείο γραμμής εντολών επιτρέπει την άμεση εγκατάσταση εφαρμογών σε iOS συσκευές.
-
ios-deploy: Για χρήστες macOS, το ios-deploy εγκαθιστά iOS apps από τη γραμμή εντολών. Η αποσυμπίεση του IPA και η χρήση της
-mflag για άμεση εκκίνηση της εφαρμογής είναι μέρος της διαδικασίας. -
Xcode: Χρησιμοποιήστε το Xcode για να εγκαταστήσετε εφαρμογές πηγαίνοντας σε Window/Devices and Simulators και προσθέτοντας την εφαρμογή στο Installed Apps.
Allow Application Installation on Non-iPad Devices
Για να εγκαταστήσετε εφαρμογές ειδικές για iPad σε iPhone ή iPod touch, η τιμή UIDeviceFamily στο αρχείο Info.plist πρέπει να αλλάξει σε 1. Αυτή η τροποποίηση, ωστόσο, απαιτεί re-signing του IPA λόγω ελέγχων επικύρωσης υπογραφής.
Σημείωση: Αυτή η μέθοδος μπορεί να αποτύχει αν η εφαρμογή απαιτεί δυνατότητες αποκλειστικές σε νεότερα μοντέλα iPad ενώ χρησιμοποιείται σε παλαιότερο iPhone ή iPod touch.
Αναφορές
- 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/
- frida-ipa-extract
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.


