关键要点
- 勒索软件攻击者正在利用易受攻击的驱动程序来篡改终端安全产品。
- Elastic Security 已发布 65 条 YARA 规则来检测易受攻击的驱动程序滥用。
- Elastic Endpoint(8.3+)可保护用户免受此威胁。
背景
2018年,Gabriel Landau 和 Joe Desimone 在 Black Hat 大会上发表了关于 Windows 内核模式威胁演变的演讲。最令人担忧的趋势是利用已知良好但易受攻击的驱动程序来获取内核模式执行权限。我们证明了即使启用了虚拟机监控程序模式完整性保护(HVCI)和 Windows 硬件质量实验室(WHQL)签名要求,这种方法也是可行的。当时,对普通用户的风险相对较低,因为这些技术主要被高级持续性威胁攻击者和顶级红队所利用。
快进到 2022 年,由于执行这些攻击的开源工具的激增,利用易受攻击的驱动程序进行攻击已成为日益严重的担忧。勒索软件现在已使用易受攻击的驱动程序在加密系统之前终止安全软件。组织可以通过限制管理员用户权限来降低风险。但是,安全供应商也必须保护用户到内核的边界,因为一旦攻击者可以在内核中执行代码,安全工具就无法有效保护主机。内核访问权限使攻击者可以随意篡改或终止终端安全产品,或将代码注入受保护的进程。
这篇文章包括关于内核模式攻击的入门知识,以及 Elastic 保护用户免受利用易受攻击的驱动程序进行的内核攻击的建议。
攻击流程
驱动程序中存在许多缺陷,可能允许攻击者获得内核模式访问权限,从而完全破坏系统并保持未被检测到。一些最常见的缺陷包括授予用户模式进程写入虚拟内存、物理内存或特定于模型的寄存器 (MSR) 的访问权限。经典的缓冲区溢出和缺少边界检查也很常见。
一个不太常见的驱动程序缺陷是无限制的句柄复制。虽然乍一看这似乎是无害的功能,但句柄复制可被利用以通过用户模式进程获得完全的内核代码执行权限。例如,Microsoft 的最新进程资源管理器驱动程序公开了此类函数。
攻击者可以利用此漏洞来复制敏感句柄到系统(PID 4)进程中存在的原始物理内存。
获得cr3 值后,攻击者可以遍历页表以将虚拟内核地址转换为其关联的物理地址。这提供了任意虚拟读/写原语,攻击者可以利用它轻松篡改内核数据结构或执行任意内核代码。在启用了 HVCI 的系统上,可以劫持线程控制流以执行任意内核函数,如下所示。
我们在 7 月 26 日通过易受攻击的驱动程序提交门户向 Microsoft 报告了此问题,但截至撰写本文时,我们尚未收到回复。我们希望 Microsoft 将此视为一个值得解决的严重安全问题。理想情况下,他们将发布一个修复了易受攻击的IOCTL的版本,并将其包含在默认 HVCI 黑名单中。这将与阻止 ProcessHacker(现在称为System Informer)驱动程序的相同缺陷保持一致。
黑名单
黑名单阻止已知的易受攻击的驱动程序加载到系统上,这是解决易受攻击的驱动程序问题的第一步好方法。黑名单可以将内核攻击的成本提高到某些犯罪团伙无法企及的水平,同时保持较低的误报率。缺点是它不会阻止更高级的组织,这些组织可以识别新的、以前未知的易受攻击的驱动程序。
Microsoft 保持一个目录,其中包含已知的被利用或恶意驱动程序,这应该是最低限度的基准。此目录包含使用各种组合的Authenticode 哈希、证书哈希(也称为TBS)、内部文件名和版本的规则。该目录旨在由 Windows Defender 应用控制(WDAC)使用。我们将此目录作为使用YARA社区标准的更全面列表的起点。
为了扩展现有的已知易受攻击驱动程序列表,我们通过 VirusTotal 数据,使用已知的易受攻击导入哈希和其他元数据进行枢纽分析。我们还梳理了公共攻击工具,以识别其他易受攻击的驱动程序。作为 Elastic Security 的惯例,我们将我们的黑名单提供给社区。在 Elastic Endpoint Security 8.3 及更高版本中,所有驱动程序在允许加载到系统之前都会在线针对黑名单进行验证(如下所示)。
白名单
针对此驱动程序威胁最强大的防御措施之一是只允许已知正在使用的驱动程序签名者、内部文件名、版本和/或哈希的组合。我们建议组织尽可能严格。例如,不要盲目信任所有WHQL签名的驱动程序。这是经典的应用程序控制方法,尽管它专注于驱动程序。组织的驱动程序多样性应该比用户模式应用程序的总数更容易管理。Windows Defender 应用控制(WDAC)是一个强大的内置功能,可以以此方式配置。但是,对于没有配备完善安全团队的组织而言,学习曲线和维护成本可能仍然过高。为了获得白名单方法的大部分好处,但将实施成本降低到用户(理想情况下降低到黑名单级别),我们建议同时采用两种方法:行为控制和首次发现警报。
行为控制
行为控制背后的概念是产生一组更容易管理的可允许行为控制点,可以对其进行调整以获得高置信度。例如,我们可以围绕允许哪些应用程序将驱动程序写入磁盘创建行为控制。这可能从一个相对宽松和简单的规则开始
从那里,我们可以将已知表现出此行为的良性应用程序列入白名单。然后我们接收和分类命中,调整规则直到它变得高度可靠,然后作为我们恶意行为保护的一部分进行发布。Elastic SIEM 用户可以使用相同的技术来创建自定义 检测引擎规则,这些规则专门针对其环境进行调整。
首次发现
8.4 版中的 Elastic Security 添加了另一个可用于识别可疑驱动程序的强大工具。这是“新术语”规则类型,可用于在首次观察到术语(驱动程序哈希、签名者、版本、内部文件名等)时创建警报。
这使安全团队能够在首次在其环境中看到异常驱动程序时快速发现它们。这为即使是以前未知的易受攻击的驱动程序或其他基于驱动程序的对手工艺也提供了检测机会。
结论
易受攻击的驱动程序漏洞利用曾仅限于高级攻击者,但现在已泛滥成灾,甚至被用于勒索软件攻击。安全界现在就应该团结起来解决这个问题。我们可以从协作构建黑名单开始,以此提高攻击成本。我们还应该研究其他检测策略,例如行为控制和异常检测,以进一步提高攻击成本,而无需大量的安全专业知识或资源。