UAC原理
参考:
- https://docs.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-vista/cc709628(v=ws.10)
- 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会告诉该应用写入成功,但其实只是写入到用户的配置文件。
大多数旧应用使用虚拟化正常运行,按照微软的说法,这只是短期的解决方案。所以虚拟化只用于以下应用:
- 仅支持32位应用,64位应用尝试获取特权时只会被拒绝
- 不适用于完整的访问令牌
- 应用包括具有请求执行级别属性的清单
《探索UAC》链接:https://xdym11235.com/archives/100.html
具体版权规定详见侧栏版权说明页面