虚拟服务帐户允许您创建访问令牌,其中用户 SID 是服务 SID,例如NT SERVICE\TrustedInstaller。虚拟服务帐户不需要配置密码,这使其成为限制服务的理想选择,而不必处理默认服务帐户并使用 WSH 锁定它们或使用密码指定域用户。
要为虚拟服务帐户创建访问令牌,您可以使用LogonUserExEx并指定未记录的 (AFAIK) LOGON32_PROVIDER_VIRTUAL登录提供程序。您必须拥有SeTcbPrivilege才能创建令牌,并且帐户的 SID 的第一个 RID 必须在 80 到 111 的范围内(包括 80 到 111)。回想一下之前的博客文章,这与 LsaManageSidNameMapping所涵盖的范围完全相同。
LogonUserExEx API 只接受域和用户名的字符串,您不能指定 SID。使用 LsaManageSidNameMapping 函数可以将用户名和域映射到虚拟服务帐户 SID。LSASS 会阻止您 在 SCM 或任务调度程序服务之外使用 RID 80 (NT SERVICE) 和 87 (NT TASK)
因此,让我们创建自己的虚拟服务帐户。首先,您需要使用上一篇博文中的工具添加您的域和用户名。所有这些命令都需要以具有SeTcbPrivilege的用户身份运行。
SetSidMapping.exe S-1-5-100="AWESOME DOMAIN"
SetSidMapping.exe S-1-5-100-1="AWESOME DOMAIN\USER"
所以我们现在有了SID S-1-5-100-1的AWESOME DOMAIN\USER帐户。现在,在我们可以登录帐户之前,您需要授予它登录权限。如果您想要一个服务帐户,这通常是 SeServiceLogonRight,但您可以指定任何您喜欢的登录权限,甚至是SeInteractiveLogonRight(遗憾的是,我不相信您实际上可以使用您的虚拟帐户登录,至少很容易)。
如果您获得了最新版本的NtObjectManager,您可以使用Add-NtAccountRight命令添加登录类型。
PS> Add-NtAccountRight -Sid 'S-1-5-100-1' -LogonType SeInteractiveLogonRight
授予登录权限后,您可以使用 Get-NtToken 命令登录帐户并返回令牌。
PS> $token = Get-NtToken -Logon -LogonType Interactive -User USER -Domain 'AWESOME DOMAIN' -LogonProvider Virtual
PS> Format-NtToken $token
AWESOME DOMAIN\USER
如您所见,我们已经验证了虚拟帐户并取回了一个令牌。当我们选择以交互类型登录时,令牌也将分配INTERACTIVE组。无论如何,这就是现在的全部。我猜因为只有有限数量的 RID 可用(这是人为的限制)MS 不希望记录这些功能,即使它可能对普通开发人员有用。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有