iOS Testing Environment

AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:

Apple Geliştirici Programı

Bir provisioning kimliği, bir Apple geliştirici hesabıyla ilişkilendirilen genel ve özel anahtarların bir koleksiyonudur. Uygulamaları imzalamak için 99$/yıl ödeyerek Apple Geliştirici Programı'na kaydolmanız gerekmektedir. Bu olmadan, kaynak kodundan uygulamaları fiziksel bir cihazda çalıştıramazsınız. Bunun için başka bir seçenek ise jailbreak yapılmış bir cihazı kullanmaktır.

Xcode 7.2'den itibaren Apple, gerçek bir iPhone üzerinde uygulamanızı yazıp test etmenizi sağlayan ücretsiz bir iOS geliştirme provizyon profili oluşturma seçeneği sunmaktadır. Xcode --> Tercihler --> Hesaplar --> + (Yeni Appli ID ekleyin) --> Oluşturulan Apple ID'ye tıklayın --> Sertifikaları Yönet --> + (Apple Geliştirme) --> Tamam __Ardından, uygulamanızı iPhone'da çalıştırmak için önce iPhonu bilgisayara güvenmesi gerekmektedir. Daha sonra, uygulamayı Xcode'dan mobil cihazda çalıştırmayı deneyebilirsiniz, ancak bir hata alacaksınız. Bu durumda Ayarlar --> Genel --> Profiller ve Cihaz Yönetimi --> Güvenilir olmayan profili seçin ve "Güven"e tıklayın.

Aynı imzalama sertifikası ile imzalanan uygulamalar, anahtarlık öğeleri gibi kaynakları güvenli bir şekilde paylaşabilir.

Provizyon profilleri, telefonun içinde /Library/MobileDevice/ProvisioningProfiles dizininde saklanır.

Simülatör

Bir simülatörün bir emülatör olmadığını unutmayın. Simülatör, cihazın davranışını ve işlevlerini sadece taklit eder, gerçekten kullanmaz.

Simülatör

Bir simülatörde pentest yapmanın, jailbreak yapılmış bir cihazda yapmaktan çok daha sınırlı olacağını bilmelisiniz.

Bir iOS uygulamasını oluşturmak ve desteklemek için gereken tüm araçlar yalnızca resmi olarak Mac OS'ta desteklenmektedir. Apple'ın iOS uygulamalarını oluşturmak/hata ayıklamak/enstrümantasyon yapmak için de facto aracı Xcode'dur. Diğer simülatörler ve farklı SDK sürümleri indirilerek uygulamanızı test etmek için gereken bileşenler de indirilebilir. Xcode'u resmi uygulama mağazasından indirmeniz şiddetle tavsiye edilir. Diğer sürümler kötü amaçlı yazılımlar içerebilir.

Simülatör dosyaları /Users/<kullanıcıadı>/Library/Developer/CoreSimulator/Devices dizininde bulunabilir.

Simülatörü açmak için Xcode'u çalıştırın, ardından Xcode sekmesi --> 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:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Test Ortamı

UID'yi bildikten sonra, içinde yüklü olan uygulamalar /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application dizininde bulunabilir.

Ancak şaşırtıcı bir şekilde uygulamayı burada bulamayacaksınız. Uygulamanın paketini bulmak için /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/ dizinine erişmeniz gerekmektedir.

Ve bu klasörde uygulamanın paketini bulabilirsiniz.

Emülatör

Corellium, yalnızca halka açık olarak mevcut olan iOS emülatörüdür. Bu, kullanıcı başına lisans modeline sahip olan bir kurumsal SaaS çözümüdür ve deneme lisansı sunmamaktadır.

Jailbreak

Apple, iPhone'da çalışan kodun Apple tarafından verilen bir sertifika ile imzalanmış olmasını kesinlikle gerektirir. Jailbreak, bu tür kısıtlamaları ve işletim sistemi tarafından yerleştirilen diğer güvenlik kontrollerini etkin bir şekilde atlatma işlemidir. Bu nedenle, cihaz jailbreak yapıldığında, yüklü uygulamaları kontrol eden bütünlük kontrolü yamalanır ve bu sayede atlatılır.

Android'de olduğu gibi, iOS'ta "Geliştirici Modu"na geçemezsiniz** ve cihazda imzalanmamış/güvenilmeyen kodları çalıştıramazsınız.

Android Rootlama ve iOS Jailbreak Karşılaştırması

Sıkça karşılaştırılan Android'de rootlama ve iOS'ta jailbreak temelde farklı süreçlerdir. Android cihazlarında rootlama, genellikle su binary'sinin yüklenmesini veya sistemi rootlu özel bir ROM ile değiştirmeyi içerebilir ve bu, önyükleyicinin kilidini açılmışsa genellikle exploitlere ihtiyaç duymaz. Özel ROM'ların yüklenmesi, önyükleyicinin kilidini açtıktan sonra cihazın işletim sistemini değiştirir ve bazen bir exploit gerektirebilir.

Buna karşılık, iOS cihazları, önyükleyicinin yalnızca Apple tarafından imzalanmış görüntüleri başlatmasına yönelik kısıtlamalar nedeniyle özel ROM'lar yükleyemez. iOS jailbreak, Apple'ın kod imzalama korumalarını atlamayı amaçlar ve Apple'ın sürekli güvenlik iyileştirmeleri ile karmaşık hale gelir.

Jailbreak Zorlukları

iOS jailbreak'i, Apple'ın hızlı bir şekilde güvenlik açıklarını yamalaması nedeniyle giderek zorlaşmaktadır. iOS'un eski sürümlerine geri dönmek yalnızca bir sürümün yayınlanmasından kısa bir süre sonra mümkündür, bu da jailbreak'in zamanla sınırlı bir konu olmasını sağlar. Güvenlik testleri için kullanılan cihazlar, tekrar jailbreak yapılması garanti edilmedikçe güncellenmemelidir.

iOS güncellemeleri, yalnızca Apple tarafından imzalanan yanıtlar için yüklemeye izin veren bir zorluk-yantım mekanizması (SHSH blobs) ile kontrol edilir. Bu mekanizma, "imzalama penceresi" olarak bilinir ve OTA yazılım paketlerini depolamayı ve daha sonra kullanmayı sınırlar. IPSW İndirme web sitesi, mevcut imzalama pencerelerini kontrol etmek için bir kaynaktır.

Jailbreak Çeşitleri

  • Bağlı jailbreakler, her yeniden başlatma için bir bilgisayar bağlantısı gerektirir.

  • Yarı-bağlı jailbreakler, bir bilgisayar olmadan jailbreak yapılmamış modda başlatmaya izin verir.

  • Yarı-bağlı olmayan jailbreakler, bir bilgisayar gerektirmeden manuel olarak tekrar jailbreak yapılmasını gerektirir.

  • Bağlı olmayan jailbreakler, tekrar uygulama gerektirmeksizin kalıcı bir jailbreak çözümü sunar.

Jailbreak Araçları ve Kaynaklar

Jailbreak 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 şunları içerir:

  • A7-A11 çip cihazlar için Checkra1n.

  • Checkm8 cihazlar (A8-A11) için iOS 15.0-16.5'te Palera1n.

  • iOS sürümlerine kadar Unc0ver.

Cihazınızı değiştirmek riskler içerir ve jailbreak yaparken dikkatli olunmalıdır.

Jailbreak'in Faydaları ve Riskleri

Jailbreak, OS tarafından uygulanan kum havuzu sınırlamalarını kaldırarak uygulamaların tüm dosya sistemine erişmesine olanak tanır. Bu özgürlük, onaylanmamış uygulamaların yüklenmesine ve daha fazla API'ya erişime olanak tanır. Ancak, düzenli kullanıcılar için, potansiyel güvenlik riskleri ve cihaz kararsızlığı nedeniyle jailbreak tavsiye edilmez.

Jailbreak Sonrası

pageiOS Basic Testing Operations

Jailbreak Tespiti

Bazı uygulamalar, mobil cihazın jailbreak yapılmış olup olmadığını tespit etmeye çalışacaktır ve bu durumda uygulama çalışmayacaktır

  • Bir iOS cihazı jailbreak yapıldıktan sonra genellikle dosyalar ve klasörler yüklenir, bu durum cihazın jailbreak yapılmış olup olmadığını belirlemek için aranabilir.

  • Jailbreak yapılmış bir cihazda uygulamalar, kum havuzun dışında yeni dosyalara okuma/yazma erişimi elde eder.

  • Bazı API çağrıları farklı davranır

  • OpenSSH servisinin varlığı

  • /bin/sh çağrısı 0 yerine 1 döndürecektir

Jailbreak tespitinin nasıl yapılacağı hakkında daha fazla bilgi burada** bulunabilir.**

Bu tespitlerden kaçınmak için objection'ın ios jailbreak disable kullanabilirsiniz.

Jailbreak Tespitini Atlatma

  • Bu tespitlerden kaçınmak için objection'ın ios jailbreak disable kullanabilirsiniz.

  • Ayrıca Liberty Lite aracını da yükleyebilirsiniz (https://ryleyangus.com/repo/). Repo eklenir eklenmez, uygulama 'Arama' sekmesinde görünmelidir.

Referanslar

Sıfırdan başlayarak AWS hacklemeyi htARTE (HackTricks AWS Red Team Expert) ile öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated