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)
Sisteem Integriteit Beskerming (SIP) in macOS is 'n mechanisme wat ontwerp is om selfs die mees bevoorregte gebruikers te verhoed om ongeoorloofde veranderinge aan sleutel sisteem vouers te maak. Hierdie funksie speel 'n belangrike rol in die handhawing van die integriteit van die stelsel deur aksies soos die toevoeging, wysiging of verwydering van lêers in beskermde areas te beperk. Die primêre vouers wat deur SIP beskerm word, sluit in:
/System
/bin
/sbin
/usr
Die reëls wat SIP se gedrag regeer, word gedefinieer in die konfigurasie lêer geleë by /System/Library/Sandbox/rootless.conf
. Binne hierdie lêer word paaie wat met 'n asterisk (*) voorafgegaan word, as uitsonderings op die andersins streng SIP beperkings aangedui.
Overweeg die voorbeeld hieronder:
Hierdie snit impliseer dat terwyl SIP oor die algemeen die /usr
gids beveilig, daar spesifieke subgidses (/usr/libexec/cups
, /usr/local
, en /usr/share/man
) is waar wysigings toegelaat word, soos aangedui deur die asterisk (*) wat hul paaie voorafgaan.
Om te verifieer of 'n gids of lêer deur SIP beskerm word, kan jy die ls -lOd
opdrag gebruik om te kyk vir die teenwoordigheid van die restricted
of sunlnk
vlag. Byvoorbeeld:
In hierdie geval dui die sunlnk
vlag aan dat die /usr/libexec/cups
gids self nie verwyder kan word nie, hoewel lêers daarin geskep, gewysig of verwyder kan word.
Aan die ander kant:
Hierdie restricted
vlag dui aan dat die /usr/libexec
gids deur SIP beskerm word. In 'n SIP-beskermde gids kan lêers nie geskep, gewysig of verwyder word nie.
Boonop, as 'n lêer die attribuut com.apple.rootless
uitgebreide attribuut bevat, sal daardie lêer ook deur SIP beskerm word.
Let daarop dat die Sandbox haak hook_vnode_check_setextattr
enige poging om die uitgebreide attribuut com.apple.rootless
te wysig, voorkom.
SIP beperk ook ander wortel aksies soos:
Laai onbetroubare kernuitbreidings
Kry taak-poorte vir Apple-onderteken prosesse
Wysig NVRAM veranderlikes
Laat kerndebugging toe
Opsies word in die nvram veranderlike as 'n bitflag gehou (csr-active-config
op Intel en lp-sip0
word van die gebootte Toestelboom vir ARM gelees). Jy kan die vlae in die XNU bronskode in csr.sh
vind:
Jy kan nagaan of SIP op jou stelsel geaktiveer is met die volgende opdrag:
As jy SIP moet deaktiveer, moet jy jou rekenaar in herstelmodus herbegin (deur Command+R tydens opstart te druk), en dan die volgende opdrag uitvoer:
As jy SIP aangeskakel wil hou maar die foutopsporing beskerming wil verwyder, kan jy dit doen met:
Verbied die laai van ongetekende kernuitbreidings (kexts), wat verseker dat slegs geverifieerde uitbreidings met die stelselkern kommunikeer.
Voorkom die debuggery van macOS-stelselsprosesse, wat kernstelseldelers teen ongemagtigde toegang en wysigings beskerm.
Belemmer gereedskap soos dtrace om stelselsprosesse te inspekteer, wat die integriteit van die stelsel se werking verder beskerm.
Leer meer oor SIP-inligting in hierdie praatjie.
com.apple.rootless.xpc.bootstrap
: Beheer launchd
com.apple.rootless.install[.heritable]
: Toegang tot lêerstelsel
com.apple.rootless.kext-management
: kext_request
com.apple.rootless.datavault.controller
: Bestuur UF_DATAVAULT
com.apple.rootless.xpc.bootstrap
: XPC-opstelling vermoëns
com.apple.rootless.xpc.effective-root
: Root via launchd XPC
com.apple.rootless.restricted-block-devices
: Toegang tot rou bloktoestelle
com.apple.rootless.internal.installer-equivalent
: Onbeperkte lêerstelseloegang
com.apple.rootless.restricted-nvram-variables[.heritable]
: Volledige toegang tot NVRAM
com.apple.rootless.storage.label
: Wysig lêers wat deur com.apple.rootless xattr met die ooreenstemmende etiket beperk is
com.apple.rootless.volume.VM.label
: Onderhou VM-swap op volume
Om SIP te omseil stel 'n aanvaller in staat om:
Toegang tot Gebruikersdata: Lees sensitiewe gebruikersdata soos pos, boodskappe en Safari-geskiedenis van alle gebruikersrekeninge.
TCC Omseiling: Direk die TCC (Deursigtigheid, Toestemming en Beheer) databasis manipuleer om ongemagtigde toegang tot die webcam, mikrofoon en ander hulpbronne te verleen.
Vestiging van Volharding: Plaas malware in SIP-beskermde plekke, wat dit bestand maak teen verwydering, selfs deur root-regte. Dit sluit ook die potensiaal in om met die Malware Removal Tool (MRT) te sloop.
Laai Kernuitbreidings: Alhoewel daar addisionele beskermings is, vereenvoudig die omseiling van SIP die proses om ongetekende kernuitbreidings te laai.
Installer pakkette wat met Apple se sertifikaat geteken is kan sy beskermings omseil. Dit beteken dat selfs pakkette wat deur standaard ontwikkelaars geteken is, geblokkeer sal word as hulle probeer om SIP-beskermde gidse te wysig.
Een potensiële leemte is dat as 'n lêer in rootless.conf
gespesifiseer word maar tans nie bestaan nie, dit geskep kan word. Malware kan dit benut om volharding te vestig op die stelsel. Byvoorbeeld, 'n kwaadwillige program kan 'n .plist-lêer in /System/Library/LaunchDaemons
skep as dit in rootless.conf
gelys is maar nie teenwoordig is nie.
Die reg com.apple.rootless.install.heritable
laat toe om SIP te omseil
Daar is ontdek dat dit moontlik was om die installer-pakket te ruil nadat die stelsel sy kode handtekening geverifieer het en dan, sou die stelsel die kwaadwillige pakket in plaas van die oorspronklike installeer. Aangesien hierdie aksies deur system_installd
uitgevoer is, sou dit SIP omseil.
As 'n pakket van 'n gemonteerde beeld of eksterne skyf geïnstalleer is, sou die installer die binêre van daardie lêerstelsel uitvoer (in plaas van van 'n SIP-beskermde plek), wat system_installd
dwing om 'n arbitrêre binêre uit te voer.
Navorsers van hierdie blogpos het 'n kwesbaarheid in macOS se Stelselintegriteitsbeskerming (SIP) meganisme ontdek, wat die 'Shrootless' kwesbaarheid genoem word. Hierdie kwesbaarheid sentreer rondom die system_installd
daemon, wat 'n reg het, com.apple.rootless.install.heritable
, wat enige van sy kindprosesse toelaat om SIP se lêerstelselbeperkings te omseil.
system_installd
daemon sal pakkette installeer wat deur Apple geteken is.
Navorsers het gevind dat tydens die installasie van 'n Apple-getekende pakket (.pkg-lêer), system_installd
uitvoer enige post-install skripte wat in die pakket ingesluit is. Hierdie skripte word deur die standaard skulp, zsh
, uitgevoer, wat outomaties opdragte van die /etc/zshenv
lêer uitvoer, indien dit bestaan, selfs in nie-interaktiewe modus. Hierdie gedrag kan deur aanvallers benut word: deur 'n kwaadwillige /etc/zshenv
lêer te skep en te wag vir system_installd
om zsh
aan te roep, kan hulle arbitrêre operasies op die toestel uitvoer.
Boonop is ontdek dat /etc/zshenv
as 'n algemene aanvalstegniek gebruik kan word, nie net vir 'n SIP-omseiling nie. Elke gebruikersprofiel het 'n ~/.zshenv
lêer, wat dieselfde gedrag as /etc/zshenv
het, maar nie root-regte vereis nie. Hierdie lêer kan as 'n volhardingsmeganisme gebruik word, wat elke keer wat zsh
begin, geaktiveer word, of as 'n verhoging van regte meganisme. As 'n admin-gebruiker tot root verhoog deur sudo -s
of sudo <opdrag>
, sal die ~/.zshenv
lêer geaktiveer word, wat effektief tot root verhoog.
In CVE-2022-22583 is ontdek dat dieselfde system_installd
proses steeds misbruik kon word omdat dit die post-install skrip in 'n random naamgegee gids wat deur SIP beskerm word binne /tmp
geplaas het. Die ding is dat /tmp
self nie deur SIP beskerm word nie, so dit was moontlik om 'n virtuele beeld daarop te monteer, dan sou die installer die post-install skrip daar plaas, ontmonteer die virtuele beeld, herstel al die gidse en voeg die post-installasie skrip met die payload om uit te voer.
'n Kwesbaarheid is geïdentifiseer waar fsck_cs
mislei is om 'n belangrike lêer te korrupteer, as gevolg van sy vermoë om simboliese skakels te volg. Spesifiek het aanvallers 'n skakel van /dev/diskX
na die lêer /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
geskep. Die uitvoering van fsck_cs
op /dev/diskX
het gelei tot die korrupsie van Info.plist
. Die integriteit van hierdie lêer is van kardinale belang vir die bedryfstelsel se SIP (Stelselintegriteitsbeskerming), wat die laai van kernuitbreidings beheer. Sodra dit gekorrumpeer is, is SIP se vermoë om kernuitsluitings te bestuur, gecompromitteer.
Die opdragte om hierdie kwesbaarheid te benut is:
The exploitation of this vulnerability has severe implications. The Info.plist
-lêer, wat normaalweg verantwoordelik is vir die bestuur van toestemmings vir kernuitbreidings, word ondoeltreffend. Dit sluit die onvermoë in om sekere uitbreidings, soos AppleHWAccess.kext
, op 'n swartlys te plaas. Gevolglik, met die SIP se beheermeganisme buite werking, kan hierdie uitbreiding gelaai word, wat ongeoorloofde lees- en skryftoegang tot die stelsels se RAM bied.
Dit was moontlik om 'n nuwe lêerstelsel oor SIP beskermde vouers te monteer om die beskerming te omseil.
Die stelsel is ingestel om te boot vanaf 'n ingebedde installer skyfbeeld binne die Install macOS Sierra.app
om die OS op te gradeer, met die gebruik van die bless
nut. Die opdrag wat gebruik word is soos volg:
Die sekuriteit van hierdie proses kan gecompromitteer word as 'n aanvaller die opgradering beeld (InstallESD.dmg
) voor die opstart verander. Die strategie behels die vervanging van 'n dinamiese laaier (dyld) met 'n kwaadwillige weergawe (libBaseIA.dylib
). Hierdie vervanging lei tot die uitvoering van die aanvaller se kode wanneer die installeerder geaktiveer word.
Die aanvaller se kode verkry beheer tydens die opgraderingsproses, wat die stelsel se vertroue in die installeerder benut. Die aanval vorder deur die InstallESD.dmg
beeld te verander via metode swizzling, met spesifieke fokus op die extractBootBits
metode. Dit stel die inspuiting van kwaadwillige kode in staat voordat die skyfbeeld gebruik word.
Boonop, binne die InstallESD.dmg
, is daar 'n BaseSystem.dmg
, wat as die wortel lêer stelsel van die opgradering kode dien. Die inspuiting van 'n dinamiese biblioteek hierin stel die kwaadwillige kode in staat om binne 'n proses te werk wat in staat is om OS-vlak lêers te verander, wat die potensiaal vir stelselskompromie aansienlik verhoog.
In hierdie praatjie van DEF CON 31, word gewys hoe systemmigrationd
(wat SIP kan omseil) 'n bash en 'n perl skrip uitvoer, wat misbruik kan word via omgewing veranderlikes BASH_ENV
en PERL5OPT
.
Soos in hierdie blogpos gedetailleerd, het 'n postinstall
skrip van InstallAssistant.pkg
pakkette toegelaat om uit te voer:
and dit was moontlik om 'n symlink in ${SHARED_SUPPORT_PATH}/SharedSupport.dmg
te skep wat 'n gebruiker sou toelaat om enige lêer te ontneem, wat SIP-beskerming omseil.
Die regte com.apple.rootless.install
laat toe om SIP te omseil
Die regte com.apple.rootless.install
is bekend om die Stelsels Integriteit Beskerming (SIP) op macOS te omseil. Dit is veral genoem in verband met CVE-2022-26712.
In hierdie spesifieke geval het die stelsel XPC-diens geleë by /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc
hierdie regte. Dit laat die verwante proses toe om SIP-beperkings te omseil. Verder bied hierdie diens 'n metode aan wat die beweging van lêers toelaat sonder om enige sekuriteitsmaatreëls af te dwing.
Gesegelde Stelsel Snapshots is 'n kenmerk wat deur Apple in macOS Big Sur (macOS 11) bekendgestel is as deel van sy Stelsels Integriteit Beskerming (SIP) meganisme om 'n bykomende laag van sekuriteit en stelsels stabiliteit te bied. Hulle is essensieel lees-slegs weergawes van die stelselvolume.
Hier is 'n meer gedetailleerde blik:
Onveranderlike Stelsel: Gesegelde Stelsel Snapshots maak die macOS stelselvolume "onveranderlik", wat beteken dat dit nie gewysig kan word nie. Dit voorkom enige ongeoorloofde of toevallige veranderinge aan die stelsel wat sekuriteit of stelsels stabiliteit kan benadeel.
Stelsel Sagteware Opdaterings: Wanneer jy macOS-opdaterings of opgraderings installeer, skep macOS 'n nuwe stelselsnapshot. Die macOS opstartvolume gebruik dan APFS (Apple File System) om na hierdie nuwe snapshot oor te skakel. Die hele proses van die toepas van opdaterings word veiliger en meer betroubaar aangesien die stelsel altyd na die vorige snapshot kan terugkeer as iets verkeerd gaan tydens die opdatering.
Data Skeiding: In samewerking met die konsep van Data en Stelsel volume skeiding wat in macOS Catalina bekendgestel is, maak die Gesegelde Stelsel Snapshot kenmerk seker dat al jou data en instellings op 'n aparte "Data" volume gestoor word. Hierdie skeiding maak jou data onafhanklik van die stelsel, wat die proses van stelselsopdaterings vereenvoudig en stelsels sekuriteit verbeter.
Onthou dat hierdie snapshots outomaties deur macOS bestuur word en nie addisionele spasie op jou skyf opneem nie, danksy die spasie deel vermoëns van APFS. Dit is ook belangrik om op te let dat hierdie snapshots verskillend is van Time Machine snapshots, wat gebruikers-toeganklike rugsteun van die hele stelsel is.
Die opdrag diskutil apfs list
lys die besonderhede van die APFS volumes en hul uitleg:
In die vorige uitvoer is dit moontlik om te sien dat gebruikers-toeganklike plekke gemonteer is onder /System/Volumes/Data
.
Boonop is die macOS Stelsel volume snapshot gemonteer in /
en dit is gesegeld (kriptografies onderteken deur die OS). So, as SIP omseil word en dit gewysig word, sal die OS nie meer opstart nie.
Dit is ook moontlik om te verifieer dat die seël geaktiveer is deur te loop:
Boonop, die snapshot skyf is ook as lees-slegs gemonteer:
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)