iOS Pentesting χωρίς Jailbreak
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.
Κύρια ιδέα
Εφαρμογές που υπογράφονται με το entitlement get_task_allow επιτρέπουν σε εφαρμογές τρίτων να εκτελέσουν μια συνάρτηση που ονομάζεται task_for_pid() με το PID της αρχικής εφαρμογής ως όρισμα, προκειμένου να αποκτήσουν το task port πάνω της (να μπορούν να την ελέγξουν και να έχουν πρόσβαση στη μνήμη της).
Ωστόσο, δεν είναι τόσο απλό όσο να τραβήξεις το IPA, να το επαναυπογράψεις με το entitlement και να το περάσεις ξανά στη συσκευή σου. Αυτό οφείλεται στην προστασία FairPlay. Όταν αλλάζει η υπογραφή της εφαρμογής, το DRM (Digital Rights Management) key ακυρώνεται και η εφαρμογή δεν θα λειτουργήσει.
Με μια παλιά συσκευή με Jailbreak, είναι δυνατή η εγκατάσταση του IPA, η αποκρυπτογράφησή του χρησιμοποιώντας το αγαπημένο σου εργαλείο (όπως Iridium ή frida-ios-dump) και η εξαγωγή του πίσω από τη συσκευή. Παρ’ όλα αυτά, αν είναι δυνατό, συνιστάται να ζητήσεις απλώς από τον πελάτη το αποκρυπτογραφημένο IPA.
Απόκτηση αποκρυπτογραφημένου IPA
Get it from Apple
- Εγκαταστήστε την εφαρμογή που θα pentest στο iPhone.
- Install and launch Apple Configurator inside your macos
- Άνοιξε το
Terminalστον Mac σου, και cd στο/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps. Το IPA θα εμφανιστεί σε αυτόν τον φάκελο αργότερα. - Θα πρέπει να βλέπετε τη συσκευή iOS. Κάντε διπλό κλικ πάνω της, και στη συνέχεια κάντε κλικ Add + → Apps από τη γραμμή μενού στην κορυφή.
- Αφού πατήσετε Add, το Configurator θα κατεβάσει το IPA από την Apple και θα προσπαθήσει να το σπρώξει στη συσκευή σας. Αν ακολουθήσατε την προηγούμενη σύστασή μου και εγκαταστήσατε ήδη το IPA, θα εμφανιστεί ένα μήνυμα που θα σας ρωτάει αν θέλετε να επανεγκαταστήσετε την εφαρμογή.
- Το IPA θα πρέπει να έχει κατέβει μέσα στο
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileAppsαπό όπου μπορείτε να το πάρετε
Check https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed for more detailed information about this process.
Αποκρυπτογράφηση της εφαρμογής
Για να αποκρυπτογραφήσουμε το IPA θα το εγκαταστήσουμε. Ωστόσο, αν έχετε ένα παλιό iPhone με Jailbreak, είναι πιθανό η έκδοσή του να μην υποστηρίζεται από την εφαρμογή, καθώς οι εφαρμογές συνήθως υποστηρίζουν μόνο τις πιο πρόσφατες εκδόσεις.
Έτσι, για να το εγκαταστήσετε, απλώς αποσυμπιέστε το 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
Για να re-sign την εφαρμογή με το get-task-allow entitlement υπάρχουν διαθέσιμα διάφορα εργαλεία όπως app-signer, codesign, και iResign. Το app-signer έχει μια πολύ φιλική προς τον χρήστη διεπαφή που επιτρέπει να resing πολύ εύκολα ένα αρχείο IPA, δηλώνοντας το IPA που θα re-sign, να του βάλει get-taks-allow και το πιστοποιητικό και το provisioning profile που θα χρησιμοποιηθούν.
Όσον αφορά το πιστοποιητικό και τα signing profiles, η Apple προσφέρει free developer signing profiles για όλους τους λογαριασμούς μέσω Xcode. Απλώς δημιουργήστε μια εφαρμογή και ρυθμίστε ένα. Έπειτα, ρυθμίστε το iPhone to trust the developer apps πηγαίνοντας σε Settings → Privacy & Security, και κάντε κλικ στο Developer Mode.
Με το re-signed IPA, είναι ώρα να το εγκαταστήσετε στη συσκευή για να pentest την εφαρμογή:
ideviceinstaller -i resigned.ipa -w
IPA patching + DYLIB injection + free Apple ID re-sign (CLI)
Αν έχετε ήδη ένα decrypted IPA, μπορείτε να το τροποποιήσετε ώστε να φορτώνει ένα custom DYLIB, να προσθέσετε entitlements (π.χ. network) και να το επανυπογράψετε χωρίς Xcode χρησιμοποιώντας ένα δωρεάν Apple ID. Αυτό είναι χρήσιμο για in-app instrumentation σε non-jailbroken συσκευές.
Τυπική ροή:
# Build the implant (macOS for build step)
make
# Patch the IPA to inject the DYLIB
python3 tools/patcher.py patch --ipa MyApp.ipa --dylib libShell.dylib
# -> MyApp_patched.ipa
# Patch + sign + install in one step (free Apple ID)
python3 tools/patcher.py full \
--ipa MyApp.ipa \
--dylib libShell.dylib \
--apple-id user@example.com \
--install \
--udid <device-udid>
Σημειώσεις:
- Η δωρεάν υπογραφή Apple ID συνήθως λήγει σε 7 ημέρες και περιορίζεται σε 3 App IDs/εβδομάδα και 10 sideloaded apps.
- Το εργαλείο μπορεί να επανυπογράψει διαπλατφορμικά αυθεντικοποιούμενο στην Apple μέσω SRP και παράγοντας ένα δωρεάν dev certificate + provisioning profile. Οι κεφαλίδες της Apple anisette διαχειρίζονται ανά πλατφόρμα (macOS via
AOSKit.framework, Linux via Anisette.py, Windows via an external anisette server). - Αυτό does not bypass the sandbox. Ο ενθεμένος κώδικας τρέχει μέσα στη διεργασία της εφαρμογής και μπορεί να έχει πρόσβαση μόνο στο sandbox της εφαρμογής και στα keychain access groups.
Πρόσβαση μόνο μέσω USB στο ενθεμένο implant
If the injected DYLIB exposes a local TCP control channel, you can keep traffic off Wi-Fi/cellular and forward it over USB:
# Forward device-local TCP port to host
iproxy 8080 8080
# Example client commands (host side)
python3 client.py "ls"
python3 client.py "pwd"
python3 client.py "scp -r Documents host:./downloads"
Εάν το implant περιλαμβάνει keychain helpers, μπορείτε να dump items προσβάσιμα από εκείνη την εφαρμογή:
python3 client.py "keychain dump"
python3 client.py "keychain dump --filter self"
python3 client.py "keychain dump --class generic"
Ενεργοποίηση Developer Mode (iOS 16+)
Από το iOS 16 η Apple εισήγαγε το Developer Mode: κάθε δυαδικό που φέρει get_task_allow ή είναι υπογεγραμμένο με πιστοποιητικό ανάπτυξης θα αρνείται να εκτελεστεί έως ότου το Developer Mode ενεργοποιηθεί στη συσκευή. Επίσης δεν θα μπορείτε να επισυνάψετε Frida/LLDB εκτός αν αυτή η σημαία είναι ενεργή.
- Εγκαταστήστε ή μεταφέρετε οποιοδήποτε developer-signed IPA στη συσκευή.
- Πλοηγηθείτε σε Settings → Privacy & Security → Developer Mode και ενεργοποιήστε το.
- Η συσκευή θα επανεκκινήσει· μετά την εισαγωγή του passcode θα σας ζητηθεί να Turn On το Developer Mode.
Το Developer Mode παραμένει ενεργό μέχρι να το απενεργοποιήσετε ή να διαγράψετε τη συσκευή, οπότε αυτό το βήμα χρειάζεται να γίνει μόνο μία φορά ανά συσκευή. Apple documentation εξηγεί τις επιπτώσεις ασφαλείας.
Σύγχρονες επιλογές sideloading
Υπάρχουν πλέον αρκετοί ώριμοι τρόποι για να κάνετε sideload και να κρατάτε ανανεωμένα re-signed IPAs χωρίς jailbreak:
| Εργαλείο | Απαιτήσεις | Πλεονεκτήματα | Περιορισμοί |
|---|---|---|---|
| AltStore 2 / SideStore | macOS/Windows/Linux companion that re-signs the IPA every 7 days with a free dev profile | Automatic reload over Wi-Fi, works up to iOS 17 | Needs computer on the same network, 3-app limit imposed by Apple |
| TrollStore 1/2 | Συσκευή με iOS 14 – 15.4.1 ευάλωτη στο CoreTrust bug | Permanent signing (no 7-day limit); no computer required once installed | Δεν υποστηρίζεται σε iOS 15.5+ (το bug έχει επιδιορθωθεί) |
Για τακτικά pentests σε τρέχουσες εκδόσεις iOS, τα Alt/Side-Store είναι συνήθως η πιο πρακτική επιλογή.
Hooking / dynamic instrumentation
Μπορείτε να hook την εφαρμογή σας ακριβώς όπως σε jailbroken συσκευή μόλις αυτή είναι υπογεγραμμένη με get_task_allow και το Developer Mode είναι ενεργό:
# 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) χειρίζονται αυτόματα το pointer authentication και άλλα μέτρα αντιμετώπισης του iOS 17, οπότε τα περισσότερα υπάρχοντα scripts λειτουργούν έτοιμα προς χρήση.
Έγχυση Frida Gadget σε non-jailbroken IPAs (listen mode)
If you can τροποποιήσετε και επανα-υπογράψετε ένα IPA, you can embed Frida Gadget and patch the Mach-O to load it via @rpath at startup. This enables Frida/Objection without a jailbreak (the device must accept the re-signed IPA).
A practical workflow is to use GadgetInjector (Python tool) to inject FridaGadget.dylib and generate a listen-mode διαμόρφωση:
python3 gadget_injector.py MyApp.ipa
# Output: MyApp-frida-listen.ipa
Περιορισμοί επανα-υπογραφής (σημαντικό για non-jailbroken installs):
- Υπογράψτε όλα τα embedded dylibs με το ίδιο Team ID.
- Μην προσθέσετε επιπλέον entitlements στο
FridaGadget.dylib.
Μετά την επανα-υπογραφή και την εγκατάσταση του IPA, κάντε attach σε listen mode:
# (Optional) start the app paused
xcrun devicectl device process launch \
--device <UDID> \
--start-stopped <bundle-id>
# Forward Frida listen port over USB (default 27042)
pymobiledevice3 usbmux forward 27042 27042
# Objection
objection -g <bundle-id> explore
# Or Frida CLI
frida -H 127.0.0.1:27042 -n MyApp
Αυτοματοποιημένη δυναμική ανάλυση με MobSF (no jailbreak)
Το MobSF μπορεί να εφαρμόσει instrumentation σε ένα dev-signed IPA σε μια πραγματική συσκευή χρησιμοποιώντας την ίδια τεχνική (get_task_allow) και παρέχει web UI με περιήγηση στο filesystem, καταγραφή κίνησης και Frida console【】. Ο ταχύτερος τρόπος είναι να τρέξετε το 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 will automatically deploy the binary, enable a Frida server inside the app sandbox and generate an interactive report.
iOS 17 & Lockdown Mode — Σημειώσεις
- Lockdown Mode (Settings → Privacy & Security) εμποδίζει το dynamic linker από το φόρτωμα μη υπογεγραμμένων ή εξωτερικά υπογεγραμμένων δυναμικών βιβλιοθηκών. Όταν δοκιμάζετε συσκευές που μπορεί να έχουν αυτή τη λειτουργία ενεργοποιημένη, βεβαιωθείτε ότι είναι απενεργοποιημένη ή οι συνεδρίες Frida/objection θα τερματιστούν αμέσως.
- Το Pointer Authentication (PAC) εφαρμόζεται σε όλο το σύστημα σε συσκευές A12+. Το Frida ≥16 χειρίζεται διαφανώς το PAC stripping — απλώς κρατήστε τόσο το frida-server όσο και το Python/CLI toolchain ενημερωμένα όταν κυκλοφορεί μια νέα κύρια έκδοση του iOS.
Αναφορές
- https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
- Apple developer documentation – Ενεργοποίηση Developer Mode σε μια συσκευή: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device
- Mobile Security Framework (MobSF): https://mobsf.github.io/Mobile-Security-Framework-MobSF/
- https://github.com/test1ng-guy/iOS-sandbox-explorer
- https://github.com/Saurabh221662/GadgetInjector
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.


