上篇(什么是Windows访问令牌?(开篇))我们拆了访问令牌(Access Token)的结构,知道了令牌里装着用户的 SID、组列表,还有一堆看似乱码的字符串。但令牌里真正“决定生死”的东西,其实是那个不起眼的特权列表(Privileges)——也就是我们常说(?)的 SeXXXPrivilege。
今天就来仔细分析一下特权。
一、特权是什么?

很多人容易把“特权”和“权限”搞混,觉得“我是管理员,我什么权限都有”。错了。
打个最糙的比方:
权限(Permission) 是你手里的门禁卡。卡里记录了你能进哪几个房间(读哪个文件)、不
能进哪个房间。系统检查的是门上那张 ACL(访问控制列表)。
特权(Privilege) 是你手里的一把大锤。它不关心门禁卡怎么刷,因为它能直接砸墙。
一句话定义:特权就是操作系统赋予你的“无视常规 ACL 检查、执行特定系统级操作”的权力。
比如 代码登录后可见,哪怕文件 ACL 上写着“禁止任何人读取”,拥有这个特权的人依然能把它读出来。这就是“特权”和“权限”最本质的区别。
二、特权是怎么工作的?
1. 登录时下发,装在令牌里
你登录系统那一刻,LSASS(本地安全机构)就把你和你所在组拥有的所有特权,一股脑塞进了你的访问令牌里。用 代码登录后可见 就能看到当前令牌里的完整列表。
2. 默认是“关着的”
这是 Windows 最神(代码登录后可见)的设计之一。令牌里有这个特权,不代表你能直接用。
绝大多数高危特权(比如 代码登录后可见)默认状态是 Disabled(已禁用)。为什么?怕你手滑,更怕恶意程序偷偷利用。
你必须显式调用 代码登录后可见 这个 API 去“启用(Enable)”它,系统才真正允许你使用这个特权。
3. 执行时双重检查
当你试图干一件需要特权的事(比如 代码登录后可见 调试别的进程),内核会查你的令牌:
有没有这个特权?(令牌里列了没?)
开了没?(状态是 Enabled 吗?)
两个条件缺一不可,直接否决,返回 代码登录后可见。
三、这些特权里,哪几个最“逆天”?
Windows 定义了三十多个特权,但说实话,大部分是摆设或仅供系统内核使用。真正让安全从业者和黑客都双眼放光的,其实就那么几个。
我把它们拎出来单独说:
特权为什么危险?
SeDebugPrivilege能强行打开任意进程,读写它的内存。提权之王。打开 代码登录后可见 把内存里存着的明文密码和 NTLM 哈希全部 dump 出来,直接拿域控凭据。
SeBackupPrivilege无视 ACL,读遍天下所有文件。配合卷影副本(Volume Shadow Copy),直接把 代码登录后可见 和 代码登录后可见 注册表文件拷走,离线破解所有本地账户密码。
SeRestorePrivilege无视 ACL,写遍天下所有文件。比读取更致命。往 代码登录后可见 里覆盖一个带后门的 代码登录后可见,下次用户登录密码就送上门了。
SeTakeOwnershipPrivilege抢走任何对象(文件、注册表、进程)的所有权。抢完所有权,你就是“主人”了,想怎么改 ACL 就怎么改,最后等效于同时拥有 BackUp 和 Restore。
SeImpersonatePrivilege允许当前线程“模拟(Impersonate)”其他已登录用户。这就是大名鼎鼎的 Potato(土豆)提权漏洞 依赖的特权。诱骗 SYSTEM 账户连接过来,然后模拟它的令牌,直接原地变身 SYSTEM。SeLoadDriverPrivilege加载或卸载内核驱动程序。把恶意代码直接塞进 Ring 0(内核态)。杀软在你面前就是张纸,想撕就撕,还能植入永远杀不掉的 Rootkit。
SeTcbPrivilege字面意思:“作为操作系统的一部分运行”。神级特权。拥有它,你就是 Windows 内核本核,所有安全检查对你直接放行。通常只有 SYSTEM 账户才配拥有。
哪怕是 Administrator 管理员账户,默认登录后这些特权绝大多数也是 Disabled(关着的)。微软宁可让管理员每次手动去开,也不愿意默认给。
四、完整的特权列表(这里是我自己Windows7系统上的,Windows10以上的系统可能会增加几个特权)

英文名 中文名 描述
SeAssignPrimaryTokenPrivilege 替换进程级令牌 分配进程的主令牌所必需的
SeAuditPrivilege 生成安全性审核 生成审核日
志条目所必需的
SeBackupPrivilege 备份文件和目录 系统向任何文件授予全部读取访问控制,而不考虑为该文件指定的ACL
SeChangeNotifyPrivilege 绕过遍历检查 接收有关文件或目录更改的通知所必需的。此权限会导致系统跳过所有遍历访问检查
SeCreateGlobalPrivilege 创建全局对象 在终端服务会话期间在全局命名空间中创建命名文件映射对象时所必需的
SeCreatePagefilePrivilege 创建页面文件 创建分页文件所必需的
SeCreatePermanentPrivilege 创建永久共享对象 创建永久对象所必需的
SeCreateSymbolicLinkPrivilege 创建符号链接 创建符号链接所必需的
SeCreateTokenPrivilege 创建令牌对象 创建主令牌所必需的
SeDebugPrivilege 调试程序 调试和调整另一帐户拥有的进程的内存所必需的
SeDelegateSessionUserImpersonatePrivilege 模拟其他用户 获取同一会话中其他用户的模拟令牌时所必需的
SeEnableDelegationPrivilege 启用要信任的用于委派的计算机和用户帐户 将用户和计算机帐户标记为“受信任且可用于委派”时所必需的
SeImpersonatePrivilege 身份验证后模拟客户端 模拟所必需的
SeIncreaseBasePriorityPrivilege 提高计划优先级 提高进程的基优先级所必需的
SeIncreaseQuotaPrivilege 调整进程的内存配额 增加分配给进程的配额时所必需的
SeIncreaseWorkingSetPrivilege 增加进程工作集 为在用户上下文中运行的应用程序分配更多内存时所必需的
SeLoadDriverPrivilege 加载和卸载设备驱动程序 加载或卸载设备驱动程序所必需的
SeLockMemoryPrivilege 在内存中锁定页 在内存中锁定物理页所必需的
SeMachineAccountPrivilege 将工作站添加到域 创建计算机帐户所必需的
SeManageVolumePrivilege 执行卷维护任务 启用卷管理权限所必需的
SeProfileSingleProcessPrivilege 分析单个进程 收集单个进程的分析信息所必需的
SeRelabelPrivilege 修改对象标签 修改对象的强制性完整性级别所必需的
SeRemoteShutdownPrivilege 从远程系统强制关机 使用网络请求关闭系统时所必需的
SeRestorePrivilege 还原文件和目录 (执行还原操作所必需的)
SeSecurityPrivilege 管理审核和安全日志 (管理审核和安全日志所必需的)
SeShutdownPrivilege 关闭系统 (关闭本地系统所必需的)
SeSyncAgentPrivilege 同步目录服务数据 (使用LDAP目录同步服务所必需的)
SeSystemEnvironmentPrivilege 修改固件环境值 (修改系统非易失性RAM所必需的)
SeSystemProfilePrivilege 配置文件系统性能 (收集整个系统的性能分析信息所必需的)
SeSystemtimePrivilege 更改系统时间 (修改系统时间所必需的)
SeTakeOwnershipPrivilege 取得文件或其他对象的所有权 (取得任何安全对象的所有权所必需的)
SeTcbPrivilege 作为操作系统的一部分运行 进程可以假设任意用户的身份,从而获取对授权该用户访问的资源的访问权限
SeTimeZonePrivilege 更改时区 调整设备用于显示本地时间的时区
SeTrustedCredManAccessPrivilege 作为受信任的调用方访问凭据管理器 (备份和还原过程中由凭据管理器使用)
SeUndockPrivilege 从扩展坞上移除计算机 (从扩展坞移除笔记本电脑所必需的)
SeUnsolicitedInputPrivilege 不适用 需要从终端设备读取未经请求的输入
五、结语
特权就是 Windows 给管理员发的“VIP”,但默认给你禁用了。 开发者写程序时如果需要这些特权,必须主动调用 代码登录后可见 去启用。
这也是为什么渗透测试里拿到一个 shell 后,第一件事就是 代码登录后可见。
友情链接:
特权常量(Privilege Constants)
特权(Privileges)概述
用户权限分配(User Rights Assignment)
特权类型(privilegeType)
以上文档均来自 Microsoft Learn 官方站点,建议以 “特权常量” 页面作为主要查阅入口,该页面包含了最完整的特权列表及说明。
下篇预告
代码登录后可见