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


27

System32文件夹中是否存在用于Windows UAC功能的二进制文件(.exe)?(例如uac.exe)。如果强行删除该文件会怎样?Windows会中断还是无法启动?

这里没有XY问题。我只是很好奇,如果强行从PC上卸下UAC,会发生什么。


1
您可以轻松禁用UAC。UAC是内核的功能。您想要的东西是不可能的
Ramhound18年

有一个文件win32k.systechnize.net/… ,显然,在预先修补的Windows中,该文件可以被操作/ 更改 ..以禁用UAC。或者,可以以正常方式禁用UAC,但它不是一个EXE文件
barlop

您可以使用多种方法禁用UAC,例如superuser.com/questions/1013702/…。我在想,如果您以其他类似黑客的方式删除它,则将获得几乎相同的效果,尽管以下答案中有关丢失二进制文件的错误。
YetAnotherRandomUser18年

@barlop,win32k.sys只是Windows子系统的内核。换句话说,一切使用的核心代码。我不建议尝试更改它。pasotech.altervista.org/windows_internals/Win32KSYS.pdf
黑暗猎鹰

@DarkFalcon“ Windows子系统的内核端”可能比这更多。而且我没有建议您“更改”!您认为有人会做什么?在记事本中打开它?我从来没有建议过这样的事情!打开十六进制编辑器?更好,但我也不建议这样做!没有人会做任何改变,除非他们对要改变的东西有所了解,而这需要一定的技能水平!
barlop

Answers:


56

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

用户帐户控制(UAC)是指一起构成UAC体系结构的几个组件。我将简要回顾其中的一些内容以及负责实现这些内容的二进制文件,但首先,这是Microsoft Docs文章“用户帐户控制的工作原理”中的UAC体系结构概述:

在此处输入图片说明

本地安全机构(LSA)/筛选的令牌

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

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

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

在此处输入图片说明

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

虚拟化

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

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

资源

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

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

应用信息服务

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

AIS以附加的管理权限促进交互式应用程序的运行。如果该服务停止,则用户将无法使用他们可能需要的其他管理特权来启动应用程序。...外壳程序在启动应用程序时会检查该服务。AIS是读取清单和具有对'requestedExecutionLevel'要求的'trustInfo'xml节的...

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

在此处输入图片说明

AIS 在由执行的DLLappinfo.dll实现svchost.exe

同意提示

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

安全桌面

默认情况下,安全桌面是显示UAC同意提示的位置。Microsoft的UACBlog告诉我们此桌面与用户桌面相比有何独特之处:

由于登录UI在安全桌面上运行,因此您最常在登录Windows时与[安全桌面]进行交互。Secure Desktop与User Desktop的主要区别在于,仅允许以SYSTEM身份运行的受信任进程在此处运行(即,没有以User特权级别运行的进程),并且还必须通过以下方式信任从User Desktop到Secure Desktop的路径:整个链。

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


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

UAC体系结构的其他方面未在此处介绍,但这应为以下事实提供足够的证据:

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

自从它在Windows Vista中引入以来它已被深度集成到操作系统的关键部分,从而使其不可行地删除了负责UAC的所有代码,而又不会破坏其他东西(例如您的登录能力!)。

我认为可以肯定地说,如果“强制删除” UAC,则会破坏Windows。


1
FWIW technize.net/... 基于该链接的,似乎该文件Win32k.sys中似乎发挥了作用我注意到的file.exe标识为“PE32 +可执行文件(本机)的x86-64,支持MS Windows”
barlop

win32k.sys本质上是内核的很大一部分。当然,它在UAC中发挥作用。这 Windows操作系统。
罗杰·利普斯科姆

25

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

这由consent.exe“管理应用程序的同意UI” 提供。我尝试在VM中重命名它,然后看看会发生什么。不出所料,当使用“以管理员身份运行”时,没有提升提示出现-而是,您得到了一个文件未找到的错误,该错误归咎于您试图提升的东西:

未找到

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

没有关联的应用

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


3
@muru,我猜同意.exe不仅会返回true或false,而是要在其下执行的令牌。这意味着您不能从普通用户获得管理员令牌,而无需实际身份验证为管理员。
乔伊(Joey)

6
@muru Windows会验证并替换许多系统文件,不确定是否包含此文件。但是,从安全的角度来看,要解决的问题是没有意义的-替换tent.exe,首先需要管理员权限,因此即使可以替换您想像的方式,也不存在特权升级。
卢安

3
我想起就把它包括进去。您仍然可以将计算机引导至Linux或用其他方式替换文件。但这需要对计算机的物理访问,这基本上也是管理访问。因此,这仍然不是安全问题
DeadChex

1
@EricTowers是的,但是由于需要更改管理权限consent.exe,因此能够做到这一点的攻击者已经在密闭的舱口的另一端,并且具有处理坏事的更简单的方法。
本N

1
@TwistyImpersonator有趣的问题!在普通管理员帐户下完成静默提升操作后,似乎还可以触发“同意运行”(按进程启动监视)。内置的Administrator帐户不受UAC的限制,因此其所有程序均已提升权限,并且无需参与Consent。您可以使用此安全策略更改该行为。
本N
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.