iOS Pentesting χωρίς Jailbreak
Reading time: 8 minutes
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.
Κύρια ιδέα
Οι εφαρμογές που υπογράφονται με την εξουσιοδότηση get_task_allow
επιτρέπουν σε τρίτες εφαρμογές να εκτελούν μια λειτουργία που ονομάζεται task_for_pid()
με το ID της διαδικασίας της αρχικής εφαρμογής ως παράμετρο, προκειμένου να αποκτήσουν την θύρα εργασίας πάνω σε αυτή (να είναι σε θέση να την ελέγξουν και να έχουν πρόσβαση στη μνήμη της).
Ωστόσο, δεν είναι τόσο εύκολο όσο το να τραβήξετε το IPA, να το ξαναυπογράψετε με την εξουσιοδότηση και να το επαναφέρετε στη συσκευή σας. Αυτό οφείλεται στην προστασία FairPlay. Όταν αλλάζει η υπογραφή της εφαρμογής, το κλειδί DRM (Digital Rights Management) ακυρώνεται και η εφαρμογή δεν θα λειτουργήσει.
Με μια παλιά jailbroken συσκευή, είναι δυνατό να εγκαταστήσετε το IPA, να το αποκρυπτογραφήσετε χρησιμοποιώντας το αγαπημένο σας εργαλείο (όπως το Iridium ή το frida-ios-dump) και να το τραβήξετε πίσω από τη συσκευή. Ωστόσο, αν είναι δυνατόν, συνιστάται να ρωτήσετε τον πελάτη για το αποκρυπτογραφημένο IPA.
Αποκτήστε το αποκρυπτογραφημένο IPA
Πάρτε το από την Apple
- Εγκαταστήστε την εφαρμογή που θέλετε να δοκιμάσετε στο iPhone
- Εγκαταστήστε και εκκινήστε το Apple Configurator μέσα στο macos σας
- Ανοίξτε το
Terminal
στο Mac σας και cd στο/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
. Το IPA θα εμφανιστεί σε αυτόν τον φάκελο αργότερα. - Θα πρέπει να δείτε τη συσκευή iOS σας. Κάντε διπλό κλικ σε αυτήν και στη συνέχεια κάντε κλικ στο Προσθήκη + → Εφαρμογές από την επάνω μπάρα μενού.
- Μετά την κλικ στο Προσθήκη, το Configurator θα κατεβάσει το IPA από την Apple και θα προσπαθήσει να το στείλει στη συσκευή σας. Αν ακολουθήσατε τη σύστασή μου νωρίτερα και έχετε ήδη εγκαταστήσει το IPA, θα εμφανιστεί ένα παράθυρο που θα σας ζητά να επανεγκαταστήσετε την εφαρμογή.
- Το IPA θα πρέπει να έχει κατέβει μέσα στο
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
από όπου μπορείτε να το πάρετε.
Δείτε https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed για περισσότερες λεπτομέρειες σχετικά με αυτή τη διαδικασία.
Αποκρυπτογράφηση της εφαρμογής
Για να αποκρυπτογραφήσουμε το IPA, θα το εγκαταστήσουμε. Ωστόσο, αν έχετε ένα παλιό jailbroken iPhone, πιθανώς η έκδοσή του δεν θα υποστηρίζεται από την εφαρμογή, καθώς συνήθως οι εφαρμογές υποστηρίζουν μόνο τις τελευταίες εκδόσεις.
Έτσι, για να το εγκαταστήσετε, απλώς αποσυμπιέστε το IPA:
unzip redacted.ipa -d unzipped
Ελέγξτε το Info.plist
για την ελάχιστη υποστηριζόμενη έκδοση και αν η συσκευή σας είναι παλαιότερη από αυτήν, αλλάξτε την τιμή ώστε να είναι υποστηριζόμενη.
Συμπιέστε ξανά το IPA:
cd unzipped
zip -r ../no-min-version.ipa *
Στη συνέχεια, εγκαταστήστε το IPA για παράδειγμα με:
ideviceinstaller -i no-min-version.ipa -w
Σημειώστε ότι μπορεί να χρειαστείτε το AppSync Unified tweak από το Cydia για να αποτρέψετε τυχόν σφάλματα invalid signature
.
Αφού εγκατασταθεί, μπορείτε να χρησιμοποιήσετε το Iridium tweak από το Cydia για να αποκτήσετε το αποκρυπτογραφημένο IPA.
Patch entitlements & re-sign
Για να επαναυπογράψετε την εφαρμογή με το δικαίωμα get-task-allow
, υπάρχουν διάφορα εργαλεία διαθέσιμα όπως το app-signer
, codesign
και iResign
. Το app-signer
έχει μια πολύ φιλική προς το χρήστη διεπαφή που επιτρέπει να επαναυπογράψετε πολύ εύκολα ένα αρχείο IPA υποδεικνύοντας το IPA που θέλετε να επαναυπογράψετε, να θέσετε το get-task-allow
και το πιστοποιητικό και το προφίλ παροχής που θα χρησιμοποιήσετε.
Όσον αφορά το πιστοποιητικό και τα προφίλ υπογραφής, η Apple προσφέρει δωρεάν προφίλ υπογραφής προγραμματιστών για όλους τους λογαριασμούς μέσω του Xcode. Απλώς δημιουργήστε μια εφαρμογή και ρυθμίστε ένα. Στη συνέχεια, ρυθμίστε το iPhone να εμπιστεύεται τις εφαρμογές προγραμματιστών πηγαίνοντας στις Ρυθμίσεις
→ Απόρρητο & Ασφάλεια
, και κάντε κλικ στο Developer Mode
.
Με το επαναυπογεγραμμένο IPA, ήρθε η ώρα να το εγκαταστήσετε στη συσκευή για να το pentest:
ideviceinstaller -i resigned.ipa -w
Ενεργοποίηση Λειτουργίας Προγραμματιστή (iOS 16+)
Από το iOS 16, η Apple εισήγαγε τη Λειτουργία Προγραμματιστή: οποιοδήποτε δυαδικό αρχείο που φέρει get_task_allow
ή είναι υπογεγραμμένο με πιστοποιητικό ανάπτυξης θα αρνηθεί να εκκινήσει μέχρι να ενεργοποιηθεί η Λειτουργία Προγραμματιστή στη συσκευή. Δεν θα μπορείτε επίσης να συνδέσετε το Frida/LLDB εκτός αν αυτή η σημαία είναι ενεργοποιημένη.
- Εγκαταστήστε ή σπρώξτε οποιοδήποτε υπογεγραμμένο από προγραμματιστή IPA στο τηλέφωνο.
- Μεταβείτε σε Ρυθμίσεις → Ιδιωτικότητα & Ασφάλεια → Λειτουργία Προγραμματιστή και ενεργοποιήστε την.
- Η συσκευή θα επανεκκινήσει; μετά την εισαγωγή του κωδικού πρόσβασης θα σας ζητηθεί να Ενεργοποιήσετε τη Λειτουργία Προγραμματιστή.
Η Λειτουργία Προγραμματιστή παραμένει ενεργή μέχρι να την απενεργοποιήσετε ή να διαγράψετε το τηλέφωνο, οπότε αυτό το βήμα χρειάζεται να εκτελείται μόνο μία φορά ανά συσκευή. Η τεκμηρίωση της Apple εξηγεί τις επιπτώσεις ασφαλείας.
Σύγχρονες επιλογές sideloading
Υπάρχουν τώρα αρκετοί ώριμοι τρόποι για να κάνετε sideload και να διατηρείτε τα υπογεγραμμένα IPA ενημερωμένα χωρίς jailbreak:
Εργαλείο | Απαιτήσεις | Δυνάμεις | Περιορισμοί |
---|---|---|---|
AltStore 2 / SideStore | macOS/Windows/Linux συνοδευτικό που ξαναυπογράφει το IPA κάθε 7 ημέρες με δωρεάν προφίλ ανάπτυξης | Αυτόματη επαναφόρτωση μέσω Wi-Fi, λειτουργεί μέχρι iOS 17 | Χρειάζεται υπολογιστής στο ίδιο δίκτυο, περιορισμός 3 εφαρμογών που επιβάλλεται από την Apple |
TrollStore 1/2 | Συσκευή σε iOS 14 – 15.4.1 ευάλωτη στο σφάλμα CoreTrust | Μόνιμη υπογραφή (χωρίς περιορισμό 7 ημερών); δεν απαιτεί υπολογιστή μόλις εγκατασταθεί | Δεν υποστηρίζεται σε iOS 15.5+ (το σφάλμα έχει διορθωθεί) |
Για τακτικές δοκιμές pentesting σε τρέχουσες εκδόσεις iOS, οι Alt/Side-Store είναι συνήθως η πιο πρακτική επιλογή.
Hooking / δυναμική εργαλειακή υποστήριξη
Μπορείτε να κάνετε hook την εφαρμογή σας ακριβώς όπως σε μια jailbroken συσκευή μόλις είναι υπογεγραμμένη με get_task_allow
και η Λειτουργία Προγραμματιστή είναι ενεργοποιημένη:
# Spawn & attach with objection
objection -g "com.example.target" explore
# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause
Οι πρόσφατες εκδόσεις Frida (>=16) χειρίζονται αυτόματα την πιστοποίηση δεικτών και άλλες μετρήσεις προστασίας του iOS 17, οπότε τα περισσότερα υπάρχοντα σενάρια λειτουργούν αμέσως.
Αυτοματοποιημένη δυναμική ανάλυση με MobSF (χωρίς jailbreak)
MobSF μπορεί να ενσωματώσει ένα dev-signed IPA σε μια πραγματική συσκευή χρησιμοποιώντας την ίδια τεχνική (get_task_allow
) και παρέχει ένα web UI με πρόγραμμα περιήγησης συστήματος αρχείων, καταγραφή κυκλοφορίας και κονσόλα Frida【】. Ο γρηγορότερος τρόπος είναι να τρέξετε το MobSF σε Docker και στη συνέχεια να συνδέσετε το iPhone σας μέσω USB:
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
-v /var/run/usbmuxd:/var/run/usbmuxd \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA
MobSF θα αναπτύξει αυτόματα το δυαδικό αρχείο, θα ενεργοποιήσει έναν διακομιστή Frida μέσα στο sandbox της εφαρμογής και θα δημιουργήσει μια διαδραστική αναφορά.
iOS 17 & προειδοποιήσεις Λειτουργίας Κλειδώματος
- Λειτουργία Κλειδώματος (Ρυθμίσεις → Ιδιωτικότητα & Ασφάλεια) μπλοκάρει τον δυναμικό συνδέτη από το να φορτώνει μη υπογεγραμμένες ή εξωτερικά υπογεγραμμένες δυναμικές βιβλιοθήκες. Όταν δοκιμάζετε συσκευές που μπορεί να έχουν αυτή τη λειτουργία ενεργοποιημένη, βεβαιωθείτε ότι είναι απενεργοποιημένη ή οι συνεδρίες σας Frida/objection θα τερματιστούν αμέσως.
- Η Αυθεντικοποίηση Δείκτη (PAC) επιβάλλεται σε όλο το σύστημα σε συσκευές A12+. Η Frida ≥16 χειρίζεται διαφανώς την αφαίρεση PAC — απλώς κρατήστε ενημερωμένα τόσο το frida-server όσο και την Python/CLI εργαλειοθήκη όταν κυκλοφορεί μια νέα κύρια έκδοση iOS.
Αναφορές
- https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
- Τεκμηρίωση προγραμματιστών της Apple – Ενεργοποίηση Λειτουργίας Προγραμματιστή σε μια συσκευή: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device
- Mobile Security Framework (MobSF): https://mobsf.github.io/Mobile-Security-Framework-MobSF/
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.