macOS Gatekeeper / Quarantine / XProtect
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Gatekeeper
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 anapakua 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 iliyopakuliwa 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 iliyopakuliwa kwa mara ya kwanza. Ulinzi huu husaidia kuzuia watumiaji kuendesha kwa bahati mbaya msimbo wa utendaji ambao wanaweza kuwa wameukosea kwa faili ya data isiyo na madhara.
Application Signatures
Sahihi za programu, pia zinajulikana kama sahihi za msimbo, ni sehemu muhimu ya miundombinu ya usalama ya Apple. Zinatumika kuhakiki utambulisho wa mwandishi wa programu (mendelezi) na kuhakikisha kwamba msimbo haujabadilishwa tangu ilipotiwa mwisho.
Hivi ndivyo inavyofanya kazi:
Kusaini Programu: Wakati mendelezi yuko tayari kusambaza programu yao, wanachukua kusaini programu kwa kutumia funguo ya kibinafsi. Funguo hii ya kibinafsi inahusishwa na cheti ambacho Apple inatoa kwa mendelezi wanapojisajili katika Mpango wa Mendelezi wa Apple. Mchakato wa kusaini unajumuisha kuunda hash ya kijiografia 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 inayolingana.
Kuhakiki Programu: Wakati mtumiaji anapakua 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.
Sahihi za programu ni sehemu muhimu ya teknolojia ya Gatekeeper ya Apple. Wakati mtumiaji anajaribu kufungua programu iliyopakuliwa kutoka mtandao, Gatekeeper inathibitisha sahihi 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 kuithibitisha.
Check Signatures
Wakati wa kuangalia kielelezo cha malware unapaswa kila wakati kuangalia sahihi ya binary kwani mendelezi aliyesaini inaweza kuwa tayari ina uhusiano na malware.
Notarization
Mchakato wa notarization wa Apple unatumika kama kinga ya ziada kulinda watumiaji kutokana na programu zinazoweza kuwa na madhara. Inahusisha 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 inapita uchunguzi huu bila kuibua wasiwasi wowote, Huduma ya Notary inaunda tiketi ya notarization. Mwandishi anahitajika kuambatanisha 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 hivyo huongeza ujasiri wa mtumiaji katika usalama wa programu wanazosakinisha au kuendesha kwenye mifumo yao.
Enumerating GateKeeper
GateKeeper ni pamoja na, vipengele kadhaa vya usalama vinavyokataza programu zisizoaminika kutekelezwa na pia moja ya vipengele.
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:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3018635170-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCtGnfY5n0YCGcWtBkgwe%252Fuploads%252Fgit-blob-792d07b4238223d86401b1ff9381173b3a996ba0%252Fimage%2520%281150%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=fa4e2a95&sv=1)
Hifadhidata inayoshikilia usanidi huu iko katika /var/db/SystemPolicy
. Unaweza kuangalia hifadhidata hii kama root kwa:
Note 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 unabadilisha mipangilio hiyo kuwa App Store, sheria za "Notarized Developer ID" zitaondoka.
Pia kuna maelfu ya sheria za aina GKE:
Hizi ni hash ambazo zinatoka kwenye /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
na /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:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3018635170-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCtGnfY5n0YCGcWtBkgwe%252Fuploads%252Fgit-blob-fe0c0ac0a075f9b9c1444c8ecf5d522a82f66a11%252Fimage%2520%281151%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ee9d8350&sv=1)
Inawezekana kuangalia ikiwa App itaruhusiwa na GateKeeper kwa:
Ni inawezekana kuongeza sheria mpya katika GateKeeper ili kuruhusu utekelezaji wa programu fulani kwa:
Quarantine Files
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 kuangalia mtandaoni kwa seva za Apple ili kuona kama kimeondolewa baada ya kutolewa. Kwa sababu hizi, kuangalia saini kamili ya msimbo na uthibitisho ni sio rahisi kufanywa kila wakati programu inapoanzishwa.
Therefore, these checks are only run when executing apps with the quarantined attribute.
This attribute must be set by the application creating/downloading the file.
However, files that are sandboxed will have this attribute set to every file they create. And non sandboxed apps can set it themselves, or specify the LSFileQuarantineEnabled key in the Info.plist which will make the system set the com.apple.quarantine
extended attribute on the files created,
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 ikiwa faili ina sifa ya kupunguza karantini kwa:
Angalia thamani ya sifa panua na pata programu iliyoandika sifa ya karantini na:
Kwa kweli, mchakato "unaweza kuweka bendera za karantini kwa faili zinazoundwa" (nilijaribu kutumia bendera ya USER_APPROVED katika faili iliyoundwa lakini haikufanya kazi):
Last updated