macOS System Extensions

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Sisteemuitbreidings / Eindpuntsekuriteitsraamwerk

In teenstelling met Kerneluitbreidings, hardloop Sisteemuitbreidings in gebruikerspasie eerder as in die kernpasie, wat die risiko van 'n stelselstoring as gevolg van uitbreidingsfoute verminder.

Daar is drie tipes sisteemuitbreidings: DriverKit-uitbreidings, Netwerk-uitbreidings, en Eindpuntsekuriteit-uitbreidings.

DriverKit-uitbreidings

DriverKit is 'n vervanging vir kerneluitbreidings wat hardwaresondersteuning bied. Dit maak dit moontlik vir toestuurprogramme (soos USB, Seriële, NIC, en HID-toestuurprogramme) om in gebruikerspasie te hardloop eerder as in kernpasie. Die DriverKit-raamwerk sluit gebruikerspasie-weergawes van sekere I/O Kit-klasse in, en die kern stuur normale I/O Kit-gebeure na gebruikerspasie, wat 'n veiliger omgewing bied vir hierdie toestuurprogramme om te hardloop.

Netwerkuitbreidings

Netwerkuitbreidings bied die vermoë om netwerkgedrag aan te pas. Daar is verskeie tipes Netwerkuitbreidings:

  • Toepassingsproksi: Dit word gebruik om 'n VPN-klient te skep wat 'n vloeigeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van verbindings (of vloeie) eerder as individuele pakkette.

  • Pakketspoor: Dit word gebruik om 'n VPN-klient te skep wat 'n pakketgeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van individuele pakkette.

  • Filterdata: Dit word gebruik om netwerk "vloeie" te filter. Dit kan netwerkdata op vloeivlak monitor of wysig.

  • Filterpakkette: Dit word gebruik om individuele netwerkpakkette te filter. Dit kan netwerkdata op pakketvlak monitor of wysig.

  • DNS-proksi: Dit word gebruik om 'n aangepaste DNS-leweransier te skep. Dit kan gebruik word om DNS-versoeke en -antwoorde te monitor of wysig.

Eindpuntsekuriteitsraamwerk

Eindpuntsekuriteit is 'n raamwerk wat deur Apple in macOS voorsien word en 'n stel API's vir stelselsekuriteit bied. Dit is bedoel vir gebruik deur sekuriteitsvennote en ontwikkelaars om produkte te bou wat stelselaktiwiteit kan monitor en beheer om skadelike aktiwiteit te identifiseer en teen te beskerm.

Hierdie raamwerk bied 'n versameling API's om stelselaktiwiteit te monitor en te beheer, soos prosesuitvoerings, lêersisteemgebeure, netwerk- en kerngebeure.

Die kern van hierdie raamwerk word geïmplementeer in die kern, as 'n Kerneluitbreiding (KEXT) geleë by /System/Library/Extensions/EndpointSecurity.kext. Hierdie KEXT bestaan uit verskeie sleutelkomponente:

  • EndpointSecurityDriver: Dit tree op as die "toegangspunt" vir die kernuitbreiding. Dit is die hoofpunt van interaksie tussen die OS en die Eindpuntsekuriteitsraamwerk.

  • EndpointSecurityEventManager: Hierdie komponent is verantwoordelik vir die implementering van kernhake. Kernhake maak dit moontlik vir die raamwerk om stelselgebeure te monitor deur stelseloproepe te onderskep.

  • EndpointSecurityClientManager: Dit bestuur die kommunikasie met gebruikerspasie-kliënte, hou by watter kliënte gekoppel is en gebeurteniskennisgewings moet ontvang.

  • EndpointSecurityMessageManager: Dit stuur boodskappe en gebeurteniskennisgewings na gebruikerspasie-kliënte.

Die gebeure wat die Eindpuntsekuriteitsraamwerk kan monitor, word gekategoriseer in:

  • Lêergebeure

  • Prosessgebeure

  • Sokketgebeure

  • Kerngebeure (soos die laai/ontlaai van 'n kernuitbreiding of die oopmaak van 'n I/O Kit-toestel)

Eindpuntsekuriteitsraamwerkargitektuur

Gebruikerspasie-kommunikasie met die Eindpuntsekuriteitsraamwerk gebeur deur die IOUserClient-klas. Twee verskillende subklasse word gebruik, afhangende van die tipe oproeper:

  • EndpointSecurityDriverClient: Dit vereis die com.apple.private.endpoint-security.manager toestemming, wat slegs deur die stelselproses endpointsecurityd besit word.

  • EndpointSecurityExternalClient: Dit vereis die com.apple.developer.endpoint-security.client toestemming. Dit sou tipies deur derdeparty-sekuriteitsagteware gebruik word wat met die Eindpuntsekuriteitsraamwerk moet interaksieer.

Die Eindpuntsekuriteitsuitbreidings:libEndpointSecurity.dylib is die C-biblioteek wat sisteemuitbreidings gebruik om met die kern te kommunikeer. Hierdie biblioteek gebruik die I/O Kit (IOKit) om met die Eindpuntsekuriteits-KEXT te kommunikeer.

endpointsecurityd is 'n sleutelstelseldaemon wat betrokke is by die bestuur en aanvang van eindpuntsekuriteitstelseluitbreidings, veral gedurende die vroeë opstartproses. Slegs stelseluitbreidings gemerk met NSEndpointSecurityEarlyBoot in hul Info.plist-lêer ontvang hierdie vroeë opstartbehandeling.

'n Ander stelseldaemon, sysextd, valideer stelseluitbreidings en skuif hulle na die regte stelsellokasies. Dit vra dan die relevante daemon om die uitbreiding te laai. Die SystemExtensions.framework is verantwoordelik vir die aktivering en deaktivering van stelseluitbreidings.

ESF-verbygaan

ESF word deur sekuriteitsgereedskap gebruik wat sal probeer om 'n rooi span-lid te identifiseer, dus enige inligting oor hoe dit vermy kan word, klink interessant.

CVE-2021-30965

Die ding is dat die sekuriteitsprogram Volle Skyf Toegang-toestemmings moet hê. Dus as 'n aanvaller dit kon verwyder, kon hy voorkom dat die sagteware hardloop:

tccutil reset All

Vir meer inligting oor hierdie omweg en verwante omwegte, kyk na die aanbieding #OBTS v5.0: "Die Achilleshiel van Eindpuntbeveiliging" - Fitzl Csaba

Aan die einde is hierdie probleem opgelos deur die nuwe toestemming kTCCServiceEndpointSecurityClient te gee aan die beveiligingsprogram wat bestuur word deur tccd sodat tccutil nie sy toestemmings sal skoonmaak nie en dit verhoed om uit te voer.

Verwysings

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated