背景

Windshift是一个旨在中东地区针对个人隐私进行监视的高级持续性威胁(APT)。该威胁已经在暗中运营了2年。直到去年8月,安全公司DarkMatter的研究院Taha Karim在新加坡的Hack in the Box会议上公开分析了这一威胁。Karim在报告中指出,该威胁的独特之处在于,它以来网络钓鱼电子邮件和短信息文本消息中的链接,来跟踪目标的位置、在线习惯和其他特征。另外一个不同寻常的特点是,在极少数情况下,Windshift使用macOS恶意软件进行文档窃取,或截取目标桌面上的屏幕截图,该恶意软件依赖于一种绕过macOS安全防御的新技术。

在2018年12月,mac安全专家Patrick Wardle发表了对该恶意软件的分析,令大家感到意外的是,根据VirusTotal当时测试的结果,只有两家反病毒厂商(Kaspersky和ZoneAlarm)将样本检测为恶意文件。随后,Wardle使用了VirusTotal上搜索相关恶意文件的功能,并发现了另外4个样本。但是,其中有3个样本没有被任何反病毒厂商检测到,1个样本仅被其中的两个厂商检测到。

本文将主要对该恶意软件如何绕过macOS防御机制的原理进行分析。

详细描述

WindTail.A恶意软件在被研究人员曝光4个月后,都未能被传统反病毒产品检测到,这样的消息无疑使得一大批macOS用户大为震惊。同时,也颠覆了传统意义上“macOS系统不会有病毒”、“macOS系统不需要安装杀毒软件”的概念。

正如下面展示的评论所揭示的那样,对于Apple内置保护机制的确切含义,许多用户都存在混淆与误解:

事实上,在macOS系统中并没有“仅运行已经签名的应用程序”这样的设置,但经验丰富的macOS用户会清楚,上图所指的是Apple的Gatekeeper技术,以及在“仅运行来自App Store的应用程序”和“运行来自App Store和已知开发者的应用程序性”之间进行选择的能力。原有的第三个选项“运行来自任何地方的应用程序”,已经在最新版本High Sierra系统的“系统偏好设置”界面删除,但仍然可以通过命令行和上下文菜单,来逐一允许未知应用程序的运行。

很明显,上面截图中的用户认为,如果Gatekeeper设置为“仅运行来自App Store的应用程序”和“运行来自App Store和已知开发者的应用程序性”,就会出现像WindTail.A这样的恶意软件,或者其他的一些恶意软件。根据我们的经验,这也是一些macOS用户普遍存在的认知。针对未签名的应用程序,除非用户特意选择运行并覆盖原有设置,否则都将无法在macOS系统上运行。

我们将会在本文中进行阐述,尽管这样的认知看似合理,但事实上它却完全是错误的。

揭开macOS安全的神秘面纱

我们之前已经提到,Apple的内置安全机制很容易被绕过。但是,Apple强大的营销能力,使用户很难接受这一事实。在厂商与用户互动的每一个层面,Apple都在强调macOS的安全神话:

在Apple.com官网上,面向客户展示的文档中有关于安全性的多条描述信息。从表面上看,这些内容似乎没有歧义:Gatekeeper能够组织恶意软件,并控制可以在macOS上运行的内容。鉴于这些宣传内容如此强大的攻势,也难免像markgo这样的用户确信,如果Gatekeeper打开,恶意软件就无法进入系统。

然而,如果我们仔细阅读,我们会发现该消息与最初出现的消息更加权威。相对而言,Gatekeeper确实使得从互联网下载应用程序更加安全。同样,开发者ID确实能够阻止某些恶意软件。但是,这个概念并不是能够阻止所有的恶意软件,也不是能够阻止大多数恶意软件。

但最重要的是,这一文字表述中并未表明Gatekeeper会阻止未签名的应用程序,也不表示Gatekeeper的设置能确保只有从App Store下载或使用开发者ID签名的应用程序才能在macOS上运行。尽管人们普遍认为,但这些说法并没有被Apple承诺过,并且我们经过分析认为,这些描述不符合实际情况。

探寻Gatekeeper的工作原理

不幸的是,对于未受保护的macOS用户,Gatekeeper不会阻止所有(甚至是大多数)恶意软件在macOS上运行,即使系统被设置为最严格的策略(“仅运行来自App Store的应用程序”)。在下面的视频中(YouTube),我们展示了下载和安装任意应用程序的过程,事实证明这一过程非常轻松。但在视频中,我们不会披露相关的0-day漏洞。所采用的是合法软件和非法软件广泛使用的标准技术,这也是我们每天看到的木马广告软件安装程序所使用的方法。

视频地址:https://youtu.be/3Ha4b0_mDhk

这可能是由于Gatekeeper仅在用户尝试通过其他应用程序下载或安装软件时启动,例如Safari、Mail、Messages以及其他注册为“LSQuarantineAgents”的应用程序。但是,还有一些其他方法可以在macOS上获取软件,例如视频中展现的curl,这一方法并不需要通过LSQuarantineAgent。如果使用这样的方法,Gatekeeper将会对该软件的存在视而不见。

LSQuarantineAgent的目的是使用“隔离位”标记实现下载。隔离位的目的,是为了调用安全评估策略(支持Gatekeeper的系统级检查)和XProtect(Apple的签名检测技术)。如果没有标记隔离位,那么上述这些安全技术都不会被调用。

攻击者如何攻破“鸡生蛋”问题

当然,这就引发了一个问题,就是攻击者如何进入系统,以便在不触发Gatekeeper的情况下下载应用程序。目前,有几个场景,这些场景我们在野外都曾见到过。最常见的是,运行一个木马安装程序,并欺骗不具备安全意识的用户运行。在这里,恶意安装程序可以伪造成用户认为值得信任的应用程序或脚本的安装程序。其中,最常见的就是伪装Flash Player安装程序:

有时,这些伪造的安装程序自身,就是具有有效签名的应用程序,但其实它们并不需要签名就能成功安装。在示例中,Player.command看起来像一个应用程序的图标,但事实上它只是一个普通的旧bash脚本,能够绕过Gatekeeper,通过curl安装其Payload:

当攻击者通过SSH或远程登录成功连接到目标,然后可以直接执行或下载恶意软件时,通常会使用另一种方法。在企业环境中,以及使用共享网络的环境中,恶意内部成员或对企业心怀不满的员工可能会使用curl(或其他下载实用程序)在macOS上安装恶意软件。但在表面上看,软件的安装似乎都受到了Gatekeeper设置的保护。

恶意软件WindTail与安全机制Gatekeeper和XProtect的关系

上述所有的分析过程,都将我们引向了WindTail与Gatekeeper之间的关系。我们并不知道WindShift APT是如何感染他们的用户,但很可能他们是采用了本文列出的3种方法其中的一种,来将Payload投递到目标计算机上。在恶意软件绕过Gatekeeper之后,大家普遍会认为,还有Apple的检测技术XProtect能够启动,并且会防范恶意软件。

但不幸的是,由于两个原因的共同作用,XProtect并不会被启动。首先,XProtect中不包含WindTail的签名。Apple取消了原始样本中使用的开发人员签名,但他们没有为其添加具有针对性的检测。其次,即使XProtect确实有WindTail的签名,它也永远不会被触发,其原因与Gatekeeper未被触发相同。XProtect依赖LSQuarantineAgents,来标记具有com.apple.quarantine位的文件。这个标志位将会告知LaunchServices在启动可执行文件时调用XProtect,如下面的eicar示例所示:

如果缺少或删除这一标志位,那么就永远不会调用XProtect。阅读到此,大家要知道这一位是由文件设置的,而不是来源于Gatekeeper所依赖的LSQuarantineAgent,可能就不会太过惊讶。基于上述两点原因,能够绕过Gatekeeper的任何恶意软件,都能够绕过XProtect。

总结

我们知道,Apple在宣传macOS系统时,大篇幅地描述了其安全方面,这也是许多用户都不清楚这些内置安全技术实际状况的原因所在。因此,我们建议各企业和最终用户,充分意识到纵深防御解决方案的重要性,并选择合适的解决方案,在事前、事中和事后部署不同的检测策略,预防和检测所有主要维度的攻击,快速消除威胁,并全面掌握终端安全环境。

本文翻译自:https://www.sentinelone.com/blog/how-malware-bypass-macos-gatekeeper/如若转载,请注明原文地址: http://www.4hou.com/system/15680.html
源链接

Hacking more

...