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

Κύρια ιδέα

Οι εφαρμογές που υπογράφονται με την εξουσιοδότηση get_task_allow επιτρέπουν σε τρίτες εφαρμογές να εκτελούν μια λειτουργία που ονομάζεται task_for_pid() με το ID της διαδικασίας της αρχικής εφαρμογής ως παράμετρο, προκειμένου να αποκτήσουν την θύρα εργασίας πάνω σε αυτή (να είναι σε θέση να την ελέγξουν και να έχουν πρόσβαση στη μνήμη της).

Ωστόσο, δεν είναι τόσο εύκολο όσο το να τραβήξετε το IPA, να το ξαναυπογράψετε με την εξουσιοδότηση και να το επαναφέρετε στη συσκευή σας. Αυτό οφείλεται στην προστασία FairPlay. Όταν αλλάζει η υπογραφή της εφαρμογής, το κλειδί DRM (Digital Rights Management) ακυρώνεται και η εφαρμογή δεν θα λειτουργήσει.

Με μια παλιά jailbroken συσκευή, είναι δυνατό να εγκαταστήσετε το IPA, να το αποκρυπτογραφήσετε χρησιμοποιώντας το αγαπημένο σας εργαλείο (όπως το Iridium ή το frida-ios-dump) και να το τραβήξετε πίσω από τη συσκευή. Ωστόσο, αν είναι δυνατόν, συνιστάται να ρωτήσετε τον πελάτη για το αποκρυπτογραφημένο IPA.

Αποκτήστε το αποκρυπτογραφημένο IPA

Πάρτε το από την Apple

  1. Εγκαταστήστε την εφαρμογή που θέλετε να δοκιμάσετε στο iPhone
  2. Εγκαταστήστε και εκκινήστε το Apple Configurator μέσα στο macos σας
  3. Ανοίξτε το Terminal στο Mac σας και cd στο /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps. Το IPA θα εμφανιστεί σε αυτόν τον φάκελο αργότερα.
  4. Θα πρέπει να δείτε τη συσκευή iOS σας. Κάντε διπλό κλικ σε αυτήν και στη συνέχεια κάντε κλικ στο Προσθήκη + → Εφαρμογές από την επάνω μπάρα μενού.
  5. Μετά την κλικ στο Προσθήκη, το Configurator θα κατεβάσει το IPA από την Apple και θα προσπαθήσει να το στείλει στη συσκευή σας. Αν ακολουθήσατε τη σύστασή μου νωρίτερα και έχετε ήδη εγκαταστήσει το IPA, θα εμφανιστεί ένα παράθυρο που θα σας ζητά να επανεγκαταστήσετε την εφαρμογή.
  6. Το 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:

bash
unzip redacted.ipa -d unzipped

Ελέγξτε το Info.plist για την ελάχιστη υποστηριζόμενη έκδοση και αν η συσκευή σας είναι παλαιότερη από αυτήν, αλλάξτε την τιμή ώστε να είναι υποστηριζόμενη.

Συμπιέστε ξανά το IPA:

bash
cd unzipped
zip -r ../no-min-version.ipa *

Στη συνέχεια, εγκαταστήστε το IPA για παράδειγμα με:

bash
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:

bash
ideviceinstaller -i resigned.ipa -w

Ενεργοποίηση Λειτουργίας Προγραμματιστή (iOS 16+)

Από το iOS 16, η Apple εισήγαγε τη Λειτουργία Προγραμματιστή: οποιοδήποτε δυαδικό αρχείο που φέρει get_task_allow ή είναι υπογεγραμμένο με πιστοποιητικό ανάπτυξης θα αρνηθεί να εκκινήσει μέχρι να ενεργοποιηθεί η Λειτουργία Προγραμματιστή στη συσκευή. Δεν θα μπορείτε επίσης να συνδέσετε το Frida/LLDB εκτός αν αυτή η σημαία είναι ενεργοποιημένη.

  1. Εγκαταστήστε ή σπρώξτε οποιοδήποτε υπογεγραμμένο από προγραμματιστή IPA στο τηλέφωνο.
  2. Μεταβείτε σε Ρυθμίσεις → Ιδιωτικότητα & Ασφάλεια → Λειτουργία Προγραμματιστή και ενεργοποιήστε την.
  3. Η συσκευή θα επανεκκινήσει; μετά την εισαγωγή του κωδικού πρόσβασης θα σας ζητηθεί να Ενεργοποιήσετε τη Λειτουργία Προγραμματιστή.

Η Λειτουργία Προγραμματιστή παραμένει ενεργή μέχρι να την απενεργοποιήσετε ή να διαγράψετε το τηλέφωνο, οπότε αυτό το βήμα χρειάζεται να εκτελείται μόνο μία φορά ανά συσκευή. Η τεκμηρίωση της Apple εξηγεί τις επιπτώσεις ασφαλείας.

Σύγχρονες επιλογές sideloading

Υπάρχουν τώρα αρκετοί ώριμοι τρόποι για να κάνετε sideload και να διατηρείτε τα υπογεγραμμένα IPA ενημερωμένα χωρίς jailbreak:

ΕργαλείοΑπαιτήσειςΔυνάμειςΠεριορισμοί
AltStore 2 / SideStoremacOS/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 και η Λειτουργία Προγραμματιστή είναι ενεργοποιημένη:

bash
# 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:

bash
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.

Αναφορές

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