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 ni kipengele cha usalama kilichoundwa kwa mifumo ya uendeshaji ya Mac, kilichokusudia kuhakikisha kwamba watumiaji wanatumia tu programu zinazotegemewa kwenye mifumo yao. Inafanya kazi kwa kuhakiki programu ambayo mtumiaji anashusha na kujaribu kufungua kutoka vyanzo vya nje ya Duka la Programu, kama vile programu, plug-in, au kifurushi cha installer.
Mekaniki kuu ya Gatekeeper iko katika mchakato wake wa uthibitishaji. Inakagua ikiwa programu iliyoshushwa imeandikwa na mendelezi anayejulikana, kuhakikisha uhalali wa programu hiyo. Zaidi ya hayo, inathibitisha ikiwa programu hiyo imeandikishwa na Apple, ikithibitisha kwamba haina maudhui mabaya yanayojulikana na haijabadilishwa baada ya kuandikishwa.
Zaidi ya hayo, Gatekeeper inaimarisha udhibiti wa mtumiaji na usalama kwa kuwataka watumiaji kuidhinisha ufunguzi wa programu iliyoshushwa kwa mara ya kwanza. Ulinzi huu husaidia kuzuia watumiaji kuendesha kwa bahati mbaya msimbo wa utendaji ambao unaweza kuwa na madhara ambao wanaweza kuwa wamechukulia kuwa faili ya data isiyo na madhara.
Saini za programu, pia zinajulikana kama saini za msimbo, ni sehemu muhimu ya miundombinu ya usalama ya Apple. Zinatumika ku thibitisha utambulisho wa mwandishi wa programu (mendelezi) na kuhakikisha kwamba msimbo haujabadilishwa tangu ilipotiwa kwa mara ya mwisho.
Hapa kuna jinsi inavyofanya kazi:
Kusaini Programu: Wakati mendelezi yuko tayari kusambaza programu yao, wanasaini programu hiyo kwa kutumia funguo ya kibinafsi. Funguo hii ya kibinafsi inahusishwa na cheti ambacho Apple inatoa kwa mendelezi wanapojiandikisha katika Programu ya Mendelezi ya Apple. Mchakato wa kusaini unajumuisha kuunda hash ya kificho ya sehemu zote za programu na kuificha hash hii kwa funguo ya kibinafsi ya mendelezi.
Kusambaza Programu: Programu iliyosainiwa kisha inasambazwa kwa watumiaji pamoja na cheti cha mendelezi, ambacho kinafunguo ya umma inayohusiana.
Kuthibitisha Programu: Wakati mtumiaji anashusha na kujaribu kuendesha programu, mfumo wa uendeshaji wa Mac unatumia funguo ya umma kutoka kwa cheti cha mendelezi kufichua hash. Kisha inarejesha hash kulingana na hali ya sasa ya programu na kulinganisha hii na hash iliyofichuliwa. Ikiwa zinakubaliana, inamaanisha programu hiyo haijabadilishwa tangu mendelezi aliposaini, na mfumo unaruhusu programu hiyo kuendesha.
Saini za programu ni sehemu muhimu ya teknolojia ya Gatekeeper ya Apple. Wakati mtumiaji anajaribu kufungua programu iliyoshushwa kutoka mtandao, Gatekeeper inathibitisha saini ya programu. Ikiwa imesainiwa na cheti kilichotolewa na Apple kwa mendelezi anayejulikana na msimbo haujabadilishwa, Gatekeeper inaruhusu programu hiyo kuendesha. Vinginevyo, inazuia programu hiyo na kumjulisha mtumiaji.
Kuanzia macOS Catalina, Gatekeeper pia inakagua ikiwa programu hiyo imeandikishwa na Apple, ikiongeza safu ya ziada ya usalama. Mchakato wa kuandikishwa unakagua programu hiyo kwa masuala ya usalama yanayojulikana na msimbo mbaya, na ikiwa ukaguzi huu unakubalika, Apple inaongeza tiketi kwa programu ambayo Gatekeeper inaweza kuthibitisha.
Wakati wa kuangalia kielelezo cha malware unapaswa kila wakati kuangalia saini ya binary kwani mendelezi aliyesaini inaweza kuwa tayari ina uhusiano na malware.
Mchakato wa notarization wa Apple unatumika kama kinga ya ziada kulinda watumiaji kutokana na programu zinazoweza kuwa na madhara. Unahusisha mwandishi kuwasilisha programu yao kwa uchunguzi na Huduma ya Notary ya Apple, ambayo haipaswi kuchanganywa na Mapitio ya Programu. Huduma hii ni mfumo wa kiotomatiki unaochambua programu iliyowasilishwa kwa uwepo wa maudhui mabaya na masuala yoyote yanayoweza kutokea na saini ya msimbo.
Ikiwa programu hiyo inasimama ukaguzi huu bila kuibua wasiwasi wowote, Huduma ya Notary inaunda tiketi ya notarization. Mwandishi anahitajika kuunganisha tiketi hii na programu yao, mchakato unaojulikana kama 'stapling.' Zaidi ya hayo, tiketi ya notarization pia inachapishwa mtandaoni ambapo Gatekeeper, teknolojia ya usalama ya Apple, inaweza kuipata.
Wakati wa usakinishaji au utekelezaji wa kwanza wa programu na mtumiaji, uwepo wa tiketi ya notarization - iwe imeunganishwa na executable au kupatikana mtandaoni - inaarifu Gatekeeper kwamba programu hiyo imetolewa na Apple. Kama matokeo, Gatekeeper inaonyesha ujumbe wa maelezo katika dirisha la uzinduzi wa awali, ikionyesha kwamba programu hiyo imefanyiwa ukaguzi wa maudhui mabaya na Apple. Mchakato huu unaboresha hivyo imani ya mtumiaji katika usalama wa programu wanazosakinisha au kuendesha kwenye mifumo yao.
Kumbuka kwamba kuanzia toleo la Sequoia, spctl
haiwezeshi kubadilisha usanidi wa Gatekeeper tena.
spctl
ni zana ya CLI ya kuorodhesha na kuingiliana na Gatekeeper (pamoja na daemon ya syspolicyd
kupitia ujumbe wa XPC). Kwa mfano, inawezekana kuona hali ya GateKeeper kwa:
Kumbuka kwamba ukaguzi wa saini wa GateKeeper unafanywa tu kwa faili zenye sifa ya Quarantine, si kwa kila faili.
GateKeeper itakagua ikiwa kulingana na mapendeleo & saini binary inaweza kutekelezwa:
syspolicyd
ndiye daemon mkuu anayehusika na kutekeleza Gatekeeper. Inashikilia hifadhidata iliyoko katika /var/db/SystemPolicy
na inawezekana kupata msimbo wa kusaidia hifadhidata hapa na templat ya SQL hapa. Kumbuka kwamba hifadhidata haina vizuizi vya SIP na inaweza kuandikwa na root na hifadhidata /var/db/.SystemPolicy-default
inatumika kama nakala ya awali endapo nyingine itaharibika.
Zaidi ya hayo, bundles /var/db/gke.bundle
na /var/db/gkopaque.bundle
zina faili zenye sheria ambazo zinaingizwa katika hifadhidata. Unaweza kuangalia hifadhidata hii kama root kwa:
syspolicyd
pia inatoa seva ya XPC yenye operesheni tofauti kama assess
, update
, record
na cancel
ambazo pia zinaweza kufikiwa kwa kutumia Security.framework
's SecAssessment*
APIs na xpctl
kwa kweli inazungumza na syspolicyd
kupitia XPC.
Tazama jinsi sheria ya kwanza ilivyomalizika katika "App Store" na ya pili katika "Developer ID" na kwamba katika picha iliyopita ilikuwa imewezeshwa kutekeleza programu kutoka kwa App Store na waendelezaji waliotambulika. Ikiwa utabadilisha mipangilio hiyo kuwa App Store, sheria za "Notarized Developer ID" zitaondoka.
Pia kuna maelfu ya sheria za aina GKE :
Hizi ni hash ambazo zinatoka:
/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
Au unaweza kuorodhesha taarifa za awali kwa:
Chaguzi --master-disable
na --global-disable
za spctl
zita ondoa kabisa ukaguzi huu wa saini:
Wakati imewezeshwa kikamilifu, chaguo jipya litajitokeza:
Inawezekana kuangalia ikiwa Programu itaruhusiwa na GateKeeper kwa:
Ni uwezekano wa kuongeza sheria mpya katika GateKeeper kuruhusu utekelezaji wa programu fulani kwa:
Regarding kernel extensions, the folder /var/db/SystemPolicyConfiguration
contains files with lists of kexts allowed to be loaded. Moreover, spctl
has the entitlement com.apple.private.iokit.nvram-csr
because it's capable of adding new pre-approved kernel extensions which need to be saved also in NVRAM in a kext-allowed-teams
key.
Upon downloading an application or file, specific macOS applications such as web browsers or email clients attach an extended file attribute, commonly known as the "quarantine flag," to the downloaded file. This attribute acts as a security measure to mark the file as coming from an untrusted source (the internet), and potentially carrying risks. However, not all applications attach this attribute, for instance, common BitTorrent client software usually bypasses this process.
Uwepo wa bendera ya karantini unamaanisha kipengele cha usalama cha Gatekeeper cha macOS wakati mtumiaji anajaribu kutekeleza faili.
In the case where the quarantine flag is not present (as with files downloaded via some BitTorrent clients), Gatekeeper's checks may not be performed. Thus, users should exercise caution when opening files downloaded from less secure or unknown sources.
Kuangalia halali ya saini za msimbo ni mchakato wa rasilimali nyingi ambao unajumuisha kuunda hashes za kificho za msimbo na rasilimali zake zote zilizofungwa. Zaidi ya hayo, kuangalia halali ya cheti kunahusisha kufanya ukaguzi mtandaoni kwa seva za Apple ili kuona kama kimeondolewa baada ya kutolewa. Kwa sababu hizi, ukaguzi kamili wa saini za msimbo na notarization ni sio rahisi kufanywa kila wakati programu inapoanzishwa.
Hivyo, ukaguzi huu unafanywa tu wakati wa kutekeleza programu zenye sifa ya karantini.
Sifa hii lazima iwe imewekwa na programu inayounda/kuhifadhi faili.
Hata hivyo, faili ambazo zimewekwa kwenye sandbox zitakuwa na sifa hii imewekwa kwa kila faili wanayounda. Na programu zisizo na sandbox zinaweza kujiwekea zenyewe, au kuashiria LSFileQuarantineEnabled ufunguo katika Info.plist ambayo itafanya mfumo kuweka sifa ya com.apple.quarantine
kwenye faili zilizoundwa,
Moreover, all files created by a process calling qtn_proc_apply_to_self
are quarantined. Or the API qtn_file_apply_to_path
adds the quarantine attribute to a specified file path.
It's possible to check it's status and enable/disable (root required) with:
Unaweza pia kupata kama faili ina sifa ya kupumzika ya ziada kwa:
Angalia thamani ya sifa panuliwa na pata programu ambayo iliandika sifa ya karantini na:
Kwa kweli mchakato "unaweza kuweka bendera za karantini kwa faili zinazoundwa" (nimejaribu tayari kutumia bendera ya USER_APPROVED katika faili iliyoundwa lakini haitumiki):
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)