macOS Installers Abuse
Pkg Temel Bilgileri
Bir macOS yükleme paketi (ayrıca .pkg
dosyası olarak da bilinir), macOS tarafından yazılım dağıtmak için kullanılan bir dosya biçimidir. Bu dosyalar, bir yazılım parçasının kurulması ve doğru şekilde çalıştırılması için gereken her şeyi içeren bir kutu gibidir.
Paket dosyası kendisi, hedef bilgisayara kurulacak olan bir dosya ve dizin hiyerarşisini içeren bir arşivdir. Ayrıca, yazılımın eski sürümlerini temizleme veya yapılandırma dosyalarını ayarlama gibi görevleri gerçekleştirmek için kurulumdan önce ve sonra görevleri gerçekleştirmek için betikler içerebilir.
Hiyerarşi
Dağıtım (xml): Özelleştirmeler (başlık, karşılama metni...) ve betik/kurulum kontrolleri
PackageInfo (xml): Bilgi, kurulum gereksinimleri, kurulum konumu, çalıştırılacak betiklerin yolları
Malzeme faturası (bom): Kurulacak, güncellenecek veya kaldırılacak dosyaların listesi ve dosya izinleri
Yük (CPIO arşivi gzip sıkıştırılmış): PackageInfo'dan
kurulum konumu
'na kurulacak dosyalarBetikler (CPIO arşivi gzip sıkıştırılmış): Kurulumdan önce ve sonra betikler ve daha fazlası için geçici bir dizine çıkarılan kaynaklar.
DMG Temel Bilgileri
DMG dosyaları veya Apple Disk Görüntüleri, Apple'ın macOS işletim sistemi tarafından disk görüntüleri için kullanılan bir dosya biçimidir. Bir DMG dosyası temelde yerel olarak bağlanabilir bir disk görüntüsüdür (kendi dosya sistemini içerir) ve genellikle sıkıştırılmış ve bazen şifrelenmiş ham blok verilerini içerir. Bir DMG dosyasını açtığınızda, macOS bunu fiziksel bir disk gibi bağlar ve içeriğine erişmenizi sağlar.
.dmg
yükleyicilerinin çok sayıda biçimi desteklediğini unutmayın; geçmişte bazıları, çekirdek kodu yürütmek için kötüye kullanılan güvenlik açıkları içeriyordu.
Hiyerarşi
Bir DMG dosyasının hiyerarşisi içeriğe bağlı olarak farklılık gösterebilir. Ancak, uygulama DMG'leri için genellikle şu yapıyı takip eder:
Üst Düzey: Bu, disk görüntüsünün köküdür. Genellikle uygulamayı ve muhtemelen Uygulamalar klasörüne bir bağlantı içerir.
Uygulama (.app): Bu, asıl uygulamadır. macOS'ta bir uygulama genellikle uygulamayı oluşturan birçok bireysel dosya ve klasör içeren bir pakettir.
Uygulamalar Bağlantısı: Bu, macOS'taki Uygulamalar klasörüne bir kısayoldur. Amacı, uygulamayı yüklemeyi size kolaylaştırmaktır. Uygulamayı yüklemek için .app dosyasını bu kısayola sürükleyebilirsiniz.
pkg Kötüye Kullanımı Aracılığıyla İzin Yükseltme
Genel Dizinlerden Yürütme
Örneğin bir ön veya son yükleme betiği /var/tmp/Installerutil
dizininden yürütülüyorsa ve saldırgan bu betiği kontrol edebiliyorsa, ayrıcalıkları yükseltebilir. Ya da başka bir benzer örnek:
AuthorizationExecuteWithPrivileges
Bu, birçok yükleyici ve güncelleme aracının kök olarak bir şey yürütmek için çağıracağı genel bir işlev'dir. Bu işlev, yürütülecek dosyanın yolunu parametre olarak alır, ancak bir saldırgan bu dosyayı değiştirebilirse, kök olarak bu dosyanın yürütülmesini kötüye kullanarak ayrıcalıkları yükseltebilir.
Bağlantı ile Yürütme
Eğer bir kurulum programı /tmp/fixedname/bla/bla
'ya yazıyorsa, /tmp/fixedname
üzerine sahibi olmayan bir mount oluşturmak mümkün olabilir, böylece kurulum sırasında herhangi bir dosyayı değiştirebilir ve kurulum sürecini kötüye kullanabilirsiniz.
Buna bir örnek CVE-2021-26089'dur, bu örnek kök olarak yürütme elde etmek için bir periyodik betiği üzerine yazmayı başardı. Daha fazla bilgi için şu konuşmaya göz atın: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
Zararlı Olarak pkg
Boş Yük
Sadece bir .pkg
dosyası oluşturmak mümkündür ve içinde herhangi bir yük olmadan ön ve son kurulum betikleri içerebilir.
Dağıtım xml'de JS
Paketin dağıtım xml dosyasına <script>
etiketleri eklemek mümkündür ve bu kod yürütülecek ve system.run
kullanarak komutlar yürütülebilir:
Referanslar
Last updated