Περιβάλλον Δοκιμών 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.
Apple Developer Program
A provisioning identity είναι μια συλλογή δημόσιων και ιδιωτικών κλειδιών που σχετίζονται με έναν Apple developer account. Για να sign apps χρειάζεται να πληρώσετε 99$/year για να εγγραφείτε στο Apple Developer Program και να αποκτήσετε την provisioning identity. Χωρίς αυτό δεν θα μπορείτε να τρέξετε εφαρμογές από τον πηγαίο κώδικα σε μια φυσική συσκευή. Μια άλλη επιλογή είναι να χρησιμοποιήσετε μια jailbroken device.
Από το Xcode 7.2 και μετά η Apple παρείχε μια επιλογή για να δημιουργήσετε ένα free iOS development provisioning profile που επιτρέπει να γράψετε και να δοκιμάσετε την εφαρμογή σας σε ένα πραγματικό iPhone. Go to Xcode –> Preferences –> Accounts –> + (Add new Appli ID you your credentials) –> Click on the Apple ID created –> Manage Certificates –> + (Apple Development) –> Done
__Then, in order to run your application in your iPhone you need first to indicate the iPhone to trust the computer. Then, you can try to run the application in the mobile from Xcode, but and error will appear. So go to Settings –> General –> Profiles and Device Management –> Select the untrusted profile and click “Trust”.
Σε iOS 16+, πρέπει επίσης να είναι ενεργοποιημένο το Developer Mode στη συσκευή πριν εφαρμογές που έχουν τοπικά εγκατασταθεί και είναι signed με development certificate (ή apps re-signed with get-task-allow) να τρέξουν. Αυτή η επιλογή εμφανίζεται μόνο μετά το pairing της συσκευής με Xcode ή μετά την εγκατάσταση μιας development-signed app μία φορά. Η ροή είναι: pair the device, κάντε εγκατάσταση από Xcode, στη συνέχεια ενεργοποιήστε Settings –> Privacy & Security –> Developer Mode, επανεκκινήστε, και επιβεβαιώστε το prompt μετά το unlock.
Σημειώστε ότι applications signed by the same signing certificate μπορούν να μοιράζονται πόρους με ασφαλή τρόπο, όπως keychain items.
Τα provisioning profiles αποθηκεύονται μέσα στο τηλέφωνο στο /Library/MobileDevice/ProvisioningProfiles
Modern host-side device tooling
Για τρέχουσες δοκιμές iOS, τα host tooling χωρίζονται όλο και πιο πολύ μεταξύ:
xcrun simctlγια simulator managementxcrun xctrace list devicesγια την απαρίθμηση simulators και physical devicesxcrun devicectl(Xcode 15+) για αλληλεπίδραση με paired physical devices από το command line
Useful examples:
# List booted simulators
xcrun simctl list | grep Booted
# List all visible devices/simulators
xcrun xctrace list devices
# List paired physical devices (Xcode 15+)
xcrun devicectl list devices
devicectl είναι ιδιαίτερα χρήσιμο σε automation pipelines όπου χρειάζεται να εγκαταστήσετε ή να ξεκινήσετε ένα test build χωρίς να ανοίξετε το Xcode:
xcrun devicectl device install app --device <udid> <path_to_app_or_ipa>
xcrun devicectl device launch app --terminate-existing --device <udid> <bundle_id>
Keep Xcode updated when testing iOS 17+ devices. Apple moved developer services to the CoreDevice stack and also changed how Developer Disk Images are handled, so outdated host tooling frequently fails with pairing, image-mounting, or app-launch errors.
Simulator
Tip
Σημειώστε ότι ένας simulator δεν είναι το ίδιο με έναν emulator. Ο simulator απλώς προσομοιώνει τη συμπεριφορά της συσκευής και των λειτουργιών, αλλά δεν τις χρησιμοποιεί πραγματικά.
Simulator
Το πρώτο που πρέπει να γνωρίζετε είναι ότι η διεξαγωγή ενός pentest μέσα σε έναν simulator θα είναι πολύ πιο περιορισμένη από ό,τι σε μια jailbroken device.
Όλα τα εργαλεία που απαιτούνται για να χτίσετε και να υποστηρίξετε μια iOS app υποστηρίζονται μόνο επίσημα σε Mac OS.
Το de facto εργαλείο της Apple για τη δημιουργία/debugging/instrumenting iOS εφαρμογών είναι το Xcode. Μπορεί να χρησιμοποιηθεί για να κατεβάσετε άλλα components όπως simulators και διαφορετικές SDK versions που απαιτούνται για να build και να test την εφαρμογή σας.
Συνιστάται έντονα να download το Xcode από το επίσημο App Store. Άλλες εκδόσεις ενδέχεται να περιέχουν malware.
The simulator files can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices
Ο simulator εξακολουθεί να είναι πολύ χρήσιμος για γρήγορες δοκιμές filesystem artifacts, NSUserDefaults, plist parsing, custom URL schemes, και basic runtime instrumentation. Ωστόσο, να έχετε υπόψη ότι δεν εξομοιώνει αρκετές ιδιότητες ασφάλειας φυσικής συσκευής που συχνά είναι σημαντικές κατά τη διάρκεια ενός pentest, όπως το Secure Enclave, το baseband, ορισμένες συμπεριφορές πρόσβασης-ελέγχου του keychain, ρεαλιστικές ροές biometric, και συνθήκες εκτέλεσης ειδικές για jailbreak.
Για να ανοίξετε τον Simulator, τρέξτε το Xcode, μετά πατήστε στην καρτέλα Xcode –> Open Developer tools –> Simulator
__Στην παρακάτω εικόνα, κάνοντας κλικ στο “iPod touch […]” μπορείτε να επιλέξετε άλλη συσκευή για δοκιμή:
.png)
.png)
Applications in the Simulator
Inside /Users/<username>/Library/Developer/CoreSimulator/Devices you may find all the installed simulators. If you want to access the files of an application created inside one of the emulators it might be difficult to know in which one the app is installed. A quick way to find the correct UID is to execute the app in the simulator and execute:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
Μόλις γνωρίζετε το UID, οι εφαρμογές που είναι εγκατεστημένες μέσα σε αυτό μπορούν να βρεθούν στο /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
Ωστόσο, προς έκπληξη, δεν θα βρείτε την εφαρμογή εκεί. Πρέπει να αποκτήσετε πρόσβαση στο /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
Και σε αυτόν τον φάκελο μπορείτε να βρείτε το package της εφαρμογής.
Emulator
Corellium είναι ο μόνος δημόσια διαθέσιμος iOS emulator. Είναι μια enterprise SaaS λύση με μοντέλο άδειας ανά χρήστη και δεν προσφέρει δοκιμαστική άδεια.
No Jailbreak needed
Δείτε αυτό το άρθρο στο blog για το πώς να pentest μια iOS εφαρμογή σε μια non jailbroken device:
iOS Pentesting withuot Jailbreak
Jailbreaking
Η Apple απαιτεί αυστηρά ότι ο κώδικας που τρέχει στο iPhone πρέπει να είναι signed by a certificate issued by Apple. Jailbreaking είναι η διαδικασία ενεργής παράκαμψης τέτοιων περιορισμών και άλλων μέτρων ασφαλείας που επιβάλλει το OS. Επομένως, μόλις η συσκευή είναι jailbroken, ο έλεγχος ακεραιότητας που είναι υπεύθυνος για τον έλεγχο των εγκατεστημένων apps πατεντάρεται ώστε να παρακαμφθεί.
Tip
Σε αντίθεση με το Android, δεν μπορείτε να αλλάξετε σε “Developer Mode” στο iOS για να τρέξετε unsigned/untrusted code στη συσκευή.
Android Rooting vs. iOS Jailbreaking
Παρόλο που συχνά συγκρίνονται, το rooting σε Android και το jailbreaking σε iOS είναι θεμελιωδώς διαφορετικές διαδικασίες. Το rooting σε Android συσκευές μπορεί να περιλαμβάνει εγκατάσταση του su binary ή αντικατάσταση του συστήματος με ένα rooted custom ROM, που δεν απαιτεί απαραίτητα exploits αν ο bootloader είναι ξεκλειδωμένος. Το flashing custom ROMs αντικαθιστά το OS της συσκευής μετά το ξεκλείδωμα του bootloader, κάποιες φορές απαιτώντας exploit.
Αντίθετα, οι iOS συσκευές δεν μπορούν να κάνουν flash custom ROMs λόγω του bootloader που περιορίζεται να εκκινεί μόνο Apple-signed images. Το Jailbreaking iOS στοχεύει στην παράκαμψη των προστασιών code signing της Apple για να τρέξει unsigned κώδικας, μια διαδικασία που περιπλέκεται από τις συνεχείς βελτιώσεις ασφαλείας της Apple.
Jailbreaking Challenges
Το jailbreaking του iOS γίνεται ολοένα και πιο δύσκολο όσο η Apple κλείνει τις ευπάθειες γρήγορα. Το Downgrading iOS είναι εφικτό μόνο για περιορισμένο χρόνο μετά από μια κυκλοφορία, κάνοντας το jailbreaking ζήτημα χρονικής ευκαιρίας. Συσκευές που χρησιμοποιούνται για security testing δεν πρέπει να αναβαθμίζονται εκτός αν υπάρχει εγγύηση για re-jailbreaking.
Οι ενημερώσεις iOS ελέγχονται από έναν μηχανισμό challenge-response (SHSH blobs), επιτρέποντας εγκατάσταση μόνο για Apple-signed responses. Αυτός ο μηχανισμός, γνωστός ως “signing window”, περιορίζει την ικανότητα να αποθηκεύσετε και να χρησιμοποιήσετε αργότερα OTA firmware packages. Ο ιστότοπος IPSW Downloads είναι πόρος για τον έλεγχο των τρεχουσών signing windows.
Jailbreak Varieties
- Tethered jailbreaks απαιτούν σύνδεση σε υπολογιστή για κάθε επανεκκίνηση.
- Semi-tethered jailbreaks επιτρέπουν την εκκίνηση σε non-jailbroken mode χωρίς υπολογιστή.
- Semi-untethered jailbreaks απαιτούν χειροκίνητο re-jailbreaking χωρίς να χρειάζεται υπολογιστής.
- Untethered jailbreaks προσφέρουν μόνιμη λύση jailbreak χωρίς ανάγκη επανεφαρμογής.
Jailbreaking Tools and Resources
Τα εργαλεία jailbreaking διαφέρουν ανά iOS έκδοση και συσκευή. Πόροι όπως Can I Jailbreak?, The iPhone Wiki, και Reddit Jailbreak παρέχουν ενημερωμένες πληροφορίες. Παραδείγματα περιλαμβάνουν:
- Checkra1n για παλαιότερες συσκευές A7-A11 / iOS 12-14 για ερευνητικούς σκοπούς.
- Palera1n για checkm8-compatible συσκευές (A8-A11) σε iOS/iPadOS 15+.
- Dopamine για πολλές arm64/arm64e συσκευές σε iOS 15/16 χρησιμοποιώντας ένα μοντέρνο rootless jailbreak.
- Unc0ver παραμένει σχετικό κυρίως για παλαιότερες iOS εκδόσεις έως 14.8.
Η τροποποίηση της συσκευής σας ενέχει ρίσκα και το jailbreaking πρέπει να αντιμετωπίζεται με προσοχή.
Rootless jailbreaks
Τα σύγχρονα iOS 15+ jailbreaks είναι συνήθως rootless αντί για rootful. Από την πλευρά του tester, αυτό έχει σημασία επειδή πολλά παλαιότερα guides εξακολουθούν να υποθέτουν ότι τα jailbreak αρχεία ζουν απευθείας κάτω από το / ή /Library/..., κάτι που πλέον δεν ισχύει σε πολλά τρέχοντα setups.
- Τα Rootless jailbreaks αποφεύγουν την άμεση τροποποίηση του sealed system volume.
- Σε palera1n, τα αρχεία jailbreaking αποθηκεύονται τυπικά υπό ένα τυχαιοποιημένο μονοπάτι στο
/private/preboot/...και εκτίθενται μέσω του σταθερού symlink/var/jb. - Tweaks, launch daemons, και βοηθητικά binaries μπορεί επομένως να υπάρχουν κάτω από
/var/jbαντί των legacy rootful τοποθεσιών.
Αυτό έχει άμεση επίπτωση σε environment validation, Frida setup, και jailbreak detection bypass:
- Όταν ελέγχετε αν το tooling σας εγκαταστάθηκε σωστά, επιθεωρήστε τόσο legacy μονοπάτια όσο και
/var/jb. - Κατά την ανασκόπηση της λογικής jailbreak detection σε μια app, θυμηθείτε ότι οι σύγχρονοι έλεγχοι συχνά ψάχνουν για rootless artifacts και symlinks επιπλέον των κλασικών δεικτών όπως
Cydia.app. - Αν ένα τρίτο script ή tweak υποθέτει rootful filesystem layout, μπορεί να αποτύχει σιωπηλά σε μια rootless συσκευή.
Jailbreaking Benefits and Risks
Το Jailbreaking αφαιρεί το sandboxing που επιβάλλει το OS, επιτρέποντας στις εφαρμογές να έχουν πρόσβαση σε ολόκληρο το filesystem. Αυτή η ελευθερία επιτρέπει την εγκατάσταση μη εγκεκριμένων εφαρμογών και την πρόσβαση σε περισσότερα APIs. Ωστόσο, για τους κανονικούς χρήστες, το jailbreaking δεν συνιστάται λόγω πιθανών κινδύνων ασφάλειας και αστάθειας της συσκευής.
After Jailbreaking
Jailbreak Detection
Πολλές εφαρμογές θα προσπαθήσουν να εντοπίσουν αν η κινητή συσκευή είναι jailbroken και σε αυτή την περίπτωση η εφαρμογή δεν θα τρέξει
- Μετά το jailbreaking, αρχεία και φάκελοι συνήθως εγκαθίστανται — αυτά μπορούν να αναζητηθούν για να προσδιοριστεί αν η συσκευή είναι jailbroken.
- Σε σύγχρονα rootless jailbreaks, αυτά τα αρχεία μπορεί να εμφανιστούν κάτω από
/var/jbή να επιλυθούν μέσω symlinks σε/private/preboot/...αντί μόνο στις κλασικές rootful τοποθεσίες. - Σε μια jailbroken συσκευή οι εφαρμογές αποκτούν read/write πρόσβαση σε νέα αρχεία έξω από το sandbox.
- Κάποιες API κλήσεις θα συμπεριφέρονται διαφορετικά.
- Η παρουσία της υπηρεσίας OpenSSH.
- Η κλήση
/bin/shθα επιστρέψει 1 αντί για 0.
Περισσότερες πληροφορίες για το πώς να εντοπίσετε jailbreaking εδώ.
Μπορείτε να προσπαθήσετε να αποφύγετε αυτούς τους εντοπισμούς χρησιμοποιώντας το objection’s ios jailbreak disable
Jailbreak Detection Bypass
- Μπορείτε να προσπαθήσετε να αποφύγετε αυτούς τους εντοπισμούς χρησιμοποιώντας το objection’s
ios jailbreak disable - Επίσης μπορείτε να εγκαταστήσετε το εργαλείο Liberty Lite (https://ryleyangus.com/repo/). Μόλις προστεθεί το repo, η εφαρμογή θα εμφανιστεί στην καρτέλα ‘Search’
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device
- https://docs.palera.in/docs/reference/environment-types/
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.


