# iOS Testing Environment {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} {% endhint %} ## Apple Developer Program Μια **ταυτότητα προγραμματισμού** είναι μια συλλογή δημόσιων και ιδιωτικών κλειδιών που σχετίζονται με έναν λογαριασμό προγραμματιστή της Apple. Για να **υπογράψετε εφαρμογές** πρέπει να πληρώσετε **99$/έτος** για να εγγραφείτε στο **Apple Developer Program** για να αποκτήσετε την ταυτότητα προγραμματισμού σας. Χωρίς αυτό δεν θα μπορείτε να εκτελέσετε εφαρμογές από τον πηγαίο κώδικα σε μια φυσική συσκευή. Μια άλλη επιλογή είναι να χρησιμοποιήσετε μια **jailbroken συσκευή**. Από την έκδοση Xcode 7.2, η Apple έχει προσφέρει μια επιλογή για τη δημιουργία ενός **δωρεάν προφίλ ανάπτυξης iOS** που επιτρέπει να γράφετε και να δοκιμάζετε την εφαρμογή σας σε ένα πραγματικό iPhone. Πηγαίνετε στο _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Προσθέστε νέο Appli ID με τα διαπιστευτήριά σας) --> _Κάντε κλικ στο Apple ID που δημιουργήθηκε_ --> _Διαχείριση Πιστοποιητικών_ --> _+_ (Apple Development) --> _Έγινε_\ \_\_Στη συνέχεια, για να εκτελέσετε την εφαρμογή σας στο iPhone σας, πρέπει πρώτα να **υποδείξετε το iPhone να εμπιστευτεί τον υπολογιστή.** Στη συνέχεια, μπορείτε να προσπαθήσετε να **εκτελέσετε την εφαρμογή στο κινητό από το Xcode,** αλλά θα εμφανιστεί ένα σφάλμα. Έτσι, πηγαίνετε στο _Settings_ --> _General_ --> _Profiles and Device Management_ --> Επιλέξτε το μη αξιόπιστο προφίλ και κάντε κλικ στο "**Trust**". Σημειώστε ότι **οι εφαρμογές που υπογράφονται από το ίδιο πιστοποιητικό υπογραφής μπορούν να μοιράζονται πόρους με ασφαλή τρόπο, όπως στοιχεία keychain**. Τα προφίλ προγραμματισμού αποθηκεύονται μέσα στο τηλέφωνο στο **`/Library/MobileDevice/ProvisioningProfiles`** ## **Simulator** {% hint style="info" %} Σημειώστε ότι ένας **προσομοιωτής δεν είναι το ίδιο με έναν εξομοιωτή**. Ο προσομοιωτής απλώς προσομοιώνει τη συμπεριφορά της συσκευής και τις λειτουργίες αλλά δεν τις χρησιμοποιεί πραγματικά. {% endhint %} ### **Simulator** Το πρώτο πράγμα που πρέπει να γνωρίζετε είναι ότι **η εκτέλεση ενός pentest μέσα σε έναν προσομοιωτή θα είναι πολύ πιο περιορισμένη από το να το κάνετε σε μια jailbroken συσκευή**. Όλα τα εργαλεία που απαιτούνται για την κατασκευή και υποστήριξη μιας εφαρμογής iOS υποστηρίζονται **μόνο επίσημα σε Mac OS**.\ Το de facto εργαλείο της Apple για τη δημιουργία/αποσφαλμάτωσης/εργαλειοποίησης εφαρμογών iOS είναι το **Xcode**. Μπορεί να χρησιμοποιηθεί για να κατεβάσετε άλλα στοιχεία όπως **προσομοιωτές** και διαφορετικές **εκδόσεις SDK** που απαιτούνται για να κατασκευάσετε και να **δοκιμάσετε** την εφαρμογή σας.\ Συνιστάται έντονα να **κατεβάσετε** το Xcode από το **επίσημο app store**. Άλλες εκδόσεις μπορεί να περιέχουν κακόβουλο λογισμικό. Τα αρχεία του προσομοιωτή μπορούν να βρεθούν στο `/Users//Library/Developer/CoreSimulator/Devices` Για να ανοίξετε τον προσομοιωτή, εκτελέστε το Xcode, στη συνέχεια πατήστε στην _καρτέλα Xcode_ --> _Άνοιγμα εργαλείων προγραμματιστή_ --> _Προσομοιωτής_\ \_\_Στην παρακάτω εικόνα κάνοντας κλικ στο "iPod touch \[...\]" μπορείτε να επιλέξετε άλλη συσκευή για δοκιμή: ![](<../../.gitbook/assets/image (270).png>) ![](<../../.gitbook/assets/image (520).png>) ### Applications in the Simulator Μέσα στο `/Users//Library/Developer/CoreSimulator/Devices` μπορείτε να βρείτε όλους τους **εγκατεστημένους προσομοιωτές**. Εάν θέλετε να αποκτήσετε πρόσβαση στα αρχεία μιας εφαρμογής που δημιουργήθηκε μέσα σε έναν από τους εξομοιωτές, μπορεί να είναι δύσκολο να γνωρίζετε **σε ποιον είναι εγκατεστημένη η εφαρμογή**. Ένας γρήγορος τρόπος για να **βρείτε το σωστό UID** είναι να εκτελέσετε την εφαρμογή στον προσομοιωτή και να εκτελέσετε: ```bash xcrun simctl list | grep Booted iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted) ``` Μόλις γνωρίζετε το UID, οι εφαρμογές που είναι εγκατεστημένες σε αυτό μπορούν να βρεθούν στο `/Users//Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` Ωστόσο, εκπληκτικά δεν θα βρείτε την εφαρμογή εδώ. Πρέπει να αποκτήσετε πρόσβαση στο `/Users//Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/` Και σε αυτόν τον φάκελο μπορείτε να **βρείτε το πακέτο της εφαρμογής.** ## Emulator Το Corellium είναι ο μόνος δημόσια διαθέσιμος iOS emulator. Είναι μια λύση SaaS για επιχειρήσεις με μοντέλο άδειας ανά χρήστη και δεν προσφέρει καμία δοκιμαστική άδεια. ## Jailbeaking Η Apple απαιτεί αυστηρά ότι ο κώδικας που εκτελείται στο iPhone πρέπει να είναι **υπογεγραμμένος από ένα πιστοποιητικό που εκδίδεται από την Apple**. **Jailbreaking** είναι η διαδικασία της ενεργής **παράκαμψης τέτοιων περιορισμών** και άλλων ελέγχων ασφαλείας που έχουν τεθεί από το λειτουργικό σύστημα. Επομένως, μόλις το συσκευή είναι jailbroken, ο **έλεγχος ακεραιότητας** που είναι υπεύθυνος για τον έλεγχο των εφαρμογών που εγκαθίστανται είναι διορθωμένος ώστε να **παρακαμπτεται**. {% hint style="info" %} Σε αντίθεση με το Android, **δεν μπορείτε να αλλάξετε σε "Developer Mode"** στο iOS για να εκτελέσετε μη υπογεγραμμένο/μη αξιόπιστο κώδικα στη συσκευή. {% endhint %} ### Android Rooting vs. iOS Jailbreaking Ενώ συχνά συγκρίνονται, το **rooting** στο Android και το **jailbreaking** στο iOS είναι θεμελιωδώς διαφορετικές διαδικασίες. Το rooting των συσκευών Android μπορεί να περιλαμβάνει **την εγκατάσταση του δυαδικού `su`** ή **την αντικατάσταση του συστήματος με ένα ριζωμένο custom ROM**, το οποίο δεν απαιτεί απαραίτητα εκμεταλλεύσεις αν ο bootloader είναι ξεκλειδωμένος. **Η αναλαμπή custom ROMs** αντικαθιστά το λειτουργικό σύστημα της συσκευής μετά την ξεκλείδωση του bootloader, απαιτώντας μερικές φορές μια εκμετάλλευση. Αντίθετα, οι συσκευές iOS δεν μπορούν να αναβοσβήνουν custom ROMs λόγω του περιορισμού του bootloader να εκκινεί μόνο εικόνες υπογεγραμμένες από την Apple. **Το jailbreaking iOS** στοχεύει να παρακάμψει τις προστασίες υπογραφής κώδικα της Apple για να εκτελέσει μη υπογεγραμμένο κώδικα, μια διαδικασία που περιπλέκεται από τις συνεχείς βελτιώσεις ασφαλείας της Apple. ### Jailbreaking Challenges Το jailbreaking iOS είναι ολοένα και πιο δύσκολο καθώς η Apple διορθώνει γρήγορα τις ευπάθειες. **Η υποβάθμιση του iOS** είναι δυνατή μόνο για περιορισμένο χρονικό διάστημα μετά από μια κυκλοφορία, καθιστώντας το jailbreaking μια ευαίσθητη χρονικά υπόθεση. Οι συσκευές που χρησιμοποιούνται για δοκιμές ασφαλείας δεν πρέπει να ενημερώνονται εκτός αν διασφαλίζεται η επαναφορά του jailbreaking. Οι ενημερώσεις iOS ελέγχονται από έναν **μηχανισμό πρόκλησης-απάντησης** (SHSH blobs), επιτρέποντας την εγκατάσταση μόνο για απαντήσεις που υπογράφονται από την Apple. Αυτός ο μηχανισμός, γνωστός ως "παράθυρο υπογραφής", περιορίζει την ικανότητα αποθήκευσης και μετέπειτα χρήσης OTA πακέτων firmware. Ο ιστότοπος [IPSW Downloads](https://ipsw.me) είναι μια πηγή για τον έλεγχο των τρεχουσών παραθύρων υπογραφής. ### Jailbreak Varieties * **Tethered jailbreaks** απαιτούν σύνδεση υπολογιστή για κάθε επανεκκίνηση. * **Semi-tethered jailbreaks** επιτρέπουν την εκκίνηση σε μη jailbroken λειτουργία χωρίς υπολογιστή. * **Semi-untethered jailbreaks** απαιτούν χειροκίνητο επανα-jailbreaking χωρίς να χρειάζεται υπολογιστής. * **Untethered jailbreaks** προσφέρουν μια μόνιμη λύση jailbreak χωρίς την ανάγκη επανα-εφαρμογής. ### Jailbreaking Tools and Resources Τα εργαλεία jailbreaking διαφέρουν ανάλογα με την έκδοση iOS και τη συσκευή. Πηγές όπως [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com), και [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) παρέχουν ενημερωμένες πληροφορίες. Παραδείγματα περιλαμβάνουν: * [Checkra1n](https://checkra.in/) για συσκευές με τσιπ A7-A11. * [Palera1n](https://palera.in/) για συσκευές Checkm8 (A8-A11) σε iOS 15.0-16.5. * [Unc0ver](https://unc0ver.dev/) για εκδόσεις iOS έως 14.8. Η τροποποίηση της συσκευής σας ενέχει κινδύνους και το jailbreaking θα πρέπει να προσεγγίζεται με προσοχή. ### Jailbreaking Benefits and Risks Το jailbreaking **αφαιρεί την επιβολή sandboxing από το OS**, επιτρέποντας στις εφαρμογές να έχουν πρόσβαση σε ολόκληρο το σύστημα αρχείων. Αυτή η ελευθερία επιτρέπει την εγκατάσταση μη εγκεκριμένων εφαρμογών και την πρόσβαση σε περισσότερες APIs. Ωστόσο, για τους κανονικούς χρήστες, το jailbreaking **δεν συνιστάται** λόγω πιθανών κινδύνων ασφαλείας και αστάθειας της συσκευής. ### **After Jailbreaking** {% content-ref url="basic-ios-testing-operations.md" %} [basic-ios-testing-operations.md](basic-ios-testing-operations.md) {% endcontent-ref %} ### **Jailbreak Detection** **Πολλές εφαρμογές θα προσπαθήσουν να ανιχνεύσουν αν το κινητό είναι jailbroken και σε αυτή την περίπτωση η εφαρμογή δεν θα εκτελείται** * Μετά το jailbreaking, σε iOS **αρχεία και φάκελοι εγκαθίστανται συνήθως**, αυτοί μπορούν να αναζητηθούν για να προσδιοριστεί αν η συσκευή είναι jailbroken. * Σε μια jailbroken συσκευή, οι εφαρμογές αποκτούν **δικαιώματα ανάγνωσης/εγγραφής σε νέα αρχεία** εκτός του sandbox * Ορισμένες **κλήσεις API** θα **συμπεριφέρονται διαφορετικά** * Η παρουσία της υπηρεσίας **OpenSSH** * Η κλήση `/bin/sh` θα **επιστρέψει 1** αντί για 0 **Περισσότερες πληροφορίες σχετικά με το πώς να ανιχνεύσετε το jailbreaking** [**εδώ**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.** Μπορείτε να προσπαθήσετε να αποφύγετε αυτές τις ανιχνεύσεις χρησιμοποιώντας το **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://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} {% endhint %}