iOS Pentesting without Jailbreak
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Hoofidee
Toepassings wat onderteken is met die entitlement get_task_allow laat derdeparty-toepassings toe om ’n funksie genaamd task_for_pid() uit te voer met die proses-ID van die aanvanklike toepassing as argument om die taakport daaroor te kry (in staat wees om dit te beheer en toegang tot sy geheue).
Dit is egter nie so maklik as net die IPA uit te haal, dit weer te teken met die entitlement, en dit terug na jou toestel te flits nie. Dit is weens FairPlay-beskerming. Wanneer die handtekening van die app verander, word die DRM (Digital Rights Management) sleutel ongeldig gemaak en die app sal nie werk nie.
Met ’n ou jailbroken toestel is dit moontlik om die IPA te installeer, dit dekripteer met jou gunsteling tool (soos Iridium of frida-ios-dump), en dit weer van die toestel af te haal. As dit moontlik is, word dit egter aanbeveel om eerder die client vir die gedekripteerde IPA te gebruik.
Verkry gedekripteerde IPA
Kry dit van Apple
- Installeer die app wat jy wil pentest op die iPhone
- Installeer en open Apple Configurator binne jou macos
- Open
Terminalop jou Mac, en cd na/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps. Die IPA sal later in hierdie gids verskyn. - Jy behoort jou iOS-toestel te sien. Dubbelklik daarop, en klik dan Add + → Apps in die boonste menubalk.
- Na jy op Add klik, sal Configurator die IPA van Apple aflaai en probeer stoot na jou toestel. As jy my vorige aanbeveling gevolg het en die IPA reeds geïnstalleer het, sal ’n prompt verskyn wat jou vra om die app weer te installeer.
- Die IPA behoort afgelaai te wees binne
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileAppsvanwaar jy dit kan kry
Check https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed vir meer gedetailleerde inligting oor hierdie proses.
Dekripteer die app
Om die IPA te dekripteer gaan ons dit installeer. As jy egter ’n ou jailbroken iPhone het, is dit moontlik dat sy weergawe nie deur die toepassing ondersteun word nie, aangesien apps gewoonlik slegs die nuutste weergawes ondersteun.
Dus, om dit te installeer, pak net die IPA uit:
unzip redacted.ipa -d unzipped
Kontroleer die Info.plist vir die minimum ondersteunde weergawe, en as jou toestel ouer is as dit, verander die waarde sodat dit ondersteun word.
Pak die IPA weer in ’n zip:
cd unzipped
zip -r ../no-min-version.ipa *
Installeer dan byvoorbeeld die IPA met:
ideviceinstaller -i no-min-version.ipa -w
Note dat jy mogelijk die AppSync Unified tweak van Cydia nodig het om enige invalid signature foute te voorkom.
Sodra dit geïnstalleer is, kan jy die Iridium tweak van Cydia gebruik om die gedekripteerde IPA te bekom.
Patche entitlements & heronderteken
Om die app met die get-task-allow entitlement te heronderteken, is daar verskeie gereedskap beskikbaar soos app-signer, codesign, en iResign. app-signer het ’n baie gebruikersvriendelike koppelvlak wat dit baie maklik maak om ’n IPA-lêer te heronderteken — jy dui die IPA aan wat heronderteken moet word, stel dit get-taks-allow in en kies die sertifikaat en provisioning profile wat gebruik moet word.
Wat die sertifikaat en ondertekeningsprofiele betref, bied Apple free developer signing profiles vir alle rekeninge deur Xcode. Skep net ’n app en konfigureer een. Stel dan die iPhone om die ontwikkelaar-apps te vertrou deur na Settings → Privacy & Security te navigeer en op Developer Mode te klik.
Met die herondertekende IPA is dit tyd om dit op die toestel te installeer om dit te pentest:
ideviceinstaller -i resigned.ipa -w
IPA patching + DYLIB injection + free Apple ID re-sign (CLI)
As jy reeds ’n decrypted IPA het, kan jy dit patch om ’n custom DYLIB te laai, entitlements (bv. network) by te voeg en dit weer te re-sign sonder Xcode met ’n gratis Apple ID. Dit is nuttig vir in-app instrumentation op nie-jailbroken toestelle.
Tipiese vloei:
# 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>
Aantekeninge:
- Gratis Apple ID signing verval gewoonlik in 7 dae en is beperk tot 3 App IDs/week en 10 sideloaded apps.
- Die tool kan kruisplatform heronderteken deur met Apple te verifieer via SRP en ’n gratis dev certificate + provisioning profile te genereer. Apple se anisette headers word per platform hanteer (macOS via
AOSKit.framework, Linux via Anisette.py, Windows via an external anisette server). - Dit omseil NIE die sandbox nie. Die geïnjekteerde kode hardloop binne die app-proses en kan slegs toegang hê tot die app se sandbox en keychain access groups.
USB-only toegang tot die geïnjekteerde implant
As die geïnjekteerde DYLIB ’n plaaslike TCP control channel blootstel, kan jy verkeer off Wi-Fi/cellular hou en dit oor USB deurstuur:
# 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"
As die implant keychain helpers insluit, kan jy items dump wat toeganklik is vir daardie app:
python3 client.py "keychain dump"
python3 client.py "keychain dump --filter self"
python3 client.py "keychain dump --class generic"
Enable Developer Mode (iOS 16+)
Since iOS 16 Apple introduced Ontwikkelaarmodus: any binary that carries get_task_allow or is signed with a development certificate will refuse to launch until Ontwikkelaarmodus is enabled on the device. You will also not be able to attach Frida/LLDB unless this flag is on.
- Install or push any developer-signed IPA to the phone.
- Navigate to Instellings → Privaatheid & Sekuriteit → Ontwikkelaarmodus and toggle it on.
- The device will reboot; after entering the passcode you will be asked to Skakel Aan Ontwikkelaarmodus.
Ontwikkelaarmodus remains active until you disable it or wipe the phone, so this step only needs to be performed once per device. Apple-dokumentasie explains the security implications.
Moderne sideloading-opsies
There are now several mature ways to sideload and keep re-signed IPAs up-to-date without a jailbreak:
| Gereedskap | Vereistes | Sterkpunte | Beperkings |
|---|---|---|---|
| AltStore 2 / SideStore | macOS/Windows/Linux metgesel wat die IPA elke 7 dae herteken met ’n gratis dev-profiel | Outomatiese herlaai oor Wi‑Fi, werk tot en met iOS 17 | Vereis ’n rekenaar op dieselfde netwerk, 3‑app beperking deur Apple opgelê |
| TrollStore 1/2 | Toestel op iOS 14 – 15.4.1 kwesbaar vir die CoreTrust-bug | Permanent ondertekening (geen 7‑dag beperking nie); geen rekenaar benodig sodra dit geïnstalleer is | Nie ondersteun op iOS 15.5+ (bug opgelos) |
For routine pentests on current iOS versions Alt/Side-Store are usually the most practical choice.
Hooking / dynamic instrumentation
You can hook your app exactly as on a jailbroken device once it is signed with get_task_allow en Ontwikkelaarmodus is on:
# 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
Onlangse Frida-releases (>=16) hanteer outomaties pointer authentication en ander iOS 17-mitigasies, sodat die meeste bestaande scripts sonder ekstra aanpassings werk.
Frida Gadget injection in non-jailbroken IPAs (listen mode)
As jy kan modify and re-sign an IPA, kan jy Frida Gadget inbou en die Mach-O patch sodat dit by opstart via @rpath gelaai word. Dit maak Frida/Objection sonder ’n jailbreak moontlik (die toestel moet die her-ondertekende IPA aanvaar).
’n Praktiese workflow is om GadgetInjector (Python tool) te gebruik om FridaGadget.dylib te inject en ’n listen-mode konfiguratie te genereer:
python3 gadget_injector.py MyApp.ipa
# Output: MyApp-frida-listen.ipa
Beperkings vir hersignering (belangrik vir nie-jailbroken installasies):
- Onderteken alle embedded dylibs met die dieselfde Team ID.
- Moet nie ekstra entitlements byvoeg aan
FridaGadget.dylib.
Na hersignering en installasie van die IPA, koppel aan in listen-modus:
# (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
Outomatiese dinamiese ontleding met MobSF (no jailbreak)
MobSF kan ’n dev-signed IPA op ’n werklike toestel instrumenteer deur dieselfde tegniek (get_task_allow) te gebruik en bied ’n web UI met ’n lêerstelselblaaier, verkeersopname en Frida-console【】. Die vinnigste manier is om MobSF in Docker te laat loop en dan jou iPhone via USB aan te sluit:
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 sal die binêr outomaties implementeer, ’n Frida-server binne die app-sandbox aktiveer en ’n interaktiewe verslag genereer.
iOS 17 & Lockdown Mode waarskuwings
- Lockdown Mode (Settings → Privacy & Security) blokkeer die dynamic linker om onondertekende of eksternt ondertekende dinamiese biblioteke te laai. Wanneer jy toestelle toets wat moontlik hierdie modus geaktiveer het, maak seker dit is gedeaktiveer anders sal jou Frida/objection-sessies onmiddellik beëindig word.
- Pointer Authentication (PAC) word stelselwyd afgedwing op A12+-toestelle. Frida ≥16 hanteer PAC-verwydering deursigtig — hou net beide frida-server en die Python/CLI toolchain op datum wanneer ’n nuwe groot iOS-weergawe vrygestel word.
Verwysings
- https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
- Apple ontwikkelaardokumentasie – Enabling Developer Mode on a device: 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
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


