macOS 中四类 TCC BYPASS 绕过案例分析
一、前言 TCC 由 Apple 于 2012 年在 macOS Mountain Lion 上推出,其主要目的是帮助用户配置其应用的隐私设置,当用户引应用请求类型在 TCC 数据库中有记录,则会通过TCC数据库的校验来进行判断是否通过,如果没有则会向用户进行提示申请对应的访问权限。 同时macOS在对用户隐私保护的同时,TCC的保护是其中一个比较重要的点,更新了众多的缓解措施及预防手段。 二、结构 用户通常在 macOS 中的"系统偏好设置"下对其进行管理(系统偏好设置 > 隐私与安全性) 当应用试图执行对隐私访问的行为时,则会触发用户授权,当用户授权之后则会在打开对应的控制开关。 而当系统启动之后,在系统进程中则会出现两个进程,分别以root权限运行的和当前用户权限运行的同一可执行文件,即是用于管控隐私权限的TCC守护进程。 守护进程主要负责处理应用程序对系统资源的访问权限控制,而它会通过访问或者修改如下对象数据库文件来记录用户应用程序的相关隐私特权。 **用户特定数据库:**包含仅适用于特定用户配置文件的存储权限类型;它保存在~/Library/Application Support/com.apple.TCC/TCC.db下,拥有该配置文件的用户可以访问; 系统范围的数据库:包含适用于系统级别的存储权限类型;它保存在 /Library/Application Support/com.apple.TCC/TCC.db下。 macOS系统中通过codesign命令查看目标应用或者可执行文件的签名或者权限。 fmyy@Macbook_M1 UserFrameworks % codesign -dv --entitlements - /System/Library/PrivateFrameworks/TCC.framework/Support/tccd Executable=/System/Library/PrivateFrameworks/TCC.framework/Support/tccd Identifier=com.apple.tccd Format=Mach-O universal (x86_64 arm64e) CodeDirectory v=20400 size=6055 flags=0x0(none) hashes=179+7 location=embedded Platform identifier=15 Signature size=4442 Signed Time=Feb 10, 2024 at 20:26:27 Info.plist entries=13 TeamIdentifier=not set Sealed Resources=none Internal requirements count=1 size=64 ...... [Key] com....