macOS Gatekeeper / Quarantine / XProtect
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)
Gatekeeper is 'n sekuriteitskenmerk wat ontwikkel is vir Mac-bedryfstelsels, ontwerp om te verseker dat gebruikers slegs vertroude sagteware op hul stelsels uitvoer. Dit funksioneer deur sagteware te verifieer wat 'n gebruiker aflaai en probeer om te open vanaf bronne buite die App Store, soos 'n app, 'n plug-in, of 'n installer pakket.
Die sleutelmeganisme van Gatekeeper lê in sy verifikasie proses. Dit kontroleer of die afgelaaide sagteware onderteken is deur 'n erkende ontwikkelaar, wat die sagteware se egtheid verseker. Verder bevestig dit of die sagteware notarized is deur Apple, wat bevestig dat dit vry is van bekende kwaadwillige inhoud en nie na notarisation gemanipuleer is nie.
Boonop versterk Gatekeeper gebruikersbeheer en sekuriteit deur gebruikers te vra om die opening van afgelaaide sagteware vir die eerste keer goed te keur. Hierdie beskerming help om te voorkom dat gebruikers per ongeluk potensieel skadelike uitvoerbare kode uitvoer wat hulle dalk vir 'n onskadelike data-lêer verwar het.
Aansoekhandtekeninge, ook bekend as kodehandtekeninge, is 'n kritieke komponent van Apple se sekuriteitsinfrastruktuur. Hulle word gebruik om die identiteit van die sagteware-auteur (die ontwikkelaar) te verifieer en om te verseker dat die kode nie sedert die laaste ondertekening gemanipuleer is nie.
Hier is hoe dit werk:
Ondertekening van die Aansoek: Wanneer 'n ontwikkelaar gereed is om hul aansoek te versprei, onderteken hulle die aansoek met 'n private sleutel. Hierdie private sleutel is geassosieer met 'n sertifikaat wat Apple aan die ontwikkelaar uitreik wanneer hulle in die Apple Developer Program inskryf. Die ondertekeningsproses behels die skep van 'n kriptografiese hash van alle dele van die app en die versleuteling van hierdie hash met die ontwikkelaar se private sleutel.
Verspreiding van die Aansoek: Die ondertekende aansoek word dan aan gebruikers versprei saam met die ontwikkelaar se sertifikaat, wat die ooreenstemmende publieke sleutel bevat.
Verifikasie van die Aansoek: Wanneer 'n gebruiker die aansoek aflaai en probeer om dit uit te voer, gebruik hul Mac-bedryfstelsel die publieke sleutel van die ontwikkelaar se sertifikaat om die hash te ontsleutel. Dit bereken dan die hash weer op grond van die huidige toestand van die aansoek en vergelyk dit met die ontsleutelde hash. As hulle ooreenstem, beteken dit die aansoek is nie gemanipuleer nie sedert die ontwikkelaar dit onderteken het, en die stelsel laat die aansoek toe om uit te voer.
Aansoekhandtekeninge is 'n noodsaaklike deel van Apple se Gatekeeper-tegnologie. Wanneer 'n gebruiker probeer om 'n aansoek wat van die internet afgelaai is, te open, verifieer Gatekeeper die aansoekhandtekening. As dit onderteken is met 'n sertifikaat wat deur Apple aan 'n bekende ontwikkelaar uitgereik is en die kode nie gemanipuleer is nie, laat Gatekeeper die aansoek toe om uit te voer. Andersins blokkeer dit die aansoek en waarsku die gebruiker.
Vanaf macOS Catalina, kontroleer Gatekeeper ook of die aansoek notarized is deur Apple, wat 'n ekstra laag van sekuriteit toevoeg. Die notarization proses kontroleer die aansoek vir bekende sekuriteitskwessies en kwaadwillige kode, en as hierdie kontroles slaag, voeg Apple 'n kaartjie by die aansoek wat Gatekeeper kan verifieer.
Wanneer jy 'n paar malware monster kontroleer, moet jy altyd die handtekening van die binêre kontroleer aangesien die ontwikkelaar wat dit onderteken het, dalk reeds verbonde is met malware.
Apple se notariseringsproses dien as 'n addisionele beskerming om gebruikers te beskerm teen potensieel skadelike sagteware. Dit behels die ontwikkelaar wat hul aansoek indien vir ondersoek deur Apple se Notary Service, wat nie verwar moet word met App Review nie. Hierdie diens is 'n geoutomatiseerde stelsel wat die ingediende sagteware ondersoek vir die teenwoordigheid van skadelike inhoud en enige potensiële probleme met kode-handtekening.
As die sagteware deur hierdie inspeksie slaag sonder om enige bekommernisse te wek, genereer die Notary Service 'n notariseringskaartjie. Die ontwikkelaar moet dan hierdie kaartjie aan hul sagteware heg, 'n proses bekend as 'stapling.' Verder word die notariseringskaartjie ook aanlyn gepubliseer waar Gatekeeper, Apple se sekuriteitstegnologie, dit kan toegang.
By die gebruiker se eerste installasie of uitvoering van die sagteware, informeer die bestaan van die notariseringskaartjie - of dit aan die uitvoerbare geheg is of aanlyn gevind word - Gatekeeper dat die sagteware deur Apple notariseer is. As gevolg hiervan vertoon Gatekeeper 'n beskrywende boodskap in die aanvanklike lanseringsdialoog, wat aandui dat die sagteware deur Apple vir skadelike inhoud nagegaan is. Hierdie proses verbeter dus die gebruiker se vertroue in die sekuriteit van die sagteware wat hulle op hul stelsels installeer of uitvoer.
Let daarop dat vanaf Sequoia weergawe, spctl
nie meer toelaat om Gatekeeper-konfigurasie te wysig nie.
spctl
is die CLI-gereedskap om te tel en te kommunikeer met Gatekeeper (met die syspolicyd
daemon via XPC-boodskappe). Byvoorbeeld, dit is moontlik om die status van GateKeeper te sien met:
Let daarop dat GateKeeper-handtekeningkontroles slegs op lêers met die Quarantine-attribuut uitgevoer word, nie op elke lêer nie.
GateKeeper sal nagaan of 'n binêre volgens die voorkeure & die handtekening uitgevoer kan word:
syspolicyd
is die hoofdaemon wat verantwoordelik is vir die afdwinging van Gatekeeper. Dit hou 'n databasis in /var/db/SystemPolicy
en dit is moontlik om die kode te vind om die databasis hier te ondersteun en die SQL-sjabloon hier. Let daarop dat die databasis nie deur SIP beperk is nie en skryfbaar is deur root, en die databasis /var/db/.SystemPolicy-default
word as 'n oorspronklike rugsteun gebruik in die geval dat die ander beskadig raak.
Boonop bevat die bundels /var/db/gke.bundle
en /var/db/gkopaque.bundle
lêers met reëls wat in die databasis ingevoeg word. Jy kan hierdie databasis as root nagaan met:
syspolicyd
stel ook 'n XPC-bediener bloot met verskillende operasies soos assess
, update
, record
en cancel
wat ook bereik kan word met Security.framework
se SecAssessment*
API's en xpctl
praat eintlik met syspolicyd
via XPC.
Let op hoe die eerste reël eindig in "App Store" en die tweede in "Developer ID" en dat dit in die vorige beeld geaktiveer was om programme van die App Store en geïdentifiseerde ontwikkelaars uit te voer. As jy daardie instelling na App Store wysig, sal die "Notarized Developer ID" reëls verdwyn.
Daar is ook duisende reëls van type GKE :
Hierdie is hashes wat van:
/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
/var/db/gke.bundle/Contents/Resources/gk.db
/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
Of jy kan die vorige inligting lys met:
Die opsies --master-disable
en --global-disable
van spctl
sal hierdie handtekeningkontroles heeltemal deaktiveer:
Wanneer dit volledig geaktiveer is, sal 'n nuwe opsie verskyn:
Dit is moontlik om te kontroleer of 'n App deur GateKeeper toegelaat sal word met:
Dit is moontlik om nuwe reëls in GateKeeper by te voeg om die uitvoering van sekere toepassings toe te laat met:
Betreffende kernel uitbreidings, die gids /var/db/SystemPolicyConfiguration
bevat lêers met lyste van kexts wat toegelaat word om gelaai te word. Boonop het spctl
die regte com.apple.private.iokit.nvram-csr
omdat dit in staat is om nuwe vooraf-goedgekeurde kernel uitbreidings by te voeg wat ook in NVRAM in 'n kext-allowed-teams
sleutel gestoor moet word.
By aflaai van 'n toepassing of lêer, spesifieke macOS toepassings soos webblaaiers of e-pos kliënte heg 'n uitgebreide lêerattribuut aan, algemeen bekend as die "quarantine vlag," aan die afgelaaide lêer. Hierdie attribuut dien as 'n sekuriteitsmaatreël om die lêer te merk as afkomstig van 'n onbetroubare bron (die internet), en potensieel risiko's dra. egter, nie alle toepassings heg hierdie attribuut aan nie, byvoorbeeld, algemene BitTorrent kliënt sagteware omseil gewoonlik hierdie proses.
Die teenwoordigheid van 'n quarantine vlag dui op macOS se Gatekeeper sekuriteitskenmerk wanneer 'n gebruiker probeer om die lêer uit te voer.
In die geval waar die quarantine vlag nie teenwoordig is nie (soos met lêers afgelaai via sommige BitTorrent kliënte), mag Gatekeeper se kontroles nie uitgevoer word nie. Dus, gebruikers moet versigtig wees wanneer hulle lêers wat van minder veilige of onbekende bronne afgelaai is, oopmaak.
Kontroleer die geldigheid van kodehandtekeninge is 'n hulpbron-intensiewe proses wat die generering van kriptografiese hashes van die kode en al sy saamgebonde hulpbronne insluit. Verder behels die kontrole van sertifikaatgeldigheid 'n aanlyn kontrole teen Apple se bedieners om te sien of dit herroep is nadat dit uitgereik is. Om hierdie redes is 'n volle kodehandtekening en notariseringskontrole onprakties om elke keer uit te voer wanneer 'n app gelaai word.
Daarom word hierdie kontroles slegs uitgevoer wanneer toepassings met die quarantined attribuut uitgevoer word.
Hierdie attribuut moet gestel word deur die toepassing wat die lêer skep/aflaai.
Echter, lêers wat in 'n sandbox is, sal hierdie attribuut aan elke lêer wat hulle skep, stel. En nie-sandboxed toepassings kan dit self stel, of die LSFileQuarantineEnabled sleutel in die Info.plist spesifiseer wat die stelsel sal dwing om die com.apple.quarantine
uitgebreide attribuut op die geskepte lêers te stel,
Boonop is alle lêers wat deur 'n proses wat qtn_proc_apply_to_self
aanroep, in kwarantyn. Of die API qtn_file_apply_to_path
voeg die kwarantynattribuut by 'n gespesifiseerde lêerpad.
Dit is moontlik om sy status te kontroleer en in/uit te skakel (root benodig) met:
U kan ook vind of 'n lêer die kwarantyn-uitgebreide attribuut het met:
Kontroleer die waarde van die verlengde attribuut en vind die toepassing wat die kwarantyn-attribuut geskryf het met:
Werklik kan 'n proses "kwarantynvlagte aan die lêers wat dit skep, stel" (Ek het al probeer om die USER_APPROVED-vlag in 'n geskepte lêer toe te pas, maar dit sal nie toegepas word nie):
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)