macOS Kernel & System Extensions

Reading time: 4 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

XNU Kernel

macOS'in temeli XNU'dur, bu "X is Not Unix" anlamına gelir. Bu çekirdek esasen Mach mikro çekirdeği (daha sonra tartışılacak) ve Berkeley Yazılım Dağıtımı (BSD) unsurlarından oluşur. XNU ayrıca I/O Kit adlı bir sistem aracılığıyla çekirdek sürücüleri için bir platform sağlar. XNU çekirdeği, kaynak kodu serbestçe erişilebilir olan Darwin açık kaynak projesinin bir parçasıdır.

Bir güvenlik araştırmacısı veya Unix geliştiricisi perspektifinden, macOS oldukça benzer bir FreeBSD sistemi gibi görünebilir; şık bir GUI ve birçok özel uygulama ile. BSD için geliştirilen çoğu uygulama, Unix kullanıcılarına aşina olan komut satırı araçları macOS'ta mevcut olduğundan, macOS'ta değişiklik yapmadan derlenip çalıştırılabilir. Ancak, XNU çekirdeği Mach'ı içerdiğinden, geleneksel bir Unix benzeri sistem ile macOS arasında bazı önemli farklılıklar vardır ve bu farklılıklar potansiyel sorunlara neden olabilir veya benzersiz avantajlar sağlayabilir.

XNU'nun açık kaynak versiyonu: https://opensource.apple.com/source/xnu/

Mach

Mach, UNIX uyumlu olacak şekilde tasarlanmış bir mikro çekirdek'tir. Ana tasarım ilkelerinden biri, çekirdek alanında çalışan kod miktarını minimize etmek ve bunun yerine dosya sistemi, ağ ve I/O gibi birçok tipik çekirdek işlevinin kullanıcı düzeyinde görevler olarak çalışmasına izin vermekti.

XNU'da, Mach genellikle bir çekirdeğin ele aldığı kritik düşük seviyeli işlemlerden birçoklarından sorumludur, örneğin işlemci zamanlaması, çoklu görev ve sanal bellek yönetimi.

BSD

XNU çekirdeği ayrıca FreeBSD projesinden türetilmiş önemli miktarda kodu içerir. Bu kod, Mach ile birlikte çekirdek parçası olarak aynı adres alanında çalışır. Ancak, XNU içindeki FreeBSD kodu, Mach ile uyumluluğunu sağlamak için gerekli değişiklikler yapıldığından, orijinal FreeBSD kodundan önemli ölçüde farklı olabilir. FreeBSD, aşağıdakiler dahil birçok çekirdek işlemi için katkıda bulunur:

  • Süreç yönetimi
  • Sinyal işleme
  • Kullanıcı ve grup yönetimi dahil temel güvenlik mekanizmaları
  • Sistem çağrısı altyapısı
  • TCP/IP yığını ve soketler
  • Güvenlik duvarı ve paket filtreleme

BSD ve Mach arasındaki etkileşimi anlamak karmaşık olabilir, çünkü farklı kavramsal çerçevelere sahiptirler. Örneğin, BSD, temel yürütme birimi olarak süreçleri kullanırken, Mach, iş parçacıkları temelinde çalışır. Bu tutarsızlık, XNU'da her BSD sürecini tam olarak bir Mach iş parçacığı içeren bir Mach görevi ile ilişkilendirerek uzlaştırılır. BSD'nin fork() sistem çağrısı kullanıldığında, çekirdek içindeki BSD kodu, bir görev ve bir iş parçacığı yapısı oluşturmak için Mach işlevlerini kullanır.

Ayrıca, Mach ve BSD her biri farklı güvenlik modelleri sürdürmektedir: Mach'ın güvenlik modeli port haklarına dayanırken, BSD'nin güvenlik modeli süreç sahipliği temelinde çalışır. Bu iki model arasındaki farklılıklar zaman zaman yerel ayrıcalık yükseltme güvenlik açıklarına neden olmuştur. Tipik sistem çağrılarının yanı sıra, kullanıcı alanı programlarının çekirdek ile etkileşimde bulunmasına izin veren Mach tuzakları da vardır. Bu farklı unsurlar bir araya gelerek macOS çekirdeğinin çok yönlü, hibrit mimarisini oluşturur.

I/O Kit - Sürücüler

I/O Kit, XNU çekirdeğinde açık kaynaklı, nesne yönelimli bir cihaz sürücüsü çerçevesidir, dinamik olarak yüklenen cihaz sürücülerini yönetir. Farklı donanımları destekleyerek çekirdeğe modüler kod eklenmesine olanak tanır.

macOS IOKit

IPC - Süreçler Arası İletişim

macOS IPC - Inter Process Communication

macOS Kernel Extensions

macOS, kodun yüksek ayrıcalıklarla çalışması nedeniyle Çekirdek Uzantılarını (.kext) yüklemek için son derece kısıtlayıcıdır. Aslında, varsayılan olarak neredeyse imkansızdır (bir geçiş bulunmadıkça).

Aşağıdaki sayfada, macOS'un kernelcache içinde yüklediği .kext'i nasıl geri alabileceğinizi de görebilirsiniz:

macOS Kernel Extensions & Debugging

macOS System Extensions

macOS, çekirdek ile etkileşimde bulunmak için kullanıcı düzeyinde API'ler sunan Sistem Uzantılarını oluşturmuştur. Bu şekilde, geliştiriciler çekirdek uzantılarını kullanmaktan kaçınabilirler.

macOS System Extensions

References

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