Windows 路径转换怪异导致非特权 Rootkit 行为

安全研究人员发现,攻击者可以利用 Windows 将传统 DOS 格式之间的文件路径转换为更现代的 NT 格式的方式来实现基于 rootkit 的功能,例如隐藏文件和进程,而无需任何特殊权限。

SafeBreach 的研究人员 Or Yair 发现了这种 DOS 到 NT 路径转换的安全隐患,并在 Black Hat Asia 2024 上进行了展示。该技术被 Yair 称为 MagicDot,它在去年修补过的 Windows,但根本问题仍未解决,并影响了许多其他使用文件操作的应用程序。

“我发现恶意行为者(没有管理员权限)如何隐藏文件和进程、隐藏存档中的文件、影响预取文件分析、使任务管理器和 Process Explorer 用户认为恶意软件文件是 Microsoft 发布的经过验证的可执行文件、禁用 Process Explorer具有拒绝服务 (DoS) 漏洞等等,”Yair 在 技术文章

漏洞利用 DOS 和 NT 路径之间的差异

当有人被要求输入 Windows 系统上的文件路径时,他们可能会输入以下形式的内容 C:目录子目录文件.txt。 这称为 DOS 样式文件路径,自第一个 Windows 版本以来一直是表示文件位置的最常见方式。 许多应用程序在要对 Windows 上的文件执行操作时寻址文件仍然是一种常见的方式。

然而,自从 Windows NT 以来,就有了另一种表示文件路径的方法。 上述 DOS 路径的 NT 路径等效为 ??C:目录子目录文件.txt。 您可能认为这没有太大区别,对于这个特定的示例,您是对的,但实际情况是 NT 路径支持 Unicode,因此与仅支持 ANSI 字符的 DOS 路径相比,字符数量更多放。

问题在于许多应用程序(例如 CreateFile)调用的 WindowsAPI 文件操作函数实际上与 NT 路径一起使用。 如果提供 DOS 路径,他们将首先使用名为的函数将其转换为 NT 路径 RtlpDosPathNameToRelativeNtPathName。 有许多规则适用于这种转换,但与 Yair 的研究相关的两个规则是从任何路径元素中删除尾随点以及删除最后一个元素尾随的空白空间。

例如,路径 C:目录子目录.文件。 将被转换为 ??C:目录子目录文件 — 子目录和文件后面的点将被删除。 这实际上可能指向一个不存在的文件,或更糟糕的是,指向一个不同的文件,从而引发各种安全隐患。

利用消失的点

“通过在文件名末尾放置一个简单的尾点,或者仅使用点和/或空格命名文件或目录,我可以使所有使用普通 API 的用户空间程序无法访问,”Yair 说。

“无法列出此类目录或对其进行任何其他操作。 同样,任何使用此命名约定的文件都无法进行操作。 用户无法读取、写入、删除或对其执行任何其他操作。”

如果应用程序尝试打开,很容易理解原因 C:UsersUserDesktopmalwaredir.malware.txt 通过调用普通的 Windows API 函数,并且在 NT 路径转换期间删除点,路径 ??C:UsersUserDesktopmalwaredirmalware.txt (不带点)不存在且无法打开。

这实际上也允许冒充文件——假设攻击者放置了一个名为 良性。 和一个名为的非恶意文件 良性 在同一目录中。 当易受攻击的应用程序尝试打开恶意应用程序时,它实际上会打开无害的应用程序,而无需尾随点,从而提供隐蔽性。

更进一步,如果攻击者选择模拟合法进程的现有文件路径,他们可以在任务管理器和其他此类工具中隐藏其恶意进程。 例如, ??C:Windows.System32svchost.exe 将显示为 ??C:WindowsSystem32svchost.exe 在任务管理器中,这是一个始终在系统上运行的合法 Windows 服务。

敦促开发人员在代码中使用 NT 路径以避免被利用

更进一步,当使用 MagicDot 路径技巧时,Yair 能够从 Windows 资源管理器中隐藏放置在存档中的文件。 存档是在 Windows 上分发恶意软件的常见方法,尤其是带有网络钓鱼诱饵的电子邮件附件。

攻击者通常会部署用户级或内核级rootkit,以实现一些相同的文件隐藏行为。 不同之处在于,部署 Rootkit 需要管理员或更高权限,而使用 MagicDot 技术则不需要。

“虽然微软解决了我们发现的特定漏洞,但 DOS 到 NT 路径转换的已知问题(漏洞的根本原因)仍未得到解决,”Yair 说。 “这意味着利用这个问题可能会发现更多潜在的漏洞和后利用技术。”

研究人员建议软件开发人员在代码中使用 NT 路径而不是 DOS 路径,因为这样可以避免转换过程,并且可以确保他们提供给 Windows 函数的路径实际上是最终被操作的路径。

1713557685
2024-04-19 19:38:44
#Windows #路径转换怪异导致非特权 #Rootkit #行为

Leave a Reply

Your email address will not be published. Required fields are marked *

近期新闻​

编辑精选​