macOS SIP

Support HackTricks

WhiteIntel ni injini ya utafutaji inayotumiwa na dark-web ambayo inatoa kazi za bure kuangalia ikiwa kampuni au wateja wake wamekuwa compromised na stealer malwares.

Lengo lao kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulizi ya ransomware yanayotokana na malware inayopora taarifa.

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


Basic Information

System Integrity Protection (SIP) katika macOS ni mekanism 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 yaliyolindwa. Folda kuu zinazolindwa na SIP ni pamoja na:

  • /System

  • /bin

  • /sbin

  • /usr

Sheria zinazosimamia tabia ya SIP zimefafanuliwa katika faili ya usanidi iliyoko /System/Library/Sandbox/rootless.conf. Ndani ya faili hii, njia ambazo zinaanzishwa na nyota (*) zinatambulika kama visingizio vya vizuizi vya SIP ambavyo ni vikali.

Fikiria mfano ulio hapa chini:

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

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:

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 inaashiria kwamba saraka ya /usr/libexec/cups yenyewe haiwezi kufutwa, ingawa faili ndani yake zinaweza kuundwa, kubadilishwa, au kufutwa.

Kwa upande mwingine:

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

Here, the restricted flag indicates that the /usr/libexec directory is protected by SIP. In a SIP-protected directory, files cannot be created, modified, or deleted.

Moreover, if a file contains the attribute com.apple.rootless extended attribute, that file will also be protected by SIP.

SIP also limits other root actions like:

  • Loading untrusted kernel extensions

  • Getting task-ports for Apple-signed processes

  • Modifying NVRAM variables

  • Allowing kernel debugging

Options are maintained in nvram variable as a bitflag (csr-active-config on Intel and lp-sip0 is read from the booted Device Tree for ARM). You can find the flags in the XNU source code in csr.sh:

SIP Status

You can check if SIP is enabled on your system with the following command:

csrutil status

Ikiwa unahitaji kuzima SIP, lazima uanzishe tena kompyuta yako katika hali ya urejelezi (kwa kubonyeza Command+R wakati wa kuanzisha), kisha tekeleza amri ifuatayo:

csrutil disable

Ikiwa unataka kuweka SIP imewezeshwa lakini kuondoa ulinzi wa ufuatiliaji, unaweza kufanya hivyo kwa:

csrutil enable --without debug

Other Restrictions

  • Inakata kupakia nyongeza za kernel zisizo na saini (kexts), kuhakikisha kwamba 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.

SIP Bypasses

Kupita SIP kunamwezesha mshambuliaji:

  • Kufikia Data za Mtumiaji: Kusoma data nyeti za mtumiaji kama barua, ujumbe, na historia ya Safari kutoka kwa 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 Uthabiti: Kuweka malware katika maeneo yaliyo na ulinzi wa SIP, ikifanya iwe ngumu kuondoa, hata kwa ruhusa za root. Hii pia inajumuisha uwezekano wa kuingilia kati Zana ya Kuondoa Malware (MRT).

  • Kupakia Nyongeza za Kernel: Ingawa kuna ulinzi wa ziada, kupita SIP kunarahisisha mchakato wa kupakia nyongeza za kernel zisizo na saini.

Installer Packages

Pakiti za installer zilizotiwa saini na cheti cha Apple zinaweza kupita ulinzi wake. Hii inamaanisha kwamba hata pakiti zilizotiwa saini na waendelezaji wa kawaida zitazuiwa ikiwa zitajaribu kubadilisha saraka zilizo na ulinzi wa SIP.

Inexistent SIP file

Moja ya mianya inayoweza kutokea ni kwamba ikiwa faili imeainishwa katika rootless.conf lakini haipo kwa sasa, inaweza kuundwa. Malware inaweza kutumia hii ili kuweka uthabiti kwenye mfumo. Kwa mfano, programu mbaya 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 SIP

Iligundulika kwamba ilikuwa inawezekana kubadilisha pakiti ya installer baada ya mfumo kuthibitisha saini yake ya msimbo na kisha, mfumo ungeweka pakiti mbaya badala ya asili. Kadri vitendo hivi vilifanywa na system_installd, ingekuwa inaruhusu kupita SIP.

Ikiwa pakiti ilipakiwa kutoka picha iliyowekwa au diski ya nje installer ingekuwa inaendesha binary kutoka safu hiyo ya faili (badala ya eneo lililokuwa na ulinzi wa SIP), ikifanya system_installd kuendesha binary isiyo na mpangilio.

CVE-2021-30892 - Shrootless

Watafiti kutoka kwenye chapisho hili la blog waligundua udhaifu katika mfumo wa Ulinzi wa Uadilifu wa Mfumo (SIP) wa macOS, 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 itainua pakiti ambazo zimewekwa saini na Apple.

Watafiti waligundua kwamba wakati wa ufungaji 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 mpangilio kwenye kifaa.

Zaidi ya hayo, iligundulika kwamba /etc/zshenv inaweza kutumika kama mbinu ya jumla ya shambulio, sio tu kwa kupita SIP. Kila wasifu wa mtumiaji una faili ~/.zshenv, ambayo inafanya kazi sawa na /etc/zshenv lakini haitahitaji ruhusa za root. Faili hii inaweza kutumika kama mbinu ya uthabiti, ikichochewa kila wakati zsh inaanza, au kama mbinu ya kuinua ruhusa. Ikiwa mtumiaji wa admin anainua hadi root kwa kutumia sudo -s au sudo <command>, faili ya ~/.zshenv itachochewa, ikiongeza kwa ufanisi hadi root.

Katika CVE-2022-22583 iligundulika kwamba mchakato sawa wa system_installd bado unaweza kutumiwa vibaya kwa sababu ilikuwa ikiweka script ya baada ya ufungaji 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 post-install, kuondoa picha ya virtual, kuunda upya folda zote na kuongeza script ya post installation na payload ya kutekeleza.

Udhaifu ulitambuliwa ambapo fsck_cs ilipotoshwa kuharibu faili muhimu, kutokana na uwezo wake wa kufuata viungo vya alama. Kwa haswa, 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 kudhibiti uondoaji wa kernel unaharibiwa.

Amri za kutumia udhaifu huu ni:

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

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.

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

Mfumo umewekwa kuanzisha kutoka kwa picha ya diski ya msaidizi iliyo ndani ya Install macOS Sierra.app ili kuboresha OS, ikitumia zana ya bless. Amri inayotumika 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

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.

Usalama wa mchakato huu unaweza kuathiriwa ikiwa mshambuliaji atabadilisha picha ya sasisho (InstallESD.dmg) kabla ya kuanzisha. Mkakati huu unahusisha kubadilisha mzigo wa dinamik (dyld) na toleo la uhalifu (libBaseIA.dylib). Badiliko hili linapelekea utekelezaji wa msimbo wa mshambuliaji wakati mchakato wa usakinishaji unapoanzishwa.

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.

Msimbo wa mshambuliaji unapata udhibiti wakati wa mchakato wa sasisho, ukitumia imani ya mfumo kwa mchakato wa usakinishaji. Shambulio linaendelea kwa kubadilisha picha ya InstallESD.dmg kupitia mbinu ya swizzling, hasa ikilenga mbinu ya extractBootBits. Hii inaruhusu sindano ya msimbo wa uhalifu kabla ya picha ya diski kutumika.

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.

Zaidi ya hayo, ndani ya InstallESD.dmg, kuna BaseSystem.dmg, ambayo inatumika kama mfumo wa faili wa mizizi wa msimbo wa sasisho. Kuingiza maktaba ya dinamik ndani yake inaruhusu msimbo wa uhalifu kufanya kazi ndani ya mchakato unaoweza kubadilisha faili za kiwango cha OS, ikiongeza kwa kiasi kikubwa uwezekano wa kuathiriwa kwa mfumo.

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.

Katika mazungumzo haya kutoka DEF CON 31, inaonyeshwa jinsi systemmigrationd (ambayo inaweza kupita SIP) inatekeleza bash na perl script, ambazo zinaweza kutumika vibaya kupitia mabadiliko ya mazingira BASH_ENV na PERL5OPT.

CVE-2023-42860

As detailed in this blog post, a postinstall script from InstallAssistant.pkg packages allowed was executing:

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

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

and ilikuw possible kuunda symlink katika ${SHARED_SUPPORT_PATH}/SharedSupport.dmg ambayo ingemruhusu mtumiaji kuzuia kikomo chochote, akipita ulinzi wa SIP.

com.apple.rootless.install

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

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:

  1. 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 kwenye mfumo ambayo yanaweza kuathiri usalama au utulivu wa mfumo.

  2. Maktaba ya Programu za Mfumo: Unapofunga 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 masasisho.

  3. Kutenganisha Data: Kwa kushirikiana na dhana ya Kutenganisha Data na Mfumo iliyozintroduced 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.

Angalia Snapshots

Amri diskutil apfs list inaorodhesha maelezo ya volumes za APFS na mpangilio wao:

+-- Container disk3 966B902E-EDBA-4775-B743-CF97A0556A13
|   ====================================================
|   APFS Container Reference:     disk3
|   Size (Capacity Ceiling):      494384795648 B (494.4 GB)
|   Capacity In Use By Volumes:   219214536704 B (219.2 GB) (44.3% used)
|   Capacity Not Allocated:       275170258944 B (275.2 GB) (55.7% free)
|   |
|   +-< Physical Store disk0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE
|   |   -----------------------------------------------------------
|   |   APFS Physical Store Disk:   disk0s2
|   |   Size:                       494384795648 B (494.4 GB)
|   |
|   +-> Volume disk3s1 7A27E734-880F-4D91-A703-FB55861D49B7
|   |   ---------------------------------------------------
|   |   APFS Volume Disk (Role):   disk3s1 (System)
|   |   Name:                      Macintosh HD (Case-insensitive)
|   |   Mount Point:               /System/Volumes/Update/mnt1
|   |   Capacity Consumed:         12819210240 B (12.8 GB)
|   |   Sealed:                    Broken
|   |   FileVault:                 Yes (Unlocked)
|   |   Encrypted:                 No
|   |   |
|   |   Snapshot:                  FAA23E0C-791C-43FF-B0E7-0E1C0810AC61
|   |   Snapshot Disk:             disk3s1s1
|   |   Snapshot Mount Point:      /
|   |   Snapshot Sealed:           Yes
[...]
+-> Volume disk3s5 281959B7-07A1-4940-BDDF-6419360F3327
|   ---------------------------------------------------
|   APFS Volume Disk (Role):   disk3s5 (Data)
|   Name:                      Macintosh HD - Data (Case-insensitive)
    |   Mount Point:               /System/Volumes/Data
    |   Capacity Consumed:         412071784448 B (412.1 GB)
    |   Sealed:                    No
|   FileVault:                 Yes (Unlocked)

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:

csrutil authenticated-root status
Authenticated Root status: enabled

Zaidi ya hayo, diski ya snapshot pia imewekwa kama read-only:

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

WhiteIntel ni injini ya utafutaji inayotumiwa na dark-web ambayo inatoa kazi za bure kuangalia kama kampuni au wateja wake wamekuwa compromised na stealer malwares.

Lengo lao kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulizi ya ransomware yanayotokana na malware inayopora taarifa.

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

Support HackTricks

Last updated