Entra ID - Revisiting the Abuse History of Connect Sync
字数 4254 2025-11-05 23:45:18

Microsoft Entra Connect 同步服务安全分析与滥用教学文档

概述

Microsoft Entra Connect(前身为 Azure AD Connect)是微软混合身份环境的核心组件,负责在本地 Active Directory 与 Microsoft Entra ID(前身为 Azure AD)之间同步身份信息。由于其高权限特性,Connect Sync 服务器被视为 Tier 0 资产,成为攻击者的重要目标。本文详细分析其安全风险、攻击面及防御措施。


1. Connect Sync 基础

1.1 什么是 Connect Sync?

  • 功能:处理本地环境与 Microsoft Entra ID 之间的身份数据同步。
  • 版本演进
    • V1 版本:已於 2022 年 8 月 31 日停止支持。
    • V2 版本:当前推荐版本,使用最新基础组件构建。
  • 组件
    • 本地同步代理(安装在 AD 环境中的服务器)。
    • 云端的 Microsoft Entra Connect Sync 服务端组件。

1.2 核心功能

功能 描述
密码哈希同步(PHS) 将本地 AD 用户密码的哈希同步到 Microsoft Entra ID。
直通认证(PTA) 用户使用相同密码在本地和云端登录,无需额外基础设施。
联合集成 通过本地 AD FS 配置混合环境,提供证书续期等功能。
同步 创建和同步用户、组及其他对象,确保本地与云端信息一致。
健康监控 通过 Entra Connect Health 集中监控同步活动。

2. Connect Sync 使用的账户及权限

2.1 三类关键账户

账户类型 用途
AD DS Connector 账户 读写本地 AD 信息(账户名格式:MSOL_*)。
ADSync 服务账户 运行同步服务并访问 SQL Server 数据库。
Microsoft Entra Connector 账户 将信息写入 Microsoft Entra ID(旧版为 Sync_* 用户,新版为服务主体)。

2.2 账户权限详情

(1)AD DS Connector 账户(MSOL_*

  • 权限
    • Replicate Directory ChangesReplicate Directory Changes All:用于密码哈希同步。
    • 读写所有用户、组、联系人的属性。
    • 重置密码权限(用于密码回写)。
  • 安全风险:具备 DCSync 权限,可导出域内所有用户密码哈希。

(2)ADSync 服务账户

  • 运行身份
    • 虚拟服务账户(VSA)NT SERVICE\ADSync(默认选项)。
    • 组管理服务账户(gMSA):适用于远程 SQL Server 场景。
    • 用户账户AAD_*(旧版或特定场景)。
  • 职责:加密存储其他账户的密码至数据库,使用 DPAPI 保护密钥。

(3)Microsoft Entra Connector 账户

  • 历史形式Sync_* 用户(UPN 格式:Sync_<服务器名>_<ID>@<域名>)。
  • 现代形式:基于服务主体和证书认证(2025 年 5 月后推荐)。
  • 角色分配:默认属于 Directory Synchronization Accounts 角色。

3. Directory Synchronization Accounts 角色的权限演变

3.1 2024 年 8 月前的权限(48 项)

  • 高危权限举例
    • microsoft.directory/applications/create:创建应用程序。
    • microsoft.directory/servicePrincipals/credentials/update:修改服务主体凭据。
    • 密码重置、策略管理等特权操作。
  • 攻击面:可通过该角色创建后门、提升至全局管理员。

3.2 2024 年 8 月后的权限(仅 1 项)

  • 保留权限microsoft.directory/onPremisesSynchronization/standard/read(仅读权限)。
  • 隐式风险:仍能通过未公开的私有 API(如 Azure AD Synchronization API)执行敏感操作。

4. Connect Sync 的攻击与滥用

4.1 攻击前提

  • 获取 Connect Sync 服务器的管理员权限。
  • 定位服务器方法:通过 MSOL_* 账户的 LDAP 描述信息(包含主机名)。

4.2 凭据提取与解密

(1)数据库位置

  • 路径:C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
  • 关键表:
    • mms_management_agent:存储账户配置(含加密凭据)。
    • mms_server_configuration:存储解密所需的密钥材料。

(2)解密方法

  • Azure AD Connect 1.4.x 之前
    • 密钥集存储在注册表(HKLM\Software\Microsoft\Ad Sync\Shared\<keysetid>)。
    • 使用 DPAPI 和系统 MasterKey 解密。
  • Azure AD Connect 1.4.x 及之后
    • 密钥集存储在凭据管理器,由 NT SERVICE\ADSync 账户的 MasterKey 保护。
    • 需使用 DPAPI_SYSTEM 的 User Key 和账户 SID(S-1-5-80)解密 MasterKey。
  • 工具推荐:使用 adconnectdump 自动化提取。

(3)通过 mcrypt.dll 程序集解密

  • 模拟 ADSync 服务令牌,直接调用 mcrypt.dll 的解密函数。
  • 步骤:
    1. 连接 LocalDB 数据库,获取 keyset_idinstance_identropy
    2. 使用 PowerShell 模拟 NT SERVICE\ADSync 身份。
    3. 解密 encrypted_configuration 字段,提取明文凭据。

4.3 滥用场景

(1)DCSync 攻击

  • 前提:启用密码哈希同步(PHS)。
  • 方法:使用 MSOL_* 账户的 DCSync 权限导出域内哈希。
  • 工具:Mimikatz、SharpKatz 等。

(2)密码重置

  • 前提:启用 PHS,且目标为混合账户。
  • 方法:通过私有 API(https://adminwebservice.microsoftonline.com/provisioningservice.svc)重置密码。
  • 限制
    • 无法重置仅云用户的密码(2025 年 8 月后)。
    • 若目标启用 MFA/FIDO2,认证仍会失败。
  • 工具:AADInternals 的 Set-AADIntUserPassword 命令。

(3)向特权应用添加凭据

  • 历史方法:滥用 Directory Synchronization Accounts 角色权限,为高权限应用添加凭据,继而提升权限。
  • 现状:2024 年 8 月后权限被移除,此方法失效。

(4)持久化后门

  • 方法:将 Directory Synchronization Accounts 角色分配给受控账户。
  • 管理命令(PowerShell)
    # 列出角色成员
    Get-MgDirectoryRoleMember -RoleTemplateId "d29b2b05-8046-44ba-8758-1e26182fcf32"
    # 添加角色分配
    New-MgRoleManagementDirectoryRoleAssignment -PrincipalId "<用户ID>" -RoleDefinitionId "<角色ID>"
    

5. 防御建议

5.1 安全加固措施

  • 升级至 Entra Connect V2:使用最新版本并启用基于服务主体的认证。
  • 限制物理访问:将 Connect Sync 服务器视为 Tier 0 资产隔离保护。
  • 启用 MFA:强制所有管理员账户使用多因素认证,阻断密码重置滥用。
  • 定期审计:检查 Directory Synchronization Accounts 角色的分配情况。

5.2 监控与检测

  • 日志监控:关注 Entra Connect Health 的异常同步事件。
  • 账户行为分析:检测 MSOL_*Sync_* 账户的异常登录或 DCSync 操作。

6. 总结

Microsoft Entra Connect 同步服务是混合身份环境的核心,但其高权限特性也带来显著风险。通过分析其滥用历史与防御演进,组织应:

  1. 严格保护 Connect Sync 服务器。
  2. 及时升级至最新版本并启用安全功能。
  3. 结合 MFA 和审计策略降低攻击面。

参考文献

Microsoft Entra Connect 同步服务安全分析与滥用教学文档 概述 Microsoft Entra Connect(前身为 Azure AD Connect)是微软混合身份环境的核心组件,负责在本地 Active Directory 与 Microsoft Entra ID(前身为 Azure AD)之间同步身份信息。由于其高权限特性,Connect Sync 服务器被视为 Tier 0 资产,成为攻击者的重要目标。本文详细分析其安全风险、攻击面及防御措施。 1. Connect Sync 基础 1.1 什么是 Connect Sync? 功能 :处理本地环境与 Microsoft Entra ID 之间的身份数据同步。 版本演进 : V1 版本 :已於 2022 年 8 月 31 日停止支持。 V2 版本 :当前推荐版本,使用最新基础组件构建。 组件 : 本地同步代理(安装在 AD 环境中的服务器)。 云端的 Microsoft Entra Connect Sync 服务端组件。 1.2 核心功能 | 功能 | 描述 | |------------------------|--------------------------------------------------------------------------| | 密码哈希同步(PHS) | 将本地 AD 用户密码的哈希同步到 Microsoft Entra ID。 | | 直通认证(PTA) | 用户使用相同密码在本地和云端登录,无需额外基础设施。 | | 联合集成 | 通过本地 AD FS 配置混合环境,提供证书续期等功能。 | | 同步 | 创建和同步用户、组及其他对象,确保本地与云端信息一致。 | | 健康监控 | 通过 Entra Connect Health 集中监控同步活动。 | 2. Connect Sync 使用的账户及权限 2.1 三类关键账户 | 账户类型 | 用途 | |-------------------------|--------------------------------------------------------------------------| | AD DS Connector 账户 | 读写本地 AD 信息(账户名格式: MSOL_* )。 | | ADSync 服务账户 | 运行同步服务并访问 SQL Server 数据库。 | | Microsoft Entra Connector 账户 | 将信息写入 Microsoft Entra ID(旧版为 Sync_* 用户,新版为服务主体)。 | 2.2 账户权限详情 (1)AD DS Connector 账户( MSOL_* ) 权限 : Replicate Directory Changes 和 Replicate Directory Changes All :用于密码哈希同步。 读写所有用户、组、联系人的属性。 重置密码权限(用于密码回写)。 安全风险 :具备 DCSync 权限,可导出域内所有用户密码哈希。 (2)ADSync 服务账户 运行身份 : 虚拟服务账户(VSA) : NT SERVICE\ADSync (默认选项)。 组管理服务账户(gMSA) :适用于远程 SQL Server 场景。 用户账户 : AAD_* (旧版或特定场景)。 职责 :加密存储其他账户的密码至数据库,使用 DPAPI 保护密钥。 (3)Microsoft Entra Connector 账户 历史形式 : Sync_* 用户(UPN 格式: Sync_<服务器名>_<ID>@<域名> )。 现代形式 :基于服务主体和证书认证(2025 年 5 月后推荐)。 角色分配 :默认属于 Directory Synchronization Accounts 角色。 3. Directory Synchronization Accounts 角色的权限演变 3.1 2024 年 8 月前的权限(48 项) 高危权限举例 : microsoft.directory/applications/create :创建应用程序。 microsoft.directory/servicePrincipals/credentials/update :修改服务主体凭据。 密码重置、策略管理等特权操作。 攻击面 :可通过该角色创建后门、提升至全局管理员。 3.2 2024 年 8 月后的权限(仅 1 项) 保留权限 : microsoft.directory/onPremisesSynchronization/standard/read (仅读权限)。 隐式风险 :仍能通过未公开的私有 API(如 Azure AD Synchronization API )执行敏感操作。 4. Connect Sync 的攻击与滥用 4.1 攻击前提 获取 Connect Sync 服务器的管理员权限。 定位服务器方法:通过 MSOL_* 账户的 LDAP 描述信息(包含主机名)。 4.2 凭据提取与解密 (1)数据库位置 路径: C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf 。 关键表: mms_management_agent :存储账户配置(含加密凭据)。 mms_server_configuration :存储解密所需的密钥材料。 (2)解密方法 Azure AD Connect 1.4.x 之前 : 密钥集存储在注册表( HKLM\Software\Microsoft\Ad Sync\Shared\<keysetid> )。 使用 DPAPI 和系统 MasterKey 解密。 Azure AD Connect 1.4.x 及之后 : 密钥集存储在凭据管理器,由 NT SERVICE\ADSync 账户的 MasterKey 保护。 需使用 DPAPI_ SYSTEM 的 User Key 和账户 SID( S-1-5-80 )解密 MasterKey。 工具推荐 :使用 adconnectdump 自动化提取。 (3)通过 mcrypt.dll 程序集解密 模拟 ADSync 服务令牌,直接调用 mcrypt.dll 的解密函数。 步骤: 连接 LocalDB 数据库,获取 keyset_id 、 instance_id 、 entropy 。 使用 PowerShell 模拟 NT SERVICE\ADSync 身份。 解密 encrypted_configuration 字段,提取明文凭据。 4.3 滥用场景 (1)DCSync 攻击 前提 :启用密码哈希同步(PHS)。 方法 :使用 MSOL_* 账户的 DCSync 权限导出域内哈希。 工具 :Mimikatz、SharpKatz 等。 (2)密码重置 前提 :启用 PHS,且目标为混合账户。 方法 :通过私有 API( https://adminwebservice.microsoftonline.com/provisioningservice.svc )重置密码。 限制 : 无法重置仅云用户的密码(2025 年 8 月后)。 若目标启用 MFA/FIDO2,认证仍会失败。 工具 :AADInternals 的 Set-AADIntUserPassword 命令。 (3)向特权应用添加凭据 历史方法 :滥用 Directory Synchronization Accounts 角色权限,为高权限应用添加凭据,继而提升权限。 现状 :2024 年 8 月后权限被移除,此方法失效。 (4)持久化后门 方法 :将 Directory Synchronization Accounts 角色分配给受控账户。 管理命令(PowerShell) : 5. 防御建议 5.1 安全加固措施 升级至 Entra Connect V2 :使用最新版本并启用基于服务主体的认证。 限制物理访问 :将 Connect Sync 服务器视为 Tier 0 资产隔离保护。 启用 MFA :强制所有管理员账户使用多因素认证,阻断密码重置滥用。 定期审计 :检查 Directory Synchronization Accounts 角色的分配情况。 5.2 监控与检测 日志监控 :关注 Entra Connect Health 的异常同步事件。 账户行为分析 :检测 MSOL_* 或 Sync_* 账户的异常登录或 DCSync 操作。 6. 总结 Microsoft Entra Connect 同步服务是混合身份环境的核心,但其高权限特性也带来显著风险。通过分析其滥用历史与防御演进,组织应: 严格保护 Connect Sync 服务器。 及时升级至最新版本并启用安全功能。 结合 MFA 和审计策略降低攻击面。 参考文献 : Microsoft Entra Connect 官方文档 adconnectdump 工具 AADInternals 工具集