macOS Gatekeeper / Quarantine / XProtect
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice 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 bepaal dit of die sagteware notarized is deur Apple, wat bevestig dat dit vry is van bekende kwaadwillige inhoud en nie na notarisation gewysig 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.
Toepassing handtekeninge, ook bekend as kodehandtekeninge, is 'n kritieke komponent van Apple se sekuriteitsinfrastruktuur. Hulle word gebruik om die identiteit van die sagteware-outeur (die ontwikkelaar) te verifieer en om te verseker dat die kode nie sedert die laaste ondertekening gewysig is nie.
Hier is hoe dit werk:
Ondertekening van die Toepassing: Wanneer 'n ontwikkelaar gereed is om hul toepassing te versprei, onderteken hulle die toepassing 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 Toepassing: Die ondertekende toepassing word dan aan gebruikers versprei saam met die ontwikkelaar se sertifikaat, wat die ooreenstemmende publieke sleutel bevat.
Verifikasie van die Toepassing: Wanneer 'n gebruiker die toepassing 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 toepassing en vergelyk dit met die ontsleutelde hash. As hulle ooreenstem, beteken dit die toepassing is nie gewysig nie sedert die ontwikkelaar dit onderteken het, en die stelsel laat die toepassing toe om uit te voer.
Toepassing handtekeninge is 'n noodsaaklike deel van Apple se Gatekeeper-tegnologie. Wanneer 'n gebruiker probeer om 'n toepassing wat van die internet afgelaai is, te open, verifieer Gatekeeper die toepassing handtekening. As dit onderteken is met 'n sertifikaat wat deur Apple aan 'n bekende ontwikkelaar uitgereik is en die kode nie gewysig is nie, laat Gatekeeper die toepassing toe om uit te voer. Andersins blokkeer dit die toepassing en waarsku die gebruiker.
Vanaf macOS Catalina, kontroleer Gatekeeper ook of die toepassing notarized is deur Apple, wat 'n ekstra laag sekuriteit toevoeg. Die notarization-proses kontroleer die toepassing vir bekende sekuriteitskwessies en kwaadwillige kode, en as hierdie kontroles slaag, voeg Apple 'n kaartjie by die toepassing wat Gatekeeper kan verifieer.
Wanneer jy 'n 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 kwaadwillige inhoud en enige potensiële probleme met kode-handtekening.
As die sagteware deurgekom het hierdie inspeksie sonder om enige bekommernisse te verwek, 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, die bestaan van die notariseringskaartjie - of dit aan die uitvoerbare geheg is of aanlyn gevind word - informeer 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 onderhewig was aan kontrole vir kwaadwillige inhoud deur Apple. 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 interaksie 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 uitgevoer word op lêers met die Quarantine-attribuut, nie op elke lêer nie.
GateKeeper sal nagaan of volgens die voorkeure & die handtekening 'n binêre 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*
APIs 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 aansoeke 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, heg spesifieke macOS toepassings soos webblaaiers of e-pos kliënte 'n uitgebreide lêer eienskap aan, algemeen bekend as die "quarantine vlag," aan die afgelaaide lêer. Hierdie eienskap dien as 'n sekuriteitsmaatreël om die lêer te merk as afkomstig van 'n onbetroubare bron (die internet), en moontlik risiko's dra. egter, nie alle toepassings heg hierdie eienskap 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 van minder veilige of onbekende bronne oopmaak.
Kontroleer die geldigheid van kode handtekeninge 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 sertifikaat geldigheid om 'n aanlyn kontrole na Apple se bedieners te doen om te sien of dit herroep is nadat dit uitgereik is. Om hierdie redes is 'n volle kode handtekening en notarization kontrole onprakties om elke keer uit te voer wanneer 'n app gelaai word.
Daarom word hierdie kontroles slegs uitgevoer wanneer toepassings met die quarantined eienskap uitgevoer word.
Hierdie eienskap moet gestel word deur die toepassing wat die lêer skep/aflaai.
Echter, lêers wat in 'n sandbox is, sal hierdie eienskap op 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 eienskap 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 kwarantyn eienskap by 'n gespesifiseerde lêer pad.
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 uitgebreide kenmerke en vind die toepassing wat die kwarantyn kenmerk 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)