iOS Test Ortamı
Reading time: 6 minutes
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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Apple Geliştirici Programı
Bir provisioning identity, bir Apple geliştirici hesabıyla ilişkili olan bir dizi genel ve özel anahtardır. Uygulamaları imzalamak için 99$/yıl ödeyerek Apple Geliştirici Programı'na kaydolmanız gerekir. Bunu yapmadan, kaynak kodundan fiziksel bir cihazda uygulamaları çalıştıramazsınız. Bunu yapmanın bir diğer seçeneği ise jailbroken bir cihaz kullanmaktır.
Xcode 7.2 ile birlikte Apple, gerçek bir iPhone'da uygulamanızı yazmanıza ve test etmenize olanak tanıyan ücretsiz bir iOS geliştirme provisioning profili oluşturma seçeneği sunmuştur. Xcode --> Preferences --> Accounts --> + (Kimlik bilgilerinizi ekleyin) --> Oluşturduğunuz Apple ID'ye tıklayın --> Manage Certificates --> + (Apple Development) --> Done
__Daha sonra, uygulamanızı iPhone'unuzda çalıştırmak için önce iPhone'un bilgisayarı güvenilir olarak göstermesini sağlamanız gerekir. Ardından, Xcode'dan mobilde uygulamayı çalıştırmayı deneyebilirsiniz, ancak bir hata görünecektir. Bu nedenle Ayarlar --> Genel --> Profiller ve Cihaz Yönetimi --> Güvenilmeyen profili seçin ve "Güven"e tıklayın.
Aynı imzalama sertifikasıyla imzalanmış uygulamaların güvenli bir şekilde kaynak paylaşabileceğini unutmayın, örneğin anahtar zinciri öğeleri gibi.
Provisioning profilleri telefonun içinde /Library/MobileDevice/ProvisioningProfiles
dizininde saklanır.
Simülatör
note
Bir simülatörün emülatörle aynı olmadığını unutmayın. Simülatör, cihazın davranışını ve işlevlerini simüle eder, ancak bunları gerçekten kullanmaz.
Simülatör
Bilmeniz gereken ilk şey, simülatör içinde bir pentest gerçekleştirmenin, jailbreak yapılmış bir cihazda yapmaktan çok daha sınırlı olacağıdır.
Bir iOS uygulaması oluşturmak ve desteklemek için gereken tüm araçlar sadece resmi olarak Mac OS'ta desteklenmektedir.
Apple'ın iOS uygulamalarını oluşturmak/ayarlarını yapmak/geliştirmek için kullanılan de facto aracı Xcode'dur. Uygulamanızı oluşturmak ve test etmek için gereken diğer bileşenleri, örneğin simülatörler ve farklı SDK sürümlerini indirmek için kullanılabilir.
Xcode'u resmi uygulama mağazasından indirmek şiddetle tavsiye edilir. Diğer sürümler kötü amaçlı yazılım içerebilir.
Simülatör dosyaları /Users/<username>/Library/Developer/CoreSimulator/Devices
dizininde bulunabilir.
Simülatörü açmak için Xcode'u çalıştırın, ardından Xcode sekmesine basın --> Geliştirici araçlarını aç --> Simülatör
__Aşağıdaki resimde "iPod touch [...]" üzerine tıklayarak test etmek için başka bir cihaz seçebilirsiniz:
Simülatördeki Uygulamalar
/Users/<username>/Library/Developer/CoreSimulator/Devices
içinde tüm kurulu simülatörleri bulabilirsiniz. Emülatörlerden birinin içinde oluşturulmuş bir uygulamanın dosyalarına erişmek istiyorsanız, uygulamanın hangi emülatörde kurulu olduğunu bilmek zor olabilir. Doğru UID'yi bulmanın hızlı bir yolu, simülatörde uygulamayı çalıştırmak ve şunu yürütmektir:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
UID'yi öğrendikten sonra, içindeki yüklü uygulamalar /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
yolunda bulunabilir.
Ancak, şaşırtıcı bir şekilde uygulamayı burada bulamayacaksınız. /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
yoluna erişmeniz gerekiyor.
Ve bu klasörde uygulamanın paketini bulabilirsiniz.
Emulator
Corellium, kamuya açık tek iOS emülatörüdür. Bu, kullanıcı başına lisans modeli ile bir kurumsal SaaS çözümüdür ve deneme lisansı sunmamaktadır.
Jailbreak Gerekmez
Jailbreak yapılmamış bir cihazda bir iOS uygulamasını nasıl pentest edeceğinizi anlatan bu blog yazısını kontrol edin: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Jailbreaking
Apple, iPhone'da çalışan kodun Apple tarafından verilen bir sertifika ile imzalanmasını kesinlikle gerektirir. Jailbreaking, bu tür kısıtlamaları ve işletim sistemi tarafından konulan diğer güvenlik kontrollerini aşma sürecidir. Bu nedenle, cihaz jailbreak yapıldığında, uygulamaların yüklenmesini kontrol eden bütünlük kontrolü yamanır, böylece bypass edilir.
note
Android'in aksine, iOS'ta imzasız/güvenilmeyen kodu çalıştırmak için "Geliştirici Modu"na geçemezsiniz.
Android Rooting vs. iOS Jailbreaking
Sıklıkla karşılaştırılsa da, Android'de rooting ve iOS'ta jailbreaking temelde farklı süreçlerdir. Android cihazlarda su
ikili dosyasını yüklemek veya sistemi köklü bir özel ROM ile değiştirmek gibi işlemler, bootloader kilidi açıldığında mutlaka istismar gerektirmeyebilir. Özel ROM'ların yüklenmesi, bootloader kilidi açıldıktan sonra cihazın işletim sistemini değiştirir ve bazen bir istismar gerektirebilir.
Buna karşılık, iOS cihazları, bootloader'ın yalnızca Apple imzalı görüntüleri başlatmasına izin vermesi nedeniyle özel ROM'ları yükleyemez. iOS'u jailbreak yapmak, imzasız kod çalıştırmak için Apple'ın kod imzalama korumalarını aşmayı hedefler; bu süreç, Apple'ın sürekli güvenlik iyileştirmeleri ile karmaşıklaşır.
Jailbreaking Zorlukları
iOS'u jailbreak yapmak, Apple'ın güvenlik açıklarını hızla yamalaması nedeniyle giderek zorlaşmaktadır. iOS'u düşürmek, bir sürümden sonra sınırlı bir süre için mümkündür, bu da jailbreak yapmayı zaman açısından hassas bir mesele haline getirir. Güvenlik testi için kullanılan cihazlar, yeniden jailbreak yapılması garanti edilmedikçe güncellenmemelidir.
iOS güncellemeleri, yalnızca Apple imzalı yanıtlar için yüklemeye izin veren bir challenge-response mekanizması (SHSH blobları) ile kontrol edilir. Bu mekanizma, "imzalama penceresi" olarak bilinir ve OTA firmware paketlerini depolama ve daha sonra kullanma yeteneğini sınırlar. IPSW Downloads web sitesi, mevcut imzalama pencerelerini kontrol etmek için bir kaynaktır.
Jailbreak Çeşitleri
- Tethered jailbreak her yeniden başlatma için bir bilgisayar bağlantısı gerektirir.
- Semi-tethered jailbreak bilgisayar olmadan jailbreak yapılmamış moda geçişe izin verir.
- Semi-untethered jailbreak bilgisayar gerektirmeden manuel yeniden jailbreak yapmayı gerektirir.
- Untethered jailbreak yeniden uygulama gerektirmeden kalıcı bir jailbreak çözümü sunar.
Jailbreaking Araçları ve Kaynakları
Jailbreaking araçları, iOS sürümüne ve cihaza göre değişir. Can I Jailbreak?, The iPhone Wiki ve Reddit Jailbreak gibi kaynaklar güncel bilgiler sağlar. Örnekler:
- A7-A11 çipli cihazlar için Checkra1n.
- iOS 15.0-16.5'te Checkm8 cihazları için Palera1n.
- iOS sürümleri için 14.8'e kadar Unc0ver.
Cihazınızı değiştirmek risk taşır ve jailbreak yaparken dikkatli olunmalıdır.
Jailbreaking Faydaları ve Riskleri
Jailbreaking, OS tarafından dayatılan sandbox'ı kaldırır, uygulamaların tüm dosya sistemine erişmesine izin verir. Bu özgürlük, onaylanmamış uygulamaların yüklenmesini ve daha fazla API'ye erişimi sağlar. Ancak, normal kullanıcılar için jailbreak yapmak tavsiye edilmez çünkü potansiyel güvenlik riskleri ve cihaz kararsızlığı vardır.
Jailbreaking Sonrası
Jailbreak Tespiti
Birçok uygulama, mobilin jailbreak yapılıp yapılmadığını tespit etmeye çalışacak ve bu durumda uygulama çalışmayacaktır.
- Jailbreak yapıldıktan sonra iOS'ta dosyalar ve klasörler genellikle yüklenir, bunlar cihazın jailbreak yapılıp yapılmadığını belirlemek için aranabilir.
- Jailbreak yapılmış bir cihazda uygulamalar, sandbox dışındaki yeni dosyalara okuma/yazma erişimi alır.
- Bazı API çağrıları farklı davranacaktır.
- OpenSSH hizmetinin varlığı.
/bin/sh
çağrısı 0 yerine 1 döndürecektir.
Jailbreaking'i tespit etme hakkında daha fazla bilgi burada.
Bu tespitlerden kaçınmayı deneyebilirsiniz objection'ın ios jailbreak disable
komutunu kullanarak.
Jailbreak Tespiti Bypass
- Bu tespitlerden kaçınmayı deneyebilirsiniz objection'ın
ios jailbreak disable
komutunu kullanarak. - Ayrıca Liberty Lite (https://ryleyangus.com/repo/) aracını yükleyebilirsiniz. Repo eklendikten sonra, uygulama 'Arama' sekmesinde görünmelidir.
Referanslar
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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.