利用ssh绕过macOS Majave的用户保护机制
字数 1214 2025-08-27 12:33:23
macOS Mojave 用户保护机制绕过分析与防护指南
1. Mojave 用户保护机制概述
macOS Mojave (10.14) 引入了一项重要的安全特性 - 用户数据保护机制。该机制要求应用在访问特定敏感资源时必须获得用户明确授权,旨在防止未经授权的用户数据访问。
1.1 受保护的资源
以下用户文件夹默认受到保护,需要授权才能访问:
- Mail(邮件数据)
- Messages(消息数据)
- Cookies(浏览器Cookie)
- Suggestions(建议数据)
- Safari(Safari浏览器数据)
1.2 授权机制
用户可以通过以下路径授权应用访问受保护资源:
系统偏好设置 > 安全性与隐私 > 隐私 > 完全磁盘访问权限
2. 保护机制的绕过方法
研究发现Mojave的用户保护机制存在重大设计缺陷,可通过SSH方式绕过。
2.1 绕过原理
- 访问控制基于请求位置而非请求者:系统仅检查请求是否来自特定文件夹,而不验证请求者的身份或权限
- SSH例外:通过SSH登录的用户可以不受限制地访问受保护文件夹,即使Terminal未被加入完全磁盘访问权限列表
2.2 复现步骤
- 获取目标系统的管理员凭证
- 通过SSH远程登录目标账户
ssh username@target_ip - 直接访问受保护文件夹(如Safari)
cd ~/Library/Safari ls - 读取敏感文件(如LastSession.plist获取浏览器最后会话信息)
3. 保护机制的其他缺陷
3.1 对话框疲劳(Dialog Fatigue)
- 频繁弹出的授权请求导致用户习惯性点击"允许"
- 恶意软件可借此获取授权
3.2 通用白名单(Universal Whitelisting)
- 应用一旦获得完全磁盘访问权限,即可访问所有受保护资源
- 系统应用(如Script Editor、Automator、Terminal)被授权后可能被恶意利用
4. 安全检测与防护措施
4.1 检测已授权应用
查看完全磁盘访问权限列表:
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'SELECT * from access' | grep kTCCServiceSystemPolicyAllFiles
注意:执行此命令需要Terminal已被授权,否则可通过SSH绕过执行。
4.2 防护SSH绕过
- 通过SSH登录并尝试访问受保护文件夹
- 打开
系统偏好设置 > 安全性与隐私 > 隐私 > 完全磁盘访问权限 - 检查列表中是否包含
sshd-keygen-wrapper或sshd - 移除相关SSH项目并锁定设置
- 验证防护效果:
cd ~/Library/Safari # 应返回"Operation not permitted"错误
4.3 其他安全建议
- 最小权限原则:仅授权确实需要的应用
- 定期审计:检查完全磁盘访问权限列表中的异常条目
- 用户教育:提高对授权请求对话框的警惕性
- SSH加固:
- 限制SSH访问权限
- 使用密钥认证而非密码
- 禁用root远程登录
5. 结论
macOS Mojave的用户数据保护机制虽然提升了安全性,但存在严重设计缺陷:
- 可通过SSH完全绕过
- 授权机制存在对话框疲劳和通用白名单问题
系统管理员和用户应采取积极措施加固系统,特别是对SSH服务的配置和监控,以弥补系统自带保护机制的不足。