macOS Dangerous Entitlements & TCC perms

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 μ§€μ›ν•˜κΈ°

Warning

**com.apple**둜 μ‹œμž‘ν•˜λŠ” κΆŒν•œμ€ 제3μžμ—κ²Œ μ œκ³΅λ˜μ§€ μ•ŠμœΌλ©°, 였직 Apple만 λΆ€μ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

High

com.apple.rootless.install.heritable

κΆŒν•œ **com.apple.rootless.install.heritable**λŠ” SIPλ₯Ό μš°νšŒν•  수 있게 ν•΄μ€λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.rootless.install

κΆŒν•œ **com.apple.rootless.install**은 SIPλ₯Ό μš°νšŒν•  수 있게 ν•΄μ€λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.system-task-ports (이전 이름: task_for_pid-allow)

이 κΆŒν•œμ€ 컀널을 μ œμ™Έν•œ λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ˜ μž‘μ—… 포트λ₯Ό 얻을 수 있게 ν•΄μ€λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.security.get-task-allow

이 κΆŒν•œμ€ com.apple.security.cs.debugger κΆŒν•œμ„ κ°€μ§„ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ 이 κΆŒν•œμ„ κ°€μ§„ λ°”μ΄λ„ˆλ¦¬λ‘œ μ‹€ν–‰λœ ν”„λ‘œμ„ΈμŠ€μ˜ μž‘μ—… 포트λ₯Ό μ–»κ³  μ½”λ“œλ₯Ό μ£Όμž…ν•  수 있게 ν•΄μ€λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.security.cs.debugger

디버깅 도ꡬ κΆŒν•œμ„ κ°€μ§„ 앱은 task_for_pid()λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ„œλͺ…λ˜μ§€ μ•Šμ€ 제3자 μ•±μ˜ μœ νš¨ν•œ μž‘μ—… 포트λ₯Ό 검색할 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 디버깅 도ꡬ κΆŒν•œμ΄ μžˆμ–΄λ„, λ””λ²„κ±°λŠ” Get Task Allow κΆŒν•œμ΄ μ—†λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μž‘μ—… 포트λ₯Ό 얻을 수 μ—†μŠ΅λ‹ˆλ‹€, λ”°λΌμ„œ μ‹œμŠ€ν…œ 무결성 λ³΄ν˜Έμ— μ˜ν•΄ λ³΄ν˜Έλ©λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.security.cs.disable-library-validation

이 κΆŒν•œμ€ Apple에 μ˜ν•΄ μ„œλͺ…λ˜μ§€ μ•Šκ±°λ‚˜ 메인 μ‹€ν–‰ 파일과 λ™μΌν•œ νŒ€ ID둜 μ„œλͺ…λ˜μ§€ μ•Šμ€ ν”„λ ˆμž„μ›Œν¬, ν”ŒλŸ¬κ·ΈμΈ λ˜λŠ” 라이브러리λ₯Ό λ‘œλ“œν•  수 있게 ν•΄μ€λ‹ˆλ‹€. λ”°λΌμ„œ κ³΅κ²©μžλŠ” μž„μ˜μ˜ 라이브러리 λ‘œλ“œλ₯Ό μ•…μš©ν•˜μ—¬ μ½”λ“œλ₯Ό μ£Όμž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.private.security.clear-library-validation

이 κΆŒν•œμ€ **com.apple.security.cs.disable-library-validation**와 맀우 μœ μ‚¬ν•˜μ§€λ§Œ, μ§μ ‘μ μœΌλ‘œ 라이브러리 검증을 λΉ„ν™œμ„±ν™”ν•˜λŠ” λŒ€μ‹ , ν”„λ‘œμ„ΈμŠ€κ°€ csops μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ ν˜ΈμΆœν•˜μ—¬ 이λ₯Ό λΉ„ν™œμ„±ν™”ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.
μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.security.cs.allow-dyld-environment-variables

이 κΆŒν•œμ€ DYLD ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 있게 ν•΄μ£Όλ©°, μ΄λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ™€ μ½”λ“œλ₯Ό μ£Όμž…ν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.private.tcc.manager λ˜λŠ” com.apple.rootless.storage.TCC

이 λΈ”λ‘œκ·Έμ— λ”°λ₯΄λ©΄ 및 이 λΈ”λ‘œκ·Έμ— λ”°λ₯΄λ©΄, 이 κΆŒν•œμ€ TCC λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μˆ˜μ •ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.

system.install.apple-software 및 system.install.apple-software.standar-user

이 κΆŒν•œμ€ μ‚¬μš©μžμ—κ²Œ κΆŒν•œ μš”μ²­ 없이 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€μΉ˜ν•  수 있게 ν•΄μ£Όλ©°, μ΄λŠ” κΆŒν•œ μƒμŠΉμ— μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

com.apple.private.security.kext-management

컀널에 컀널 ν™•μž₯을 λ‘œλ“œν•˜λ„λ‘ μš”μ²­ν•˜λŠ” 데 ν•„μš”ν•œ κΆŒν•œμž…λ‹ˆλ‹€.

com.apple.private.icloud-account-access

κΆŒν•œ **com.apple.private.icloud-account-access**λ₯Ό 톡해 com.apple.iCloudHelper XPC μ„œλΉ„μŠ€μ™€ 톡신할 수 있으며, μ΄λŠ” iCloud 토큰을 μ œκ³΅ν•©λ‹ˆλ‹€.

iMovie와 GaragebandλŠ” 이 κΆŒν•œμ„ κ°€μ§€κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

이 κΆŒν•œμ„ 톡해 icloud 토큰을 μ–»λŠ” exploit에 λŒ€ν•œ 더 λ§Žμ€ μ •λ³΄λŠ” λ‹€μŒ 강연을 ν™•μΈν•˜μ„Έμš”: #OBTS v5.0: β€œWhat Happens on your Mac, Stays on Apple’s iCloud?!” - Wojciech Regula

com.apple.private.tcc.manager.check-by-audit-token

TODO: 이 κΆŒν•œμ΄ 무엇을 ν—ˆμš©ν•˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

com.apple.private.apfs.revert-to-snapshot

TODO: 이 λ³΄κ³ μ„œμ—μ„œ μž¬λΆ€νŒ… ν›„ SSV 보호 μ½˜ν…μΈ λ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆλ‹€κ³  μ–ΈκΈ‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 방법을 μ•„μ‹ λ‹€λ©΄ PR을 λ³΄λ‚΄μ£Όμ„Έμš”!

com.apple.private.apfs.create-sealed-snapshot

TODO: 이 λ³΄κ³ μ„œμ—μ„œ μž¬λΆ€νŒ… ν›„ SSV 보호 μ½˜ν…μΈ λ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆλ‹€κ³  μ–ΈκΈ‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 방법을 μ•„μ‹ λ‹€λ©΄ PR을 λ³΄λ‚΄μ£Όμ„Έμš”!

keychain-access-groups

이 κΆŒν•œμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ ‘κ·Όν•  수 μžˆλŠ” 킀체인 그룹을 λ‚˜μ—΄ν•©λ‹ˆλ‹€:

<key>keychain-access-groups</key>
<array>
<string>ichat</string>
<string>apple</string>
<string>appleaccount</string>
<string>InternetAccounts</string>
<string>IMCore</string>
</array>

kTCCServiceSystemPolicyAllFiles

전체 λ””μŠ€ν¬ μ ‘κ·Ό κΆŒν•œμ„ λΆ€μ—¬ν•˜λ©°, TCCμ—μ„œ κ°€μ§ˆ 수 μžˆλŠ” κ°€μž₯ 높은 κΆŒν•œ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

kTCCServiceAppleEvents

앱이 μž‘μ—… μžλ™ν™”μ— 일반적으둜 μ‚¬μš©λ˜λŠ” λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 이벀트λ₯Ό 보낼 수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€. λ‹€λ₯Έ 앱을 μ œμ–΄ν•¨μœΌλ‘œμ¨, μ΄λŸ¬ν•œ λ‹€λ₯Έ 앱에 λΆ€μ—¬λœ κΆŒν•œμ„ μ•…μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μ‚¬μš©μžμ—κ²Œ λΉ„λ°€λ²ˆν˜Έλ₯Ό μš”μ²­ν•˜λ„λ‘ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€:

osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'

Or making them perform μž„μ˜μ˜ μž‘μ—….

kTCCServiceEndpointSecurityClient

μ‚¬μš©μžμ˜ TCC λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ“°κΈ°λ₯Ό ν—ˆμš©ν•˜λŠ” λ“± μ—¬λŸ¬ κΆŒν•œμ„ ν—ˆμš©ν•©λ‹ˆλ‹€.

kTCCServiceSystemPolicySysAdminFiles

μ‚¬μš©μžμ˜ ν™ˆ 폴더 경둜λ₯Ό λ³€κ²½ν•˜λŠ” NFSHomeDirectory 속성을 λ³€κ²½ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•˜λ©°, λ”°λΌμ„œ TCCλ₯Ό μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

kTCCServiceSystemPolicyAppBundles

μ•± λ²ˆλ“€(μ•±.app λ‚΄λΆ€) λ‚΄μ˜ νŒŒμΌμ„ μˆ˜μ •ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•˜λ©°, μ΄λŠ” 기본적으둜 κΈˆμ§€λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

이 μ ‘κ·Ό κΆŒν•œμ„ κ°€μ§„ μ‚¬μš©μžλ₯Ό 확인할 수 μžˆλŠ” 방법은 μ‹œμŠ€ν…œ μ„€μ • > κ°œμΈμ •λ³΄ 보호 및 λ³΄μ•ˆ > _μ•± 관리_μž…λ‹ˆλ‹€.

kTCCServiceAccessibility

ν”„λ‘œμ„ΈμŠ€λŠ” macOS μ ‘κ·Όμ„± κΈ°λŠ₯을 μ•…μš©ν•  수 있으며, 예λ₯Ό λ“€μ–΄ ν‚€ μž…λ ₯을 λˆ„λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ Finder와 같은 앱을 μ œμ–΄ν•  수 μžˆλŠ” μ ‘κ·Ό κΆŒν•œμ„ μš”μ²­ν•˜κ³  이 κΆŒν•œμœΌλ‘œ λŒ€ν™” μƒμžλ₯Ό μŠΉμΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Medium

com.apple.security.cs.allow-jit

이 κΆŒν•œμ€ mmap() μ‹œμŠ€ν…œ ν•¨μˆ˜μ— MAP_JIT ν”Œλž˜κ·Έλ₯Ό μ „λ‹¬ν•˜μ—¬ μ“°κΈ° κ°€λŠ₯ν•˜κ³  μ‹€ν–‰ κ°€λŠ₯ν•œ λ©”λͺ¨λ¦¬λ₯Ό 생성할 수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

com.apple.security.cs.allow-unsigned-executable-memory

이 κΆŒν•œμ€ C μ½”λ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œν•˜κ±°λ‚˜ νŒ¨μΉ˜ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•˜λ©°, 였래된 NSCreateObjectFileImageFromMemory (근본적으둜 μ•ˆμ „ν•˜μ§€ μ•ŠμŒ)λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ DVDPlayback ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

Caution

이 κΆŒν•œμ„ ν¬ν•¨ν•˜λ©΄ λ©”λͺ¨λ¦¬ μ•ˆμ „ν•˜μ§€ μ•Šμ€ μ½”λ“œ μ–Έμ–΄μ—μ„œ 일반적인 취약점에 앱이 λ…ΈμΆœλ©λ‹ˆλ‹€. 앱이 이 μ˜ˆμ™Έκ°€ ν•„μš”ν•œμ§€ μ‹ μ€‘ν•˜κ²Œ κ³ λ €ν•˜μ„Έμš”.

com.apple.security.cs.disable-executable-page-protection

이 κΆŒν•œμ€ λ””μŠ€ν¬μ— μžˆλŠ” μžμ‹ μ˜ μ‹€ν–‰ 파일의 μ„Ήμ…˜μ„ μˆ˜μ •ν•˜μ—¬ κ°•μ œλ‘œ μ’…λ£Œν•  수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” μ—¬κΈ°λ₯Ό ν™•μΈν•˜μ„Έμš”.

Caution

Disable Executable Memory Protection EntitlementλŠ” μ•±μ—μ„œ κΈ°λ³Έ λ³΄μ•ˆ 보호 κΈ°λŠ₯을 μ œκ±°ν•˜λŠ” 극단적인 κΆŒν•œμœΌλ‘œ, κ³΅κ²©μžκ°€ 탐지 없이 μ•±μ˜ μ‹€ν–‰ μ½”λ“œλ₯Ό μž¬μž‘μ„±ν•  수 있게 ν•©λ‹ˆλ‹€. κ°€λŠ₯ν•˜λ©΄ 더 쒁은 κΆŒν•œμ„ μ„ ν˜Έν•˜μ„Έμš”.

com.apple.security.cs.allow-relative-library-loads

TODO

com.apple.private.nullfs_allow

이 κΆŒν•œμ€ nullfs 파일 μ‹œμŠ€ν…œμ„ λ§ˆμš΄νŠΈν•  수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€(기본적으둜 κΈˆμ§€λ¨). 도ꡬ: mount_nullfs.

kTCCServiceAll

이 λΈ”λ‘œκ·Έ κ²Œμ‹œλ¬Όμ— λ”°λ₯΄λ©΄, 이 TCC κΆŒν•œμ€ 일반적으둜 λ‹€μŒ ν˜•μ‹μœΌλ‘œ λ°œκ²¬λ©λ‹ˆλ‹€:

[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll

ν”„λ‘œμ„ΈμŠ€κ°€ λͺ¨λ“  TCC κΆŒν•œμ„ μš”μ²­ν•˜λ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€.

kTCCServicePostEvent

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 μ§€μ›ν•˜κΈ°