iOS Pentesting without Jailbreak
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Ana fikir
get_task_allow
yetkisi ile imzalanmış uygulamalar, üçüncü taraf uygulamaların task_for_pid()
adlı bir fonksiyonu, başlangıç uygulamasının işlem kimliği ile argüman olarak çalıştırmasına izin verir; böylece üzerinde görev portunu elde edebilir (onu kontrol edebilir ve belleğine erişebilir).
Ancak, IPA'yı çekip, yetki ile yeniden imzalayıp cihazınıza geri yüklemek o kadar kolay değildir. Bunun nedeni FairPlay korumasıdır. Uygulamanın imzası değiştiğinde, DRM (Dijital Haklar Yönetimi) anahtarı geçersiz hale gelir ve uygulama çalışmaz.
Eski bir jailbreak'li cihazda, IPA'yı yüklemek, favori aracınızı kullanarak şifre çözmek (örneğin Iridium veya frida-ios-dump gibi) ve cihazdan geri almak mümkündür. Ancak, mümkünse, şifrelenmemiş IPA için sadece istemci olarak hareket etmeniz önerilir.
Şifrelenmemiş IPA'yı elde etme
Apple'dan alın
- Pentest yapmak için uygulamayı iPhone'a yükleyin.
- macOS'unuzda Apple Configurator uygulamasını yükleyin ve başlatın.
- Mac'inizde
Terminal
i açın ve/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
dizinine gidin. IPA daha sonra bu klasörde görünecektir. - iOS cihazınızı görmelisiniz. Üzerine çift tıklayın ve ardından üst menü çubuğundan Ekle + → Uygulamalar'a tıklayın.
- Ekle'ye tıkladıktan sonra, Configurator IPA'yı Apple'dan indirecek ve cihazınıza yüklemeye çalışacaktır. Daha önce önerimi takip ettiyseniz ve IPA'yı zaten yüklediyseniz, uygulamayı yeniden yüklemenizi isteyen bir istem belirecektir.
- IPA,
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
dizininde indirilmiş olmalıdır; buradan alabilirsiniz.
Bu süreç hakkında daha ayrıntılı bilgi için https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed adresini kontrol edin.
Uygulamayı şifre çözme
IPA'yı şifre çözmek için onu yükleyeceğiz. Ancak, eski bir jailbreak'li iPhone'unuz varsa, muhtemelen uygulama tarafından desteklenmeyecek bir sürümde olabilir, çünkü genellikle uygulamalar yalnızca en son sürümleri destekler.
Bu nedenle, yüklemek için IPA'yı sadece çıkarın:
unzip redacted.ipa -d unzipped
Info.plist
dosyasını minimum desteklenen sürüm için kontrol edin ve cihazınız bu sürümden daha eskiyse, değeri desteklenecek şekilde değiştirin.
IPA dosyasını zipleyin:
cd unzipped
zip -r ../no-min-version.ipa *
Sonra, IPA'yı örneğin şu şekilde yükleyin:
ideviceinstaller -i no-min-version.ipa -w
Not edin ki, herhangi bir invalid signature
hatasını önlemek için Cydia'dan AppSync Unified tweak'e ihtiyacınız olabilir.
Yüklendikten sonra, şifrelenmemiş IPA'yı elde etmek için Cydia'dan Iridium tweak'i kullanabilirsiniz.
Yetkilendirmeleri yamanla & yeniden imzala
get-task-allow
yetkilendirmesi ile uygulamayı yeniden imzalamak için app-signer
, codesign
ve iResign
gibi çeşitli araçlar mevcuttur. app-signer
, yeniden imzalanacak IPA dosyasını belirtmek, get-taks-allow
eklemek ve kullanılacak sertifika ile dağıtım profilini seçmek için çok kullanıcı dostu bir arayüze sahiptir.
Sertifika ve imzalama profilleri ile ilgili olarak, Apple Xcode aracılığıyla tüm hesaplar için ücretsiz geliştirici imzalama profilleri sunmaktadır. Sadece bir uygulama oluşturun ve bir tane yapılandırın. Ardından, Ayarlar
→ Gizlilik & Güvenlik
bölümüne giderek iPhone'un geliştirici uygulamalarını güvenilir hale getirmesini sağlayın ve Geliştirici Modu
na tıklayın.
Yeniden imzalanmış IPA ile, onu cihazda kurma zamanı geldi:
ideviceinstaller -i resigned.ipa -w
Geliştirici Modunu Etkinleştir (iOS 16+)
iOS 16 ile Apple, Geliştirici Modunu tanıttı: get_task_allow
taşıyan veya bir geliştirme sertifikası ile imzalanmış herhangi bir ikili, cihazda Geliştirici Modu etkinleştirilene kadar başlatılmayı reddedecektir. Bu bayrak açık olmadıkça Frida/LLDB'yi de ekleyemezsiniz.
- Herhangi bir geliştirici imzalı IPA'yı telefona yükleyin veya gönderin.
- Ayarlar → Gizlilik ve Güvenlik → Geliştirici Modu'na gidin ve açın.
- Cihaz yeniden başlatılacak; şifreyi girdikten sonra Geliştirici Modunu Açın denilecektir.
Geliştirici Modu, devre dışı bırakılana veya telefon silinene kadar aktif kalır, bu nedenle bu adım her cihaz için yalnızca bir kez gerçekleştirilmelidir. Apple belgeleri güvenlik etkilerini açıklar.
Modern yan yükleme seçenekleri
Artık jailbreak olmadan yan yükleme yapmak ve yeniden imzalanmış IP'leri güncel tutmak için birkaç olgun yol bulunmaktadır:
Araç | Gereksinimler | Güçlü Yönler | Sınırlamalar |
---|---|---|---|
AltStore 2 / SideStore | IPA'yı her 7 günde ücretsiz bir geliştirici profili ile yeniden imzalayan macOS/Windows/Linux eşlikçisi | Wi-Fi üzerinden otomatik yeniden yükleme, iOS 17'ye kadar çalışır | Aynı ağda bilgisayar gerektirir, Apple tarafından 3 uygulama limiti uygulanır |
TrollStore 1/2 | CoreTrust hatasına karşı savunmasız iOS 14 – 15.4.1 cihazı | Kalıcı imzalama (7 günlük limit yok); kurulduktan sonra bilgisayar gerekmez | iOS 15.5+ üzerinde desteklenmiyor (hata yamanmış) |
Mevcut iOS sürümlerinde rutin pentestler için Alt/Side-Store genellikle en pratik seçimdir.
Hooking / dinamik enstrümantasyon
Uygulamanızı, get_task_allow
ile imzalandığında ve Geliştirici Modu açık olduğunda, jailbreak'li bir cihazda olduğu gibi tam olarak hooklayabilirsiniz:
# 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
Son Frida sürümleri (>=16) otomatik olarak işaretçi kimlik doğrulamasını ve diğer iOS 17 önlemlerini yönetir, bu nedenle mevcut çoğu script kutudan çıkar çıkmaz çalışır.
Jailbreak olmadan otomatik dinamik analiz MobSF ile
MobSF gerçek bir cihazda dev-imzalı bir IPA'yı aynı teknikle (get_task_allow
) enstrümante edebilir ve dosya sistemi tarayıcısı, trafik yakalama ve Frida konsolu ile bir web UI sağlar【】. En hızlı yol, MobSF'yi Docker'da çalıştırmak ve ardından iPhone'unuzu USB ile bağlamaktır:
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, ikili dosyayı otomatik olarak dağıtacak, uygulama sandbox'ında bir Frida sunucusu etkinleştirecek ve etkileşimli bir rapor oluşturacaktır.
iOS 17 & Kilit Modu uyarıları
- Kilit Modu (Ayarlar → Gizlilik & Güvenlik), dinamik bağlayıcının imzasız veya harici olarak imzalanmış dinamik kütüphaneleri yüklemesini engeller. Bu modun etkin olabileceği cihazları test ederken, devre dışı olduğundan emin olun, aksi takdirde Frida/objection oturumlarınız hemen sonlanacaktır.
- Pointer Authentication (PAC), A12+ cihazlarda sistem genelinde uygulanmaktadır. Frida ≥16, PAC stripping'i şeffaf bir şekilde yönetir — yeni bir ana iOS sürümü çıktığında frida-server ve Python/CLI araç zincirinin güncel olduğundan emin olun.
Referanslar
- https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
- Apple geliştirici belgeleri – Bir cihazda Geliştirici Modunu Etkinleştirme: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device
- Mobil Güvenlik Çerçevesi (MobSF): https://mobsf.github.io/Mobile-Security-Framework-MobSF/
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.