报告:Active Directory 证书服务是企业网络的一大安全盲点
发布日期:2021-06-21Microsoft 的 Active Directory PKI 组件通常存在配置错误,允许攻击者获得账户和域级别的权限。
作为 Windows 企业网络的核心,处理用户和计算机身份验证和授权的服务 Active Directory 几十年来一直受到安全研究人员的深入研究和探索。然而,其公钥基础设施 (PKI)组件并未受到同等级别的审查,据一组研究人员称,部署中充斥着严重的配置错误,这些错误可能导致账户和域级别的权限升级和泄露。
“AD CS [Active Directory 证书服务] 是Microsoft的 PKI 实现,它提供了从加密文件系统到数字签名,再到用户身份验证(我们研究的重点)等等的一切,”安全公司的研究人员 Will Schroeder 和 Lee Christensen SpecterOps在一份新报告中说。“虽然默认情况下没有为 Active Directory 环境安装 AD CS,但根据我们在企业环境中的经验,它被广泛部署,并且错误配置的证书服务实例的安全后果是巨大的。”
AD CS 的工作原理
AD CS 用于设置私有企业证书颁发机构 (CA),然后用于颁发将用户或机器身份或账户绑定到公私密钥对的证书,允许该密钥对用于不同的操作,例如文件加密、签署文件或文档和身份验证。AD CS 管理员定义证书模板,这些模板用作证书颁发方式、颁发给谁、进行何种操作、持续多长时间以及他们拥有哪些加密设置的蓝图。
换句话说,就像在 HTTPS 中一样,由 CA 签署的证书证明 AD 基础设施将信任特定的公私密钥对。因此,要从 AD CS、经过身份验证的用户或计算机获取证书,生成密钥对并将公钥以及各种所需设置作为证书签名请求 (CSR) 的一部分发送给 CA。CSR 将在主题字段中以域账户的形式指示用户身份、用于生成证书的模板以及需要证书的操作类型,这些类型在名为 pKIExtendedKeyUsage 的字段中定义( EKU)。
AD CS服务器在进行各种检查后,包括是否允许用户申请证书,在什么条件下,会返回企业CA签署的证书。即使乍一看,很明显服务器执行的检查和验证至关重要。否则,攻击者通过利用某些漏洞或通过恶意软件以本地账户的权限获得代码执行权可以只请求允许身份验证的证书,而不是转储 LSASS 内存来提取账户凭据。这是防御者熟知的常见攻击技术。更糟糕的是,即使后来由于检测到或怀疑账户泄露而更改了账户密码,证书也将保持有效。这意味着身份验证证书可以为攻击者提供比凭据盗窃更好的持久性。
滥用 AD CS 错误配置
虽然这种滥用 AD CS 的行为对防御者来说是显而易见的,但更微妙的攻击源于各种证书模板配置选项或选项组合,并且根据 SpecterOps 的发现非常普遍。“自从开始这项研究以来,我们已经针对这些 AD CS 错误配置分析了许多网络,”施罗德和克里斯滕森在新发布的白皮书中说。“到目前为止,几乎在每个网络中,都可以使用这种技术来提升 AD 权限,而低权限用户(例如,“域用户”组的成员)几乎总是能够立即破坏 Active Directory 。”
研究人员根据他们的发现开发了 AD CS 审计和攻击工具包。用 PowerShell 编写并命名为PSPKIAudit的审计工具包已经可用,但他们的两个攻击性工具Certify和ForgeCert将于 8 月初在即将举行的 Black Hat USA 2021 会议期间发布,以便给企业安全团队一些准备时间。还值得注意的是,SpecterOps 论文不仅涵盖了新的技术或发现,而是作为针对 AD CS 的攻击的综合集合,过去其他研究人员在特定情况下记录了其中一些攻击,但现在已经扩展或自动化。
窃取现有证书
“在任何规模的组织中设置可用的 Windows PKI 基础设施都不是最简单的任务,”Schroeder 和 Christensen 说。“如果一个组织安装和配置了 AD CS(他们可能这样做了),他们就有理由进行工程工作。这意味着,如果存在企业 CA,至少一些 AD 用户和/或计算机可能已颁发证书给他们,其中一些证书可能会有一个允许域身份验证的 EKU。”
这两位研究人员记录了存储现有用户或机器证书的几个位置,以及可用于通过 Microsoft Crypto API(CAPI 和 CNG)或数据保护应用程序编程接口 (DPAPI) 潜在地提取它们的技术。有时证书文件也可以直接在文件系统上找到,而不是系统存储,因为它们是由管理员或用户导出的。研究人员在网络文件共享、管理员的下载文件夹、源代码存储库、服务器和许多其他地方发现了此类证书。
滥用可以双向进行。访问用户账户可能会导致他们的证书被盗,但也有一种记录方式可以通过 Microsoft 的 Kerberos 协议的 PKINIT 实现使用证书来获取用户的 NTLM 哈希。这些证书或凭据盗窃攻击及其实施的技术细节已在 SpecterOps 论文中记录为 THEFT1、THEFT2、THEFT3、THEFT4 和 THEFT5。
通过证书进行账户持久化
如前所述,如果用户或计算机具有注册权限并且存在提供此类权限的证书模板,则他们可以从企业 CA 请求允许域身份验证的证书。容易被滥用的模板将具有以下属性:
已发布以供注册。
域用户或受害者用户所属的其他组被允许注册。对于计算机或 SYSTEM 账户,该组是域计算机。
具有以下任何启用域身份验证或更多身份验证的 EKU:智能卡登录 (1.3.6.1.4.1.311.20.2.2)、客户端身份验证 (1.3.6.1.5.5.7.3.2)、任何目的 EKU (2.5.29.37。 0),或者没有设置 EKU,这意味着生成的证书被视为从属 CA 证书,可用于颁发证书并模拟任何用户和计算机。
不需要经理批准或“授权签名”颁发要求。
AD CS 中名为 User 和 Machine 的两个默认证书模板满足这些要求。此外,注册权限——谁可以申请证书——可以使用两个安全描述符来定义,一个针对模板,一个针对企业 CA 本身,企业 CA 取代模板特定的。更复杂的是,几个注册设置可以允许用户请求证书:证书注册扩展权限、证书自动注册扩展权限、所有扩展权限和 FullControl/GenericAll。
CA 证书管理器批准设置强制将所有证书签名请求置于挂起状态,以便证书管理器在颁发之前批准它们,而授权签名设置要求在基于 CSR 颁发证书之前在 CSR 上存在辅助签名,这是为了适应另一个称为注册代理的功能,它们是可以代表其他用户提交证书请求的实体或进程。
通过盗窃或恶意注册获得证书的攻击者受到该证书有效期的限制。但是,他们始终可以发出续订请求以延长证书的使用期限,这不会在服务器上留下注册记录,以防此类工件受到监控。SpecterOps 研究人员在他们的论文中将这三种基于证书的持久性技术记录为:PERSIST1、PERSIST2 和 PERSIST3。
域升级和持久化
最严重的证书模板错误配置是那些允许普通用户提升其权限并可能成为域管理员的错误配置。一种这样的错误配置是模板是否允许在 CSR 中使用 subjectAltName (SAN) 字段。
SAN 在 AD CS 支持的 HTTPS 证书中很常见,它具有一个适用于多个域名或同一域名的子域的证书。这是因为在 HTTPS中,目标是向客户端验证可以托管多个域名的服务器。但是,在允许客户端身份验证的证书中,主体是用户或计算机账户,因此如果允许任意 SAN,请求者可以要求一个证书,以允许他们模拟任何其他用户。当管理员尝试启用这种易受攻击的配置时会出现警告,但很容易被忽视。
“如果管理员不熟悉 PKI,他们很可能会点击此警告,因为他们正在努力使事情正常进行,”研究人员说。“复制已经存在漏洞设置的模板也不会导致警告。此外,我们怀疑当 IT 管理员创建自己的证书模板时,他们可能会复制 AD CS 附带的默认 WebServer 模板。WebServer 模板具有CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标志,然后如果 IT 管理员添加“客户端身份验证”或“智能卡登录”EKU,易受攻击的情况就会发生,而 GUI 不会发出警告。”
与 SAN 使用相关的另一个问题是在EDITF_ATTRIBUTESUBJECTALTNAME2CA 本身上使用标志,这将允许所有 CSR 在主题备用名称字段中具有用户定义的值。攻击者也可能滥用 ManageCA 和 ManageCertificates 权限,这些权限对应于启用此标志的“CA 管理员”和“证书管理员”角色。
另一个可能导致权限提升的错误配置是模板定义了 Any Purpose EKU 或根本没有 EKU。这可能导致证书可用于任何目的或用作从属CA 证书。
其他错误配置涉及模板,其中包括证书请求代理 EKU (1.3.6.1.4.1.311.20.2.1) 并允许低权限用户注册,而无需经理批准或其他签名要求。另一个不安全的选项组合是允许低特权用户注册、禁用经理批准、模板架构是版本 1 或大于 2 并指定需要证书请求代理 EKU 的应用程序策略颁发要求,模板定义了一个 EKU允许域身份验证和注册代理限制未在 CA 上实施。
模板也可能在访问控制级别错误配置为 AD 中的对象。例如,如果攻击者可以将各种访问链接到允许他们在证书模板中拥有“完全控制”或“写入”访问权限的点,他们可以故意将错误配置推送到其他安全模板。
此外,证书模板和证书颁发机构之外的多个 AD 对象可能会影响整个 AD CS 系统的安全性。根据研究人员的说法,这些是:CA 服务器的 AD 计算机对象、CA 服务器的 RPC/DCOM 服务器或容器中的任何后代 AD 对象或容器 CN=Public Key Services,CN=Services,CN=Configuration,DC=<COMPANY>,DC=<COM>(例如,证书模板容器、证书颁发机构容器、NTAuthCertificates 对象等)。
研究人员说:“如果低特权攻击者可以控制其中任何一个,那么攻击可能会破坏 PKI 系统。”特权提升技术在论文中被跟踪为 ESC1 到 ESC7。
最后,一些证书盗窃和滥用攻击也适用于 CA 证书本身,以获得整个域的长期持久性,例如在域接管攻击之后。研究人员描述了几种技术,如果满足某些条件,可以使用这些技术来窃取 CA 本身的证书和相关私钥,或者将它们生成的流氓 CA 证书添加到 NTAuthCertificates AD 对象中。这些技术被记录为 DPERSIST1、DPERSIST2 和 DPERSIST3。
“Active Directory 证书服务 (AD CS) 没有本质上不安全,”研究人员在一篇博客文章中说。“我们已经与 Microsoft 的人员进行了交谈,因为没有‘开箱即用’的漏洞——没有任何东西本身可以修复。也就是说,如果一个组织不完全理解 AD,整个系统是非常危险的CS 或其安全影响,因为它极容易配置错误。自 2021 年 1 月开始研究以来,我们已经看到这些问题在实际环境中激增。从防御的角度来看,我们强烈建议组织审核其 AD CS 架构和证书模板并将 CA 服务器(包括从属 CA)视为具有与域控制器相同保护的第 0 层资产。”
白皮书包含大量防御建议,以减轻许多记录在案的攻击。
来源网站:https://www.csoonline.com/(CSO 美国) 沃通WoTrus原创翻译整理,转载请注明来源
原文网址:https://www.csoonline.com/article/3622352/report-active-directory-certificate-services-a-big-security-blindspot-on-enterprise-networks.html