macOS Dirty NIB
Reading time: 3 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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Teknik hakkında daha fazla detay için orijinal gönderiyi kontrol edin: https://blog.xpnsec.com/dirtynib/ ve https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. İşte bir özet:
Nib dosyaları nedir
Nib (NeXT Interface Builder'ın kısaltması) dosyaları, Apple'ın geliştirme ekosisteminin bir parçası olarak, uygulamalardaki UI öğelerini ve etkileşimlerini tanımlamak için tasarlanmıştır. Pencereler ve butonlar gibi serileştirilmiş nesneleri kapsar ve çalışma zamanında yüklenir. Sürekli kullanımlarına rağmen, Apple artık daha kapsamlı UI akış görselleştirmesi için Storyboard'ları önermektedir.
Ana Nib dosyası, uygulamanın Info.plist
dosyasında NSMainNibFile
değerinde referans alınır ve uygulamanın main
fonksiyonunda yürütülen NSApplicationMain
fonksiyonu tarafından yüklenir.
Kirli Nib Enjeksiyon Süreci
NIB Dosyası Oluşturma ve Ayarlama
- İlk Kurulum:
- XCode kullanarak yeni bir NIB dosyası oluşturun.
- Arayüze bir Nesne ekleyin, sınıfını
NSAppleScript
olarak ayarlayın. - Başlangıç
source
özelliğini Kullanıcı Tanımlı Çalışma Zamanı Özellikleri aracılığıyla yapılandırın.
- Kod Yürütme Aleti:
- Kurulum, AppleScript'in talep üzerine çalıştırılmasını sağlar.
Apple Script
nesnesini etkinleştirmek için bir buton ekleyin, ö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 butona tıklayarak test edin.
Bir Uygulamayı Hedefleme (Örnek: Pages)
- Hazırlık:
- Hedef uygulamayı (örneğin, Pages) ayrı bir dizine (örneğin,
/tmp/
) kopyalayın. - Gatekeeper sorunlarını aşmak ve önbelleğe almak için uygulamayı başlatın.
- NIB Dosyasını Üzerine Yazma:
- Mevcut bir NIB dosyasını (örneğin, Hakkında Panel NIB) oluşturulan DirtyNIB dosyasıyla değiştirin.
- Yürütme:
- Uygulama ile etkileşimde bulunarak yürütmeyi tetikleyin (örneğin,
Hakkında
menü öğesini seçerek).
Kavramsal Kanıt: Kullanıcı Verilerine Erişim
- Kullanıcı izni olmadan fotoğraflar gibi kullanıcı verilerine erişmek ve çıkarmak için AppleScript'i değiştirin.
Kod Örneği: Kötü Amaçlı .xib Dosyası
- Rastgele kod yürütmeyi gösteren bir kötü amaçlı .xib dosyası örneği erişin ve inceleyin.
Diğer Örnek
https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ adresinde kirli nib oluşturma hakkında bir eğitim bulabilirsiniz.
Başlatma Kısıtlamalarını Ele Alma
- Başlatma Kısıtlamaları, uygulama yürütmesini beklenmedik yerlerden (örneğin,
/tmp
) engeller. - Başlatma Kısıtlamaları ile korunmayan uygulamaları tanımlamak ve NIB dosyası enjeksiyonu için hedeflemek mümkündür.
Ek macOS Koruma Önlemleri
macOS Sonoma'dan itibaren, Uygulama paketleri içindeki değişiklikler kısıtlanmıştır. Ancak, önceki yöntemler şunları içeriyordu:
- Uygulamayı farklı bir konuma (örneğin,
/tmp/
) kopyalamak. - İlk korumaları aşmak için uygulama paketindeki dizinleri yeniden adlandırmak.
- Uygulamayı Gatekeeper ile kaydetmek için çalıştırdıktan sonra, uygulama paketini değiştirmek (örneğin, MainMenu.nib'i Dirty.nib ile değiştirmek).
- Dizinleri geri yeniden adlandırmak ve enjeksiyon yapılan NIB dosyasını yürütmek için uygulamayı yeniden çalıştırmak.
Not: Son macOS güncellemeleri, Gatekeeper önbelleklemesinden sonra uygulama paketleri içinde dosya değişikliklerini engelleyerek bu istismarı etkisiz hale getirmiştir.
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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.