DLL劫持从2000年就一直开始困扰着Windows系统,而现在这种攻击方式也在大多人眼中“最安全的操作系统”——苹果Mac OS X上出现了。
本周,Synack的研究员Patrick Wardle在温哥华举行的CanSecWest的会议上做了一个演讲,他详细解释了入侵Mac OS X动态库的细节:持久、过程注入、安全功能(Apple Gatekeeper)绕过和远程利用,和Windows DLL劫持差不多。
苹果动态库劫持漏洞
DLL劫持攻击和动态库劫持攻击的概念从本质上来说基本相同:攻击者必须先找到一个恶意库,然后才能进入操作系统加载的目录中。Wardle只是解释了这类攻击的一个方面,也就是他能找到Photostream Agent(iCloud运行时会自动运行)上易受攻击的Apply二进制文件。
Wardle称:
DLL劫持困扰Windows已经有一段时间了,是一个非常普遍的攻击,而且已经被攻击者用烂了。我之前有想过OS X上会不会也出现相同的问题。于是经过一系列的研究,我发现在OS X上也有相似的问题。虽然它们使用了不同的技术,但是入侵的能力却相同,都很强大。
持久性潜伏是攻击中最完美的一个部分,攻击者可把一个特别编制的动态库复制到Photostream目录上,以随时知道应用程序什么时候运行,这样攻击者的动态库就会被加载到进程中。这是最为隐秘的潜伏方式,因为它不会创建任何新的进程,不会修改任何文件,只是植入了一个单一的动态库。
远程执行恶意代码
Wardle说他能通过在Xcode注入一个进程便可在受害者设备上自动并持久的执行代码。一旦Xcode感染了他的恶意程序,只要开发者在系统上部署了一个新的二进制文件,它就会自动添加恶意代码到文件上。
Wardle还可以远程绕过苹果Gatekeeper的安全防护,他的恶意动态库代码会植入到下载文件中,但是这一举动本应该被Gatekeeper拦截掉(因为它不是经过Apple App Store下载)。然而,Gatekeeper会远程加载这一恶意文件,这样攻击者就可远程执行代码并感染用户了。
安全扫描器
Wardle还发布了扫描器的源代码,可扫描到易受攻击的应用程序。他在自己的OS X机器上运行了他写的Python脚本,经扫描发现有144个二进制文件易受动态库劫持攻击,包括苹果的Xcode,iMovie和Quicktime插件,微软的word、excel、PPT,还有一些第三方应用程序(Java,Dropbox,GPG Tools 和Adobe插件)。