iOS Testing Environment
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μια ταυτότητα προμήθειας είναι μια συλλογή δημόσιων και ιδιωτικών κλειδιών που σχετίζονται με έναν λογαριασμό προγραμματιστή της 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
Σημειώστε ότι ένας προσομοιωτής δεν είναι το ίδιο με έναν εξομοιωτή. Ο προσομοιωτής απλώς προσομοιώνει τη συμπεριφορά της συσκευής και τις λειτουργίες αλλά δεν τις χρησιμοποιεί πραγματικά.
Το πρώτο πράγμα που πρέπει να γνωρίζετε είναι ότι η εκτέλεση ενός pentest μέσα σε έναν προσομοιωτή θα είναι πολύ πιο περιορισμένη από το να το κάνετε σε μια jailbroken συσκευή.
Όλα τα εργαλεία που απαιτούνται για την κατασκευή και υποστήριξη μιας εφαρμογής iOS υποστηρίζονται μόνο επίσημα σε Mac OS. Το de facto εργαλείο της Apple για τη δημιουργία/αποσφαλμάτωσης/εργαλειοποίησης εφαρμογών iOS είναι το Xcode. Μπορεί να χρησιμοποιηθεί για να κατεβάσετε άλλα στοιχεία όπως προσομοιωτές και διαφορετικές εκδόσεις SDK που απαιτούνται για να κατασκευάσετε και να δοκιμάσετε την εφαρμογή σας. Συνιστάται έντονα να κατεβάσετε το Xcode από το επίσημο app store. Άλλες εκδόσεις μπορεί να περιέχουν κακόβουλο λογισμικό.
Τα αρχεία του προσομοιωτή μπορούν να βρεθούν στο /Users/<username>/Library/Developer/CoreSimulator/Devices
Για να ανοίξετε τον προσομοιωτή, εκτελέστε το Xcode, στη συνέχεια πατήστε στην καρτέλα Xcode --> Open Developer tools --> Simulator __Στην παρακάτω εικόνα κάνοντας κλικ στο "iPod touch [...]" μπορείτε να επιλέξετε άλλη συσκευή για δοκιμή:
Μέσα στο /Users/<username>/Library/Developer/CoreSimulator/Devices
μπορείτε να βρείτε όλους τους εγκατεστημένους προσομοιωτές. Εάν θέλετε να αποκτήσετε πρόσβαση στα αρχεία μιας εφαρμογής που δημιουργήθηκε μέσα σε έναν από τους εξομοιωτές, μπορεί να είναι δύσκολο να γνωρίζετε σε ποιον είναι εγκατεστημένη η εφαρμογή. Ένας γρήγορος τρόπος για να βρείτε το σωστό UID είναι να εκτελέσετε την εφαρμογή στον προσομοιωτή και να εκτελέσετε:
Μόλις γνωρίζετε το UID, οι εφαρμογές που είναι εγκατεστημένες σε αυτό μπορούν να βρεθούν στο /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
Ωστόσο, εκπληκτικά δεν θα βρείτε την εφαρμογή εδώ. Πρέπει να αποκτήσετε πρόσβαση στο /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
Και σε αυτόν τον φάκελο μπορείτε να βρείτε το πακέτο της εφαρμογής.
Το Corellium είναι ο μόνος δημόσια διαθέσιμος iOS emulator. Είναι μια λύση SaaS για επιχειρήσεις με μοντέλο άδειας ανά χρήστη και δεν προσφέρει καμία δοκιμαστική άδεια.
Δείτε αυτήν την ανάρτηση στο blog σχετικά με το πώς να κάνετε pentest σε μια εφαρμογή iOS σε μια μη jailbroken συσκευή: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Η Apple απαιτεί αυστηρά ότι ο κώδικας που εκτελείται στο iPhone πρέπει να είναι υπογεγραμμένος από ένα πιστοποιητικό που εκδίδεται από την Apple. Jailbreaking είναι η διαδικασία της ενεργής παράκαμψης τέτοιων περιορισμών και άλλων ελέγχων ασφαλείας που έχουν τεθεί από το λειτουργικό σύστημα. Επομένως, μόλις η συσκευή είναι jailbroken, ο έλεγχος ακεραιότητας που είναι υπεύθυνος για τον έλεγχο των εφαρμογών που εγκαθίστανται είναι διορθωμένος ώστε να παρακαμπτεται.
Σε αντίθεση με το Android, δεν μπορείτε να αλλάξετε σε "Developer Mode" στο iOS για να εκτελέσετε μη υπογεγραμμένο/μη αξιόπιστο κώδικα στη συσκευή.
Ενώ συχνά συγκρίνονται, το rooting στο Android και το jailbreaking στο iOS είναι θεμελιωδώς διαφορετικές διαδικασίες. Το rooting των συσκευών Android μπορεί να περιλαμβάνει την εγκατάσταση του δυαδικού su
ή την αντικατάσταση του συστήματος με ένα rooted custom ROM, το οποίο δεν απαιτεί απαραίτητα εκμεταλλεύσεις αν ο bootloader είναι ξεκλειδωμένος. Η αναλαμπή custom ROMs αντικαθιστά το λειτουργικό σύστημα της συσκευής μετά την ξεκλείδωση του bootloader, απαιτώντας μερικές φορές μια εκμετάλλευση.
Αντίθετα, οι συσκευές iOS δεν μπορούν να αναβοσβήσουν custom ROMs λόγω του περιορισμού του bootloader να εκκινεί μόνο εικόνες υπογεγραμμένες από την Apple. Το jailbreaking iOS στοχεύει να παρακάμψει τις προστασίες υπογραφής κώδικα της Apple για να εκτελέσει μη υπογεγραμμένο κώδικα, μια διαδικασία που περιπλέκεται από τις συνεχείς βελτιώσεις ασφαλείας της Apple.
Το jailbreaking iOS γίνεται ολοένα και πιο δύσκολο καθώς η Apple διορθώνει τις ευπάθειες γρήγορα. Η υποβάθμιση του iOS είναι δυνατή μόνο για περιορισμένο χρονικό διάστημα μετά από μια κυκλοφορία, καθιστώντας το jailbreaking μια ευαίσθητη χρονικά υπόθεση. Οι συσκευές που χρησιμοποιούνται για δοκιμές ασφαλείας δεν πρέπει να ενημερώνονται εκτός αν η επανα- jailbreaking είναι εγγυημένη.
Οι ενημερώσεις iOS ελέγχονται από έναν μηχανισμό πρόκλησης-απάντησης (SHSH blobs), επιτρέποντας την εγκατάσταση μόνο για απαντήσεις που υπογράφονται από την Apple. Αυτός ο μηχανισμός, γνωστός ως "παράθυρο υπογραφής", περιορίζει την ικανότητα αποθήκευσης και μετέπειτα χρήσης πακέτων firmware OTA. Ο ιστότοπος IPSW Downloads είναι μια πηγή για τον έλεγχο των τρεχουσών παραθύρων υπογραφής.
Tethered jailbreaks απαιτούν σύνδεση υπολογιστή για κάθε επανεκκίνηση.
Semi-tethered jailbreaks επιτρέπουν την εκκίνηση σε μη jailbroken λειτουργία χωρίς υπολογιστή.
Semi-untethered jailbreaks απαιτούν χειροκίνητο επανα-jailbreaking χωρίς να χρειάζεται υπολογιστής.
Untethered jailbreaks προσφέρουν μια μόνιμη λύση jailbreak χωρίς την ανάγκη επανα-εφαρμογής.
Τα εργαλεία 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 αφαιρεί την επιβολή sandboxing από το λειτουργικό σύστημα, επιτρέποντας στις εφαρμογές να έχουν πρόσβαση σε ολόκληρο το σύστημα αρχείων. Αυτή η ελευθερία επιτρέπει την εγκατάσταση μη εγκεκριμένων εφαρμογών και την πρόσβαση σε περισσότερες APIs. Ωστόσο, για τους κανονικούς χρήστες, το jailbreaking δεν συνιστάται λόγω πιθανών κινδύνων ασφαλείας και αστάθειας της συσκευής.
Πολλές εφαρμογές θα προσπαθήσουν να ανιχνεύσουν αν το κινητό είναι jailbroken και σε αυτήν την περίπτωση η εφαρμογή δεν θα εκτελείται
Μετά το jailbreaking, σε μια iOS αρχεία και φάκελοι εγκαθίστανται συνήθως, αυτοί μπορούν να αναζητηθούν για να προσδιορίσουν αν η συσκευή είναι jailbroken.
Σε μια jailbroken συσκευή, οι εφαρμογές αποκτούν δικαιώματα ανάγνωσης/εγγραφής σε νέα αρχεία εκτός του sandbox
Ορισμένες κλήσεις API θα συμπεριφέρονται διαφορετικά
Η παρουσία της υπηρεσίας OpenSSH
Η κλήση /bin/sh
θα επιστρέψει 1 αντί για 0
Περισσότερες πληροφορίες σχετικά με το πώς να ανιχνεύσετε το jailbreaking εδώ.
Μπορείτε να προσπαθήσετε να αποφύγετε αυτές τις ανιχνεύσεις χρησιμοποιώντας το objection's ios jailbreak disable
Μπορείτε να προσπαθήσετε να αποφύγετε αυτές τις ανιχνεύσεις χρησιμοποιώντας το objection's ios jailbreak disable
Μπορείτε επίσης να εγκαταστήσετε το εργαλείο Liberty Lite (https://ryleyangus.com/repo/). Μόλις προστεθεί το repo, η εφαρμογή θα πρέπει να εμφανίζεται στην καρτέλα ‘Search’
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)