macOS Dirty NIB
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:
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.
Last updated