4.8 KiB
macOS Kirli NIB
AWS hackleme becerilerini sıfırdan ileri seviyeye öğrenmek için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)'ı öğrenin!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz olan The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına pull request göndererek paylaşın.
Teknik hakkında daha fazla ayrıntı için orijinal yayına bakın: https://blog.xpnsec.com/dirtynib/**. İşte bir özet:
NIB dosyaları, Apple'ın geliştirme ekosisteminin bir parçası olarak uygulamalardaki UI öğelerini ve etkileşimlerini tanımlamak için kullanılır. Pencereler ve düğmeler gibi seri nesneleri içerir ve çalışma zamanında yüklenir. Apple, NIB dosyalarının devam eden kullanımına rağmen, daha kapsamlı bir UI akış görselleştirmesi için Artık Storyboard'ları önermektedir.
NIB Dosyalarıyla İlgili Güvenlik Endişeleri
NIB dosyalarının bir güvenlik riski olabileceğini unutmamak önemlidir. Bunlar, keyfi komutları yürütebilir ve bir uygulamadaki NIB dosyalarının değiştirilmesi, Gatekeeper'ın uygulamayı yürütmesini engellemez, bu da ciddi bir tehdit oluşturur.
Kirli NIB Enjeksiyon Süreci
Bir NIB Dosyası Oluşturma ve Ayarlama
- Başlangıç Ayarları:
- XCode kullanarak yeni bir NIB dosyası oluşturun.
- Arayüze bir Nesne ekleyin ve sınıfını
NSAppleScript
olarak ayarlayın. - Başlangıç
source
özelliğini Kullanıcı Tanımlı Çalışma Zamanı Öznitelikleri aracılığıyla yapılandırın.
- Kod Yürütme Aracı:
- Ayarlar, AppleScript'in isteğe bağlı olarak çalıştırılmasını sağlar.
Apple Script
nesnesini etkinleştirmek için bir düğme entegre edin ve özellikleexecuteAndReturnError:
seçicisini tetikleyin.
- Test:
- Test amaçlı basit bir Apple Script:
set theDialogText to "PWND"
display dialog theDialogText
- XCode hata ayıklayıcısında çalıştırarak ve düğmeye tıklayarak test edin.
Bir Uygulamayı Hedefleme (Örnek: Pages)
- Hazelik:
- Hedef uygulamayı (örneğin, Pages) ayrı bir dizine (örneğin,
/tmp/
) kopyalayın. - Gatekeeper sorunlarını atlamak ve önbelleğe almak için uygulamayı başlatın.
- NIB Dosyasını Üzerine Yazma:
- Varolan bir NIB dosyasını (örneğin, About Panel NIB) oluşturulan DirtyNIB dosyasıyla değiştirin.
- Yürütme:
- Uygulamayla etkileşime geçerek (örneğin,
About
menü öğesini seçerek) yürütmeyi tetikleyin.
Kanıt: Kullanıcı Verilerine Erişim
- AppleScript'i değiştirerek, kullanıcının izni olmaksızın fotoğraflar gibi kullanıcı verilerine erişebilir ve çıkarabilirsiniz.
Örnek Kod: Zararlı .xib Dosyası
- Keyfi kod yürütme gösteren zararlı bir .xib dosyasının örneğine erişin ve inceleyin.
Başlatma Kısıtlamalarıyla İlgilenme
- Başlatma Kısıtlamaları, beklenmeyen konumlardan (örneğin,
/tmp
) uygulama yürütmesini engeller. - Başlatma Kısıtlamaları tarafından korunmayan uygulamaları belirlemek ve NIB dosyası enjeksiyonu için hedef almak mümkündür.
Ek macOS Korumaları
macOS Sonoma'dan itibaren, App paketleri içindeki değişiklikler kısıtlanmıştır. Ancak, önceki yöntemler şunları içerir:
- Uygulamayı farklı bir konuma (örneğin,
/tmp/
) kopyalama. - Uygulama paketi içindeki dizinleri yeniden adlandırarak başlangıç korumalarını atlatma.
- Uygulamayı Gatekeeper ile kaydetmek için çalıştırdıktan sonra, uygulama paketini (örneğin, MainMenu.nib'i Dirty.nib ile değiştirme) değiştirme.
- Dizinleri yeniden adlandırma ve enjekte edilen NIB dosyasını yürütmek için uygulamayı yeniden çalıştırma.
Not: Son macOS güncellemeleri, Gatekeeper önbelleğinde dosya değişikliklerini engelleyerek bu saldırıyı etkisiz hale getirmiştir.