Az - Cloud Kerberos Trust
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
本文是 https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/ 的总结,可以查看以获取有关攻击的更多信息。此技术在 https://www.youtube.com/watch?v=AFay_58QubY中也有评论。
Kerberos Trust Relationship Overview
Cloud Kerberos Trust (Entra ID -> AD) – 此功能(Windows Hello for Business的一部分)建立了一种单向信任,其中本地 AD 信任 Entra ID 为 AD 发放 Kerberos 票证。启用后,会在 AD 中创建一个 AzureADKerberos$ 计算机对象(显示为只读域控制器)和一个链接的 krbtgt_AzureAD 账户(一个次级 KRBTGT)。Entra ID 持有这些账户的密钥,并可以为 AD 用户发放“部分” Kerberos TGT。AD 域控制器将尊重这些票证,但具有类似 RODC 的限制:默认情况下,高权限组(域管理员、企业管理员等)被 拒绝,普通用户被允许。这防止了 Entra ID 在正常情况下通过信任对域管理员进行身份验证。然而,正如我们将看到的,具有足够 Entra ID 权限的攻击者可以滥用这种信任设计。
Pivoting from Entra ID to On-Prem AD
场景: 目标组织已为无密码身份验证启用了 Cloud Kerberos Trust。攻击者在 Entra ID(Azure AD)中获得了 全局管理员 权限,但尚未控制本地 AD。攻击者还在网络上获得了对域控制器的访问(通过 VPN 或混合网络中的 Azure VM)。利用云信任,攻击者可以利用 Azure AD 控制在 AD 中获得 域管理员 级别的立足点。
前提条件:
-
Cloud Kerberos Trust 在混合环境中配置(指示符:AD 中存在一个
AzureADKerberos$RODC 账户)。 -
攻击者在 Entra ID 租户中拥有 全局管理员(或混合身份管理员) 权限(这些角色可以使用 AD Connect 同步 API 修改 Azure AD 用户)。
-
至少有一个 混合用户账户(在 AD 和 AAD 中都存在),攻击者可以以该账户进行身份验证。这可以通过知道或重置其凭据,或为其分配无密码方法(例如,临时访问通行证)来生成主刷新令牌(PRT)。
-
一个 本地 AD 目标账户,具有高权限且不在默认 RODC “拒绝” 策略中。实际上,一个很好的目标是 AD Connect 同步账户(通常命名为 MSOL_*),该账户在 AD 中具有 DCSync(复制)权限,但通常不是内置管理员组的成员。该账户通常不会同步到 Entra ID,使其 SID 可用于无冲突地冒充。
攻击步骤:
- 获取 Azure AD 同步 API 访问权限: 使用全局管理员账户,获取 Azure AD Provisioning (sync) API 的访问令牌。这可以通过 ROADtools 或 AADInternals 等工具完成。例如,使用 ROADtools(roadtx):
# Using roadtx to get an Azure AD Graph token (no MFA)
roadtx gettokens -u <GlobalAdminUPN> -p <Password> --resource aadgraph
(或者,可以使用 AADInternals 的 Connect-AADInt 作为全局管理员进行身份验证。)
- 修改混合用户的本地属性: 利用 Azure AD 同步 API 将选定混合用户的 onPremises 安全标识符 (SID) 和 onPremises SAMAccountName 设置为与目标 AD 账户匹配。这有效地告诉 Azure AD 云用户对应于我们想要冒充的本地账户。使用开源的 ROADtools Hybrid 工具包:
# Example: modify a hybrid user to impersonate the MSOL account
python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
--sourceanchor <ImmutableID_of_User>\
--sid <TargetAD_SID> --sam <TargetAD_SAMName>
用户的
sourceAnchor(不可变 ID)用于识别要修改的 Azure AD 对象。该工具将混合用户的本地 SID 和 SAM 账户名称设置为目标的值(例如,MSOL_xxxx 账户的 SID 和 SAM)。Azure AD 通常不允许通过 Graph 修改这些属性(它们是只读的),但同步服务 API 允许这样做,全球管理员可以调用此同步功能。
- 从 Azure AD 获取部分 TGT: 修改后,以混合用户身份对 Azure AD 进行身份验证(例如,通过在设备上获取 PRT 或使用他们的凭据)。当用户登录时(特别是在域加入或 Entra 加入的 Windows 设备上),Azure AD 将为该账户发放 部分 Kerberos TGT (TGTAD),因为启用了 Cloud Kerberos Trust。此部分 TGT 使用 AzureADKerberos$ RODC 密钥加密,并包含我们设置的 目标 SID。我们可以通过 ROADtools 为用户请求 PRT 来模拟这一点:
roadtx getprt -u <HybridUserUPN> -p <Password> -d <DeviceID_or_Cert>
这会输出一个 .prt 文件,其中包含部分 TGT 和会话密钥。如果账户是云专用密码,Azure AD 仍然在 PRT 响应中包含 TGT_AD。
- 用部分 TGT 交换完整 TGT(在 AD 上): 现在可以将部分 TGT 提交给本地域控制器,以获取目标账户的 完整 TGT。我们通过对
krbtgt服务(域的主要 TGT 服务)执行 TGS 请求来实现这一点——本质上是将票证升级为具有完整 PAC 的正常 TGT。可以使用工具来自动化此交换。例如,使用 ROADtools Hybrid 的脚本:
# Use the partial TGT from the PRT file to get a full TGT and NTLM hash
python3 partialtofulltgt.py -p roadtx.prt -o full_tgt.ccache --extract-hash
这个脚本(或 Impacket 等效项)将联系域控制器并为目标 AD 账户检索有效的 TGT,包括如果使用了特殊的 Kerberos 扩展,则该账户的 NTLM 哈希。KERB-KEY-LIST-REQ 扩展会自动包含,以请求 DC 在加密回复中返回目标账户的 NTLM 哈希。结果是一个凭证缓存(full_tgt.ccache),用于目标账户 或 恢复的 NTLM 密码哈希。
- 模拟目标并提升为域管理员: 现在攻击者有效地 控制了目标 AD 账户。例如,如果目标是 AD Connect MSOL 账户,它在目录上具有复制权限。攻击者可以使用该账户的凭证或 Kerberos TGT 执行 DCSync 攻击,从 AD 中转储密码哈希(包括域 KRBTGT 账户)。例如:
# Using impacket's secretsdump to DCSync as the MSOL account (using NTLM hash)
secretsdump.py 'AD_DOMAIN/<TargetSAM>$@<DC_IP>' -hashes :<NTLM_hash> LOCAL
这会转储所有 AD 用户密码哈希,给攻击者 KRBTGT 哈希(让他们可以随意伪造域 Kerberos 票证)并有效地获得对 AD 的 域管理员 权限。如果目标账户是另一个特权用户,攻击者可以使用完整的 TGT 以该用户的身份访问任何域资源。
- 清理: 可选地,攻击者可以通过相同的 API 恢复被修改的 Azure AD 用户的原始
onPremisesSAMAccountName和 SID,或简单地删除任何创建的临时用户。在许多情况下,下一个 Azure AD Connect 同步周期将自动还原同步属性上的未经授权的更改。(然而,到那时损害已经造成——攻击者已获得 DA 权限。)
Warning
通过滥用云信任和同步机制,Azure AD 的全局管理员可以冒充几乎 任何 没有被 RODC 策略明确保护的 AD 账户,即使该账户从未进行过云同步。在默认配置下,这 建立了从 Azure AD 破坏到本地 AD 破坏的完全信任。
参考文献
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

