hacktricks/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md
2024-02-10 18:14:16 +00:00

5.2 KiB
Raw Blame History

macOS Çekirdek Uzantıları

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!

Temel Bilgiler

Çekirdek uzantıları (Kext'ler), ana işletim sistemine ek işlevsellik sağlayan .kext uzantılı paketlerdir ve doğrudan macOS çekirdek alanına yüklenir.

Gereksinimler

ıkçası, bu kadar güçlü olduğu için bir çekirdek uzantısını yüklemek karmaşık bir işlemdir. Bir çekirdek uzantısının yüklenmesi için karşılanması gereken gereksinimler şunlardır:

  • Kurtarma moduna girildiğinde, çekirdek uzantılarının yüklenmesine izin verilmelidir:
  • Çekirdek uzantısı, yalnızca Apple tarafından verilebilen bir çekirdek kodu imzalama sertifikasıyla imzalanmalıdır. Apple, şirketi ve nedenlere ayrıntılı olarak inceleyecektir.
  • Çekirdek uzantısı ayrıca notarized olmalıdır, Apple tarafından kötü amaçlı yazılım kontrol edilebilir.
  • Ardından, root kullanıcısı, çekirdek uzantısını yükleyebilen ve paket içindeki dosyaların root'a ait olması gereken kullanıcıdır.
  • Yükleme işlemi sırasında, paketin korunan bir kök olmayan konuma hazırlanması gerekmektedir: /Library/StagedExtensions (com.apple.rootless.storage.KernelExtensionManagement iznini gerektirir).
  • Son olarak, yüklemeye çalışıldığında, kullanıcı bir onay isteği alacak ve kabul edilirse, bunu yüklemek için bilgisayarın yeniden başlatılması gerekmektedir.

Yükleme işlemi

Catalina'da durum şöyleydi: Doğrulama işlemi kullanıcı alanında gerçekleşir. Ancak, yalnızca com.apple.private.security.kext-management iznine sahip uygulamalar, çekirdeğe bir uzantı yüklemesini istemek için çekirdeğe başvurabilir: kextcache, kextload, kextutil, kextd, syspolicyd

  1. kextutil komut satırı arayüzü, bir uzantıyı yüklemek için doğrulama işlemini başlatır
  • Bir Mach hizmeti kullanarak kextd ile iletişim kurar.
  1. kextd, imza gibi birkaç şeyi kontrol eder
  • syspolicyd ile iletişim kurarak uzantının yüklenip yüklenemeyeceğini kontrol eder.
  1. syspolicyd, uzantı daha önce yüklenmediyse kullanıcıya bir onay istemi yapar.
  • syspolicyd, sonucu kextd'ye bildirir.
  1. kextd, sonunda çekirdeğe uzantıyı yüklemek için izin verebilir

kextd kullanılamıyorsa, kextutil aynı kontrolleri yapabilir.

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!