Rethinking Privileged Access 系列第 2 篇(共 3 篇)。请先阅读第 1 篇:密码从来不是唯一的问题。
在第 1 篇中,我们划清了传统 PAM 的保险库与检出模式和现代 PAM 的会话与 Activities 模式之间的界线,后者基于 Netwrix Privilege Secure(NPS)。前者保护密码,后者消除密码背后的常驻特权。这一划分是个不错的起点,但低估了问题的严重性。在 Windows 和 Active Directory 中,密码只是种子。攻击者用于横向移动的一切,都源自密码,或因密码而签发:NTLM 哈希、Kerberos 票据、缓存的登录、证书、DPAPI blob。只保护密码的 PAM 工具,保护的只是一条长得多的链条中的一环。
这正是传统 PAM 与现代 PAM 真正的差异所在。把密码放进保险库可以隐藏密码,但对其下游的一切毫无影响。NPS 通过在会话结束的那一刻轮换、禁用或删除账户来消除常驻特权。这会中断其中多条下游攻击路径,因为大多数路径都依赖于特权账户以可用状态存在的时间超过了必要时长。不过,NPS 并不能彻底阻止 Kerberoasting 等 AD 威胁。其他 Netwrix 产品,例如 Netwrix Threat Prevention,可以通过检测可疑的身份验证活动来提供帮助。
无人放进保险库的凭据攻击面
除明文密码之外,Windows/AD 环境中还有以下内容可被攻击:
- NTLM 哈希:可通过 Pass-the-Hash 直接使用,无需破解。
- Kerberos 票据(TGT/TGS):可通过 Pass-the-Ticket 窃取并重放,如果 krbtgt 密钥或服务账户密钥被泄露,还可通过 Golden Ticket 和 Silver Ticket 伪造。
- 可被 Kerberoasting/AS-REP Roasting 的材料:任何域用户都可以为带有 SPN 的账户请求服务票据,或为禁用预身份验证的账户请求 AS-REP,然后离线破解。
- 缓存的域凭据(MSCACHEv2):存放在用户登录过的任何机器的本地 SECURITY 配置单元中。
- 证书和
msDS-KeyCredentialLink条目:可通过 AD CS 模板配置错误或 Shadow Credential 攻击被滥用,无需接触用户密码即可以该用户身份进行身份验证。 - LAPS/gMSA 托管密码:仅受存储它们的属性上的 ACL 保护。
- 受 DPAPI 保护的机密:如果攻击者推导出用户的主密钥,或窃取域 DPAPI 备份密钥,就可以解密。
这些都不需要明文密码,而且它们授予的权限都与密码相差无几。
为什么常驻特权是共同的主线
清单上几乎每一项之所以威力巨大,都是因为其背后的账户此刻就持有真实特权,并且无限期保持这种状态。传统 PAM 的配置,即密码被存入保险库、轮换并注入,却架在永久的 Domain Admins 成员资格之上,在两次检出之间仍然留下值得窃取的 NTLM 哈希、值得烘焙的 TGS 和值得破解的缓存登录。
NPS 的账户模型(请求者账户、托管账户和临时账户,已在第 1 篇中详细介绍)直接针对这一共同的根本原因。托管账户在会话结束的瞬间即被禁用并再次轮换,临时账户被直接删除,即使是请求者账户,也只在会话期间拥有提升的组成员资格。
由于特权有起止时间,而不是永远存在,上述大多数攻击在会话关闭的瞬间就失去了目标。NPS 无需检测攻击,因为已经没有值得攻击的东西了。
攻击与 NPS 所带来变化的对应关系
使用 NPS 后,被攻陷的账户只拥有有限的特权,这就为它能造成的损害设定了上限。
凭据 / 攻击 | NPS 会话模型如何提供帮助 | 仍不在其范围内的部分 |
|---|---|---|
|
NTLM 哈希 / Pass-the-Hash |
托管账户:会话之间密码会轮换且账户被禁用,因此被窃取的哈希无法解锁任何东西。临时账户:不存在可持有哈希的账户。 |
请求者账户仍使用用户自己的凭据运行,需要按照公司策略进行轮换。 |
|
Kerberos 票据 / Pass-the-Ticket |
Kerberos 票据清除 Activity 会在 RDP 会话结束时清除资源上缓存的票据,从而阻断来自该会话的重放。 |
无 |
|
krbtgt 密钥 / Golden Ticket |
未直接解决。伪造的 TGT 携带其自行捏造的组声明,与目标账户在 AD 中的实时状态无关。 |
在任何疑似泄露事件之后将 krbtgt 密钥轮换两次,仍然是一项独立且必要的控制措施。 |
|
服务账户密钥 / Silver Ticket |
可供攻击的常驻服务账户更少,因为托管账户和临时账户不会带着稳定的密钥无限期存在。 |
无 |
|
临时账户在其会话之外并不存在,无法被烘焙;托管账户处于禁用状态,从而缩短了暴露窗口。 |
请求者账户以及 NPS 之外任何带有 SPN 的账户仍然可被烘焙。 |
|
|
同样的生命周期逻辑缩短了存在漏洞的账户以可进行身份验证的状态存在于 AD 中的时间。 |
NPS 不设置预身份验证配置。 |
|
|
缓存的域凭据(MSCACHEv2) |
每次会话后快速轮换密码,意味着被破解的历史密码很快就会失效。 |
无 |
|
LAPS/gMSA ACL 配置错误 |
NPS 会将自己托管账户的密码存入保险库并轮换,而不依赖 LAPS/gMSA 委派来管理这些特定账户。 |
NPS 范围之外由 LAPS 或 gMSA 管理的任何账户,仍完全依赖正确的 ACL。 |
|
AD CS 滥用(ESC1-ESC8)/ Shadow Credentials |
未解决。这是 PKI 信任路径和属性写入问题,与账户生命周期无关。 |
证书模板加固以及对 |
|
DPAPI 机密解密 |
暴露面有所缩小,因为账户不会持续登录并随时间积累受 DPAPI 保护的机密。 |
保护域 DPAPI 备份密钥不在 NPS 的范围之内。 |
|
恶意内部人员为后续攻击创建本地管理员 |
NPS 保护模式会删除未经授权的本地管理员。 |
无 |
进一步扩大效果的两项功能
NPS 中两项与账户无关的 Activities 均已在第 1 篇中介绍,这里值得再次强调,因为它们将同样的逻辑扩展到了凭据之外:
- 启用/禁用 RDP。大多数服务器会让 RDP 永久处于监听状态。NPS 可以只在会话期间开启 RDP,并在会话结束后立即关闭。这消除了一大块始终可用的攻击面,而这块攻击面与攻击者持有哪种凭据毫无关系。
- 保护模式。扫描 Windows 和 Linux 资源中未经批准的本地账户,可以发现另一种失效模式:内部人员(或已经进入内部的攻击者)悄悄创建常驻账户以备日后使用。它将同样的“不要让未受管理的特权不断累积”的理念,应用到了并非由 NPS 创建的账户上。
它不能取代什么
有必要精确说明边界,因为夸大其词对谁都没有好处。NPS 对依赖特权账户以可用状态持续存在的攻击很有效,这涵盖了 Windows 凭据攻击目录中数量惊人的一部分。它无法影响那些与任何单个账户的实时状态无关的攻击:利用被窃取的 krbtgt 密钥伪造的 Golden Ticket、AD CS 模板滥用、写入属性的 Shadow Credential,或域范围 DPAPI 备份密钥的失窃。无论会话和 Activities 模型执行得多么严格,这些攻击都需要各自的防护措施(krbtgt 轮换纪律、证书模板审查、属性写入监控、备份密钥保护)。
要点总结
传统 PAM 把密码存入保险库,只保护了一个对象。消除常驻特权,会降低该密码下游几乎所有内容的价值:哈希、票据、缓存登录和托管账户属性。只有当攻击者使用这些对象时其背后的特权仍然存在,它们才值得窃取。NPS 不会阻止 Active Directory 中所有基于凭据的攻击,但与“保护密码”相比,它能封堵的攻击面要大得多。
本系列后续内容
以上内容均假定账户完全按照 NPS 账户模型运行。第 3 篇将介绍 Bring Your Own Vault(BYOV):NPS 如何在你已在运行的保险库(传统 PAM 保险库、CyberArk、BeyondTrust、HashiCorp Vault 或 LAPS)之上叠加同样基于会话的保护,让你无需一次性迁移所有内容,就能开始降低这种暴露。
分享到
了解更多
关于作者
Tyler Reese
产品管理副总裁,CISSP
凭借在软件安全行业超过二十年的经验,Tyler Reese 对当今企业面临的快速演变的身份与安全挑战非常熟悉。目前,他担任 Netwrix Identity and Access Management 组合的产品总监;他的职责包括评估市场趋势、确定 IAM 产品线的发展方向,并最终满足终端用户的需求。他的职业经历从为财富 500 强公司提供 IAM 咨询,到在一家大型直销面向消费者(direct-to-consumer)的公司担任企业架构师,涵盖范围十分广泛。 目前,他持有 CISSP 认证。