macOS SIP
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)
Ulinzi wa Uadilifu wa Mfumo (SIP) katika macOS ni mekanizma iliyoundwa kuzuia hata watumiaji wenye mamlaka makubwa kufanya mabadiliko yasiyoidhinishwa kwenye folda muhimu za mfumo. Kipengele hiki kina jukumu muhimu katika kudumisha uadilifu wa mfumo kwa kuzuia vitendo kama kuongeza, kubadilisha, au kufuta faili katika maeneo yaliyo na ulinzi. Folda kuu zinazolindwa na SIP ni pamoja na:
/System
/bin
/sbin
/usr
Sheria zinazodhibiti tabia ya SIP zimeainishwa katika faili ya usanidi iliyo katika /System/Library/Sandbox/rootless.conf
. Ndani ya faili hii, njia ambazo zinaanzishwa na nyota (*) zinaonyeshwa kama visingizio kwa vizuizi vya SIP ambavyo ni vikali.
Fikiria mfano ulio hapa chini:
Hii sehemu inaashiria kwamba ingawa SIP kwa ujumla inalinda /usr
directory, kuna subdirectories maalum (/usr/libexec/cups
, /usr/local
, na /usr/share/man
) ambapo mabadiliko yanaruhusiwa, kama inavyoonyeshwa na nyota (*) inayotangulia njia zao.
Ili kuthibitisha ikiwa directory au faili inalindwa na SIP, unaweza kutumia amri ls -lOd
kuangalia uwepo wa bendera restricted
au sunlnk
. Kwa mfano:
Katika kesi hii, bendera ya sunlnk
inaashiria kwamba saraka ya /usr/libexec/cups
yenyewe haiwezi kufutwa, ingawa faili ndani yake zinaweza kuundwa, kubadilishwa, au kufutwa.
Kwa upande mwingine:
Hapa, bendera restricted
inaonyesha kwamba saraka ya /usr/libexec
inalindwa na SIP. Katika saraka iliyo na ulinzi wa SIP, faili haziwezi kuundwa, kubadilishwa, au kufutwa.
Zaidi ya hayo, ikiwa faili ina sifa com.apple.rootless
sifa ya extended, faili hiyo pia itakuwa inalindwa na SIP.
Kumbuka kwamba Sandbox hook hook_vnode_check_setextattr
inazuia jaribio lolote la kubadilisha sifa ya extended com.apple.rootless
.
SIP pia inakadiria vitendo vingine vya root kama:
Kupakia nyongeza za kernel zisizoaminika
Kupata task-ports kwa michakato iliyosainiwa na Apple
Kubadilisha mabadiliko ya NVRAM
Kuruhusu ufuatiliaji wa kernel
Chaguo zinawekwa katika mabadiliko ya nvram kama bitflag (csr-active-config
kwenye Intel na lp-sip0
inasomwa kutoka kwa Mti wa Kifaa kilichozinduliwa kwa ARM). Unaweza kupata bendera hizo katika msimbo wa chanzo wa XNU katika csr.sh
:
Unaweza kuangalia ikiwa SIP imewezeshwa kwenye mfumo wako kwa amri ifuatayo:
Ikiwa unahitaji kuzima SIP, lazima uanzishe tena kompyuta yako katika hali ya urejelezi (kwa kubonyeza Command+R wakati wa kuanzisha), kisha tekeleza amri ifuatayo:
Ikiwa unataka kuweka SIP imewezeshwa lakini kuondoa ulinzi wa ufuatiliaji, unaweza kufanya hivyo kwa:
Inakata kupakia nyongeza za kernel zisizo na saini (kexts), kuhakikisha kuwa nyongeza zilizothibitishwa pekee ndizo zinazoingiliana na kernel ya mfumo.
Inazuia ufuatiliaji wa michakato ya mfumo wa macOS, ikilinda sehemu muhimu za mfumo kutokana na ufikiaji na mabadiliko yasiyoidhinishwa.
Inakandamiza zana kama dtrace kutoka kuangalia michakato ya mfumo, ikilinda zaidi uadilifu wa uendeshaji wa mfumo.
Jifunze zaidi kuhusu taarifa za SIP katika mazungumzo haya.
com.apple.rootless.xpc.bootstrap
: Dhibiti launchd
com.apple.rootless.install[.heritable]
: Fikia mfumo wa faili
com.apple.rootless.kext-management
: kext_request
com.apple.rootless.datavault.controller
: Simamia UF_DATAVAULT
com.apple.rootless.xpc.bootstrap
: Uwezo wa mipangilio ya XPC
com.apple.rootless.xpc.effective-root
: Mizizi kupitia launchd XPC
com.apple.rootless.restricted-block-devices
: Ufikiaji wa vifaa vya block vya raw
com.apple.rootless.internal.installer-equivalent
: Ufikiaji wa mfumo wa faili bila vizuizi
com.apple.rootless.restricted-nvram-variables[.heritable]
: Ufikiaji kamili wa NVRAM
com.apple.rootless.storage.label
: Badilisha faili zilizozuiliwa na com.apple.rootless xattr kwa lebo inayolingana
com.apple.rootless.volume.VM.label
: Hifadhi VM swap kwenye kiasi
Kupita SIP kunamuwezesha mshambuliaji:
Fikia Data ya Mtumiaji: Soma data nyeti za mtumiaji kama barua, ujumbe, na historia ya Safari kutoka akaunti zote za mtumiaji.
TCC Bypass: Manipulate moja kwa moja hifadhidata ya TCC (Transparency, Consent, and Control) ili kutoa ufikiaji usioidhinishwa kwa kamera, kipaza sauti, na rasilimali nyingine.
Kuweka Uthibitisho: Weka malware katika maeneo yaliyo na ulinzi wa SIP, na kufanya iwe ngumu kuondoa, hata kwa ruhusa za mizizi. Hii pia inajumuisha uwezekano wa kuingilia kati Zana ya Kuondoa Malware (MRT).
Pakia Nyongeza za Kernel: Ingawa kuna vizuizi vya ziada, kupita SIP kunarahisisha mchakato wa kupakia nyongeza za kernel zisizo na saini.
Pakiti za installer zilizotiwa saini na cheti cha Apple zinaweza kupita ulinzi wake. Hii inamaanisha kuwa hata pakiti zilizotiwa saini na waendelezaji wa kawaida zitazuiliwa ikiwa zitajaribu kubadilisha saraka zilizo na ulinzi wa SIP.
Moja ya mianya inayoweza kutokea ni kwamba ikiwa faili imeainishwa katika rootless.conf
lakini haipo kwa sasa, inaweza kuundwa. Malware inaweza kutumia hii ku kuweka uthibitisho kwenye mfumo. Kwa mfano, programu mbaya inaweza kuunda faili ya .plist katika /System/Library/LaunchDaemons
ikiwa imeorodheshwa katika rootless.conf
lakini haipo.
Ruhusa com.apple.rootless.install.heritable
inaruhusu kupita SIP
Iligundulika kuwa ilikuwa inawezekana kubadilisha pakiti ya installer baada ya mfumo kuthibitisha saini yake ya msimbo na kisha, mfumo ungeweka pakiti mbaya badala ya asili. Kwa kuwa vitendo hivi vilifanywa na system_installd
, ingekuwa inaruhusu kupita SIP.
Ikiwa pakiti ilipakiwa kutoka picha iliyowekwa au diski ya nje installer ingekuwa inasimamia binary kutoka siyo mfumo wa faili (badala ya eneo lililokuwa na ulinzi wa SIP), ikifanya system_installd
kuendesha binary isiyo na mipaka.
Watafiti kutoka kwenye chapisho hili la blogi waligundua udhaifu katika mfumo wa Ulinzi wa Uadilifu wa Mfumo wa macOS (SIP), uliopewa jina la 'Shrootless'. Udhaifu huu unahusiana na system_installd
daemon, ambayo ina ruhusa, com.apple.rootless.install.heritable
, inayoruhusu mchakato wowote wa mtoto kupita vizuizi vya mfumo wa faili wa SIP.
system_installd
daemon itasakinisha pakiti ambazo zimewekwa saini na Apple.
Watafiti waligundua kuwa wakati wa usakinishaji wa pakiti iliyotiwa saini na Apple (.pkg file), system_installd
inaendesha yoyote post-install scripts zilizojumuishwa katika pakiti. Scripts hizi zinaendeshwa na shell ya kawaida, zsh
, ambayo moja kwa moja inaendesha amri kutoka kwa /etc/zshenv
faili, ikiwa ipo, hata katika hali isiyo ya mwingiliano. Tabia hii inaweza kutumiwa na washambuliaji: kwa kuunda faili mbaya ya /etc/zshenv
na kusubiri system_installd
itumie zsh
, wangeweza kufanya operesheni zisizo na mipaka kwenye kifaa.
Zaidi ya hayo, iligundulika kuwa /etc/zshenv
inaweza kutumika kama mbinu ya jumla ya shambulio, sio tu kwa kupita SIP. Kila wasifu wa mtumiaji una faili ya ~/.zshenv
, ambayo inafanya kazi sawa na /etc/zshenv
lakini haitahitaji ruhusa za mizizi. Faili hii inaweza kutumika kama mbinu ya uthibitisho, ikichochea kila wakati zsh
inapoanza, au kama mbinu ya kupandisha ruhusa. Ikiwa mtumiaji wa admin anapandisha hadi mizizi kwa kutumia sudo -s
au sudo <command>
, faili ya ~/.zshenv
itachochewa, ikipandisha hadi mizizi.
Katika CVE-2022-22583 iligundulika kuwa mchakato sawa wa system_installd
bado unaweza kutumiwa vibaya kwa sababu ilikuwa ikiweka script ya baada ya usakinishaji ndani ya folda yenye jina la nasibu iliyo na ulinzi wa SIP ndani ya /tmp
. Jambo ni kwamba /tmp
yenyewe haina ulinzi wa SIP, hivyo ilikuwa inawezekana kuiweka picha ya virtual juu yake, kisha installer ingekuwa ikiweka script ya baada ya usakinishaji humo, kuondoa picha ya virtual, kuunda upya folda zote na kuongeza script ya baada ya usakinishaji na payload ya kutekeleza.
Udhaifu uligunduliwa ambapo fsck_cs
ilipotoshwa kuharibu faili muhimu, kutokana na uwezo wake wa kufuata viungo vya alama. Kwa hasara, washambuliaji walitengeneza kiungo kutoka /dev/diskX
hadi faili /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
. Kuendesha fsck_cs
kwenye /dev/diskX
kulisababisha uharibifu wa Info.plist
. Uadilifu wa faili hii ni muhimu kwa SIP (Ulinzi wa Uadilifu wa Mfumo) wa mfumo wa uendeshaji, ambayo inasimamia upakiaji wa nyongeza za kernel. Mara tu ikiharibiwa, uwezo wa SIP wa kusimamia uondoaji wa kernel unaharibiwa.
Amri za kutumia udhaifu huu ni:
The exploitation of this vulnerability has severe implications. The Info.plist
file, normally responsible for managing permissions for kernel extensions, becomes ineffective. This includes the inability to blacklist certain extensions, such as AppleHWAccess.kext
. Consequently, with the SIP's control mechanism out of order, this extension can be loaded, granting unauthorized read and write access to the system's RAM.
Ilikuwa inawezekana kupandisha mfumo mpya wa faili juu ya SIP protected folders to bypass the protection.
Mfumo umewekwa kuanzisha kutoka kwa picha ya diski ya mfunguo iliyojumuishwa ndani ya Install macOS Sierra.app
ili kuboresha OS, ikitumia zana ya bless
. Amri inayotumika ni kama ifuatavyo:
The security of this process can be compromised if an attacker alters the upgrade image (InstallESD.dmg
) before booting. The strategy involves substituting a dynamic loader (dyld) with a malicious version (libBaseIA.dylib
). This replacement results in the execution of the attacker's code when the installer is initiated.
The attacker's code gains control during the upgrade process, exploiting the system's trust in the installer. The attack proceeds by altering the InstallESD.dmg
image via method swizzling, particularly targeting the extractBootBits
method. This allows the injection of malicious code before the disk image is employed.
Moreover, within the InstallESD.dmg
, there's a BaseSystem.dmg
, which serves as the upgrade code's root file system. Injecting a dynamic library into this allows the malicious code to operate within a process capable of altering OS-level files, significantly increasing the potential for system compromise.
In this talk from DEF CON 31, it's shown how systemmigrationd
(which can bypass SIP) executes a bash and a perl script, which can be abused via env variables BASH_ENV
and PERL5OPT
.
As detailed in this blog post, a postinstall
script from InstallAssistant.pkg
packages allowed was executing:
and ilikuw possible kuunda symlink katika ${SHARED_SUPPORT_PATH}/SharedSupport.dmg
ambayo ingemruhusu mtumiaji kuzuia kikomo chochote, akipita ulinzi wa SIP.
Ruhusa com.apple.rootless.install
inaruhusu kupita SIP
Ruhusa com.apple.rootless.install
inajulikana kupita Ulinzi wa Uadilifu wa Mfumo (SIP) kwenye macOS. Hii ilitajwa kwa kiasi fulani kuhusiana na CVE-2022-26712.
Katika kesi hii maalum, huduma ya mfumo wa XPC iliyoko katika /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc
ina ruhusa hii. Hii inaruhusu mchakato unaohusiana kupita vikwazo vya SIP. Zaidi ya hayo, huduma hii inatoa njia ambayo inaruhusu kuhamasisha faili bila kutekeleza hatua zozote za usalama.
Sealed System Snapshots ni kipengele kilichozinduliwa na Apple katika macOS Big Sur (macOS 11) kama sehemu ya Ulinzi wa Uadilifu wa Mfumo (SIP) ili kutoa safu ya ziada ya usalama na utulivu wa mfumo. Kimsingi ni toleo la mfumo wa volume lisiloweza kubadilishwa.
Hapa kuna muonekano wa kina zaidi:
Mfumo Usio Badilika: Sealed System Snapshots hufanya volume ya mfumo wa macOS "isiyoweza kubadilishwa", ikimaanisha kwamba haiwezi kubadilishwa. Hii inazuia mabadiliko yoyote yasiyoidhinishwa au ya bahati mbaya kwa mfumo ambayo yanaweza kuathiri usalama au utulivu wa mfumo.
Maktaba ya Programu za Mfumo: Wakati unapoandika masasisho au maboresho ya macOS, macOS huunda snapshot mpya ya mfumo. Volume ya kuanzisha ya macOS kisha inatumia APFS (Apple File System) kubadilisha kwenda kwenye snapshot hii mpya. Mchakato mzima wa kutekeleza masasisho unakuwa salama zaidi na wa kuaminika kwani mfumo unaweza kila wakati kurudi kwenye snapshot ya awali ikiwa kitu kikienda vibaya wakati wa sasisho.
Kutenganisha Data: Kwa kushirikiana na dhana ya Kutenganisha Data na Mfumo iliyozinduliwa katika macOS Catalina, kipengele cha Sealed System Snapshot kinahakikisha kwamba data na mipangilio yako yote huhifadhiwa kwenye volume tofauti ya "Data". Kutenganisha hii kunafanya data yako kuwa huru kutoka kwa mfumo, ambayo inarahisisha mchakato wa masasisho ya mfumo na kuimarisha usalama wa mfumo.
Kumbuka kwamba snapshots hizi zinadhibitiwa kiotomatiki na macOS na hazichukui nafasi ya ziada kwenye diski yako, shukrani kwa uwezo wa kushiriki nafasi wa APFS. Pia ni muhimu kutambua kwamba snapshots hizi ni tofauti na Time Machine snapshots, ambazo ni nakala za mfumo mzima zinazoweza kufikiwa na mtumiaji.
Amri diskutil apfs list
inaorodhesha maelezo ya volumes za APFS na mpangilio wao:
Katika matokeo ya awali inawezekana kuona kwamba sehemu zinazoweza kufikiwa na mtumiaji zimewekwa chini ya /System/Volumes/Data
.
Zaidi ya hayo, snapshot ya volume ya mfumo wa macOS imewekwa katika /
na ni sealed (imeandikwa kwa cryptographically na OS). Hivyo, ikiwa SIP itapita na kuibadilisha, OS haitaanza tena.
Pia inawezekana kuhakiki kwamba muhuri umewezeshwa kwa kukimbia:
Zaidi ya hayo, diski ya snapshot pia imewekwa kama read-only:
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)