hacktricks/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture
2024-10-01 14:41:53 +00:00
..
macos-ipc-inter-process-communication Translated ['README.md', 'backdoors/salseo.md', 'binary-exploitation/arb 2024-07-18 17:43:30 +00:00
macos-function-hooking.md Translated ['crypto-and-stego/cryptographic-algorithms/unpacking-binarie 2024-07-19 04:55:16 +00:00
macos-iokit.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:19:44 +00:00
macos-kernel-extensions.md Translated ['generic-methodologies-and-resources/python/bypass-python-sa 2024-10-01 14:41:53 +00:00
macos-kernel-vulnerabilities.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:19:44 +00:00
macos-system-extensions.md Translated ['README.md', 'backdoors/salseo.md', 'binary-exploitation/arb 2024-07-18 17:43:30 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-09-25 23:57:25 +00:00

macOS Kernel & System Extensions

{% hint style="success" %} Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie dla HackTricks
{% endhint %}

XNU Kernel

Rdzeń macOS to XNU, co oznacza "X nie jest Unixem". Ten kernel składa się zasadniczo z mikrokernela Mach (omówionego później) oraz elementów z Berkeley Software Distribution (BSD). XNU zapewnia również platformę dla sterowników jądra za pośrednictwem systemu zwanego I/O Kit. Kernel XNU jest częścią projektu open source Darwin, co oznacza, że jego kod źródłowy jest ogólnodostępny.

Z perspektywy badacza bezpieczeństwa lub dewelopera Unix, macOS może wydawać się dość podobny do systemu FreeBSD z eleganckim interfejsem graficznym i wieloma niestandardowymi aplikacjami. Większość aplikacji opracowanych dla BSD skompiluje się i uruchomi na macOS bez potrzeby modyfikacji, ponieważ narzędzia wiersza poleceń znane użytkownikom Unix są obecne w macOS. Jednakże, ponieważ kernel XNU zawiera Mach, istnieją istotne różnice między tradycyjnym systemem podobnym do Unixa a macOS, a te różnice mogą powodować potencjalne problemy lub zapewniać unikalne zalety.

Otwartoźródłowa wersja XNU: https://opensource.apple.com/source/xnu/

Mach

Mach to mikrokernel zaprojektowany w celu kompatybilności z UNIX. Jedną z jego kluczowych zasad projektowych było minimalizowanie ilości kodu działającego w przestrzeni jądra i zamiast tego pozwolenie wielu typowym funkcjom jądra, takim jak system plików, sieci i I/O, na działanie jako zadania na poziomie użytkownika.

W XNU, Mach jest odpowiedzialny za wiele krytycznych operacji niskiego poziomu, które typowo obsługuje kernel, takich jak planowanie procesora, wielozadaniowość i zarządzanie pamięcią wirtualną.

BSD

Kernel XNU zawiera również znaczną ilość kodu pochodzącego z projektu FreeBSD. Ten kod działa jako część jądra wraz z Machem, w tej samej przestrzeni adresowej. Jednak kod FreeBSD w XNU może znacznie różnić się od oryginalnego kodu FreeBSD, ponieważ wymagane były modyfikacje, aby zapewnić jego zgodność z Machem. FreeBSD przyczynia się do wielu operacji jądra, w tym:

  • Zarządzanie procesami
  • Obsługa sygnałów
  • Podstawowe mechanizmy bezpieczeństwa, w tym zarządzanie użytkownikami i grupami
  • Infrastruktura wywołań systemowych
  • Stos TCP/IP i gniazda
  • Zapora ogniowa i filtrowanie pakietów

Zrozumienie interakcji między BSD a Machem może być skomplikowane, z powodu ich różnych ram koncepcyjnych. Na przykład, BSD używa procesów jako swojej podstawowej jednostki wykonawczej, podczas gdy Mach działa na podstawie wątków. Ta rozbieżność jest rozwiązywana w XNU poprzez powiązanie każdego procesu BSD z zadaniem Mach, które zawiera dokładnie jeden wątek Mach. Gdy używane jest wywołanie systemowe fork() w BSD, kod BSD w jądrze używa funkcji Mach do tworzenia struktury zadania i wątku.

Ponadto, Mach i BSD utrzymują różne modele bezpieczeństwa: model bezpieczeństwa Macha oparty jest na prawach portów, podczas gdy model bezpieczeństwa BSD działa na podstawie własności procesów. Różnice między tymi dwoma modelami czasami prowadziły do lokalnych luk w podnoszeniu uprawnień. Oprócz typowych wywołań systemowych, istnieją również pułapki Mach, które pozwalają programom w przestrzeni użytkownika na interakcję z jądrem. Te różne elementy razem tworzą złożoną, hybrydową architekturę jądra macOS.

I/O Kit - Sterowniki

I/O Kit to otwartoźródłowa, obiektowa ramka sterowników urządzeń w jądrze XNU, obsługująca dynamicznie ładowane sterowniki urządzeń. Umożliwia dodawanie modułowego kodu do jądra w locie, wspierając różnorodny sprzęt.

{% content-ref url="macos-iokit.md" %} macos-iokit.md {% endcontent-ref %}

IPC - Komunikacja między procesami

{% content-ref url="../macos-proces-abuse/macos-ipc-inter-process-communication/" %} macos-ipc-inter-process-communication {% endcontent-ref %}

Rozszerzenia jądra macOS

macOS jest bardzo restrykcyjny w ładowaniu rozszerzeń jądra (.kext) z powodu wysokich uprawnień, z jakimi działa kod. W rzeczywistości, domyślnie jest to praktycznie niemożliwe (chyba że znajdzie się obejście).

Na następnej stronie możesz również zobaczyć, jak odzyskać .kext, które macOS ładuje w swoim kernelcache:

{% content-ref url="macos-kernel-extensions.md" %} macos-kernel-extensions.md {% endcontent-ref %}

Rozszerzenia systemu macOS

Zamiast używać rozszerzeń jądra, macOS stworzył Rozszerzenia Systemu, które oferują API na poziomie użytkownika do interakcji z jądrem. W ten sposób deweloperzy mogą unikać używania rozszerzeń jądra.

{% content-ref url="macos-system-extensions.md" %} macos-system-extensions.md {% endcontent-ref %}

Referencje

{% hint style="success" %} Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie dla HackTricks
{% endhint %}