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帐户"重置密码"权限

您需要检查分配给此AD DS帐户的有效权限。通过检查现有ACL和组分配可能很困难且容易出错。更简单的方法是选择一组现有的本地AD特权帐户,并使用Windows有效权限功能来确定AD DS帐户是否对这些选定帐户具有"重置密码"权限。

注意:如果您使用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接收密码写回请求时:

  • 它通过验证AD adminCount属性来检查目标本地AD帐户是否是特权帐户。如果值为null或0,Azure AD Connect会得出结论这不是特权帐户并允许密码写回请求。
  • 如果值不是null或0,Azure AD Connect会得出结论这是特权帐户。接下来,它验证请求用户是否是目标本地AD帐户的所有者。它通过检查其Metaverse中目标本地AD帐户与请求用户的Azure AD帐户之间的关系来做到这一点。如果请求用户确实是所有者,Azure AD Connect允许密码写回请求。否则,请求将被拒绝。

注意:adminCount属性由SDProp进程管理。默认情况下,SDProp每60分钟运行一次。因此,新创建的AD特权用户帐户的adminCount属性从NULL更新为1最多可能需要一个小时。在此之前,Azure AD管理员仍然可以重置此新创建帐户的密码。

缓解步骤

如果无法立即升级到最新版本的"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:

1
DSACLS DNofAdminSDHolderContainer /D CONTOSO\ADDSAccount:CA;"Reset Password"
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计