.. | ||
macos-fs-tricks | ||
macos-sandbox | ||
macos-tcc | ||
macos-dangerous-entitlements.md | ||
macos-fs-tricks.md | ||
macos-gatekeeper.md | ||
macos-launch-environment-constraints.md | ||
macos-sip.md | ||
README.md |
macOS安全保护
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组 或 电报群组 或 关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
Gatekeeper
Gatekeeper通常用于指代Quarantine + Gatekeeper + XProtect的组合,这是3个macOS安全模块,它们将尝试阻止用户执行可能具有恶意的下载软件。
更多信息请参见:
{% content-ref url="macos-gatekeeper.md" %} macos-gatekeeper.md {% endcontent-ref %}
进程限制
SIP - 系统完整性保护
{% content-ref url="macos-sip.md" %} macos-sip.md {% endcontent-ref %}
沙盒
MacOS沙盒限制在沙盒内运行的应用程序只能执行沙盒配置文件中允许的操作。这有助于确保应用程序只能访问预期的资源。
{% content-ref url="macos-sandbox/" %} macos-sandbox {% endcontent-ref %}
TCC - 透明度、同意和控制
TCC(透明度、同意和控制)是macOS中的一种机制,用于从隐私角度限制和控制应用程序对某些功能的访问。这可以包括位置服务、联系人、照片、麦克风、摄像头、辅助功能、完全磁盘访问等等。
{% content-ref url="macos-tcc/" %} macos-tcc {% endcontent-ref %}
启动约束
macOS中的启动约束是一种安全功能,通过定义谁可以启动进程、如何启动以及从哪里启动来规范进程启动。在macOS Ventura中引入的信任缓存中,它将系统二进制文件分类为约束类别。每个可执行二进制文件都有其启动规则,包括自身、父进程和负责人约束。在macOS Sonoma中扩展为第三方应用程序的环境约束,这些功能有助于通过管理进程启动条件来减轻潜在的系统利用风险。
{% content-ref url="macos-launch-environment-constraints.md" %} macos-launch-environment-constraints.md {% endcontent-ref %}
MRT - 恶意软件移除工具
恶意软件移除工具(MRT)是macOS安全基础设施的另一部分。顾名思义,MRT的主要功能是从受感染的系统中删除已知的恶意软件。
一旦在Mac上检测到恶意软件(无论是通过XProtect还是其他方式),MRT可以用于自动删除恶意软件。MRT在后台静默运行,通常在系统更新或下载新的恶意软件定义时运行(看起来MRT用于检测恶意软件的规则在二进制文件中)。
虽然XProtect和MRT都是macOS的安全措施的一部分,但它们执行不同的功能:
- XProtect是一种预防工具。它会在文件下载时(通过某些应用程序)检查文件,如果检测到任何已知类型的恶意软件,它将阻止文件打开,从而防止恶意软件首次感染您的系统。
- 另一方面,MRT是一种响应性工具。它在系统上检测到恶意软件后运行,目标是删除有问题的软件以清理系统。
MRT应用程序位于**/Library/Apple/System/Library/CoreServices/MRT.app
**
后台任务管理
macOS现在每次工具使用已知的持久代码执行技术(如登录项、守护程序等)时都会发出警报,以便用户更好地了解哪些软件正在持久化。
这是通过位于/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd
的守护程序和位于/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app
的代理来运行的。
backgroundtaskmanagementd
知道某个东西是否安装在持久化文件夹中的方式是通过获取FSEvents并为其创建一些处理程序。
此外,还有一个包含由苹果维护的众所周知的应用程序的plist文件,位于:/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist
[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]
枚举
可以使用Apple的命令行工具枚举所有配置的后台项目:
# The tool will always ask for the users password
sfltool dumpbtm
此外,您还可以使用DumpBTM列出此信息。
# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM
这些信息被存储在 /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm
中,终端需要 FDA。
干扰 BTM
当发现新的持久性时,会触发一个类型为 ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD
的事件。因此,任何阻止发送此事件或使代理程序不向用户发出警报的方法都将帮助攻击者绕过 BTM。
- 重置数据库:运行以下命令将重置数据库(应该从头开始重建),但由于某种原因,在运行此命令后,直到系统重新启动之前,不会有新的持久性被警报。
- 需要 root 权限。
# Reset the database
sfltool resettbtm
- 停止代理程序:可以向代理程序发送停止信号,这样当发现新的检测时,它就不会向用户发出警报。
# Get PID
pgrep BackgroundTaskManagementAgent
1011
# Stop it
kill -SIGSTOP 1011
# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
- 漏洞: 如果创建持久性的进程在它之后迅速存在,守护进程将尝试获取有关它的信息,失败,并且无法发送事件表示有新的持久性事物。
有关BTM的更多信息和参考:
- https://youtu.be/9hjUmT031tc?t=26481
- https://www.patreon.com/posts/new-developer-77420730?l=fr
- https://support.apple.com/en-gb/guide/deployment/depdca572563/web
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在网络安全公司工作吗?想要在HackTricks中宣传你的公司吗?或者想要获取最新版本的PEASS或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获得官方PEASS和HackTricks周边产品
- 加入💬 Discord群组 或 Telegram群组,或者关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。