Az - Federation
基本信息
来自文档:Federation 是一组建立了 信任 的 域。信任的级别可能有所不同,但通常包括 认证,几乎总是包括 授权。一个典型的 Federation 可能包括多个组织,这些组织为共享访问一组资源建立了信任。
你可以将 本地环境 与 Azure AD 联邦,并使用此联邦进行认证和授权。这种登录方法确保所有用户 认证都在本地进行。这种方法允许管理员实施更严格的访问控制。可以使用 AD FS 和 PingFederate 进行联邦。
基本上,在 Federation 中,所有 认证 都在 本地 环境中进行,用户在所有受信环境中体验 SSO。因此,用户可以使用他们的 本地凭据 访问 云 应用程序。
Security Assertion Markup Language (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 派生。
Golden SAML 攻击:
在 ADFS 中,SAML Response 由令牌签名证书签名。
如果证书被泄露,可以以任何同步到 Azure AD 的用户身份认证到 Azure AD!
就像我们的 PTA 滥用一样,用户的密码更改或 MFA 不会有任何影响,因为我们正在伪造认证响应。
证书可以从具有 DA 权限的 AD FS 服务器中提取,然后可以从任何连接到互联网的机器上使用。
Golden SAML
身份提供者 (IdP) 生成 SAMLResponse 以授权用户登录的过程至关重要。根据 IdP 的具体实现,响应 可能会使用 IdP 的私钥 签名 或 加密。此过程使 服务提供者 (SP) 能够确认 SAMLResponse 的真实性,确保它确实是由受信任的 IdP 发出的。
可以与 golden ticket 攻击 类比,其中用于认证用户身份和权限的密钥(golden ticket 的 KRBTGT,golden SAML 的令牌签名私钥)可以被操纵以 伪造认证对象(TGT 或 SAMLResponse)。这允许冒充任何用户,授予对 SP 的未授权访问。
Golden SAML 具有某些优势:
它们可以 远程创建,无需成为相关域或联邦的一部分。
即使启用了 双因素认证 (2FA),它们仍然有效。
令牌签名 私钥不会自动更新。
更改用户密码不会使已生成的 SAML 失效。
AWS + AD FS + Golden SAML
Active Directory Federation Services (AD FS) 是一种 Microsoft 服务,促进了受信业务伙伴(联邦)之间 身份信息的安全交换。它本质上允许域服务与联邦内的其他服务提供者共享用户身份。
由于 AWS 信任被泄露的域(在联邦中),此漏洞可以被利用以潜在地 获取 AWS 环境中的任何权限。此攻击需要 用于签署 SAML 对象的私钥,类似于 golden ticket 攻击中需要 KRBTGT。访问 AD FS 用户帐户足以获取此私钥。
执行 golden SAML 攻击的要求包括:
令牌签名私钥
IdP 公共证书
IdP 名称
角色名称(要假设的角色)
域\用户名
AWS 中的角色会话名称
Amazon 账户 ID
只有加粗的项目是必需的。其他可以根据需要填写。
要获取 私钥,需要访问 AD FS 用户帐户。从那里,可以使用 mimikatz 等工具从个人存储中 导出私钥。要收集其他所需信息,可以使用 Microsoft.Adfs.Powershell snapin,如下所示,确保你以 ADFS 用户身份登录:
有了所有信息,可以使用 shimit 伪造一个有效的 SAMLResponse 作为你想要冒充的用户**:**
本地 -> 云
也可以创建仅云用户的ImmutableID并冒充他们
参考资料
Last updated