首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >创建您自己的虚拟服务帐户

创建您自己的虚拟服务帐户

作者头像
Khan安全团队
发布2022-01-18 14:20:02
发布2022-01-18 14:20:02
1.2K00
代码可运行
举报
文章被收录于专栏:Khan安全团队Khan安全团队
运行总次数:0
代码可运行

虚拟服务帐户允许您创建访问令牌,其中用户 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的用户身份运行。

代码语言:javascript
代码运行次数:0
运行
复制
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命令添加登录类型。

代码语言:javascript
代码运行次数:0
运行
复制
PS> Add-NtAccountRight -Sid 'S-1-5-100-1' -LogonType SeInteractiveLogonRight

授予登录权限后,您可以使用 Get-NtToken 命令登录帐户并返回令牌。

代码语言:javascript
代码运行次数:0
运行
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档