macOS SIP

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

WhiteIntel ni injini ya utaftaji inayotumia dark-web ambayo inatoa huduma za bure za kuangalia ikiwa kampuni au wateja wake wame vamiwa na malware za wizi.

Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na malware za kuiba taarifa.

Unaweza kutembelea tovuti yao na kujaribu injini yao bure kwa:


Taarifa Msingi

Ulinzi wa Uadilifu wa Mfumo (SIP) kwenye macOS ni mbinu iliyoundwa kuzuia hata watumiaji wenye mamlaka zaidi kufanya mabadiliko yasiyoruhusiwa kwenye folda muhimu za mfumo. Kipengele hiki kina jukumu muhimu katika kudumisha uadilifu wa mfumo kwa kuzuia vitendo kama kuongeza, kuhariri, au kufuta faili katika maeneo yaliyolindwa. Folda kuu zinazolindwa na SIP ni pamoja na:

  • /System

  • /bin

  • /sbin

  • /usr

Sheria zinazosimamia tabia ya SIP zimefafanuliwa katika faili ya usanidi iliyoko kwenye /System/Library/Sandbox/rootless.conf. Ndani ya faili hii, njia zilizo na alama ya nyota (*) zinatajwa kama mabadiliko kwa vikwazo vikali vya SIP.

Chukua mfano hapa chini:

/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man

Hii sehemu inaashiria kwamba wakati SIP kwa ujumla inalinda directory ya /usr, kuna subdirectories maalum (/usr/libexec/cups, /usr/local, na /usr/share/man) ambapo marekebisho yanaruhusiwa, kama ilivyodokezwa na asterisk (*) inayotangulia njia zao.

Ili kuthibitisha ikiwa directory au faili inalindwa na SIP, unaweza kutumia amri ya ls -lOd kuangalia uwepo wa bendera ya restricted au sunlnk. Kwa mfano:

ls -lOd /usr/libexec/cups
drwxr-xr-x  11 root  wheel  sunlnk 352 May 13 00:29 /usr/libexec/cups

Katika kesi hii, bendera ya sunlnk inamaanisha kwamba directory ya /usr/libexec/cups yenyewe haiwezi kufutwa, ingawa mafaili ndani yake yanaweza kuundwa, kuhaririwa, au kufutwa.

Kwa upande mwingine:

ls -lOd /usr/libexec
drwxr-xr-x  338 root  wheel  restricted 10816 May 13 00:29 /usr/libexec

Hapa, bendera ya iliyozuiwa inaonyesha kuwa directory ya /usr/libexec inalindwa na SIP. Katika directory iliyo na SIP ulinzi, faili haziwezi kuundwa, kuhaririwa, au kufutwa.

Zaidi ya hayo, ikiwa faili ina sifa ya ziada ya com.apple.rootless extended attribute, faili hiyo pia itakuwa lindwa na SIP.

SIP pia inazuia vitendo vingine vya root kama:

  • Kupakia extensions za kernel zisizoaminika

  • Kupata task-ports kwa michakato iliyosainiwa na Apple

  • Kubadilisha NVRAM variables

  • Kuruhusu uchunguzi wa kernel

Chaguo zinahifadhiwa katika variable ya nvram kama bitflag (csr-active-config kwenye Intel na lp-sip0 inasomwa kutoka kwa Mti wa Kifaa kilicho booted kwa ARM). Unaweza kupata bendera hizo katika msimbo wa chanzo wa XNU katika csr.sh:

Hali ya SIP

Unaweza kuangalia ikiwa SIP imewezeshwa kwenye mfumo wako kwa amri ifuatayo:

csrutil status

Ikiwa unahitaji kulemaza SIP, lazima uanzishe upya kompyuta yako kwenye hali ya kupona (kwa kubonyeza Command+R wakati wa kuanza), kisha tekeleza amri ifuatayo:

csrutil disable

Ikiwa unataka kuweka SIP kuwa imewezeshwa lakini uondoe ulinzi wa uchunguzi, unaweza kufanya hivyo kwa:

csrutil enable --without debug

Vizuizi vingine

  • Inazuia kupakia nyongeza za kernel zisizosainiwa (kexts), ikihakikisha ni nyongeza zilizothibitishwa tu zinashirikiana na kernel ya mfumo.

  • Inazuia uchunguzi wa michakato ya mfumo wa macOS, ikilinda sehemu kuu za mfumo kutokana na ufikiaji usioidhinishwa na mabadiliko.

  • Inazuia zana kama dtrace kutoka kuchunguza michakato ya mfumo, ikilinda zaidi uadilifu wa uendeshaji wa mfumo.

Jifunze zaidi kuhusu habari za SIP katika mazungumzo haya.

Kupita kizuizi cha SIP

Kupita kizuizi cha SIP kunawezesha mshambuliaji kufanya yafuatayo:

  • Kufikia Data ya Mtumiaji: Kusoma data nyeti ya mtumiaji kama barua pepe, ujumbe, na historia ya Safari kutoka kwa akaunti zote za watumiaji.

  • Kupita TCC: Kuhariri moja kwa moja hifadhidata ya TCC (Transparency, Consent, and Control) kutoa ufikiaji usiohalali kwa kamera ya wavuti, kipaza sauti, na rasilimali nyingine.

  • Kuanzisha Uimara: Kuweka zisizo katika maeneo yaliyolindwa na SIP, ikifanya iwe ngumu kuondoa, hata kwa mamlaka ya mizizi. Hii pia inajumuisha uwezekano wa kuharibu zana ya Kuondoa Zisizo (MRT).

  • Kupakia Nyongeza za Kernel: Ingawa kuna kinga zaidi, kupita kizuizi cha SIP kunarahisisha mchakato wa kupakia nyongeza za kernel zisizosainiwa.

Pakiti za Usakinishaji

Pakiti za usakinishaji zilizosainiwa na cheti cha Apple zinaweza kupita kinga zake. Hii inamaanisha hata pakiti zilizosainiwa na watengenezaji wa kawaida zitazuiliwa ikiwa zitajaribu kuhariri saraka zilizolindwa na SIP.

Faili ya SIP isiyopo

Mianya moja inawezekana ni kwamba ikiwa faili imeorodheshwa katika rootless.conf lakini haipo kwa sasa, inaweza kuundwa. Programu hasidi inaweza kutumia hii kwa kuanzisha uimara kwenye mfumo. Kwa mfano, programu hasidi inaweza kuunda faili ya .plist katika /System/Library/LaunchDaemons ikiwa imeorodheshwa katika rootless.conf lakini haipo.

com.apple.rootless.install.heritable

Ruhusa com.apple.rootless.install.heritable inaruhusu kupita kizuizi cha SIP

Iligundulika kuwa ilikuwa inawezekana kubadilisha pakiti ya usakinishaji baada ya mfumo kuthibitisha saini yake na kisha, mfumo ungekusanya pakiti yenye nia mbaya badala ya ile halisi. Kwa kuwa hatua hizi zilifanywa na system_installd, ingewezesha kupita kizuizi cha SIP.

Ikiwa pakiti ilisakinishwa kutoka kwa picha iliyomountiwa au diski ya nje msakinishaji ange tekeleza binary kutoka mfumo huo (badala ya kutoka eneo lililolindwa na SIP), ikifanya system_installd kutekeleza binary isiyojulikana.

CVE-2021-30892 - Shrootless

Watafiti kutoka chapisho hili la blogi waligundua mianya katika Mfumo wa Ulinzi wa Mfumo wa macOS (SIP), inayoitwa mianya ya 'Shrootless'. Mianya hii inazingira karibu na system_installd daemon, ambayo ina ruhusa, com.apple.rootless.install.heritable, inayoruhusu mchakato wowote wa watoto wake kupita kinga ya mfumo wa SIP.

system_installd daemon itasakinisha pakiti zilizosainiwa na Apple.

Watafiti waligundua kuwa wakati wa usakinishaji wa pakiti iliyosainiwa na Apple (.faili ya pkg), system_installd inakimbia hati yoyote ya baada ya usakinishaji iliyomo kwenye pakiti. Hati hizi zinatekelezwa na kabati la msingi, zsh, ambayo kwa moja kwa moja inakimbia amri kutoka kwa faili ya /etc/zshenv, ikiwepo, hata katika hali isiyo ya mwingiliano. Tabia hii inaweza kutumiwa na wachomaji: kwa kuunda faili ya /etc/zshenv yenye nia mbaya na kusubiri system_installd kuita zsh, wangeweza kutekeleza operesheni za aina yoyote kwenye kifaa.

Zaidi ya hayo, iligundulika kuwa /etc/zshenv inaweza kutumika kama mbinu ya mashambulizi ya jumla, si tu kwa kupita kizuizi cha SIP. Kila wasifu wa mtumiaji una faili ya ~/.zshenv, ambayo ina tabia sawa na /etc/zshenv lakini haitaji ruhusa za mizizi. Faili hii inaweza kutumika kama mbinu ya uimara, ikianzisha kila wakati zsh inapoanza, au kama mbinu ya kupandisha hadhi. Ikiwa mtumiaji wa admin anapandisha hadhi hadi mizizi kwa kutumia sudo -s au sudo <amri>, faili ya ~/.zshenv itaanzishwa, ikipandisha hadhi hadi mizizi kwa ufanisi.

Katika CVE-2022-22583 iligundulika kuwa mchakato huo wa system_installd ungeweza bado kutumiwa vibaya kwa sababu ulikuwa ukiiweka hati ya baada ya usakinishaji ndani ya folda yenye jina la kubahatisha iliyolindwa na SIP ndani ya /tmp. Jambo ni kwamba /tmp yenyewe haikulindwa na SIP, hivyo ilikuwa inawezekana kumounti picha ya kubuni juu yake, kisha msakinishaji angeiweka hapo hati ya baada ya usakinishaji, kumounti tena picha ya kubuni, kuunda upya folda zote na kuongeza hati ya usakinishaji wa baada ya usakinishaji na mzigo wa kutekeleza.

Mianya iligundulika ambapo fsck_cs ilidanganywa kuharibu faili muhimu, kutokana na uwezo wake wa kufuata viungo vya ishara. Hasa, wachomaji walibuni kiungo kutoka /dev/diskX kwenda faili /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist. Kutekeleza fsck_cs kwenye /dev/diskX kulipelekea uharibifu wa Info.plist. Uadilifu wa faili hii ni muhimu kwa SIP ya mfumo wa uendeshaji (System Integrity Protection), ambayo inadhibiti kupakia nyongeza za kernel. Mara ilipoharibika, uwezo wa SIP wa kusimamia uzuiaji wa kernel unakuwa hatarini.

ln -s /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist /dev/diskX
fsck_cs /dev/diskX 1>&-
touch /Library/Extensions/
reboot

Udhalilishaji wa udhaifu huu una matokeo makubwa. Faili ya Info.plist, kawaida inayohusika na usimamizi wa ruhusa za nyongeza za kernel, inakuwa batili. Hii ni pamoja na uwezekano wa kuzuia nyongeza fulani, kama vile AppleHWAccess.kext. Kwa hivyo, na mfumo wa udhibiti wa SIP ukiwa nje ya utaratibu, nyongeza hii inaweza kupakiwa, ikiruhusu ufikiaji usiohalali wa kusoma na kuandika kwenye RAM ya mfumo.

Ilitowezekana kupakia mfumo wa faili mpya juu ya folda zilizolindwa na SIP ili kudanganya ulinzi.

mkdir evil
# Add contento to the folder
hdiutil create -srcfolder evil evil.dmg
hdiutil attach -mountpoint /System/Library/Snadbox/ evil.dmg

Mfumo umewekwa kuanza kutoka kwenye picha ya diski ya mjenzi iliyo ndani ya Sakinisha macOS Sierra.app ili kuboresha OS, ikichanganua matumizi ya zana ya bless. Amri iliyotumika ni kama ifuatavyo:

/usr/sbin/bless -setBoot -folder /Volumes/Macintosh HD/macOS Install Data -bootefi /Volumes/Macintosh HD/macOS Install Data/boot.efi -options config="\macOS Install Data\com.apple.Boot" -label macOS Installer

Usalama wa mchakato huu unaweza kutiliwa shaka ikiwa mshambuliaji anabadilisha picha ya kuboresha (InstallESD.dmg) kabla ya kuanza. Mkakati huu unahusisha kubadilisha mzigo wa kudhibiti (dyld) na toleo la uovu (libBaseIA.dylib). Kubadilisha hii husababisha utekelezaji wa msimbo wa mshambuliaji wakati mchakato wa usakinishaji unapoanzishwa.

Msimbo wa mshambuliaji unapata udhibiti wakati wa mchakato wa kuboresha, kwa kutumia imani ya mfumo katika msakinishaji. Shambulio linaendelea kwa kubadilisha picha ya InstallESD.dmg kupitia njia ya swizzling, hasa ikilenga njia ya extractBootBits. Hii inaruhusu kuingiza msimbo wa uovu kabla ya picha ya diski kutumika.

Zaidi ya hayo, ndani ya InstallESD.dmg, kuna BaseSystem.dmg, ambayo hutumika kama mfumo wa faili wa msingi wa msakinishaji. Kuingiza maktaba ya kudhibiti katika hii inaruhusu msimbo wa uovu kufanya kazi ndani ya mchakato unaoweza kubadilisha faili za kiwango cha OS, ikiongeza sana uwezekano wa kutiliwa shaka kwa mfumo.

Katika mazungumzo haya kutoka DEF CON 31, inaonyeshwa jinsi systemmigrationd (ambayo inaweza kukiuka SIP) inatekeleza script ya bash na perl, ambayo inaweza kutumiwa vibaya kupitia mazingira ya env variables BASH_ENV na PERL5OPT.

CVE-2023-42860

Kama ilivyoelezwa katika chapisho hili la blogi, script ya postinstall kutoka kwa pakiti za InstallAssistant.pkg iliruhusiwa kutekelezwa:

/usr/bin/chflags -h norestricted "${SHARED_SUPPORT_PATH}/SharedSupport.dmg"

Na ilikuwa inawezekana kuunda symlink katika ${SHARED_SUPPORT_PATH}/SharedSupport.dmg ambayo ingemruhusu mtumiaji kufungua faili yoyote, kukiuka ulinzi wa SIP.

com.apple.rootless.install

Ruhusa com.apple.rootless.install inaruhusu kukiuka SIP

Ruhusa com.apple.rootless.install inajulikana kukiuka Ulinzi wa Uadilifu wa Mfumo (SIP) kwenye macOS. Hii ilionyeshwa hasa kuhusiana na CVE-2022-26712.

Katika kesi hii maalum, huduma ya XPC ya mfumo iliyoko katika /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc inamiliki ruhusa hii. Hii inaruhusu mchakato unaohusika kuzunguka vizuizi vya SIP. Zaidi ya hayo, huduma hii inaonyesha njia inayoruhusu kuhamisha faili bila kutekeleza hatua yoyote ya usalama.

Picha za Mfumo Zilizofungwa

Picha za Mfumo Zilizofungwa ni kipengele kilichoanzishwa 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, hizi ni toleo lisiloweza kuhaririwa la kiasi cha mfumo.

Hapa kuna muonekano wa kina zaidi:

  1. Mfumo Usiobadilika: Picha za Mfumo Zilizofungwa hufanya kiasi cha mfumo wa macOS kuwa "usiobadilika", maana yake hauwezi kuhaririwa. Hii inazuia mabadiliko yoyote yasiyoruhusiwa au ya bahati mbaya kwenye mfumo ambayo inaweza kuhatarisha usalama au utulivu wa mfumo.

  2. Sasisho za Programu ya Mfumo: Unapoweka sasisho au uboreshaji wa macOS, macOS inaunda picha mpya ya mfumo. Kiasi cha kuanza cha macOS kisha kutumia APFS (Mfumo wa Faili wa Apple) kubadilisha kwenye picha hii mpya. Mchakato mzima wa kutumia sasisho unakuwa salama na wa kuaminika zaidi kwani mfumo unaweza kurudi kwenye picha ya awali ikiwa kitu kitakwenda vibaya wakati wa sasisho.

  3. Ufafanuzi wa Data: Pamoja na dhana ya Ufafanuzi wa Kiasi cha Data na Mfumo iliyozinduliwa katika macOS Catalina, kipengele cha Picha za Mfumo Zilizofungwa kuhakikisha kuwa data yako yote na mipangilio inahifadhiwa kwenye kiasi cha "Data" tofauti. Ufafanuzi huu unafanya data yako kuwa huru kutoka kwa mfumo, ambayo inasimplisha mchakato wa sasisho za mfumo na kuimarisha usalama wa mfumo.

Kumbuka kuwa picha hizi zinasimamiwa moja kwa moja na macOS na hazichukui nafasi ya ziada kwenye diski yako, shukrani kwa uwezo wa kushirikiana nafasi wa APFS. Pia ni muhimu kutambua kuwa picha hizi ni tofauti na picha za Time Machine, ambazo ni nakala za mfumo zinazoweza kufikiwa na mtumiaji wa mfumo mzima.

Angalia Picha za Mfumo

Amri diskutil apfs list inaorodhesha majarida ya kina ya kiasi cha APFS na muundo wao:

+-- Kontena diski3 966B902E-EDBA-4775-B743-CF97A0556A13
|   ====================================================
|   Kiungo cha Kontena cha APFS:     diski3
|   Ukubwa (Paa la Uwezo):          494384795648 B (494.4 GB)
|   Uwezo Unaoitumiwa na Vipindi:   219214536704 B (219.2 GB) (44.3% imeitwa)
|   Uwezo Usiokubaliwa:             275170258944 B (275.2 GB) (55.7% bure)
|   |
|   +-< Uhifadhi wa Fizikia diski0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE
|   |   -----------------------------------------------------------
|   |   Uhifadhi wa Fizikia wa APFS Disk:   diski0s2
|   |   Ukubwa:                       494384795648 B (494.4 GB)
|   |
|   +-> Kiasi cha diski3s1 7A27E734-880F-4D91-A703-FB55861D49B7
|   |   ---------------------------------------------------
|   |   Kiasi cha APFS Disk (Jukumu):   diski3s1 (Mfumo)
|   |   Jina:                      Macintosh HD (Bila kuzingatia herufi kubwa)
|   |   Kiungo cha Kufungua:               /System/Volumes/Update/mnt1
|   |   Uwezo Uliotumiwa:         12819210240 B (12.8 GB)
|   |   Imefungwa:                    Imevunjika
|   |   FileVault:                 Ndiyo (Imefunguliwa)
|   |   Imefichwa:                 Hapana
|   |   |
|   |   Picha ya Mchoro:                  FAA23E0C-791C-43FF-B0E7-0E1C0810AC61
|   |   Diski ya Picha ya Mchoro:             diski3s1s1
|   |   Kiungo cha Kufungua cha Picha ya Mchoro:      /
|   |   Picha ya Mchoro Imefungwa:           Ndiyo
[...]
+-> Kiasi cha diski3s5 281959B7-07A1-4940-BDDF-6419360F3327
|   ---------------------------------------------------
|   Kiasi cha APFS Disk (Jukumu):   diski3s5 (Data)
|   Jina:                      Macintosh HD - Data (Bila kuzingatia herufi kubwa)
    |   Kiungo cha Kufungua:               /System/Volumes/Data
    |   Uwezo Uliotumiwa:         412071784448 B (412.1 GB)
    |   Imefungwa:                    Hapana
|   FileVault:                 Ndiyo (Imefunguliwa)

Katika matokeo ya awali inawezekana kuona kuwa maeneo yanayoweza kufikiwa na mtumiaji yamefungwa chini ya /System/Volumes/Data.

Zaidi ya hayo, picha ya mfumo wa macOS imefungwa katika / na ni imefungwa (imetiwa saini kwa njia ya kielektroniki na OS). Kwa hivyo, ikiwa SIP itapuuzwa na kuhariri, OS haitaanza tena.

Pia inawezekana kuthibitisha kuwa muhuri umewezeshwa kwa kukimbia:

csrutil authenticated-root status
Authenticated Root status: enabled

Zaidi ya hayo, diski ya picha inaunganishwa kama soma-tu:

mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)

WhiteIntel ni injini ya utaftaji inayotumia dark-web ambayo inatoa huduma za bure za kuangalia ikiwa kampuni au wateja wake wameathiriwa na malwares za kuiba.

Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na malwares za kuiba taarifa.

Unaweza kutembelea tovuti yao na kujaribu injini yao kwa bure kwenye:

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated