阻止易受攻击的驱动程序攻击

使用易受攻击的驱动程序来获得内核模式执行。

原文链接:https://www.elastic.co/cn/security-labs/stopping-vulnerable-driver-attacks

关键要点

  • 勒索软件参与者正在利用易受攻击的驱动程序来篡改端点安全产品。
  • Elastic Security发布了65 条 YARA 规则来检测易受攻击的驱动程序滥用行为。
  • Elastic Endpoint (8.3+) 保护用户免受这种威胁。

背景

2018 年,Gabriel Landau和我在 Black Hat 上发表了一次演讲,内容涉及 Windows 上内核模式威胁的演变。最令人担忧的趋势是利用已知良好但易受攻击的驱动程序来获得内核模式执行。我们展示了这是实用的,即使启用了管理程序模式完整性保护 ( HVCI ) 和 Windows 硬件质量实验室 ( WHQL ) 签名要求。当时,日常用户面临的风险相对较低,因为这些技术主要由高级国家参与者和顶级红队利用。

快进到 2022 年,由于用于执行这些攻击的开源工具的激增,利用易受攻击的驱动程序进行的攻击越来越受到关注。勒索软件现在已使用易受攻击的驱动程序在加密系统之前终止安全软件。组织可以通过限制管理用户权限来降低风险。但是,安全供应商也必须保护用户到内核的边界,因为一旦攻击者可以在内核中执行代码,安全工具就无法再有效地保护主机。内核访问使攻击者可以随意篡改或终止端点安全产品或将代码注入受保护的进程。

这篇文章包括内核模式攻击的入门知识,以及 Elastic 为保护用户免受利用易受攻击的驱动程序进行内核攻击的建议。

攻击流

驱动程序中存在许多缺陷,可以让攻击者获得内核模式访问权限以完全破坏系统并保持未被检测到。一些最常见的缺陷包括授予用户模式进程对虚拟内存、物理内存或特定于模型的寄存器(MSR) 的写访问权限。经典的缓冲区溢出和缺少边界检查也很常见。

一个不太常见的驱动程序缺陷是不受限制的句柄复制。虽然乍一看这似乎是无害的功能,但可以利用句柄复制来获得用户模式进程的完整内核代码执行。例如,微软最新的 Process Explorer 驱动程序就公开了这样的功能。

攻击者可以利用此漏洞复制系统 (PID 4) 进程中存在的原始物理内存的敏感句柄。

系统进程中的物理内存句柄

获取cr3 值后,攻击者可以遍历页表,将虚拟内核地址转换为与其关联的物理地址。这授予了任意虚拟读/写原语,攻击者可以利用该原语轻松篡改内核数据结构或执行任意内核代码。在启用 HVCI 的系统上,线程控制流可以被劫持以执行任意内核函数,如下所示。

劫持威胁流控制

我们于 7 月 26 日在易受攻击的驱动程序提交门户中向 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) 是一个强大的内置功能,可以通过这种方式进行配置。但是,对于没有配备良好安全团队的组织来说,学习曲线和维护成本可能仍然太高。为了获得白名单方法的大部分好处,同时降低用户的实施成本(理想情况下达到黑名单级别),我们建议同时使用两种方法:行为控制和首次发现警报。

行为控制

行为控制背后的概念是产生一组更易于管理的可允许行为阻塞点,这些阻塞点可以调整以获得高置信度。例如,我们可以创建一个行为控制,允许应用程序将驱动程序写入磁盘。这可以从一个相对宽松和简单的规则开始:

示例 EQL 查询

从那里,我们可以将已知表现出这种行为的良性应用程序列入白名单。然后我们接收和分类命中,调整规则直到它变得高度可信,然后作为我们恶意行为保护的一部分进行发布。Elastic SIEM 用户可以使用相同的技术来创建专门针对其环境调整的自定义检测引擎规则。

第一次见到

8.4 中的 Elastic Security 添加了另一个强大的工具,可用于识别可疑驱动程序。这是“新术语”规则类型,可用于在第一次观察到术语(驱动程序哈希、签名者、版本、内部文件名等)时创建警报。

第一次见到

这使安全团队能够在他们第一次在他们的环境中看到异常驱动程序时快速发现它们。这为甚至以前未知的易受攻击的驱动程序或其他基于驱动程序的对手交易提供了检测机会。

可视化它

结论

易受攻击的驱动程序利用曾经被归为高级对手,现在已经激增到被用于勒索软件攻击的地步。现在是安全社区团结起来解决这个问题的时候了。我们可以通过作为一个社区在黑名单上进行合作来开始提高成本。我们还应该研究其他检测策略,例如行为控制和异常检测,以进一步提高成本,而不需要大量的安全专业知识或资源来实现。

发表评论

您的电子邮箱地址不会被公开。