hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections
2023-12-29 14:36:01 +00:00
..
macos-fs-tricks Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-12-27 01:57:04 +00:00
macos-sandbox Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:32:12 +00:00
macos-tcc Translated ['macos-hardening/macos-auto-start-locations.md', 'macos-hard 2023-12-29 14:36:01 +00:00
macos-dangerous-entitlements.md Translated ['macos-hardening/macos-auto-start-locations.md', 'macos-hard 2023-12-29 14:36:01 +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 2023-11-06 15:57:22 +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 2023-12-24 12:14:57 +00:00
README.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-11-02 17:43:38 +00:00

macOS安全保护

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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的更多信息和参考

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥