8.4 KiB
iOS Pentesting without Jailbreak
{{#include ../../banners/hacktricks-training.md}}
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 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 istemci olarak talep edilmesi önerilir.
Şifrelenmemiş IPA'yı elde etme
Apple'dan almak
- 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
dizinine indirilmelidir; 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 olacaktır; çü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 ve Yeniden İmzala
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
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 kurup pentest yapmak için 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【turn6view0†L2-L3】. 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/
{{#include ../../banners/hacktricks-training.md}}