macOS System Extensions
Last updated
Last updated
Leer en oefen AWS-hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer en oefen GCP-hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
In teenstelling met Kerneluitbreidings, loop Sisteemuitbreidings in gebruikersruimte in plaas van kernelruimte, wat die risiko van 'n stelselbotsing as gevolg van uitbreidingsfoute verminder.
Daar is drie tipes sisteemuitbreidings: DriverKit-uitbreidings, Netwerk-uitbreidings, en Eindpuntbeveiliging-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 gebruikersruimte te hardloop eerder as in kernelruimte. Die DriverKit-raamwerk sluit gebruikersruimte-weergawes van sekere I/O Kit-klasse in, en die kernel stuur normale I/O Kit-gebeure na gebruikersruimte, wat 'n veiliger omgewing bied vir hierdie toestuurprogramme om te hardloop.
Netwerkuitbreidings bied die vermoë om netwerkgedrag aan te pas. Daar is verskeie tipes Netwerkuitbreidings:
Toepassingsproksi: Dit word gebruik om 'n VPN-kliënt 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-kliënt 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-lewerancier te skep. Dit kan gebruik word om DNS-versoeke en -antwoorde te monitor of wysig.
Eindpuntbeveiliging 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 kernelgebeure.
Die kern van hierdie raamwerk word geïmplementeer in die kernel, as 'n Kerneluitbreiding (KEXT) geleë by /System/Library/Extensions/EndpointSecurity.kext
. Hierdie KEXT bestaan uit verskeie sleutelkomponente:
EndpointSecurityDriver: Dit tree op as die "ingangspunt" vir die kerneluitbreiding. Dit is die hoofpunt van interaksie tussen die OS en die Eindpuntbeveiligingsraamwerk.
EndpointSecurityEventManager: Hierdie komponent is verantwoordelik vir die implementering van kernelhake. Kernelhake maak dit moontlik vir die raamwerk om stelselgebeure te monitor deur stelseloproepe te onderskep.
EndpointSecurityClientManager: Dit bestuur die kommunikasie met gebruikersruimtekliënte, hou by watter kliënte gekoppel is en kennis moet neem van gebeurteniskennisgewings.
EndpointSecurityMessageManager: Dit stuur boodskappe en gebeurteniskennisgewings na gebruikersruimtekliënte.
Die gebeure wat die Eindpuntbeveiligingsraamwerk kan monitor word gekategoriseer in:
Lêergebeure
Prosessgebeure
Sokketgebeure
Kernelgebeure (soos die laai/ontlaai van 'n kerneluitbreiding of die oopmaak van 'n I/O Kit-toestel)
Gebruikersruimte kommunikasie met die Eindpuntbeveiligingsraamwerk 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
gehou word.
EndpointSecurityExternalClient: Dit vereis die com.apple.developer.endpoint-security.client
toestemming. Dit sou tipies gebruik word deur derdeparty-sekuriteitsagteware wat met die Eindpuntbeveiligingsraamwerk moet interaksie hê.
Die Eindpuntbeveiligingsuitbreidings:libEndpointSecurity.dylib
is die C-biblioteek wat sisteemuitbreidings gebruik om met die kernel te kommunikeer. Hierdie biblioteek gebruik die I/O Kit (IOKit
) om met die Eindpuntbeveiligings-KEXT te kommunikeer.
endpointsecurityd
is 'n sleutelstelseldaemon wat betrokke is by die bestuur en aan die gang sit van eindpuntbeveiligingstelseluitbreidings, veral gedurende die vroeë opstartproses. Slegs sisteemuitbreidings gemerk met NSEndpointSecurityEarlyBoot
in hul Info.plist
-lêer ontvang hierdie vroeë opstartbehandeling.
'n Ander stelseldaemon, sysextd
, valideer sisteemuitbreidings 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 sisteemuitbreidings.
ESF word deur sekuriteitsgereedskap gebruik wat sal probeer om 'n rooi span-lid op te spoor, dus enige inligting oor hoe dit vermy kan word, klink interessant.
Die ding is dat die sekuriteitsaansoek Volle Skyf Toegang-toestemmings moet hê. Dus as 'n aanvaller dit kon verwyder, kon hy voorkom dat die sagteware hardloop:
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.
Leer & oefen AWS-hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP-hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)