macOS Kernel & System Extensions
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Die kern van macOS is XNU, wat staan vir "X is Not Unix". Hierdie kern is fundamenteel saamgestel uit die Mach mikrokernel (wat later bespreek sal word), en elemente van Berkeley Software Distribution (BSD). XNU bied ook 'n platform vir kern bestuurders via 'n stelsel genaamd die I/O Kit. Die XNU-kern is deel van die Darwin oopbronprojek, wat beteken sy bronkode is vrylik beskikbaar.
Vanuit die perspektief van 'n sekuriteitsnavorser of 'n Unix-ontwikkelaar, kan macOS baie soortgelyk voel aan 'n FreeBSD stelsel met 'n elegante GUI en 'n verskeidenheid van pasgemaakte toepassings. Meeste toepassings wat vir BSD ontwikkel is, sal saamgestel en op macOS loop sonder dat aanpassings nodig is, aangesien die opdraglyn gereedskap wat bekend is aan Unix-gebruikers, almal in macOS teenwoordig is. Tog, omdat die XNU-kern Mach inkorporeer, is daar 'n paar beduidende verskille tussen 'n tradisionele Unix-agtige stelsel en macOS, en hierdie verskille kan potensiële probleme veroorsaak of unieke voordele bied.
Oopbron weergawe van XNU: https://opensource.apple.com/source/xnu/
Mach is 'n mikrokernel wat ontwerp is om UNIX-compatibel te wees. Een van sy sleutelontwerp beginsels was om die hoeveelheid kode wat in die kern ruimte loop te minimaliseer en eerder toe te laat dat baie tipiese kernfunksies, soos lêerstelsels, netwerk, en I/O, as gebruikersvlak take loop.
In XNU is Mach verantwoordelik vir baie van die kritieke laagvlak operasies wat 'n kern tipies hanteer, soos prosessor skedulering, multitasking, en virtuele geheue bestuur.
Die XNU kern inkorporeer ook 'n beduidende hoeveelheid kode wat afkomstig is van die FreeBSD projek. Hierdie kode loop as deel van die kern saam met Mach, in dieselfde adresruimte. Tog, die FreeBSD kode binne XNU mag aansienlik verskil van die oorspronklike FreeBSD kode omdat aanpassings nodig was om sy kompatibiliteit met Mach te verseker. FreeBSD dra by tot baie kern operasies insluitend:
Proses bestuur
Sein hantering
Basiese sekuriteitsmeganismes, insluitend gebruiker en groep bestuur
Stelselaanroep infrastruktuur
TCP/IP stapel en sokke
Vuurmuur en pakketfiltrering
Om die interaksie tussen BSD en Mach te verstaan, kan kompleks wees, as gevolg van hul verskillende konseptuele raamwerke. Byvoorbeeld, BSD gebruik prosesse as sy fundamentele uitvoerende eenheid, terwyl Mach werk op grond van drade. Hierdie verskil word in XNU versoen deur elke BSD-proses te assosieer met 'n Mach-taak wat presies een Mach-draad bevat. Wanneer BSD se fork() stelselaanroep gebruik word, gebruik die BSD kode binne die kern Mach funksies om 'n taak en 'n draadstruktuur te skep.
Boonop, Mach en BSD handhaaf elk verskillende sekuriteitsmodelle: Mach se sekuriteitsmodel is gebaseer op poortregte, terwyl BSD se sekuriteitsmodel werk op grond van prosesbesit. Verskille tussen hierdie twee modelle het af en toe gelei tot plaaslike voorreg-verhoging kwesbaarhede. Afgesien van tipiese stelselaanroepe, is daar ook Mach traps wat gebruikersruimte programme toelaat om met die kern te kommunikeer. Hierdie verskillende elemente saam vorm die veelvlakkige, hibriede argitektuur van die macOS-kern.
Die I/O Kit is 'n oopbron, objek-georiënteerde toestel-bestuurder raamwerk in die XNU-kern, wat dynamies gelaaide toestel bestuurders hanteer. Dit laat modulaire kode toe om aan die kern bygevoeg te word terwyl dit loop, wat verskillende hardeware ondersteun.
macOS IOKitmacOS is baie beperkend om Kernel Extensions (.kext) te laai weens die hoë voorregte wat kode sal loop. Trouens, standaard is dit feitlik onmoontlik (tenzij 'n omseiling gevind word).
Op die volgende bladsy kan jy ook sien hoe om die .kext
wat macOS binne sy kernelcache laai, te herstel:
In plaas daarvan om Kernel Extensions te gebruik, het macOS die System Extensions geskep, wat in gebruikersvlak API's bied om met die kern te kommunikeer. Op hierdie manier kan ontwikkelaars vermy om kern uitbreidings te gebruik.
macOS System ExtensionsLeer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)