MENU

探索UAC

September 27, 2021 • Read: 103 • 常山阅读设置

UAC原理

参考:

  1. https://docs.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-vista/cc709628(v=ws.10)
  2. https://docs.microsoft.com/zh-cn/windows/security/identity-protection/user-account-control/how-user-account-control-works

因为原文是英语,所以很多地方只能看个一知半解,欢迎指正。

What is UAC?

UAC(用户账户控制)是微软在Windows Vista操作系统中提供的一种功能,用户账户只拥有有限的权限,无法使用特权,类似于Linux系统中的普通用户和root用户。

在Windows XP系统中,XP系统默认将设置向导创建的所有用户视为本地管理员。由于管理员账户具有全系统的访问权限,所有此类账户能够安装、更新和允许任意软件,这就给恶意软件带来了可乘之机,所以亟需一套特权管理系统来改善XP系统的安全问题,所以微软在Windows Vista系统中使用了UAC。

UAC只能保证程序是由拥有特权的用户操作,并不能决定程序的权限。

在Windows中,特权不同于权限,特权适用于用户账户,而权限适用于资源,Windows使用访问令牌去管理资源,每个资源都有一个访问控制列表(ACL),Windows系统的UAC会根据用户的访问令牌以及资源的ACL来判断。

Workflow

Difference

普通用户管理员用户
建立局域网安装和卸载应用程序
建立和配置WiFi安装设备驱动
修改显示设置安装Windows更新
通过服务整理磁盘碎片配置家庭管理
播放CD/DVD(可配置组策略)安装ActiveX控件
烧录CD/DVD(可配置组策略)打开Windows防火墙面板
更改当前用户桌面背景更改用户的账户类型
打开日期和时间并更改时区修改组策略中的UAC设置
使用远程桌面配置远程访问
更改用户自己的密码添加或删除用户
配置电池电源选项将文件复制或移动到程序文件或Windows目录
配置辅助功能选项设置计划任务
恢复用户的备份文件恢复系统备份文件
同步计算机和其他只能设备配置自动更新
配置蓝牙浏览其他用户目录

UAC Architecture

管理员登录时,管理员会获得两个访问令牌,一个是具有完整管理员权限的访问令牌,一个是只有普通用户的访问令牌。默认情况下,管理员的特权被禁用,只能使用普通用户启动桌面(explorer.exe),因为explorer.exe是其他资源的父进程,所以所有应用程序默认以普通用户权限运行。但是当普通用户登录时,只创建普通用户访问令牌。

管理员在正常使用时使用普通用户访问令牌,当管理员需要执行特权的任务时,Windows会自动提示用户批准,这个过程称为权限提升。

所有需要管理员特权的应用都必须提示管理员,以经过管理员同意。但是还是有意外情况,子进程可以继承父进程的访问令牌(但是父进程和子进程必须具有相同的可信级别)

Virtualization

当不适用于UAC的应用尝试写入受保护文件夹时,UAC会告诉该应用写入成功,但其实只是写入到用户的配置文件。

大多数旧应用使用虚拟化正常运行,按照微软的说法,这只是短期的解决方案。所以虚拟化只用于以下应用:

  1. 仅支持32位应用,64位应用尝试获取特权时只会被拒绝
  2. 不适用于完整的访问令牌
  3. 应用包括具有请求执行级别属性的清单
Last Modified: September 28, 2021
Archives QR Code Tip
QR Code for this page
Tipping QR Code