Skip to content

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.

- 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
  1. IPA’yı aç — Info.plist, entitlements, framework’ler, URL schemes.

  2. Statik — class-dump / Ghidra; secret, crypto, jailbreak/pinning string’leri.

  3. Dinamik — Frida spawn, SSL kill, method hook; Burp ile API.

  4. Keychain & dosya — plaintext token, NSUserDefaults, container dump.

  5. IPC — custom URL scheme, universal link, pasteboard, app group paylaşımları.

Terminal window
# TestFlight / cihazdan çıkarılmış IPA varsayımı
unzip -l App.ipa | head
Terminal window
unzip App.ipa -d ipa_out
Terminal window
plutil -p ipa_out/Payload/*.app/Info.plist | rg -i 'CFBundleURL|ATS|UIFileSharing|LSApplicationQueries'
Terminal window
codesign -d --entitlements - ipa_out/Payload/*.app 2>/dev/null
Terminal window
otool -L ipa_out/Payload/*.app/AppBinary | head
Terminal window
class-dump -H ipa_out/Payload/*.app/AppBinary -o headers/

Uygulamalar cydia://, /Applications/Cydia.app, fork, Frida portu veya DYLD insert ile jailbreak arar. Bypass için Frida script veya Objection:

Terminal window
frida-ps -Ua
Terminal window
frida -U -f com.hedef.app -l jailbreak-bypass.js --no-pause
Terminal window
objection -g com.hedef.app explore
ios jailbreak disable
ios sslpinning disable
Terminal window
# cihaz: frida-server (jailbreak package veya elle)
frida -U -f com.hedef.app -l ssl-bypass.js --no-pause
Terminal window
frida -U -n 'AppName' -l hook-login.js
# objection içinde
ios hooking watch class NSURLSession
ios hooking list classes

ATS (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.

Terminal window
objection -g com.hedef.app explore
ios keychain dump
ios nsuserdefaults get
ios cookies get
Terminal window
# container (jailbreak)
ssh root@DEVICE 'find /var/mobile/Containers/Data/Application -name "*.plist" 2>/dev/null | head'
Terminal window
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.

Terminal window
plutil -p ipa_out/Payload/*.app/Info.plist | rg -A5 CFBundleURLSchemes
Terminal window
# cihaz üzerinde tetikleme (örnek)
xcrun simctl openurl booted 'hedef://reset?token=AAAA'
Custom scheme → auth token / state injection
Universal Links → apple-app-site-association doğrulaması
Terminal window
# Cihaz Wi-Fi proxy → Burp; Burp CA'yı profil olarak yükle
# Certificate pinning açıksa Frida bypass şart
Terminal window
iproxy 2222 22
Terminal window
ssh -p 2222 root@127.0.0.1

objection · iOS explore

embedded tool
Generated command
objection -g com.hedef.app explore
AlanRisk
Keychain erişilebilirlikCihaz kilidi açıkken token çalınabilir
Pinning yok / zayıf ATSMITM ile oturum
URL schemeAuthz atlama, open redirect
Local auth bypassBiometric hook → hassas ekran
Backup / file sharingContainer’dan secret
Info.plist URL scheme → Frida unpin
→ Burp API → keychain dump → token reuse