From 701c15b1dc07d60d6f6dfb3339ca77d17ef80f7c Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 7 Apr 2025 02:24:42 +0000 Subject: [PATCH] Translated ['src/macos-hardening/macos-security-and-privilege-escalation --- src/SUMMARY.md | 1 - .../macos-tcc/README.md | 50 +++++++++---------- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index cac3fa3dc..5835e6c1e 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -288,7 +288,6 @@ - [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md) - [RDPexec](windows-hardening/lateral-movement/rdpexec.md) - [SCMexec](windows-hardening/lateral-movement/scmexec.md) - - [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md) - [WinRM](windows-hardening/lateral-movement/winrm.md) - [WmiExec](windows-hardening/lateral-movement/wmiexec.md) - [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]() diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md index 7369f6e71..5de51773b 100644 --- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md +++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md @@ -4,17 +4,17 @@ ## **기본 정보** -**TCC (투명성, 동의 및 제어)**는 애플리케이션 권한을 규제하는 데 중점을 둔 보안 프로토콜입니다. 그 주요 역할은 **위치 서비스, 연락처, 사진, 마이크, 카메라, 접근성 및 전체 디스크 접근**과 같은 민감한 기능을 보호하는 것입니다. TCC는 이러한 요소에 대한 앱 접근을 허용하기 전에 명시적인 사용자 동의를 요구함으로써 개인 정보 보호 및 사용자 데이터에 대한 제어를 강화합니다. +**TCC (투명성, 동의 및 제어)**는 애플리케이션 권한을 규제하는 데 중점을 둔 보안 프로토콜입니다. 그 주요 역할은 **위치 서비스, 연락처, 사진, 마이크, 카메라, 접근성 및 전체 디스크 접근**과 같은 민감한 기능을 보호하는 것입니다. TCC는 이러한 요소에 대한 앱 접근을 허용하기 전에 명시적인 사용자 동의를 요구함으로써 개인 정보 보호와 사용자 데이터에 대한 제어를 강화합니다. -사용자는 애플리케이션이 보호된 기능에 대한 접근을 요청할 때 TCC를 경험합니다. 이는 사용자가 **접근을 승인하거나 거부**할 수 있는 프롬프트를 통해 표시됩니다. 또한, TCC는 특정 파일에 대한 접근을 부여하기 위해 **파일을 애플리케이션으로 드래그 앤 드롭**하는 것과 같은 직접적인 사용자 행동을 수용하여, 애플리케이션이 명시적으로 허용된 것에만 접근할 수 있도록 보장합니다. +사용자는 애플리케이션이 보호된 기능에 대한 접근을 요청할 때 TCC를 경험하게 됩니다. 이는 사용자가 **접근을 승인하거나 거부**할 수 있는 프롬프트를 통해 표시됩니다. 또한, TCC는 **파일을 애플리케이션으로 드래그 앤 드롭**하는 것과 같은 직접적인 사용자 행동을 수용하여 특정 파일에 대한 접근을 허용하며, 애플리케이션이 명시적으로 허용된 것에만 접근할 수 있도록 보장합니다. ![TCC 프롬프트의 예](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855) **TCC**는 `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`에 위치한 **데몬**에 의해 처리되며, `/System/Library/LaunchDaemons/com.apple.tccd.system.plist`에서 구성됩니다 (mach 서비스 `com.apple.tccd.system` 등록). -로그인한 사용자마다 실행되는 **사용자 모드 tccd**가 `/System/Library/LaunchAgents/com.apple.tccd.plist`에 정의되어 있으며, mach 서비스 `com.apple.tccd` 및 `com.apple.usernotifications.delegate.com.apple.tccd`를 등록합니다. +로그인한 사용자마다 실행되는 **사용자 모드 tccd**가 `/System/Library/LaunchAgents/com.apple.tccd.plist`에 정의되어 있으며, mach 서비스 `com.apple.tccd`와 `com.apple.usernotifications.delegate.com.apple.tccd`를 등록합니다. -여기에서 시스템 및 사용자로서 실행 중인 tccd를 볼 수 있습니다: +여기에서 시스템과 사용자로서 실행 중인 tccd를 볼 수 있습니다: ```bash ps -ef | grep tcc 0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system @@ -28,7 +28,7 @@ ps -ef | grep tcc - **`/Library/Application Support/com.apple.TCC/TCC.db`**에 있는 시스템 전체 데이터베이스. - 이 데이터베이스는 **SIP 보호**되어 있어, SIP 우회만이 여기에 쓸 수 있습니다. -- 사용자 TCC 데이터베이스 **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**는 사용자별 설정을 위한 것입니다. +- 사용자 TCC 데이터베이스는 **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**로, 사용자별 설정을 위한 것입니다. - 이 데이터베이스는 보호되어 있어, Full Disk Access와 같은 높은 TCC 권한을 가진 프로세스만 쓸 수 있습니다(하지만 SIP로 보호되지는 않습니다). > [!WARNING] @@ -54,7 +54,7 @@ ps -ef | grep tcc > com.apple.rootless.storage.TCC > ``` > -> 그러나 사용자는 **`tccutil`** 명령줄 유틸리티로 규칙을 **삭제하거나 쿼리**할 수 있습니다. +> 그러나 사용자는 **`tccutil`** 명령줄 유틸리티로 **규칙을 삭제하거나 쿼리**할 수 있습니다. #### 데이터베이스 쿼리 @@ -171,7 +171,7 @@ echo "X'$REQ_HEX'" ``` - 더 많은 정보는 **다른 필드**에 대한 [**이 블로그 게시물**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)를 확인하세요. -또한 `System Preferences --> Security & Privacy --> Privacy --> Files and Folders`에서 앱에 대해 **이미 부여된 권한**을 확인할 수 있습니다. +`System Preferences --> Security & Privacy --> Privacy --> Files and Folders`에서 앱에 **이미 부여된 권한**을 확인할 수도 있습니다. > [!TIP] > 사용자는 **`tccutil`**을 사용하여 **규칙을 삭제하거나 쿼리**할 수 있습니다. @@ -203,12 +203,12 @@ csreq -t -r /tmp/telegram_csreq.bin ### 권한 및 TCC 권한 -앱은 **단순히** **요청**하고 **접근 권한을 부여받는 것**만으로는 충분하지 않으며, **관련 권한을 가져야** 합니다.\ -예를 들어 **Telegram**은 **카메라에 접근하기 위해** `com.apple.security.device.camera` 권한을 가지고 있습니다. 이 **권한이 없는 앱**은 카메라에 접근할 수 **없으며** (사용자에게 권한 요청도 하지 않습니다). +앱은 **단순히** **요청**하고 **접근 권한을 부여받는 것**만으로는 부족하며, **관련 권한을 가져야** 합니다.\ +예를 들어 **Telegram**은 **카메라에 접근하기 위해** `com.apple.security.device.camera` 권한을 가지고 있습니다. 이 **권한이 없는 앱**은 카메라에 접근할 수 **없으며** (사용자에게 권한을 요청하지도 않습니다). 그러나 앱이 `~/Desktop`, `~/Downloads` 및 `~/Documents`와 같은 **특정 사용자 폴더에 접근하기 위해서는** 특정 **권한이 필요하지 않습니다.** 시스템은 접근을 투명하게 처리하고 **필요에 따라 사용자에게 요청**합니다. -Apple의 앱은 **프롬프트를 생성하지 않습니다.** 이들은 **권한** 목록에 **미리 부여된 권한**을 포함하고 있어, **결코 팝업을 생성하지 않으며**, **TCC 데이터베이스**에 나타나지 않습니다. 예를 들어: +Apple의 앱은 **프롬프트를 생성하지 않습니다**. 이들은 **권한** 목록에 **미리 부여된 권한**을 포함하고 있어, **결코 팝업을 생성하지 않으며**, **TCC 데이터베이스**에 나타나지 않습니다. 예를 들어: ```bash codesign -dv --entitlements :- /System/Applications/Calendar.app [...] @@ -222,7 +222,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app 이것은 Calendar가 사용자에게 알림, 캘린더 및 주소록에 접근할 것을 요청하지 않도록 합니다. > [!TIP] -> 권한에 대한 공식 문서 외에도 [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)에서 권한에 대한 비공식적인 **흥미로운 정보를 찾는 것도 가능합니다**. +> 권한에 대한 공식 문서 외에도 **다음에서 비공식적인 흥미로운 정보를 찾을 수 있습니다** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl) 일부 TCC 권한은: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... 모든 권한을 정의하는 공개 목록은 없지만 이 [**알려진 목록**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service)을 확인할 수 있습니다. @@ -234,7 +234,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app ### 사용자 의도 / com.apple.macl -앞서 언급했듯이, **파일을 드래그 앤 드롭하여 앱에 접근을 부여하는 것이 가능합니다**. 이 접근은 어떤 TCC 데이터베이스에도 명시되지 않지만 **파일의 확장된 속성**으로 저장됩니다. 이 속성은 허용된 앱의 **UUID**를 **저장합니다**: +앞서 언급했듯이, **파일을 드래그 앤 드롭하여 앱에 접근을 부여할 수 있습니다**. 이 접근은 어떤 TCC 데이터베이스에도 명시되지 않지만 **파일의 확장된 속성**으로 저장됩니다. 이 속성은 허용된 앱의 **UUID**를 저장합니다: ```bash xattr Desktop/private.txt com.apple.macl @@ -252,15 +252,15 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3 > [!NOTE] > **`com.apple.macl`** 속성이 tccd가 아닌 **Sandbox**에 의해 관리된다는 점이 흥미롭습니다. > -> 또한, 컴퓨터에서 앱의 UUID를 허용하는 파일을 다른 컴퓨터로 이동하면, 동일한 앱이 다른 UID를 가지기 때문에 해당 앱에 대한 접근 권한이 부여되지 않습니다. +> 또한, 컴퓨터에서 앱의 UUID를 허용하는 파일을 다른 컴퓨터로 이동하면, 동일한 앱이 다른 UID를 가지기 때문에 해당 앱에 대한 접근 권한이 부여되지 않는다는 점에 유의하세요. -확장 속성 `com.apple.macl` **는** 다른 확장 속성과 달리 **SIP에 의해 보호되기 때문에** 지울 수 없습니다. 그러나 [**이 게시물에서 설명된 바와 같이**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), 파일을 **압축**하고 **삭제**한 후 **압축 해제**하면 이를 비활성화할 수 있습니다. +확장 속성 `com.apple.macl` **는** 다른 확장 속성과 달리 **SIP에 의해 보호되기 때문에** **지울 수 없습니다**. 그러나 [**이 게시물에서 설명된 바와 같이**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), 파일을 **압축**하고 **삭제**한 후 **압축 해제**하면 이를 비활성화할 수 있습니다. ## TCC Privesc & Bypasses ### TCC에 삽입 -어떤 시점에서 TCC 데이터베이스에 대한 쓰기 접근 권한을 얻으면 다음과 같은 방법을 사용하여 항목을 추가할 수 있습니다(주석을 제거하세요): +어느 시점에서 TCC 데이터베이스에 대한 쓰기 접근 권한을 얻으면 다음과 같은 방법을 사용하여 항목을 추가할 수 있습니다(주석을 제거하세요):
@@ -331,7 +331,7 @@ macos-apple-events.md 이 경우 귀하의 앱은 **`com.apple.Finder`**에 대한 **`kTCCServiceAppleEvents`** 권한이 필요합니다. {{#tabs}} -{{#tab name="사용자의 TCC.db 훔치기"}} +{{#tab name="사용자 TCC.db 훔치기"}} ```applescript # This AppleScript will copy the system TCC database into /tmp osascript< -**Script Editor 앱**에서도 같은 일이 발생합니다. Finder를 제어할 수 있지만, AppleScript를 사용하여 스크립트를 실행하도록 강제할 수는 없습니다. +**Script Editor 앱**에서도 동일한 일이 발생합니다. Finder를 제어할 수 있지만 AppleScript를 사용하여 스크립트를 실행하도록 강제할 수는 없습니다. ### Automation (SE) to some TCC @@ -446,7 +446,7 @@ rm "$HOME/Desktop/file" **`System Events`**에서의 자동화 + 접근성 (**`kTCCServicePostEvent`**)은 **프로세스에 키 입력을 전송**할 수 있게 해줍니다. 이렇게 하면 Finder를 악용하여 사용자의 TCC.db를 변경하거나 임의의 앱에 FDA를 부여할 수 있습니다(비밀번호 입력이 필요할 수 있습니다). -Finder가 사용자의 TCC.db를 덮어쓰는 예: +사용자의 TCC.db를 덮어쓰는 Finder 예: ```applescript -- store the TCC.db file to copy in /tmp osascript <