hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections
2024-01-10 06:29:36 +00:00
..
macos-fs-tricks Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-01-05 11:51:55 +00:00
macos-sandbox Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-01-05 11:51:55 +00:00
macos-tcc Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-01-10 06:29:36 +00:00
macos-dangerous-entitlements.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-01-10 06:29:36 +00:00
macos-fs-tricks.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-17 17:42:58 +00:00
macos-gatekeeper.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-01-04 10:33:02 +00:00
macos-launch-environment-constraints.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-11-02 17:43:38 +00:00
macos-sip.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-01-04 10:33:02 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-01-04 10:33:02 +00:00

macOS 安全保护

从零开始学习 AWS 黑客技术,成为 htARTE (HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

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 cli 工具枚举所有配置的后台项目:

# 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

操作 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
  • Bug: 如果创建持久性的进程在此之后快速退出,守护进程将尝试获取信息失败,并且无法发送事件指示有新的事物正在持久化。

参考和关于 BTM 的更多信息

通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习 AWS 黑客攻击!

其他支持 HackTricks 的方式: