macOS Installers Abuse
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
macOS yükleyici paketi (aynı zamanda .pkg
dosyası olarak da bilinir), macOS tarafından yazılım dağıtımı için kullanılan bir dosya formatıdır. Bu dosyalar, bir yazılım parçasının doğru bir şekilde yüklenmesi ve çalışması için gereken her şeyi içeren bir kutunun içindeymiş gibi davranır.
Paket dosyası, hedef bilgisayara yüklenecek dosya ve dizinlerin hiyerarşisini tutan bir arşivdir. Ayrıca, yapılandırma dosyalarını ayarlamak veya yazılımın eski sürümlerini temizlemek gibi yüklemeden önce ve sonra görevleri yerine getirmek için scriptler de içerebilir.
Dağıtım (xml): Özelleştirmeler (başlık, karşılama metni…) ve script/yükleme kontrolleri
Paket Bilgisi (xml): Bilgi, yükleme gereksinimleri, yükleme yeri, çalıştırılacak scriptlerin yolları
Malzeme listesi (bom): Yüklenmesi, güncellenmesi veya kaldırılması gereken dosyaların listesi ve dosya izinleri
Yük (CPIO arşivi gzip sıkıştırılmış): Paket Bilgisi'nden install-location
'da yüklenecek dosyalar
Scriptler (CPIO arşivi gzip sıkıştırılmış): Yükleme öncesi ve sonrası scriptler ve yürütme için geçici bir dizine çıkarılan daha fazla kaynak.
In order to visualize the contents of the installer without decompressing it manually you can also use the free tool Suspicious Package.
DMG dosyaları, veya Apple Disk Görüntüleri, Apple'ın macOS'u tarafından disk görüntüleri için kullanılan bir dosya formatıdır. Bir DMG dosyası esasen monte edilebilir bir disk görüntüsü (kendi dosya sistemini içerir) olup, genellikle sıkıştırılmış ve bazen şifrelenmiş ham blok verileri içerir. Bir DMG dosyasını açtığınızda, macOS onu fiziksel bir disk gibi monte eder, böylece içeriğine erişebilirsiniz.
Not edin ki .dmg
yükleyicileri çok sayıda formatı destekler, geçmişte bazıları zafiyetler içerdiği için kernel kodu yürütme elde etmek için istismar edilmiştir.
Bir DMG dosyasının hiyerarşisi içeriğe bağlı olarak farklı olabilir. Ancak, uygulama DMG'leri için genellikle bu 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, gerçek 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. Bunun amacı, uygulamayı yüklemenizi kolaylaştırmaktır. Uygulama dosyasını bu kısayola sürükleyerek uygulamayı yükleyebilirsiniz.
Eğer bir ön veya sonrası yükleme betiği örneğin /var/tmp/Installerutil
dizininden yürütülüyorsa ve saldırgan bu betiği kontrol edebiliyorsa, her yürütüldüğünde ayrıcalıkları artırabilir. Veya başka bir benzer örnek:
Bu, birkaç yükleyici ve güncelleyici tarafından root olarak bir şey yürütmek için çağrılan bir kamusal işlevdir. Bu işlev, yürütülecek dosyanın yolunu parametre olarak kabul eder, ancak eğer bir saldırgan bu dosyayı değiştirebilirse, root ile yürütmesini istismar edebilir ve ayrıcalıkları artırabilir.
For more info check this talk: https://www.youtube.com/watch?v=lTOItyjTTkw
Eğer bir yükleyici /tmp/fixedname/bla/bla
yoluna yazıyorsa, yükleme sürecini kötüye kullanmak için yükleme sırasında herhangi bir dosyayı değiştirmek amacıyla /tmp/fixedname üzerinde noowners ile bir montaj oluşturmak mümkündür.
Bunun bir örneği CVE-2021-26089'dur; bu, root olarak yürütme elde etmek için dönemsel bir betiği üst üste yazmayı başarmıştır. Daha fazla bilgi için konuşmaya göz atın: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
Gerçek bir yük olmadan, sadece kötü amaçlı yazılım içeren ön ve sonrası yükleme betikleri ile bir .pkg
dosyası oluşturmak mümkündür.
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:
dist.xml içinde bir betik ve JS kodu kullanan kötü niyetli yükleyici
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)