如何在macOS上悄无声息地启动恶意宏病毒

安全研究人员Patrick Wardle展示了如何通过漏洞利用链成功攻击macOS Catalina。

许多macOS的用户仍旧十分自信地认为他们的计算机不需要任何安全防护方案。更糟糕的是,部分使用苹果设备办公的公司,它们的系统管理员也有同样观点。

2020年黑帽大会上,安全研究人员Patrick Wardle试图打消听众们这一错误观念,他介绍了对macOS的恶意程序的分析,并构建了一个可以控制苹果计算机的漏洞利用链。

微软,宏,苹果电脑

攻击macOS系统最常见的方式之一便是使用带有恶意宏的文档,即通过微软Office应用程序。虽然苹果平台有很多高质量程序,很多用户实际上还是更倾向于使用微软Office,一方面是由于习惯,另一方面则是为了兼容同事们所创建的文档。

当然,大家早已耳闻来自文档中的宏的潜在威胁,因此微软和苹果都有自己的安全机制来保护用户。

微软会在用户打开带有宏的文档时发出警告消息,当用户仍然决定启动宏的时候,代码会在沙箱之内运行。据微软开发人员声称,这可以防止代码访问用户文件或者对系统造成伤害。

苹果公司则在最新版本的macOS Catalina系统中引入了一些新的安全特性,包括文件隔离和防止来自外部的可执行程序启动运行的”公证”。

简单来说,这些安全技术结合起来应该足以防御恶意宏,理论上来说一切都看似很安全。

漏洞利用链帮助宏逃逸沙箱

可是很多安全机制的实现方式都是存在问题的,因此研究人员(或者攻击者)可能会发现绕过它们的方法,Wardle在他的演讲中展示了一个漏洞利用链。

1. 绕过禁用宏的机制

以检测文档中存在宏并警示用户的系统为例,通常情况下它可以像开发人员希望的那样发挥作用。然而,即便已经在设置禁用宏,我们还是有办法构造出允许宏自动运行而没有任何提示的文档。

可以通过Sylk(SLK)文件格式来实现这一目的,这种使用XLM宏语言的文件格式创建于上世纪80年代,最后一次更新是1986年。然而,出于向后兼容性的考虑,微软公司的应用程序仍然支持Sylk格式。这一安全漏洞在2019年就曾被详细描述过。

2. 沙箱逃逸

我们现在知道攻击者可以隐蔽地运行宏,但是代码运行在微软Office的隔离沙箱中,黑客又是如何成功入侵计算机的呢?结果我们发现,在Mac系统中逃逸微软沙箱并非难事。

攻击者确实无法从沙箱内修改已经存储在计算机中的文件,但是可以”创建”新的文件。该漏洞之前曾被利用来逃逸沙箱,似乎微软已经发布了修复漏洞的更新程序,然而问题并没有真正解决,通过对补丁程序详细测试我们发现:这个补丁程序治标不治本:它在开发人员认为不安全的地方阻拦了文件创建,比如LaunchAgents文件夹,该文件夹中的脚本程序会在系统重启后自动运行。

但是谁能保证微软在开发补丁程序时考虑到了所有的”不安全地方”呢?之前发生过一例,通过Office文档启动的一个运行在沙箱内的Python脚本创建了一个叫做”Login Item”的对象。当用户登录系统时,该名称的对象会自动启动,由于该操作是由系统启动,因此它会在沙箱的外部执行,从而绕过了微软的安全限制。

3. 绕过苹果的安全机制

我们现在知道了如何隐秘地运行宏程序并创建”Login Item”对象。当然,即使沙箱中的可疑进程创建了后门程序,macOS中的安全机制也会阻止它的启动,对吧?

一方面来说,没错,苹果的安全机制确实可以阻拦这种代码的运行。另一方面,也有办法绕过这一机制,如果将代码放入ZIP存档中作为Login Item,那么下次用户登录时系统会自动解压文件。

攻击者接下来需要做的就是将文件解压至合适的地方。比如,文档可以和用户的库放在同一目录,该目录在Launch Agent类型对象(微软可以检测到这个)所在目录的上一层,然后文档本身可以包含一个名为LaunchAgents的目录,并存放Launch Agent脚本。

一旦解压之后,脚本会被放置于LaunchAgents文件夹中,并在系统重启时运行。该脚本由可信任程序(Archiver,档案库工具)创建并且不带有隔离属性,因此它可以启动更加危险的程序。安全机制甚至不会阻拦该文件的运行。

最终攻击者可以通过启动Bash命令终端来获取远程访问权限(从而获取所谓的反向终端)。该Bash进程可以被用来下载不带有隔离属性的文件,从而允许攻击者下载并不受限制地运行真正的恶意代码。

总结

  • 即便宏已经在设置中被禁用,攻击者仍然可以秘密启动恶意宏而不向用户显示任何警告或者询问任何问题。攻击者唯一需要的就是用户下载并打开一个Office文档。
  • 接下来,攻击者逃逸微软Office的沙箱,并创建一个Login Item对象和一个包含Launch Agent的存档,该对象在下次用户登录时会自动运行在沙箱之外。
  • 只需几步,攻击者可以轻松绕过苹果的安全机制,通过从ZIP存档中解压Launch Agent类型对象。躲开系统安全机制之后,程序可以下载并运行真正的恶意代码。

如何在macOS系统中保护自己不受恶意宏的攻击

当然,研究人员已经向微软和苹果公司汇报了他的发现,而且两家公司也在公开漏洞之前悄悄将其修复,漏洞甚至都还没有正式的CVE编号。不过从目前的形势来看,只要认真分析研究安全机制,人们完全有可能找到绕过它们的方法。

在过去,macOS总被认为是足够安全的系统,主要原因并不是它有特别高级的安全机制,而是攻击者对它的忽视。然而,现在苹果计算机已经越来越流行,甚至在企业环境内也是这样,因此网络不法分子们也对攻击macOS有了更大的兴趣。

因此,为了维护系统安全,仅仅保持系统和软件更新至最新版本是不够的,你还需要可以检测并阻拦可疑行为的安全解决方案,比如我们的安全产品,不管是家庭用户版本还是企业用户版本,都支持苹果macOS系统。

提示