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 inategemea mchakato wa uthibitisho. Inakagua ikiwa programu iliyoshushwa imeandikwa na mtengenezaji anayekubalika, kuhakikisha uhalali wa programu hiyo. Zaidi ya hayo, inathibitisha ikiwa programu hiyo imeandikwa na Apple, ikithibitisha kwamba haina maudhui mabaya yanayojulikana na haijaharibiwa baada ya kuandikwa.
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 (mtengenezaji) na kuhakikisha kwamba msimbo haujaharibiwa tangu ilipotiwa mwisho.
Hivi ndivyo inavyofanya kazi:
Kusaini Programu: Wakati mtengenezaji yuko tayari kusambaza programu yao, wana saini programu hiyo kwa kutumia funguo binafsi. Funguo hii binafsi inahusishwa na cheti ambacho Apple inatoa kwa mtengenezaji wanapojisajili katika Programu ya Wataalamu wa Apple. Mchakato wa kusaini unajumuisha kuunda hash ya kificho ya sehemu zote za programu na kuificha hash hii kwa funguo binafsi ya mtengenezaji.
Kusambaza Programu: Programu iliyosainiwa kisha inasambazwa kwa watumiaji pamoja na cheti cha mtengenezaji, ambacho kinafunguo ya umma inayolingana.
Kuthibitisha Programu: Wakati mtumiaji anashusha na kujaribu kuendesha programu, mfumo wa uendeshaji wa Mac unatumia funguo ya umma kutoka kwa cheti cha mtengenezaji kufichua hash. Kisha inarejesha hash kulingana na hali ya sasa ya programu na kulinganisha hii na hash iliyofichuliwa. Ikiwa zinakubaliana, inamaanisha programu hiyo haijaharibiwa tangu mtengenezaji aitishe, 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 mtengenezaji anayejulikana na msimbo haujaharibiwa, Gatekeeper inaruhusu programu hiyo kuendesha. Vinginevyo, inazuia programu hiyo na kumjulisha mtumiaji.
Kuanzia macOS Catalina, Gatekeeper pia inakagua ikiwa programu hiyo imeandikwa na Apple, ikiongeza safu ya ziada ya usalama. Mchakato wa kuandikwa 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 mtengenezaji aliyeisaini anaweza kuwa tayari ana 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 - inawaarifu Gatekeeper kwamba programu hiyo imekuwa notarized na Apple. Kama matokeo, Gatekeeper inaonyesha ujumbe wa maelezo katika kidirisha cha uzinduzi wa awali, ikionyesha kwamba programu hiyo imefanyiwa ukaguzi wa maudhui mabaya na Apple. Mchakato huu hivyo huongeza uaminifu wa mtumiaji katika usalama wa programu wanazosakinisha au kuendesha kwenye mifumo yao.
Kumbuka kwamba kuanzia toleo la Sequoia, spctl
haiwaruhusu 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, vifurushi /var/db/gke.bundle
na /var/db/gkopaque.bundle
vina 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 kwa "App Store" na ya pili kwa "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
zitakomesha kabisa kuangalia saini hizi:
Wakati imewezeshwa kikamilifu, chaguo jipya litajitokeza:
Inawezekana kuangalia ikiwa App itaruhusiwa na GateKeeper kwa:
Ni uwezekano wa kuongeza sheria mpya katika GateKeeper ili 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 cryptographic za msimbo na rasilimali zake zote zilizofungwa. Zaidi ya hayo, kuangalia halali ya cheti kunahusisha kufanya kuangalia mtandaoni kwa seva za Apple ili kuona kama kimeondolewa baada ya kutolewa. Kwa sababu hizi, kuangalia saini kamili ya 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 funguo ya LSFileQuarantineEnabled 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 kutumia:
Angalia thamani ya sifa za kupanuliwa 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 haitatumika):
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)