我应该担心这个针对 Windows 7 的 UAC 绕过漏洞吗?

信息安全 缓冲区溢出 uac
2021-08-16 23:45:18

似乎有一个漏洞可以让您绕过 Windows 7 计算机上的 UAC 并获得管理员访问权限。我想知道这个漏洞是否仍然是普通 Windows 7 机器上的一个危险漏洞,或者它是否已经被广泛修补。我没有仔细研究过这个漏洞,所以它可能根本不起作用。仅仅浏览一下,它似乎是使用 win32 进行的合法 C 编程。我见过不同的网站声称这是一个有效的漏洞利用。

http://www.exploit-db.com/bypassing-uac-with-user-privilege-under-windows-vista7-mirror/

4个回答

我将为您提供您正在谈论的漏洞利用的技术细节,然后让您自己决定是否应该担心。

bypassUAC 漏洞利用了 Windows 操作系统的一个错误(或者更确切地说是一项功能),其中由 Microsoft 代码签名证书签名的进程在将其权限提升到 SYSTEM 时不会提示用户。这在 Microsoft 文本中被称为特权提升。Leo Davidson最先发现了这个问题早在 2009 年。如果您查看此漏洞的目标,您会发现 Windows 7 是易受攻击的,即使在 Windows 7 之前出现的 Windows Vista 并不易受攻击。原因是微软故意淡化 Windows 7 的安全性,以提供更好的用户体验。任何 Vista 用户每次执行任务时都会告诉您无限数量的 UAC 提示。为了最大限度地减少这些提示,微软决定所有那些微软使用其代码签名证书签名的应用程序都应该被信任以自动提升权限,因此这个漏洞诞生了。

该漏洞的利用方式是在C:\Windows\System32\sysprep\目录中有一个exe文件,名为sysprep.exe,它加载了一个DLL文件CRYPTOBASE.DLL。由于 sysprep.exe 不使用完整路径加载此 DLL,因此您可以将名为 CRYPTOBASE.DLL 的恶意 DLL 放在 C:\Windows\System32\sysprep 目录中,此时 sysprep.exe 将加载恶意 DLL 文件执行。这种技术被称为DLL 劫持. 假设恶意DLL启动由微软代码签名证书签名的notepad.exe,在其中注入另一个DLL如metsrv.dll,这是Meterpreter dll文件,然后请求权限提升,该进程将在没有任何UAC的情况下静默获得SYSTEM权限提示,因为这就是它在 Windows 7 上的默认状态下的设计方式。此漏洞也存在于 Windows 8 中(尽管不存在于 sysprep.exe 可执行文件中)。

现在,如果您担心这种攻击媒介,您可以采取一些步骤来确保绕过 UAC 不起作用。您可以做的第一件事是不要使用管理员用户。这将保护您,因为在另一个进程中注入恶意 DLL(或任何其他代码)需要对该进程具有调试权限。管理员可以对任何进程拥有调试权限,这就是绕过 UAC 需要管理员权限的原因。此外,控制面板中 UAC 的图形控制台中有四个 UAC 保护级别。如果您将保护设置为Always Notify,则没有进程可以静默提升其权限。就像在 Vista 中一样,您将始终收到 UAC 提示,绕过 UAC 漏洞利用将失败(除非您单击允许)。

现在您决定是否应该担心这个漏洞。在大多数情况下,如果恶意用户已经获得了管理员权限的代码执行,那么它已经为你结束了。将它提升到 SYSTEM 现在只是一个象征性的游戏。

UAC 从来没有被认为是一种安全措施。

你应该担心吗?这取决于你在做什么,如果你使用管理员帐户,那么你应该这样做,但是如果你用一个很好的密码锁定了管理员并且你正在使用第二个帐户,那么有什么可担心的呢?

这是一个本地漏洞。这意味着必须有人已经可以访问您的计算机才能使用它。对于家庭用户来说,这本身不是问题。保护您的计算机的相同规则仍然适用:例如,不要运行您不信任的 .exe 文件。

UAC 不是安全边界,因此不应用作真正的保护措施。有一个好主意很好,但它不能保护你。

你应该担心吗?当然,为什么不呢?一个错误就是一个错误。如果您确实希望提供真正的保护,那么不要运行 UAC 必须执行的操作——以标准用户身份运行。任何可以绕过 UAC 的攻击都无法绕过,只会获得标准用户的权限,而不是管理员。