diff --git a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md index a0bf67655..979576a28 100644 --- a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md +++ b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md @@ -4,15 +4,15 @@ ## 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). +**`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 alabilir (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ğil. 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 istemciye sormak önerilir. +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 talep edilmesi önerilir. ## Şifrelenmemiş IPA'yı elde etme -### Apple'dan alın +### Apple'dan almak 1. Pentest yapmak için uygulamayı iPhone'a yükleyin. 2. macOS'unuzda [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) uygulamasını yükleyin ve başlatın. @@ -47,27 +47,72 @@ Not edin ki, herhangi bir `invalid signature` hatasını önlemek için Cydia'da Yüklendikten sonra, şifrelenmemiş IPA'yı elde etmek için Cydia'dan **Iridium tweak**'i kullanabilirsiniz. -### Yetki yamanızı ve yeniden imzalama +### Yetkilendirmeleri Yamanla ve Yeniden İmzala -`get-task-allow` yetkisi ile uygulamayı yeniden imzalamak için `app-signer`, `codesign` ve `iResign` gibi çeşitli araçlar mevcuttur. `app-signer`, yeniden imzalanacak IPA dosyasını belirtip, **`get-task-allow`** koyarak ve kullanılacak sertifika ve dağıtım profili ile çok kolay bir şekilde IPA dosyasını yeniden imzalamaya olanak tanıyan çok kullanıcı dostu bir arayüze sahiptir. +`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ı belirtip, **`get-taks-allow`** ekleyerek ve kullanılacak sertifika ve dağıtım profili ile çok kolay bir şekilde yeniden imzalamaya olanak tanıyan 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 ve Güvenlik` yolunu izleyerek **iPhone'un geliştirici uygulamalarını güvenilir hale getirmesini** sağlayın ve `Geliştirici Modu`na tıklayın. +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 ve 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, cihazda pentest yapmak için yükleme zamanı: +Yeniden imzalanmış IPA ile, onu cihazda kurup pentest yapmak için zamanı geldi: ```bash ideviceinstaller -i resigned.ipa -w ``` -### Hook +--- -Uygulamanızı frida ve objection gibi yaygın araçları kullanarak kolayca hooklayabilirsiniz: +### Geliştirici Modunu Etkinleştir (iOS 16+) + +iOS 16 ile Apple **Geliştirici Modu**nu 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. + +1. **Herhangi** bir geliştirici imzalı IPA'yı telefona yükleyin veya gönderin. +2. **Ayarlar → Gizlilik ve Güvenlik → Geliştirici Modu**'na gidin ve açın. +3. 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](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) 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: ```bash -objection -g [your app bundle ID] explore +# 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](https://mobsf.github.io/Mobile-Security-Framework-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【turn6view0†L2-L3】. En hızlı yol, MobSF'yi Docker'da çalıştırmak ve ardından iPhone'unuzu USB ile bağlamaktır: +```bash +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](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) - +- Apple geliştirici belgeleri – Bir cihazda Geliştirici Modunu Etkinleştirme: +- Mobil Güvenlik Çerçevesi (MobSF): {{#include ../../banners/hacktricks-training.md}}