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

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:

bash
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ı

iOS Basic Testing Operations

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