Az - PHS - Password Hash Sync
基本信息
来自文档: Password hash synchronization 是实现混合身份的一种登录方法。Azure AD Connect 将用户密码的哈希值从本地 Active Directory 实例同步到基于云的 Azure AD 实例。
这是公司用来同步本地 AD 和 Azure AD 的最常见方法。
所有用户和密码哈希的哈希值都从本地同步到 Azure AD。然而,明文密码或原始哈希值不会发送到 Azure AD。 此外,内置安全组(如域管理员...)不会同步到 Azure AD。
哈希同步每2 分钟发生一次。然而,默认情况下,密码过期和账户过期不会在 Azure AD 中同步。因此,本地密码已过期(未更改)的用户可以继续使用旧密码访问 Azure 资源。
当本地用户想要访问 Azure 资源时,身份验证在 Azure AD 上进行。
PHS 是 Identity Protection 和 AAD Domain Services 等功能所必需的。
横向移动
当配置 PHS 时,会自动创建一些特权账户:
账户
MSOL_<installationID>
会在本地 AD 中自动创建。此账户被赋予 Directory Synchronization Accounts 角色(参见文档),这意味着它在本地 AD 中具有复制 (DCSync) 权限。账户
Sync_<name of on-prem ADConnect Server>_installationID
会在 Azure AD 中创建。此账户可以重置 Azure AD 中任何用户(同步或仅云)的密码。
前述两个特权账户的密码存储在安装了 Azure AD Connect 的服务器上的 SQL server 中。管理员可以提取这些特权用户的明文密码。
数据库位于 C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
。
可以从其中一个表中提取配置,其中一个是加密的:
SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;
加密配置使用 DPAPI 加密,包含本地 AD 中 MSOL_*
用户的密码和 AzureAD 中 Sync_* 的密码。因此,妥协这些账户可以提升到 AD 和 AzureAD 的权限。
查找 Azure AD connect 服务器
如果安装了 Azure AD connect 的服务器加入了域(文档中推荐),可以通过以下方式找到它:
滥用 MSOL_*
Azure AD Connect 是一个工具,用于将本地 Active Directory 与 Azure Active Directory 同步。它支持多种身份验证方法,包括 Password Hash Synchronization (PHS)。在 PHS 模式下,用户的密码哈希值会从本地 AD 同步到 Azure AD。
当 Azure AD Connect 安装时,它会创建一个名为 MSOL_ 的本地帐户。此帐户用于与 Azure AD 进行通信,并具有读取本地 AD 的权限。攻击者可以滥用此帐户来获取对本地 AD 的访问权限。
获取 MSOL_ 密码
在安装 Azure AD Connect 的服务器上,打开 PowerShell。
运行以下命令以导出 MSOL_ 帐户的凭据:
使用以下命令解密凭据:
现在你可以使用解密的密码来登录 MSOL_ 帐户。
滥用 MSOL_ 帐户
一旦你获得了 MSOL_ 帐户的密码,你可以使用它来执行各种攻击,例如:
读取本地 AD 中的用户和组信息。
修改本地 AD 中的用户和组信息。
创建新的用户和组。
通过滥用 MSOL_ 帐户,攻击者可以在本地 AD 和 Azure AD 之间进行横向移动,从而扩大他们的攻击范围。
你也可以使用 adconnectdump 来获取这些凭证。
滥用 Sync_*
攻陷 Sync_*
账户后,可以重置任何用户的密码(包括全局管理员)。
也可以修改仅云用户的密码(即使这是意料之外的)
也可以导出该用户的密码。
另一种选择是将特权权限分配给服务主体,Sync用户有权限这样做,然后访问该服务主体作为提权的一种方式。
Seamless SSO
可以将Seamless SSO与PHS一起使用,这容易受到其他滥用。请查看:
Az - Seamless SSO参考资料
Last updated