再探MS-SAMR协议
作者:Loong716@Amulab
0x00 前言
在前一篇《利用MS-SAMR协议修改用户密码》中介绍了利用MS-SAMR修改用户密码并还原的技巧。在本篇文章中,我们继续介绍MS-SAMR协议的一些其它利用。
0x01 利用
1. 添加本地用户
在渗透测试过程中,我们经常会遇到在目标机器添加账户但被杀软拦截掉的情况。现在较为通用的绕过方法是通过调用NetUserAdd()
等API来添加用户
我们同样也可以利用MS-SAMR协议中的SamrCreateUser2InDomain()
来添加用户(其实调用MS-SAMR是NetUserAdd()
等API的底层实现)
需要注意的有两点,一点是Windows操作系统(域控除外)中的“域”分为内置域(Builtin Domain)和账户域(Account Domain)
- 内置域(Builtin Domain):包含在安装操作系统时建立的默认本地组,例如管理员组和用户组
- 账户域(Account Domain):包含用户、组和本地组帐户。管理员帐户在此域中。在工作站或成员服务器的帐户域中定义的帐户仅限于访问位于该帐户所在物理计算机上的资源
因此我们需要在账户域中添加普通用户,然后在内置域中找到Administrators组,再将该用户添加到内置域中的Administrators中
第二个需要注意的是,利用SamrCreateUser2InDomain()
添加的账户默认是禁用状态,因此我们需要调用SamrSetInformationUser()
在用户的userAccountControl中清除禁用标志位:
// Clear the UF_ACCOUNTDISABLE to enable account
userAllInfo.UserAccountControl &= 0xFFFFFFFE;
userAllInfo.UserAccountControl |= USER_NORMAL_ACCOUNT