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