iOS Testing Environment
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)
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, bir fiziksel cihazda kaynak kodundan 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şturulan Apple ID'ye tıklayın --> Sertifikaları Yönet --> + (Apple Geliştirme) --> Tamam __Daha sonra, uygulamanızı iPhone'unuzda çalıştırmak için önce iPhone'un bilgisayarı güvenilir olarak göstermesini sağlamalısınız. 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, güvenli bir şekilde kaynakları paylaşabilir, örneğin anahtar zinciri öğeleri.
Provisioning profilleri, telefonun içinde /Library/MobileDevice/ProvisioningProfiles
dizininde saklanır.
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.
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ı düzeltmek/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 tıklayı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:
/Users/<username>/Library/Developer/CoreSimulator/Devices
dizininde tüm kurulu simülatörleri bulabilirsiniz. Emülatörlerden birinde oluşturulan 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:
Once you know the UID the apps installed within it can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
Ancak, şaşırtıcı bir şekilde burada uygulamayı bulamayacaksınız. /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
adresine erişmeniz gerekiyor.
Ve bu klasörde uygulamanın paketini bulabilirsiniz.
Corellium, kamuya açık tek iOS emülatörüdür. Kullanıcı başına lisans modeli ile bir kurumsal SaaS çözümüdür ve herhangi bir deneme lisansı sunmamaktadır.
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
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.
Android'in aksine, iOS'ta imzasız/güvenilmeyen kodu çalıştırmak için "Geliştirici Modu"na geçemezsiniz.
Sıklıkla karşılaştırılsa da, Android'de rooting ve iOS'ta jailbreaking temelde farklı süreçlerdir. Android cihazlarını rootlamak, su
ikili dosyasını yüklemeyi veya sistemi köklü bir özel ROM ile değiştirmeyi içerebilir; bu, bootloader kilidi açıldığında mutlaka istismar gerektirmez. Ö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şın, 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ı amaçlar; bu süreç, Apple'ın sürekli güvenlik iyileştirmeleri ile karmaşıklaşır.
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 ve 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. "İmzalama penceresi" olarak bilinen bu mekanizma, 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.
Tethered jailbreak'ler, her yeniden başlatma için bir bilgisayar bağlantısı gerektirir.
Semi-tethered jailbreak'ler, bilgisayar olmadan jailbreak yapılmamış moda geçişe izin verir.
Semi-untethered jailbreak'ler, bilgisayar gerektirmeden manuel yeniden jailbreak yapmayı gerektirir.
Untethered jailbreak'ler, yeniden uygulama gerektirmeden kalıcı bir jailbreak çözümü sunar.
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ı (A8-A11) için Palera1n.
iOS sürümleri 14.8'e kadar Unc0ver.
Cihazınızı değiştirmek risk taşır ve jailbreak yaparken dikkatli olunmalıdır.
Jailbreaking, işletim sistemi 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, potansiyel güvenlik riskleri ve cihaz kararsızlığı nedeniyle jailbreak yapılması tavsiye edilmez.
Birçok uygulama, mobil cihazın 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 yöntemleri hakkında daha fazla bilgi burada.
Bu tespitlerden kaçınmak için objection'ın ios jailbreak disable
komutunu kullanmayı deneyebilirsiniz.
Bu tespitlerden kaçınmak için objection'ın ios jailbreak disable
komutunu kullanmayı deneyebilirsiniz.
Ayrıca Liberty Lite (https://ryleyangus.com/repo/) aracını yükleyebilirsiniz. Repo eklendikten sonra, uygulama 'Arama' sekmesinde görünmelidir.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)