iOS Uygulama Pentest
ios difficulty: orta-ileri
iOS testi, imzalı IPA’nın statik incelenmesi ve jailbreak’li (veya geliştirici) cihaz üzerinde Frida ile dinamik gözlem gerektirir. ATS, keychain erişim grupları ve URL scheme’ler sık saldırı yüzeyidir.
Ön koşullar
Section titled “Ön koşullar”- IPA (veya decrypted dump), macOS yardımcı araçlar- Jailbreak veya Corellium / checkra1n vb. laboratuvar; Frida- Araçlar: frida, objection, class-dump, hopper/ghidra, ios-deploy, burpİş akışı
Section titled “İş akışı”-
IPA’yı aç — Info.plist, entitlements, framework’ler, URL schemes.
-
Statik — class-dump / Ghidra; secret, crypto, jailbreak/pinning string’leri.
-
Dinamik — Frida spawn, SSL kill, method hook; Burp ile API.
-
Keychain & dosya — plaintext token, NSUserDefaults, container dump.
-
IPC — custom URL scheme, universal link, pasteboard, app group paylaşımları.
IPA edinme ve paket
Section titled “IPA edinme ve paket”# TestFlight / cihazdan çıkarılmış IPA varsayımıunzip -l App.ipa | headunzip App.ipa -d ipa_outplutil -p ipa_out/Payload/*.app/Info.plist | rg -i 'CFBundleURL|ATS|UIFileSharing|LSApplicationQueries'codesign -d --entitlements - ipa_out/Payload/*.app 2>/dev/nullotool -L ipa_out/Payload/*.app/AppBinary | headclass-dump -H ipa_out/Payload/*.app/AppBinary -o headers/Jailbreak & anti-tamper
Section titled “Jailbreak & anti-tamper”Uygulamalar cydia://, /Applications/Cydia.app, fork, Frida portu veya
DYLD insert ile jailbreak arar. Bypass için Frida script veya Objection:
frida-ps -Uafrida -U -f com.hedef.app -l jailbreak-bypass.js --no-pauseobjection -g com.hedef.app exploreios jailbreak disableios sslpinning disableFrida & SSL pinning
Section titled “Frida & SSL pinning”# cihaz: frida-server (jailbreak package veya elle)frida -U -f com.hedef.app -l ssl-bypass.js --no-pausefrida -U -n 'AppName' -l hook-login.js# objection içindeios hooking watch class NSURLSessionios hooking list classesATS (NSAppTransportSecurity) zayıf yapılandırılmışsa HTTP veya istisna
domain’leri Info.plist’te görünür; pinning ise TrustKit / custom
URLSessionDelegate içinde olabilir.
Keychain & depolama
Section titled “Keychain & depolama”objection -g com.hedef.app exploreios keychain dumpios nsuserdefaults getios cookies get# container (jailbreak)ssh root@DEVICE 'find /var/mobile/Containers/Data/Application -name "*.plist" 2>/dev/null | head'scp -r root@DEVICE:/var/mobile/Containers/Data/Application/UUID/ ./container/Keychain kSecAttrAccessibleAlways veya aynı access group’taki diğer
uygulamalara sızıntı kritik bulgudur.
URL scheme & universal link
Section titled “URL scheme & universal link”plutil -p ipa_out/Payload/*.app/Info.plist | rg -A5 CFBundleURLSchemes# cihaz üzerinde tetikleme (örnek)xcrun simctl openurl booted 'hedef://reset?token=AAAA'Custom scheme → auth token / state injectionUniversal Links → apple-app-site-association doğrulaması# Cihaz Wi-Fi proxy → Burp; Burp CA'yı profil olarak yükle# Certificate pinning açıksa Frida bypass şartiproxy 2222 22ssh -p 2222 root@127.0.0.1Komut üreteci
Section titled “Komut üreteci”objection · iOS explore
embedded toolobjection -g com.hedef.app exploreobjection · iOS explore
Section titled “objection · iOS explore”Sık bulgular
Section titled “Sık bulgular”| Alan | Risk |
|---|---|
| Keychain erişilebilirlik | Cihaz kilidi açıkken token çalınabilir |
| Pinning yok / zayıf ATS | MITM ile oturum |
| URL scheme | Authz atlama, open redirect |
| Local auth bypass | Biometric hook → hassas ekran |
| Backup / file sharing | Container’dan secret |
Zincir
Section titled “Zincir”Info.plist URL scheme → Frida unpin → Burp API → keychain dump → token reuse