macOS SIP
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
κΈ°λ³Έ μ 보
**System Integrity Protection (SIP)**λ macOSμμ κ°μ₯ κΆνμ΄ λμ μ¬μ©μμ‘°μ°¨λ μ£Όμ μμ€ν ν΄λμ λν λ¬΄λ¨ λ³κ²½μ λ°©μ§νκΈ° μν΄ μ€κ³λ λ©μ»€λμ¦μ λλ€. μ΄ κΈ°λ₯μ 보νΈλ μμμμ νμΌμ μΆκ°, μμ λλ μμ νλ λ±μ μμ μ μ νν¨μΌλ‘μ¨ μμ€ν μ 무결μ±μ μ μ§νλ λ° μ€μν μν μ ν©λλ€. SIPμ μν΄ λ³΄νΈλλ μ£Όμ ν΄λλ λ€μκ³Ό κ°μ΅λλ€:
- /System
- /bin
- /sbin
- /usr
SIPμ λμμ κ·μ νλ κ·μΉμ **/System/Library/Sandbox/rootless.conf**μ μμΉν κ΅¬μ± νμΌμ μ μλμ΄ μμ΅λλ€. μ΄ νμΌ λ΄μμ λ³ν(*)λ‘ μ λμ¬κ° λΆμ κ²½λ‘λ μΌλ°μ μΌλ‘ μ격ν SIP μ νμ μμΈλ‘ νμλ©λλ€.
μλμ μλ₯Ό κ³ λ €ν΄ λ³΄μμμ€:
/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man
μ΄ μ€λν«μ SIPκ° μΌλ°μ μΌλ‘ /usr λλ ν 리λ₯Ό 보νΈνμ§λ§, νΉμ νμ λλ ν 리(/usr/libexec/cups, /usr/local, /usr/share/man)μμλ μμ μ΄ νμ©λλ€λ κ²μ λνλ
λλ€. μ΄λ ν΄λΉ κ²½λ‘ μμ μλ λ³ν(*)λ‘ νμλ©λλ€.
λλ ν 리λ νμΌμ΄ SIPμ μν΄ λ³΄νΈλλμ§ νμΈνλ €λ©΄ ls -lOd λͺ
λ Ήμ μ¬μ©νμ¬ restricted λλ sunlnk νλκ·Έμ μ‘΄μ¬λ₯Ό νμΈν μ μμ΅λλ€. μ:
ls -lOd /usr/libexec/cups
drwxr-xr-x 11 root wheel sunlnk 352 May 13 00:29 /usr/libexec/cups
μ΄ κ²½μ°, sunlnk νλκ·Έλ /usr/libexec/cups λλ ν 리 μμ²΄κ° μμ λ μ μμμ λνλ΄μ§λ§, κ·Έ μμ νμΌμ μμ±, μμ λλ μμ ν μ μμ΅λλ€.
λ°λ©΄:
ls -lOd /usr/libexec
drwxr-xr-x 338 root wheel restricted 10816 May 13 00:29 /usr/libexec
μ¬κΈ°μ restricted νλκ·Έλ /usr/libexec λλ ν λ¦¬κ° SIPμ μν΄ λ³΄νΈλκ³ μμμ λνλ
λλ€. SIPλ‘ λ³΄νΈλ λλ ν 리μμλ νμΌμ μμ±, μμ λλ μμ ν μ μμ΅λλ€.
λν, νμΌμ com.apple.rootless νμ₯ μμ±μ΄ ν¬ν¨λμ΄ μμΌλ©΄ ν΄λΉ νμΌλ SIPμ μν΄ λ³΄νΈλ©λλ€.
Tip
Sandbox ν **
hook_vnode_check_setextattr**λ νμ₯ μμ± **com.apple.rootless**λ₯Ό μμ νλ €λ λͺ¨λ μλλ₯Ό λ°©μ§ν©λλ€.
SIPλ λ€λ₯Έ λ£¨νΈ μμ λ μ νν©λλ€:
- μ λ’°ν μ μλ 컀λ νμ₯ λ‘λ
- Apple μλͺ νλ‘μΈμ€μ λν μμ ν¬νΈ κ°μ Έμ€κΈ°
- NVRAM λ³μ μμ
- 컀λ λλ²κΉ νμ©
μ΅μ
μ λΉνΈ νλκ·Έλ‘ nvram λ³μμ μ μ§λ©λλ€ (csr-active-configλ Intelμμ, lp-sip0λ ARMμ λΆν
λ Device Treeμμ μ½μ΄μ΅λλ€). νλκ·Έλ csr.shμ XNU μμ€ μ½λμμ μ°Ύμ μ μμ΅λλ€:
.png)
SIP μν
λ€μ λͺ λ Ήμ΄λ‘ μμ€ν μμ SIPκ° νμ±νλμ΄ μλμ§ νμΈν μ μμ΅λλ€:
csrutil status
SIPλ₯Ό λΉνμ±νν΄μΌ νλ κ²½μ°, μ»΄ν¨ν°λ₯Ό 볡ꡬ λͺ¨λλ‘ μ¬μμν΄μΌ ν©λλ€(μμ μ€ Command+Rμ λλ¦). κ·Έλ° λ€μ λ€μ λͺ λ Ήμ μ€ννμμμ€:
csrutil disable
SIPλ₯Ό νμ±νν μνλ‘ λλ²κΉ λ³΄νΈ κΈ°λ₯μ μ κ±°νλ €λ©΄ λ€μμ μ¬μ©νλ©΄ λ©λλ€:
csrutil enable --without debug
κΈ°ν μ ν μ¬ν
- μλͺ λμ§ μμ 컀λ νμ₯(kexts)μ λ‘λλ₯Ό νμ©νμ§ μμΌλ©°, κ²μ¦λ νμ₯λ§μ΄ μμ€ν 컀λκ³Ό μνΈμμ©νλλ‘ λ³΄μ₯ν©λλ€.
- macOS μμ€ν νλ‘μΈμ€μ λλ²κΉ μ λ°©μ§νμ¬, ν΅μ¬ μμ€ν κ΅¬μ± μμλ₯Ό λ¬΄λ¨ μ κ·Ό λ° μμ μΌλ‘λΆν° 보νΈν©λλ€.
- dtraceμ κ°μ λꡬμ μ¬μ©μ μ΅μ νμ¬ μμ€ν μ΄μμ 무결μ±μ μΆκ°λ‘ 보νΈν©λλ€.
μ΄ λ°νμμ SIP μ 보μ λν΄ λ μμ보μΈμ.
SIP κ΄λ ¨ κΆν
com.apple.rootless.xpc.bootstrap: launchd μ μ΄com.apple.rootless.install[.heritable]: νμΌ μμ€ν μ κ·Όcom.apple.rootless.kext-management:kext_requestcom.apple.rootless.datavault.controller: UF_DATAVAULT κ΄λ¦¬com.apple.rootless.xpc.bootstrap: XPC μ€μ κΈ°λ₯com.apple.rootless.xpc.effective-root: launchd XPCλ₯Ό ν΅ν λ£¨νΈ μ κ·Όcom.apple.rootless.restricted-block-devices: μμ λΈλ‘ μ₯μΉ μ κ·Όcom.apple.rootless.internal.installer-equivalent: μ ν μλ νμΌ μμ€ν μ κ·Όcom.apple.rootless.restricted-nvram-variables[.heritable]: NVRAMμ λν μ 체 μ κ·Όcom.apple.rootless.storage.label: ν΄λΉ λ μ΄λΈλ‘ com.apple.rootless xattrμ μν΄ μ νλ νμΌ μμ com.apple.rootless.volume.VM.label: λ³Όλ₯¨μμ VM μ€μ μ μ§
SIP μ°ν
SIPλ₯Ό μ°ννλ©΄ 곡격μκ° λ€μμ μνν μ μμ΅λλ€:
- μ¬μ©μ λ°μ΄ν° μ κ·Ό: λͺ¨λ μ¬μ©μ κ³μ μμ λ©μΌ, λ©μμ§ λ° Safari κΈ°λ‘κ³Ό κ°μ λ―Όκ°ν μ¬μ©μ λ°μ΄ν°λ₯Ό μ½μ΅λλ€.
- TCC μ°ν: TCC(ν¬λͺ μ±, λμ λ° μ μ΄) λ°μ΄ν°λ² μ΄μ€λ₯Ό μ§μ μ‘°μνμ¬ μΉμΊ , λ§μ΄ν¬ λ° κΈ°ν 리μμ€μ λν λ¬΄λ¨ μ κ·Όμ λΆμ¬ν©λλ€.
- μ§μμ± μ€μ : SIPλ‘ λ³΄νΈλ μμΉμ μ μ± μ½λλ₯Ό λ°°μΉνμ¬ λ£¨νΈ κΆνμΌλ‘λ μ κ±°μ μ ννλλ‘ λ§λλλ€. μ¬κΈ°μλ μ μ± μννΈμ¨μ΄ μ κ±° λꡬ(MRT)λ₯Ό λ³μ‘°ν κ°λ₯μ±λ ν¬ν¨λ©λλ€.
- 컀λ νμ₯ λ‘λ: μΆκ°μ μΈ λ³΄νΈ μ₯μΉκ° μμ§λ§, SIPλ₯Ό μ°ννλ©΄ μλͺ λμ§ μμ 컀λ νμ₯μ λ‘λνλ κ³Όμ μ΄ κ°μνλ©λλ€.
μ€μΉ ν¨ν€μ§
Appleμ μΈμ¦μλ‘ μλͺ λ μ€μΉ ν¨ν€μ§λ κ·Έ 보νΈλ₯Ό μ°νν μ μμ΅λλ€. μ΄λ νμ€ κ°λ°μκ° μλͺ ν ν¨ν€μ§μ‘°μ°¨λ SIPλ‘ λ³΄νΈλ λλ ν 리λ₯Ό μμ νλ €κ³ μλνλ©΄ μ°¨λ¨λλ€λ κ²μ μλ―Έν©λλ€.
μ‘΄μ¬νμ§ μλ SIP νμΌ
νλμ μ μ¬μ νμ μ rootless.confμ μ§μ λ νμΌμ΄ νμ¬ μ‘΄μ¬νμ§ μλ κ²½μ° μμ±λ μ μλ€λ κ²μ
λλ€. μ
μ± μ½λλ μ΄λ₯Ό μ
μ©νμ¬ μμ€ν
μμ μ§μμ±μ μ€μ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ
μ± νλ‘κ·Έλ¨μ΄ rootless.confμ λμ΄λμ΄ μμ§λ§ μ‘΄μ¬νμ§ μλ κ²½μ° /System/Library/LaunchDaemonsμ .plist νμΌμ μμ±ν μ μμ΅λλ€.
com.apple.rootless.install.heritable
Caution
κΆν **
com.apple.rootless.install.heritable**λ SIPλ₯Ό μ°νν μ μκ² ν΄μ€λλ€.
CVE-2019-8561
μμ€ν
μ΄ μ½λ μλͺ
μ κ²μ¦ν ν μ€μΉ ν¨ν€μ§λ₯Ό κ΅μ²΄νλ κ²μ΄ κ°λ₯νλ€λ κ²μ΄ λ°κ²¬λμμ΅λλ€. κ·Έ ν μμ€ν
μ μλ³Έ λμ μ
μ± ν¨ν€μ§λ₯Ό μ€μΉνκ² λ©λλ€. μ΄λ¬ν μμ
μ΄ **system_installd**μ μν΄ μνλμκΈ° λλ¬Έμ SIPλ₯Ό μ°νν μ μκ² λ©λλ€.
CVE-2020β9854
ν¨ν€μ§κ° λ§μ΄νΈλ μ΄λ―Έμ§λ μΈλΆ λλΌμ΄λΈμμ μ€μΉλ κ²½μ° μ€μΉ νλ‘κ·Έλ¨μ ν΄λΉ νμΌ μμ€ν
μμ λ°μ΄λ리λ₯Ό μ€ννκ² λλ©°, SIP λ³΄νΈ μμΉμμ μ€νλμ§ μκ² λ©λλ€. μ΄λ‘ μΈν΄ **system_installd**κ° μμμ λ°μ΄λ리λ₯Ό μ€ννκ² λ©λλ€.
CVE-2021-30892 - Shrootless
μ΄ λΈλ‘κ·Έ κ²μλ¬Όμ μ°κ΅¬μλ€μ macOSμ μμ€ν
λ¬΄κ²°μ± λ³΄νΈ(SIP) λ©μ»€λμ¦μμ βShrootlessβ μ·¨μ½μ μ λ°κ²¬νμ΅λλ€. μ΄ μ·¨μ½μ μ system_installd λ°λͺ¬κ³Ό κ΄λ ¨μ΄ μμΌλ©°, μ΄ λ°λͺ¬μ com.apple.rootless.install.heritable κΆνμ κ°μ§κ³ μμ΄ μμ νλ‘μΈμ€κ° SIPμ νμΌ μμ€ν
μ νμ μ°νν μ μκ² ν΄μ€λλ€.
system_installd λ°λͺ¬μ Appleμ μν΄ μλͺ
λ ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
μ°κ΅¬μλ€μ Apple μλͺ
ν¨ν€μ§(.pkg νμΌ)μ μ€μΉ μ€μ **system_installd**κ° ν¨ν€μ§μ ν¬ν¨λ λͺ¨λ post-install μ€ν¬λ¦½νΈλ₯Ό μ€ννλ€λ κ²μ λ°κ²¬νμ΅λλ€. μ΄λ¬ν μ€ν¬λ¦½νΈλ κΈ°λ³Έ μ
ΈμΈ **zsh**μ μν΄ μ€νλλ©°, μ‘΄μ¬νλ κ²½μ° /etc/zshenv νμΌμμ λͺ
λ Ήμ μλμΌλ‘ μ€νν©λλ€. μ΄ λμμ 곡격μμ μν΄ μ
μ©λ μ μμ΅λλ€: μ
μ± /etc/zshenv νμΌμ μμ±νκ³ system_installdκ° zshλ₯Ό νΈμΆν λ λκΈ°ν¨μΌλ‘μ¨, μ₯μΉμμ μμμ μμ
μ μνν μ μμ΅λλ€.
κ²λ€κ° **/etc/zshenv**λ SIP μ°νλΏλ§ μλλΌ μΌλ°μ μΈ κ³΅κ²© κΈ°λ²μΌλ‘λ μ¬μ©λ μ μλ€λ κ²μ΄ λ°κ²¬λμμ΅λλ€. κ° μ¬μ©μ νλ‘νμλ ~/.zshenv νμΌμ΄ μμΌλ©°, μ΄λ /etc/zshenvμ λμΌνκ² λμνμ§λ§ λ£¨νΈ κΆνμ΄ νμνμ§ μμ΅λλ€. μ΄ νμΌμ μ§μμ± λ©μ»€λμ¦μΌλ‘ μ¬μ©λ μ μμΌλ©°, zshκ° μμλ λλ§λ€ νΈλ¦¬κ±°λκ±°λ κΆν μμΉ λ©μ»€λμ¦μΌλ‘ μ¬μ©λ μ μμ΅λλ€. κ΄λ¦¬ μ¬μ©μκ° sudo -s λλ sudo <command>λ₯Ό μ¬μ©νμ¬ λ£¨νΈλ‘ μμΉνλ©΄ ~/.zshenv νμΌμ΄ νΈλ¦¬κ±°λμ΄ ν¨κ³Όμ μΌλ‘ 루νΈλ‘ μμΉνκ² λ©λλ€.
CVE-2022-22583
CVE-2022-22583μμλ λμΌν system_installd νλ‘μΈμ€κ° μ¬μ ν μ
μ©λ μ μλ€λ κ²μ΄ λ°κ²¬λμμ΅λλ€. μ΄λ post-install μ€ν¬λ¦½νΈλ₯Ό SIPλ‘ λ³΄νΈλ /tmp λ΄μ μμ μ΄λ¦μ ν΄λμ λ£κΈ° λλ¬Έμ
λλ€. λ¬Έμ λ /tmp μ체λ SIPλ‘ λ³΄νΈλμ§ μκΈ° λλ¬Έμ, κ°μ μ΄λ―Έμ§λ₯Ό λ§μ΄νΈν ν μ€μΉ νλ‘κ·Έλ¨μ΄ post-install μ€ν¬λ¦½νΈλ₯Ό κ·Έκ³³μ λ£κ³ , κ°μ μ΄λ―Έμ§λ₯Ό μΈλ§μ΄νΈν λ€μ, λͺ¨λ ν΄λλ₯Ό μ¬μμ±νκ³ payloadλ₯Ό μ€ννκΈ° μν΄ post installation μ€ν¬λ¦½νΈλ₯Ό μΆκ°ν μ μλ€λ κ²μ
λλ€.
fsck_cs μ νΈλ¦¬ν°
**fsck_cs**κ° μ¬λ³Όλ¦ λ§ν¬λ₯Ό λ°λΌκ°λ λ₯λ ₯μΌλ‘ μΈν΄ μ€μν νμΌμ μμμν€λ μ·¨μ½μ μ΄ νμΈλμμ΅λλ€. ꡬ체μ μΌλ‘, 곡격μλ _/dev/diskX_μμ /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist νμΌλ‘μ λ§ν¬λ₯Ό μμ±νμ΅λλ€. _/dev/diskX_μμ **fsck_cs**λ₯Ό μ€ννλ©΄ Info.plistκ° μμλμμ΅λλ€. μ΄ νμΌμ 무결μ±μ μ΄μ 체μ μ SIP(μμ€ν
λ¬΄κ²°μ± λ³΄νΈ)μ νμμ μ΄λ©°, 컀λ νμ₯μ λ‘λλ₯Ό μ μ΄ν©λλ€. μμλλ©΄ SIPμ 컀λ μ μΈ κ΄λ¦¬ λ₯λ ₯μ΄ μμλ©λλ€.
μ΄ μ·¨μ½μ μ μ μ©νκΈ° μν λͺ λ Ήμ:
ln -s /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist /dev/diskX
fsck_cs /dev/diskX 1>&-
touch /Library/Extensions/
reboot
μ΄ μ·¨μ½μ μ μ
μ©μ μ¬κ°ν μν₯μ λ―ΈμΉ©λλ€. Info.plist νμΌμ μΌλ°μ μΌλ‘ 컀λ νμ₯μ λν κΆνμ κ΄λ¦¬νλ μν μ νμ§λ§, λΉν¨μ¨μ μ΄ λ©λλ€. μ¬κΈ°μλ AppleHWAccess.kextμ κ°μ νΉμ νμ₯μ λΈλ리μ€νΈμ μΆκ°ν μ μλ κ²μ΄ ν¬ν¨λ©λλ€. κ²°κ³Όμ μΌλ‘ SIPμ μ μ΄ λ©μ»€λμ¦μ΄ μλνμ§ μκ² λλ©΄, μ΄ νμ₯μ λ‘λν μ μμ΄ μμ€ν
μ RAMμ λν λ¬΄λ¨ μ½κΈ° λ° μ°κΈ° μ κ·Όμ΄ νμ©λ©λλ€.
SIP λ³΄νΈ ν΄λ μμ λ§μ΄νΈνκΈ°
보νΈλ₯Ό μ°ννκΈ° μν΄ SIP λ³΄νΈ ν΄λ μμ μλ‘μ΄ νμΌ μμ€ν μ λ§μ΄νΈνλ κ²μ΄ κ°λ₯νμ΅λλ€.
mkdir evil
# Add contento to the folder
hdiutil create -srcfolder evil evil.dmg
hdiutil attach -mountpoint /System/Library/Snadbox/ evil.dmg
μ κ·Έλ μ΄λ μ°ν (2016)
μμ€ν
μ OSλ₯Ό μ
κ·Έλ μ΄λνκΈ° μν΄ Install macOS Sierra.app λ΄μ μλ² λλ μ€μΉ νλ‘κ·Έλ¨ λμ€ν¬ μ΄λ―Έμ§λ₯Ό λΆν
νλλ‘ μ€μ λμ΄ μμΌλ©°, bless μ νΈλ¦¬ν°λ₯Ό μ¬μ©ν©λλ€. μ¬μ©λ λͺ
λ Ήμ λ€μκ³Ό κ°μ΅λλ€:
/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
μ΄ νλ‘μΈμ€μ 보μμ 곡격μκ° λΆν
μ μ μ
κ·Έλ μ΄λ μ΄λ―Έμ§(InstallESD.dmg)λ₯Ό λ³κ²½νλ©΄ μμλ μ μμ΅λλ€. μ΄ μ λ΅μ λμ λ‘λ(dyld)λ₯Ό μ
μ± λ²μ (libBaseIA.dylib)μΌλ‘ λ체νλ κ²μ ν¬ν¨ν©λλ€. μ΄ κ΅μ²΄λ μ€μΉ νλ‘κ·Έλ¨μ΄ μμλ λ 곡격μμ μ½λκ° μ€νλλλ‘ ν©λλ€.
곡격μμ μ½λλ μ
κ·Έλ μ΄λ κ³Όμ μμ μ μ΄λ₯Ό μ»κ³ , μ€μΉ νλ‘κ·Έλ¨μ λν μμ€ν
μ μ λ’°λ₯Ό μ
μ©ν©λλ€. 곡격μ InstallESD.dmg μ΄λ―Έμ§λ₯Ό λ©μλ μ€μμ¦λ§μ ν΅ν΄ λ³κ²½νμ¬ μ§νλλ©°, νΉν extractBootBits λ©μλλ₯Ό λͺ©νλ‘ ν©λλ€. μ΄λ₯Ό ν΅ν΄ λμ€ν¬ μ΄λ―Έμ§κ° μ¬μ©λκΈ° μ μ μ
μ± μ½λλ₯Ό μ£Όμ
ν μ μμ΅λλ€.
λν, InstallESD.dmg λ΄μλ μ
κ·Έλ μ΄λ μ½λμ λ£¨νΈ νμΌ μμ€ν
μν μ νλ BaseSystem.dmgκ° μμ΅λλ€. μ¬κΈ°μ λμ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ£Όμ
νλ©΄ μ
μ± μ½λκ° OS μμ€ νμΌμ λ³κ²½ν μ μλ νλ‘μΈμ€ λ΄μμ μλν μ μμ΄ μμ€ν
μμμ κ°λ₯μ±μ΄ ν¬κ² μ¦κ°ν©λλ€.
systemmigrationd (2023)
DEF CON 31μμμ μ΄ λ°νμμλ systemmigrationd (SIPλ₯Ό μ°νν μ μλ)κ° bash λ° perl μ€ν¬λ¦½νΈλ₯Ό μ€ννλ λ°©λ²μ΄ 보μ¬μ§λ©°, μ΄λ env λ³μ BASH_ENV λ° **PERL5OPT**λ₯Ό ν΅ν΄ μ
μ©λ μ μμ΅λλ€.
CVE-2023-42860
μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμ μμΈν μ€λͺ
λ λ°μ κ°μ΄, InstallAssistant.pkg ν¨ν€μ§μ postinstall μ€ν¬λ¦½νΈκ° μ€νλκ³ μμμ΅λλ€:
/usr/bin/chflagsΒ -hΒ norestrictedΒ "${SHARED_SUPPORT_PATH}/SharedSupport.dmg"
and it was possible to create a symlink in ${SHARED_SUPPORT_PATH}/SharedSupport.dmg that would allow a user to unrestrict any file, bypassing SIP protection.
com.apple.rootless.install
Caution
The entitlement
com.apple.rootless.installallows to bypass SIP
The entitlement com.apple.rootless.install is known to bypass System Integrity Protection (SIP) on macOS. This was notably mentioned in relation to CVE-2022-26712.
In this specific case, the system XPC service located at /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc possesses this entitlement. This allows the related process to circumvent SIP constraints. Furthermore, this service notably presents a method that permits the movement of files without enforcing any security measures.
Sealed System Snapshots
Sealed System Snapshotsλ **macOS Big Sur (macOS 11)**μμ Appleμ΄ λμ ν κΈ°λ₯μΌλ‘, System Integrity Protection (SIP) λ©μ»€λμ¦μ μΌνμΌλ‘ μΆκ°μ μΈ λ³΄μ λ° μμ€ν μμ μ±μ μ 곡ν©λλ€. μ΄λ€μ λ³Έμ§μ μΌλ‘ μμ€ν λ³Όλ₯¨μ μ½κΈ° μ μ© λ²μ μ λλ€.
λ€μμ λ μμΈν μ€λͺ μ λλ€:
- λΆλ³ μμ€ν : Sealed System Snapshotsλ macOS μμ€ν λ³Όλ₯¨μ βλΆλ³βμΌλ‘ λ§λ€μ΄ μμ ν μ μκ² ν©λλ€. μ΄λ 보μμ΄λ μμ€ν μμ μ±μ μνν μ μλ λ¬΄λ¨ λλ μ°λ°μ μΈ λ³κ²½μ λ°©μ§ν©λλ€.
- μμ€ν μννΈμ¨μ΄ μ λ°μ΄νΈ: macOS μ λ°μ΄νΈλ μ κ·Έλ μ΄λλ₯Ό μ€μΉν λ, macOSλ μλ‘μ΄ μμ€ν μ€λ μ·μ μμ±ν©λλ€. κ·Έλ° λ€μ macOS μμ λ³Όλ₯¨μ **APFS (Apple File System)**λ₯Ό μ¬μ©νμ¬ μ΄ μλ‘μ΄ μ€λ μ·μΌλ‘ μ νν©λλ€. μ λ°μ΄νΈ μ μ© κ³Όμ μ΄ λ μμ νκ³ μ λ’°ν μ μκ² λλ©°, μ λ°μ΄νΈ μ€ λ¬Έμ κ° λ°μν κ²½μ° μμ€ν μ΄ νμ μ΄μ μ€λ μ·μΌλ‘ λλ릴 μ μμ΅λλ€.
- λ°μ΄ν° λΆλ¦¬: macOS Catalinaμμ λμ λ λ°μ΄ν°μ μμ€ν λ³Όλ₯¨ λΆλ¦¬ κ°λ κ³Ό ν¨κ», Sealed System Snapshot κΈ°λ₯μ λͺ¨λ λ°μ΄ν°μ μ€μ μ΄ λ³λμ βDataβ λ³Όλ₯¨μ μ μ₯λλλ‘ λ³΄μ₯ν©λλ€. μ΄ λΆλ¦¬λ λ°μ΄ν°λ₯Ό μμ€ν κ³Ό λ 립μ μΌλ‘ λ§λ€μ΄ μμ€ν μ λ°μ΄νΈ κ³Όμ μ λ¨μννκ³ μμ€ν 보μμ κ°νν©λλ€.
μ΄ μ€λ μ·μ macOSμ μν΄ μλμΌλ‘ κ΄λ¦¬λλ©°, APFSμ κ³΅κ° κ³΅μ κΈ°λ₯ λλΆμ λμ€ν¬μ μΆκ° 곡κ°μ μ°¨μ§νμ§ μμ΅λλ€. λν, μ΄λ¬ν μ€λ μ·μ μ 체 μμ€ν μ μ¬μ©μ μ κ·Ό κ°λ₯ν λ°±μ μΈ Time Machine snapshotsμλ λ€λ₯΄λ€λ μ λ μ€μν©λλ€.
Check Snapshots
The command diskutil apfs list lists the details of the APFS volumes and their layout:
+-- 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)
In the previous output itβs possible to see that user-accessible locations are mounted under /System/Volumes/Data.
Moreover, macOS System volume snapshot is mounted in / and itβs sealed (cryptographically signed by the OS). So, if SIP is bypassed and modifies it, the OS wonβt boot anymore.
Itβs also possible to verify that seal is enabled by running:
csrutil authenticated-root status
Authenticated Root status: enabled
λν, μ€λ μ· λμ€ν¬λ μ½κΈ° μ μ©μΌλ‘ λ§μ΄νΈλ©λλ€:
mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


