导语:这篇文章出自ENDGAME最近关于内核模式威胁的Black Hat演讲的总结,分为两个部分,在这一部分中,将深入研究内核模式威胁的演变以及这些攻击当前的状态。攻击者们通过对现存的攻击模式的整合,可能会实现更复杂、更难以检测的内核攻击模式
微软近年来在操作系统的安全性上取得了许多进展,比如PatchGuard,Driver Signature Enforcement和SecureBoot,这些保障机制极大缩减了像TDL4和ZeroAccess等曾广泛存在的内核恶意软件的数量。但现如今,高超的攻击者们又找到了避规这些保护措施的手段,并持续使用着那些领先于当前防御机制的内核恶意软件。内核模式威胁通常意味着可以完全控制受影响的计算机,重写操作系统的规则,并且轻松篡改安全软件。
APT组织自然能嗅到这当中所存在的巨大利益,所以才会费尽心机的想要破解层出不穷的防御机制。这篇文章出自我们(ENDGAME)最近关于内核模式威胁的Black Hat演讲的总结,分为两个部分,在这一部分中,我们将深入研究内核模式威胁的演变以及这些攻击当前的状态。攻击者们通过对现存的攻击模式的整合,可能会实现更复杂、更难以检测的内核攻击模式。而下一篇文章的内容将集中在如何抵御这些攻击上,但首先我们得了解内核模式威胁的最新技术。通过这两篇文章,我们希望以扩大这些威胁的曝光度的方式来获得关注,并最终能够改善整个行业的防御态势。
内核威胁和平台保护的演变
早期的内核恶意软件
十多年前,第一个真正意义上广泛传播的内核恶意软件问世。由于在当时没有针对这些威胁的系统防御机制,这些内核恶意软件得到了迅猛发展。像Rustock,TDSS和ZeroAccess等恶意软件在其传播峰值时都造成了数百万的感染,它们采取的是类似的手段,通过感染磁盘上的现有驱动程序共享了来获取ring0执行,而且它们通常还有rootkit功能,用于隐藏文件、进程、网络连接,还有安全保障软件。
到了21世纪后期,为了应对这些泛滥成灾的恶意软件,微软采用了两种技术手段。第一个是PatchGuard内核保护系统。PatchGuard旨在检测rootkit之类的恶意软件的行为,例如挂钩,一旦检测到就执行系统崩溃程序。PatchGuard并不完美,它可以被绕过,但它也在不断发展完善,就像是攻击者的移动障碍。
微软的另一种保护机制是驱动程序签名强制(DSE)。DSE要求所有驱动程序在加载之前都使用有效签名。DSE可防止在系统上加载恶意软件(破坏过程中的数字签名)的驱动程序,还可以防止直接加载未签名的恶意驱动程序。随着64位Windows系统的市场的增长,这两种防御机制都显得更为重要。
BOOTKIT恶意软件
为了逃避DSE(在某些情况下是PatchGuard),恶意软件作者开始利用Bootkits将他们的恶意软件加载到内核模式。Bootkits会篡改与早期操作系统引导过程相关的代码,例如MBR,VBR或其他OS特定的引导加载程序的代码。
这些恶意软件包括eEye BootRoot,Sinowal,TDL4和XPaj等。XPaj的特点在于它能够在启动过程的前期,通过挂钩来绕过PatchGuard,甚至在PatchGuard本身被初始化之前。这意味着PatchGuard将挂钩默认为合法代码的一部分。
安全行业通过创建安全启动(Secure Boot)来响应bootkit恶意软件。此技术已融入统一可扩展固件接口(UEFI)规范,并由微软从Windows 8起开始实施。安全启动的工作机制是在UEFI(UEFI是对旧版BIOS的替代)运行时,先验证系统中引导装载程序的数字签名后再执行。
恶意软件对计算机的一个很轻微改动都可能会导致计算机无法启动。微软使用可信引导(Trusted Boot)扩展了这个问题的解决途径,可信引导与安全启动的工作方式类似,但在整个启动过程中都会有这个签名验证阶段。安全启动的缺点是如果固件被破坏,那么可能就无法保障安全,因为固件允许在安全启动检查之前运行。但是,像英特尔的Boot Guard计数器固件攻击技术会将“信任的根源”一直移动到CPU的不可变部分。
威胁的多样性
虽然DSE,PatchGuard和Secure Boot极大缓解了内核威胁的局面,但总有人想要寻找突破性的方法来规避这些系统保护。APT级别的内核恶意软件通常会安装一个合法的、已签名的驱动程序,这个驱动程序容易受到攻击,然后利用该驱动程序获取内核代码,从而避开DSE。 Uroburos,Derusbi和Slingshot等威胁都采用了这种方法。另一种值得注意的攻击方式是,像Derusbi和其他一些组织会窃取合法证书并使用它们签署恶意软件驱动程序。
像Duqu等一些更高级别的威胁,甚至不需要考虑安装和利用易受攻击的驱动程序的问题。它们会直接利用0 day内核。为了进一步规避检测,Duqu会在已安装的Kaspersky驱动程序上,挂住导入地址表,并诱使驱动程序认为其恶意用户进程是受信任的Kaspersky进程。然后卡巴斯基驱动程序将其放进白名单,防止它被本地用户或其他恶意软件终止。为了保证持久性,Duqu会将驱动程序植入到DMZ网络中的磁盘上,这个驱动程序上有一份盗取的富士康证书签名。该驱动可作为整个网络的入口,它可以将网络流量重定向到内部任何地方。
DOUBLEPULSAR也值得一提。它是一种非常轻量级的内核模式植入物,仅存在于内存中; 它没有重启持久性。它通常使用诸如“永恒之蓝”(ETERNALBLUE)的远程ring0漏洞加载到系统上。DOUBLEPULSAR允许攻击者通过在SMBv1驱动程序(srv.sys)中的挂钩函数指针来隐藏远程访问系统,并且这个函数指针不会被PatchGuard监视到。它允许攻击者加载更多内核模式代码,或者将全功能有效载荷注入用户模式。DOUBLEPULSAR在泄露并被其他攻击者利用之后会成为一种广泛的威胁,例如应用在WannaCry和NotPetya中的攻击。
为了抑制利用DOUBLEPULSAR进入内核模式的攻击者,微软发布了基于虚拟化的安全性(VBS)。利用VBS,内核由管理程序进行沙箱化,不再享有对系统的完全控制权。
管理程序代码完整性(HVCI)扩展了VBS并要求对所有内核代码进行签名。此外,核心内存将不再允许写和执行(称为W ^ X)。HVCI阻止了许多内核威胁,例如Turla Driver Loader(我们在下一篇文章中讨论)和DOUBLEPULSAR。Credential Guard还利用虚拟机管理程序来保护mimikatz等工具的凭据。
展望未来
到目前为止所讨论的缓解措施是微软过去十年工作中的一个重要组成,并且微软在最近的系统版本(尤其是Win10)中显著增加了对这些威胁的投资。然而,市场份额仍然是一个主要问题。大量用户用的依然是Win7系统,许多已升级到Win10的计算机也没有利用最先进的内核保护。由于这些保护措施仍未得到广泛实施,攻击者将继续追求低成本的内核攻击。
那么可以采取哪些措施来防范内核模式威胁呢?在下一篇文章中,我们将介绍关于攻击性间谍情报技术的最新研究,并讲述如何防范这些威胁。包括红蓝队演练,狩猎和实时保护。尽管内核威胁将继续发展,但恶意软件检测的最新技术也在不断推陈出新中。我们愿意为您提供新的视野,让您在不断发展的内核威胁上能领先一步。