在修补 Windows 帐户(本地,而不是域中)时,我偶然发现了一些我不理解的东西
我创建了一个本地 Windows 会话(我们称之为 Joe),该会话具有管理员权限
然后,通过我的真实管理会话(称为 Bob),我创建了一个计划任务,该任务在使用 Joe 的凭据以最高权限登录后 5 秒执行,该任务执行net user Joe /active:no
这会导致“一次性使用”会话,该会话将在登录后自行禁用,并且只能由 Bob 重新启用
现在,如果我登录 Joe 的会话,我将拥有管理员权限,例如我可以以管理员身份启动 PowerShell,它会工作,但为什么呢?如果帐户被禁用,该帐户如何仍有权以管理员身份启动某些内容?我什至会问:为什么它可以启动任何事情?
“禁用”状态是否只有在所有会话关闭后才生效?
为什么不能启动程序?启动进程不需要重新登录。在最基本的情况下,它只是继承父进程的访问令牌,仅此而已。访问令牌是自包含的。
为什么可以启动管理进程?因为具有管理员权限的用户会话也已经存在。使用 UAC,“常规”和管理员访问令牌都是在用户登录时创建的。
禁用状态仅在登录时生效。IIRC 这也适用于锁定屏幕。
对于大多数操作,根本不咨询安全机构(本地帐户数据库或 Active Directory 等),因为这会严重损害加入域的计算机的性能。安全关键数据结构驻留在受保护的内存中,无法更改,因此操作系统可以信任它们。