是否有单个 UAC 二进制文件?

Kat*_*thy 28 windows uac

System32 文件夹中是否有负责 Windows UAC 功能的二进制文件 (.exe)?(例如,uac.exe)。如果该文件被强行删除会发生什么?Windows 会损坏或无法启动吗?

这里没有XY问题;我只是想知道如果 UAC 被强行从 PC 中删除会发生什么。

I s*_*ica 58

UAC 是由多个二进制文件实现的多组件架构

用户帐户控制(UAC) 是指共同构成UAC 架构的几个组件。我将简要回顾其中一些以及负责其实现的二进制文件,但首先这里是 Microsoft Docs 文章How User Account Control Works中对 UAC 架构的概述:

在此处输入图片说明

本地安全机构 (LSA) / 过滤令牌

从概念上讲,UAC 的“第一个”组件由本地安全机构子系统实现,该子系统在登录过程中处理用户访问令牌的创建。从 Windows Vista 开始,登录过程已修改,以便管理员在启用 UAC 的情况下登录时,LSA 子系统为用户生成两个单独的访问令牌:

  1. 一个具有完全管理员访问权限,以及
  2. 具有标准用户访问权限的第二个“过滤令牌”

如此处所示,此过程与标准用户登录的过程不同:

在此处输入图片说明

LSA 子系统服务存在于该lsass.exe过程中。

虚拟化

在 Windows 7 中添加,文件和注册表虚拟化是 UAC 的一个组件,它填充不符合 UAC 的旧应用程序,但只需要管理权限即可访问文件系统或注册表的某些受保护区域:

当不符合 UAC 的管理应用程序尝试写入受保护的目录(例如 Program Files)时,UAC 会为该应用程序提供它自己尝试更改的资源的虚拟化视图。虚拟化副本保存在用户的配置文件中。

来源

通过将这些访问尝试重定向到不需要管理员权限的区域,尽管系统上启用了 UAC,这些应用程序仍可继续运行。

这种虚拟化是在内核中实现的

申请信息服务

应用程序信息服务 (AIS) 读取应用程序的清单并与 UAC 同意提示一起工作,以确定是否允许应用程序以提升的权限执行(即在登录时创建的未过滤的管理级别访问令牌的上下文中启动) . 这篇博文很好地概述了它在 UAC 流程中的作用:

AIS 使用额外的管理权限促进交互式应用程序的运行。如果此服务被停止,用户将无法使用他们可能需要的额外管理权限来启动应用程序......外壳在启动应用程序时会检查此服务。AIS 是读取清单和具有“requestedExecutionLevel”要求的“trustInfo”xml 部分的那个...

以下是上面引述后的图表,详细说明了 AIS 在 UAC 同意提示流程中的作用:

在此处输入图片说明

AIS在 DLLappinfo.dll实现,该 DLLsvchost.exe.

同意提示

@BenN 的回答解释了(臭名昭著的)UAC 同意提示的关键作用。这是在consent.exe并负责获得用户的同意或管理用户的凭据以允许启动需要管理员权限的应用程序。

安全桌面

默认情况下,安全桌面是显示 UAC 同意提示的地方。微软的 UACBlog告诉我们这个桌面与用户桌面相比有什么独特之处:

由于登录 UI 在安全桌面上运行,因此您最常在登录 Windows 时与 [安全桌面] 进行交互。安全桌面与用户桌面的主要区别在于,仅允许以 SYSTEM 身份运行的受信任进程在此处运行(即不以用户权限级别运行),并且从用户桌面到安全桌面的路径也必须通过信任整个链条。

在征求用户同意以提升权限运行应用程序时使用它的想法是,恶意软件无法模仿安全桌面,除非它已经拥有管理权限,在这种情况下,欺骗用户授予它们是没有实际意义的。


结论:UAC 不仅仅是一个二进制文件。它是交织子系统的结构。

此处未涵盖 UAC 架构的其他方面,但这应该为以下事实提供足够的证据:

  1. UAC 不是在单个二进制文件中实现的。
  2. 如果启用,它是执行管理任务的一个组成部分。

自从它在 Windows Vista 中引入以来,它已经深入集成到操作系统的关键部分中,因此在不破坏其他内容(例如您的登录能力!)的情况下删除所有负责 UAC 的代码是不可行的。

我认为可以肯定地说,如果您“强行删除”UAC,您将破坏 Windows。


Ben*_*n N 26

正如 Twisty 出色地解释的那样,有很多组件可以帮助实现 UAC。人们最熟悉的 UAC 部分是提升/同意对话框:

这由consent.exe“管理应用程序的同意 UI”提供。我尝试在 VM 中重命名它并查看会发生什么。正如预期的那样,使用“以管理员身份运行”时不会出现提升提示——相反,您会收到一个 file-not-found 错误,该错误归咎于您尝试提升的内容:

未找到

尝试使用任何需要提升的控制面板 UI 元素(即具有盾牌图标),即使以管理员身份登录,也会因类似错误而失败。尝试从“开始”菜单启动管理内容会产生稍微不同的错误:

没有关联的应用程序

根据重命名时设置的 ACL 会破坏所有内容,可能无法从操作系统内部修复此问题,因为文件操作可能需要提升(即使它们通常不会产生同意对话框)。不过,类似普通用户的活动似乎并没有降级。

  • @muru Windows 确实验证并替换了许多系统文件,不确定是否包含此文件。然而,从安全的角度来看,这一点没有实际意义——要替换consent.exe,您首先需要管理员权限,因此即使可以按照您想象的方式替换,也没有权限提升。 (6认同)
  • @muru,我猜consent.exe 不只是返回true 或false,而是要在其下执行的令牌。这意味着您无法从普通用户获得管理员令牌,而无需实际以管理员身份进行身份验证。 (3认同)
  • 只是把它包括在内,因为我想到了这个想法。您仍然可以将机器引导到 Linux 或其他东西来替换文件。但这需要对机器的物理访问,这基本上也是管理访问。所以它仍然不是一个安全问题 (3认同)