2021年秋季的开始是第四次海上目标(OBTS)这是唯一一个专注于苹果生态系统的安全会议。因此,它吸引了许多该领域的顶尖人才。今年,那些长期缺乏一个好的安全会议的头脑们准备好了,准备分享各种各样的好信息。

这样的会议对于理解攻击者及其方法是如何演变的非常重要。与所有操作系统一样,macOS对攻击者来说是一个不断移动的目标,因为随着时间的推移,它会获得新的特性和新的保护形式。

OBTS是一个很好的机会,可以看到针对macOS的攻击是如何演变的。以下是我学到的。

透明度,同意和控制绕过

透明、同意和控制(TCC)是一个要求用户同意访问某些数据的系统,通过提示确认用户同意应用访问该数据。例如,在现代版本的macOS上,如果一个应用程序想要访问你的联系人或文档文件夹中的文件,你会被要求在应用程序看到这些数据之前允许它访问。

一个TCC提示符,要求用户允许访问Downloads文件夹
一个TCC提示符,要求用户允许访问Downloads文件夹

近年来,苹果一直在逐步削弱根用户的权力。曾几何时,根用户就像上帝一样——它是唯一可以在系统上做任何事情的用户。它能创造也能毁灭,它能看见一切。这种情况已经有好几年没有出现了,系统完整性保护(SIP)和只读签名系统卷甚至可以阻止根用户在硬盘驱动器的大范围内更改文件。

TCC已经在进一步减少根用户数据的权力方面取得了进展。如果一个应用程序有根访问权限,它仍然不能看到-更少的修改-很多数据在你的用户文件夹没有你明确的同意。

这可能会导致一些问题。例如,杀毒软件Malwarebytes需要能够看到它能看到的一切,以便最好地保护必威平台APP你。但是即使一些Malwarebytes进程以必威平台APP根权限运行,它们仍然不能看到一些文件。因此,像这样的应用程序通常需要用户给予一个特殊的许可,称为全磁盘访问(FDA)。没有FDA, Malwar必威平台APPebytes和其他安全应用程序不能完全保护你,但只有你可以提供访问权限。

这通常是一件好事,因为它使您能够控制对数据的访问。恶意软件经常想要访问你的敏感数据,要么窃取它,要么加密它,并要求赎金。TCC意味着恶意软件进入你的系统后不能自动获取你的数据,这可能是我们在macOS上看不到勒索软件的部分原因。

TCC对我们来说有点麻烦,对我们软件的用户来说也是一个常见的难点,但它确实意味着我们不能在您不知情的情况下访问您的一些最敏感的文件。当然,这是在假设你理解FDA的提示和你同意的内容的前提下,这是有争议的。苹果目前授权FDA的程序并没有明确说明这一点,而是让应用程序要求FDA解释其后果。这使得欺骗用户让他们访问一些他们不应该访问的东西变得非常容易。

然而,社会工程并不是唯一的危险。在今年的会议上,许多研究人员谈到了让他们绕过macOS的透明、同意和控制(TCC)系统的漏洞,未经用户同意

安迪·格兰特(@andywgrant)提出了一个漏洞,其中具有根权限的远程攻击者可以授予恶意进程所需的任何TCC权限。这个过程包括在系统上创建一个新用户,然后使用该用户授予权限。

Csaba Fitzl (@埃维比特)做了一个关于“挂载漏洞”的演讲,其中他讨论了另一个涉及磁盘映像文件挂载点的漏洞。通常,当您连接一个外部驱动器或双击一个磁盘映像文件时,卷是在/卷目录中。换句话说,如果你连接一个名为“backup”的驱动器,它将在系统上成为可访问的/卷/备份.这是磁盘的“挂载点”。

山的bug
卡萨巴·菲茨尔(Csaba Fitzl)“臭虫之山”(Mount(ain of Bugs))谈话的幻灯片标题

Csaba能够创建一个包含自定义TCC.db文件的磁盘映像文件。该文件是一个数据库,控制用户已授予应用程序的TCC权限。通常,TCC.db文件是可读的,但是除了系统之外,其他任何东西都不能修改它。然而,通过安装这个磁盘映像,同时设置挂载点包含TCC.db文件的文件夹的路径,他能够诱骗系统接受任意TCC.db文件作为如果它是真正的,但是太极拳权限允许他改变他所需要的情况。

还有其他提到的TCC绕过,但可能最令人不安的事实是,有相当多的高度敏感的数据根本没有受到TCC的保护。任何恶意软件都可以毫无困难地收集这些数据。

你会问,这些数据是什么?一个例子是. ssh文件夹在用户的主文件夹中。SSH是一个用于安全地获得对远程Mac、Linux或其他Unix系统的命令行访问的程序. ssh文件夹是存储用于对连接进行身份验证的证书的位置。这使得该文件夹中的数据成为希望在组织内横向移动的攻击者的高价值目标。

在同一个位置上还有其他类似的文件夹,可以包含其他服务的凭证,比如AWS或Azure,它们也是完全开放的。存储除Safari以外的任何浏览器数据的文件夹也不受保护,如果您使用浏览器的内置密码管理器,其中可能包括凭据。

诚然,在TCC的保护伞下保护部分或全部数据可能会遇到一些技术上的挑战。然而,一般的IT管理员可能更关心SSH密钥或其他凭证的获取,而不是攻击者能够偷看您的Downloads文件夹。

攻击者正在对安装程序做一些有趣的事情

当然,安装程序对于在系统上安装恶意软件非常重要。通常,用户必须被诱骗打开某些东西,以感染他们的机器。攻击者可以使用前面讨论过的各种技术。

一个常见的方法是使用苹果安装包(。PKG文件),但这不是特别隐秘。知识渊博和谨慎的人可能会选择检查安装程序包,以及预安装postinstall脚本(被设计为在您期望的时候通过名称运行),以确保没有任何不顺利的事情发生。

然而,引用最近银雀恶意软件中使用的一个例子,Tony Lambert (@ForensicITGuy)讨论了一种偷偷安装恶意软件的方法:经常被忽视分布文件

分布文件是在苹果安装程序包中找到的,旨在为安装程序传递信息和选项。但是,也可以在该文件中插入JavaScript代码,以便在安装开始时运行,用于确定系统是否满足安装软件的要求。

然而,在Silver Sparrow的情况下,安装程序使用这个脚本偷偷下载和安装恶意软件。如果在下面的对话框中单击“继续”,即使选择不继续安装,也会被感染。

苹果安装程序要求用户允许程序运行,以确定是否可以安装该软件。
单击“继续安装恶意软件”

Tony讨论的另一个有趣的技巧是使用无负载安装程序。这些安装程序实际上不包含任何要安装的文件,实际上只是执行所有安装的脚本的包装器(可能通过预安装脚本,但也可能通过分布).

一般的安装程序脚本会留下一个“收据”,这是一个包含安装发生时间和安装内容的记录的文件。但是,如果安装程序没有正式有效载荷,并且通过脚本下载所有内容,则不会留下这样的收据。这意味着IT管理员或安全研究员将丢失关键信息,这些信息可能会揭示恶意软件安装的时间和地点。

克里斯·罗斯(@xorrior)讨论了一些相同的技术,但也深入研究了安装程序插件。安装程序包中使用这些插件在安装程序中创建自定义“窗格”。(大多数安装程序都要经历苹果规定的一系列特定步骤,但有些开发者通过自定义代码添加了额外的步骤。)

这些安装程序插件是用Objective-C编写的,而不是脚本语言,因此可能更强大。最重要的是,这些插件很少被使用,因此很可能被许多安全研究人员所忽视。然而Chris能够演示这样一个插件可以用来在系统上投放恶意负载的技术。

塞德里克·欧文斯(@cedowens)说吧。尽管与安装程序包(.pkg文件)无关,但macOS中存在一个漏洞(cve - 2021 - 30657)可以让Mac应用程序完全绕过Gatekeeper,这是苹果许多安全功能的核心。

在macOS上,任何时候你打开一个从网上下载的应用程序,你至少应该看到一个警告,告诉你你正在打开一个应用程序(以防它伪装成一个Word文档或类似的东西)。如果应用程序有任何问题,Gatekeeper可以进一步阻止你打开它。

通过构建一个缺少某些通常被认为是必要的特定组件的应用程序,攻击者可以创建一个功能完整的应用程序,但在启动时不会触发任何警告。(Shlayer广告软件的一些变体已经使用了这种技术。)