在使用和管理 Windows 系统时,理解其权限体系至关重要。以下将深入解析 Windows 中的核心权限概念,包括 User、Token、Privilege、MIC 和 UAC,帮助你全面掌握它们之间的关系与区别。
一、用户(User)
在 Windows 中,用户是能够被系统验证身份的实体,如普通用户账号、管理员、系统服务甚至计算机本身。每个用户拥有唯一的安全标识符(SID),用于标记身份与权限。
用户可以单独设置权限,也可以通过用户组(如管理员组、用户组)统一管理权限。Windows 通过 SID 而非用户名识别用户,以便在用户更名时,权限不受到影响。
二、访问令牌(Token)
用户成功登录后,系统会生成一个访问令牌,用以代表用户当前的安全上下文。访问令牌是一种内核对象,它随进程或线程传递,用来记录用户身份、所属组别、拥有的特权以及完整性级别(MIC)等关键信息。
令牌分为主令牌(Primary Token)和模拟令牌(Impersonation Token)两种类型。主令牌通常用于用户登录后的进程,模拟令牌则常用于进程代替用户执行操作的场景,比如网络服务。
三、特权(Privilege)
特权是指允许用户或进程执行特定系统级操作的权限。这些操作通常包括加载设备驱动程序(如 SeLoadDriverPrivilege)、修改系统时间、调试其他进程(如 SeDebugPrivilege)等。
特权默认情况下通常处于禁用状态,即使用户拥有该特权,也必须在实际使用时手动启用。这种机制有效防止了意外或未授权的敏感操作。
四、强制完整性控制(MIC)
强制完整性控制(Mandatory Integrity Control, MIC)是 Windows 引入的一种额外安全机制。它通过为进程和系统资源分配不同的完整性级别(Integrity Level, IL)来进行权限管理。这些级别包括:
- 不受信任(Untrusted)
- 低(Low)
- 中(Medium,默认级别)
- 高(High,管理员权限)
- 系统(System,系统核心进程)
进程只能修改自身级别或更低级别的对象,而不能修改更高级别的对象。浏览器等高风险程序通常以较低级别运行,以减少潜在的安全风险。
五、用户账户控制(UAC)
用户账户控制(User Account Control, UAC)旨在提升 Windows 系统的安全性,尤其是保护管理员账户日常运行的安全。
即使用户属于管理员组,日常也默认以标准用户权限(中 IL)运行。当用户需要执行敏感操作,如安装软件或更改系统设置时,UAC 会弹出提示框,要求用户同意或输入管理员密码。确认后,系统生成一个拥有管理员权限的高完整性级别访问令牌,从而允许特定操作。
UAC 本质上利用了两个关键技术:
- 双令牌机制(标准令牌和提升令牌)
- 完整性级别(中 IL → 高 IL)的转换
六、概念之间的联系与区别
- 用户(User) 定义了“你是谁”。
- 访问令牌(Token) 定义了“你拥有什么权限和特权”。
- 特权(Privilege) 定义了“你能够执行哪些特殊的系统操作”。
- MIC(强制完整性控制) 限制了“你能够修改哪些对象或资源”。
- UAC(用户账户控制) 控制“何时以及如何以更高权限执行敏感操作”。
关联 & 区别一图胜千言
概念 | 本质/存放位置 | 决定什么 | 典型值/例子 | 关系 |
---|---|---|---|---|
User | 安全主体(SID) | 是谁 | S-1-5-21-...-1001 | 登录时生成 Token |
Token | 内核对象 | 你拥有什么 | 各种 SID、特权、IL | 随进程/线程携带 |
Privilege | Token 内标记 | 可以做什么系统级动作 | SeDebugPrivilege | Token 字段之一 |
MIC (IL) | Token & SACL | 能修改谁(写/执行) | 低、中、高、系统 | IL 存在 Token 中;UAC 借此降权 |
UAC | OS 功能 | 何时切换到高权 | 同意对话框 → Elevated Token | 利用双 Token + IL |
0