iOS Testing Environment
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım 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 Apple Geliştirici Programı'na kaydolmak için 99$/yıl ödemeniz 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ğ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 kaynakları paylaşabileceğini unutmayın, ö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, bir simülatör içinde pentest yapmanın, 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 indirmeniz ş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:
/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ğiniz hakkında 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, OS tarafından konulan bu tür kısıtlamaları ve 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şılık, iOS cihazları, bootloader'ın yalnızca Apple imzalı görüntüleri başlatma kısıtlaması 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.
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. "İ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, 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, 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çınmaya çalışabilirsiniz objection'ın ios jailbreak disable
komutunu kullanarak.
Bu tespitlerden kaçınmaya çalışabilirsiniz 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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)