Featured image of post Azure AD Connect 权限提升漏洞深度解析

Azure AD Connect 权限提升漏洞深度解析

微软安全公告4033453披露了一个Azure AD Connect中的重要安全漏洞。当密码写回功能配置不当,攻击者可重置任意本地AD特权账户密码并获取未授权访问。文章详细解释了漏洞原理、影响范围、检测方法及修复和缓解步骤。

漏洞:Azure AD Connect 中的漏洞可能导致权限提升

发布日期: 2017年6月27日 版本: 1.0

执行摘要

微软发布此安全公告,旨在告知客户新版本的 Azure Active Directory (AD) Connect 现已可用,该版本解决了一个重要的安全漏洞。 此更新解决了一个漏洞,该漏洞可能在启用 Azure AD Connect 密码写回功能时因配置不当而导致权限提升。成功利用此漏洞的攻击者可以重置密码并获得对任意本地 AD 特权用户帐户的未授权访问。 此问题已在最新版本 (1.1.553.0) 的 Azure AD Connect 中得到解决,方法是不允许对本地 AD 特权用户帐户进行任意密码重置。

公告详情

密码写回是 Azure AD Connect 的一个组件。它允许用户配置 Azure AD,将密码写回到其本地 Active Directory。它为用户提供了一种便捷的基于云的方式,无论身在何处,都可以重置其本地密码。有关密码写回的信息,请参阅密码写回概述

要启用密码写回,必须为 Azure AD Connect 授予对本地 AD 用户帐户的“重置密码”权限。在设置权限时,本地 AD 管理员可能无意中授予了 Azure AD Connect 对本地 AD 特权帐户(包括企业和域管理员帐户)的“重置密码”权限。有关 AD 特权用户帐户的信息,请参阅Active Directory 中的受保护帐户和组

不建议采用此配置,因为它允许恶意的 Azure AD 管理员使用密码写回功能将任意本地 AD 用户特权帐户的密码重置为已知值。这反过来又使恶意的 Azure AD 管理员能够获得对客户本地 AD 的特权访问。

请参阅 CVE-2017-8613 - Azure AD Connect 权限提升漏洞

建议措施

验证您的组织是否受影响 此问题仅影响已启用 Azure AD Connect 上“密码写回”功能的客户。要确定该功能是否启用:

  1. 登录到您的 Azure AD Connect 服务器。
  2. 启动 Azure AD Connect 向导 (开始Azure AD Connect)。
  3. 在“欢迎”屏幕上,单击配置
  4. 在“任务”屏幕上,选择查看当前配置,然后单击下一步
  5. 在“同步设置”下,检查“密码写回”是否已启用。

如果密码写回已启用,请评估您的 Azure AD Connect 服务器是否已被授予对本地 AD 特权帐户的“重置密码”权限。Azure AD Connect 使用一个 AD DS 帐户与本地 AD 同步更改。同一个 AD DS 帐户用于对本地 AD 执行密码重置操作。要识别使用了哪个 AD DS 帐户:

  1. 登录到您的 Azure AD Connect 服务器。
  2. 启动同步服务管理器 (开始同步服务)。
  3. 在“连接器”选项卡下,选择本地 AD 连接器,然后单击属性

在“属性”对话框中,选择“连接到 Active Directory 林”选项卡,并记下“用户名”属性。这是 Azure AD Connect 用于执行目录同步的 AD DS 帐户。

要使 Azure AD Connect 对本地 AD 特权帐户执行密码写回,必须授予该 AD DS 帐户对这些帐户的“重置密码”权限。如果本地 AD 管理员执行了以下任一操作,通常会发生这种情况:

  • 使 AD DS 帐户成为本地 AD 特权组的成员(例如,企业管理员组或域管理员组),或者
  • adminSDHolder 容器上创建了“控制访问权限”,授予该 AD DS 帐户“重置密码”权限。有关 adminSDHolder 容器如何影响对本地 AD 特权帐户访问的信息,请参阅Active Directory 中的受保护帐户和组

您需要检查分配给此 AD DS 帐户的有效权限。通过检查现有 ACL 和组分配来进行此操作可能既困难又容易出错。一种更简单的方法是选择一组现有的本地 AD 特权帐户,并使用 Windows 的“有效权限”功能来确定该 AD DS 帐户是否对所选帐户拥有“重置密码”权限。有关如何使用“有效权限”功能的信息,请参阅验证 Azure AD Connect 是否具有密码写回所需的权限

注意 如果您使用 Azure AD Connect 同步多个本地 AD 林,则可能需要评估多个 AD DS 帐户。

修复步骤

升级到最新版本 (1.1.553.0) 的 Azure AD Connect,可从此处下载。即使您的组织目前未受影响,我们也建议您这样做。有关如何升级 Azure AD Connect 的信息,请参阅 Azure AD Connect:了解如何从以前版本升级到最新版本

最新版本的 Azure AD Connect 通过阻止对本地 AD 特权帐户的密码写回请求来解决此问题,除非发出请求的 Azure AD 管理员是该本地 AD 帐户的所有者。更具体地说,当 Azure AD Connect 从 Azure AD 收到密码写回请求时:

  1. 它通过验证 AD adminCount 属性来检查目标本地 AD 帐户是否为特权帐户。如果该值为 null0,Azure AD Connect 会判定这不是特权帐户并允许密码写回请求。
  2. 如果该值不是 null0,Azure AD Connect 会判定这是一个特权帐户。接着,它会验证请求用户是否是目标本地 AD 帐户的所有者。它通过检查其 Metaverse 中目标本地 AD 帐户与请求用户的 Azure AD 帐户之间的关系来实现此操作。如果请求用户确实是所有者,Azure AD Connect 将允许密码写回请求。否则,请求将被拒绝。

注意 adminCount 属性由 SDProp 进程管理。默认情况下,SDProp 每 60 分钟运行一次。因此,新创建的 AD 特权用户帐户的 adminCount 属性从 NULL 更新为 1 最多可能需要一个小时。在此发生之前,Azure AD 管理员仍然可以重置此新创建帐户的密码。有关 SDProp 进程的信息,请参阅Active Directory 中的受保护帐户和组

缓解步骤

如果您无法立即升级到最新版本的 Azure AD Connect,请考虑以下选项:

  • 如果 AD DS 帐户是一个或多个本地 AD 特权组的成员,请考虑将该 AD DS 帐户从这些组中移除。
  • 如果本地 AD 管理员之前曾在 adminSDHolder 对象上为该 AD DS 帐户创建了允许“重置密码”操作的“控制访问权限”,请考虑将其移除。
  • 有时可能无法移除授予 AD DS 帐户的现有权限(例如,AD DS 帐户依赖组成员身份来获取其他功能所需的权限,例如密码同步或 Exchange 混合写回)。请考虑在 adminSDHolder 对象上创建一个 DENY ACE,禁止该 AD DS 帐户拥有“重置密码”权限。有关如何使用 Windows DSACLS 工具创建 DENY ACE 的信息,请参阅修改 AdminSDHolder 容器
1
DSACLS DNofAdminSDHolderContainer /D CONTOSO\ADDSAccount:CA;"Reset Password"

页面生成时间 2017-06-27 09:50-07:00。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计