Az - Federation
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
来自文档:联邦是建立了信任的一组域。信任的级别可能有所不同,但通常包括身份验证,几乎总是包括授权。一个典型的联邦可能包括一组已建立信任的组织,以便共享访问一组资源。
您可以将本地环境与 Azure AD 进行联邦,并使用此联邦进行身份验证和授权。此登录方法确保所有用户身份验证发生在本地。此方法允许管理员实施更严格的访问控制。与 AD FS 和 PingFederate 的联邦是可用的。
基本上,在联邦中,所有身份验证发生在本地环境中,用户在所有受信任的环境中体验单点登录(SSO)。因此,用户可以使用他们的本地凭据访问云应用程序。
安全断言标记语言 (SAML) 用于在提供者之间交换所有身份验证和授权信息。
在任何联邦设置中,有三个参与方:
用户或客户端
身份提供者 (IdP)
服务提供者 (SP)
(图片来自 https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
最初,用户访问一个应用程序(服务提供者或 SP,例如 AWS 控制台或 vSphere Web 客户端)。根据具体实现,此步骤可能会被绕过,直接将客户端引导到 IdP(身份提供者)。
随后,SP 确定适当的 IdP(例如,AD FS,Okta)进行用户身份验证。然后,它构建一个 SAML(安全断言标记语言)AuthnRequest,并将客户端重定向到所选的 IdP。
IdP 接管,进行用户身份验证。身份验证后,IdP 制定一个 SAMLResponse,并通过用户转发给 SP。
最后,SP 评估 SAMLResponse。如果成功验证,表明与 IdP 之间存在信任关系,则用户被授予访问权限。这标志着登录过程的完成,允许用户使用该服务。
如果您想了解更多关于 SAML 身份验证和常见攻击的信息,请访问:
AD FS 是基于声明的身份模型。
“..声明只是关于用户的简单语句(例如,姓名、身份、组),主要用于授权访问位于互联网上任何地方的基于声明的应用程序。”
用户的声明写入 SAML 令牌中,然后由 IdP 签名以提供机密性。
用户通过 ImmutableID 进行识别。它是全局唯一的,并存储在 Azure AD 中。
ImmutableID 存储在本地作为 ms-DS-ConsistencyGuid,供用户使用,和/或可以从用户的 GUID 派生。
黄金 SAML 攻击:
在 ADFS 中,SAML 响应由令牌签名证书签名。
如果证书被泄露,则可以作为任何同步到 Azure AD 的用户进行身份验证!
就像我们的 PTA 滥用一样,用户的密码更改或 MFA 不会产生任何影响,因为我们伪造了身份验证响应。
可以从 AD FS 服务器提取证书,具有 DA 权限,然后可以从任何连接到互联网的机器上使用。
身份提供者 (IdP) 生成 SAMLResponse 以授权用户登录的过程至关重要。根据 IdP 的具体实现,响应可能会使用 IdP 的私钥进行签名或加密。此过程使 服务提供者 (SP) 能够确认 SAMLResponse 的真实性,确保它确实是由受信任的 IdP 发出的。
可以与 黄金票证攻击 进行类比,其中用于验证用户身份和权限的密钥(黄金票证的 KRBTGT,黄金 SAML 的令牌签名私钥)可以被操纵以伪造身份验证对象(TGT 或 SAMLResponse)。这允许冒充任何用户,授予对 SP 的未授权访问。
黄金 SAML 提供某些优势:
它们可以远程创建,无需成为相关域或联邦的一部分。
即使启用双因素身份验证 (2FA),它们仍然有效。
令牌签名私钥不会自动续订。
更改用户的密码不会使已生成的 SAML 无效。
活动目录联邦服务 (AD FS) 是一项 Microsoft 服务,促进受信任商业伙伴之间身份信息的安全交换(联邦)。它基本上允许域服务与联邦内的其他服务提供者共享用户身份。
由于 AWS 信任被泄露的域(在联邦中),可以利用此漏洞来潜在地获取 AWS 环境中的任何权限。该攻击需要用于签名 SAML 对象的私钥,类似于在黄金票证攻击中需要 KRBTGT。访问 AD FS 用户帐户足以获取此私钥。
执行黄金 SAML 攻击的要求包括:
令牌签名私钥
IdP 公共证书
IdP 名称
角色名称(要承担的角色)
域\用户名
AWS 中的角色会话名称
亚马逊账户 ID
只有加粗的项目是强制性的。其他项目可以根据需要填写。
要获取私钥,需要访问AD FS 用户帐户。从那里,可以使用 mimikatz 等工具从个人存储中导出私钥。要收集其他所需信息,可以使用 Microsoft.Adfs.Powershell snapin,如下所示,确保您以 ADFS 用户身份登录:
使用所有信息,可以忘记一个有效的 SAMLResponse,作为您想要冒充的用户,使用 shimit:
也可以为仅云用户创建 ImmutableID 并冒充他们。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)