17 KiB
iOS Testing Environment
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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/<username>/Library/Developer/CoreSimulator/Devices
Για να ανοίξετε τον προσομοιωτή, εκτελέστε το Xcode, στη συνέχεια πατήστε στην καρτέλα Xcode --> Άνοιγμα εργαλείων προγραμματιστή --> Προσομοιωτής
__Στην παρακάτω εικόνα κάνοντας κλικ στο "iPod touch [...]" μπορείτε να επιλέξετε άλλη συσκευή για δοκιμή:
Applications in the Simulator
Μέσα στο /Users/<username>/Library/Developer/CoreSimulator/Devices
μπορείτε να βρείτε όλους τους εγκατεστημένους προσομοιωτές. Εάν θέλετε να αποκτήσετε πρόσβαση στα αρχεία μιας εφαρμογής που δημιουργήθηκε μέσα σε έναν από τους εξομοιωτές, μπορεί να είναι δύσκολο να γνωρίζετε σε ποιον είναι εγκατεστημένη η εφαρμογή. Ένας γρήγορος τρόπος για να βρείτε το σωστό UID είναι να εκτελέσετε την εφαρμογή στον προσομοιωτή και να εκτελέσετε:
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/
Και σε αυτόν τον φάκελο μπορείτε να βρείτε το πακέτο της εφαρμογής.
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 είναι μια πηγή για τον έλεγχο των τρεχουσών παραθύρων υπογραφής.
Jailbreak Varieties
- Tethered jailbreaks απαιτούν σύνδεση υπολογιστή για κάθε επανεκκίνηση.
- Semi-tethered jailbreaks επιτρέπουν την εκκίνηση σε μη jailbroken λειτουργία χωρίς υπολογιστή.
- Semi-untethered jailbreaks απαιτούν χειροκίνητο επανα-jailbreaking χωρίς να χρειάζεται υπολογιστής.
- Untethered jailbreaks προσφέρουν μια μόνιμη λύση jailbreak χωρίς την ανάγκη επανα-εφαρμογής.
Jailbreaking Tools and Resources
Τα εργαλεία jailbreaking διαφέρουν ανάλογα με την έκδοση iOS και τη συσκευή. Πηγές όπως Can I Jailbreak?, The iPhone Wiki, και Reddit Jailbreak παρέχουν ενημερωμένες πληροφορίες. Παραδείγματα περιλαμβάνουν:
- Checkra1n για συσκευές με τσιπ A7-A11.
- Palera1n για συσκευές Checkm8 (A8-A11) σε iOS 15.0-16.5.
- Unc0ver για εκδόσεις 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 {% endcontent-ref %}
Jailbreak Detection
Πολλές εφαρμογές θα προσπαθήσουν να ανιχνεύσουν αν το κινητό είναι jailbroken και σε αυτή την περίπτωση η εφαρμογή δεν θα εκτελείται
- Μετά το jailbreaking, σε iOS αρχεία και φάκελοι εγκαθίστανται συνήθως, αυτοί μπορούν να αναζητηθούν για να προσδιοριστεί αν η συσκευή είναι jailbroken.
- Σε μια jailbroken συσκευή, οι εφαρμογές αποκτούν δικαιώματα ανάγνωσης/εγγραφής σε νέα αρχεία εκτός του 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/
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.