人们投入了大量关注来防止 pass-the-hash 和 pass-the-ticket 攻击,但这些策略会把对手限制在只能从命令行执行的操作范围内。一旦攻破明文密码,攻击者就能对账号获得无限访问权限——其中可能包括对 Web 应用、VPN、电子邮件等的访问。
提取明文密码的一种方法是通过 Kerberoasting,但这种暴力破解技术需要大量时间和耐心。提取明文密码还有更快、更容易的方法,本文将对此进行探讨。
组策略首选项
在 Windows Server 2008 中,Microsoft 引入了 Group Policy 首选项(GPP)。GPP 的常见用例之一是在服务器和工作站上创建与管理本地账户(例如 Administrator 账户)。作为其中的一部分,管理员可以为这些账户推送密码。
密码存储在 SYSVOL 中的组策略 XML 文件里,并使用 AES 密钥进行加密。然而,Microsoft 发布了 AES 密钥 ,该密钥可用于解密这些密码——从而使其在效果上等同于明文密码。
由于 SYSVOL 共享对已验证用户(Authenticated Users)开放,组织中的任何用户都可以读取其中存储的文件。因此,任何用户账户都能找到并解密组策略文件,从而获得 Administrator 账户的明文密码访问权限。PowerSploit 命令 Get-GPPPassword 将为你查找并解密这些密码。
如需更详细的说明,请查看 Sean Metcalf 的文章 以及 Microsoft 的文章 。此外,作为 安全公告 的一部分,Microsoft 还提供了用于扫描包含密码的 GPP 的有用脚本。
Mimikatz 和 LSASS 内存小转储(Minidumps)
通常,Mimikatz 会用来从内存中提取 NTLM 密码哈希或 Kerberos 票据。然而,它较不为人知的能力之一,是可以从为 LSASS 进程创建的转储中提取明文密码。这意味着攻击者无需在域控制器上运行任何恶意代码,就能获取明文密码。转储文件可以通过交互方式创建,也可以使用 ProcDump;在任一情况下,该活动都不太可能被防病毒软件标记。创建转储后,可以将其从域控制器复制出来,并使用 Mimikatz 离线提取明文凭据。
下面可以看到使用 ProcDump 在域控制器上创建进程转储的过程:
该命令本质上会创建 LSASS 进程的快照,其中包含明文密码信息:
文件创建完成后,可以将其复制到另一台主机上,使用 Mimikatz 进行离线密码提取。通过使用 sekurlsa::minidump 命令,可以将 Mimikatz 的上下文切换到已提取的转储文件,并发出 sekurlsa::logonpasswords 命令:
使用 Mimikatz 攻击 Digest 身份验证协议
Digest 身份验证协议(WDigest.dll),在 Windows XP 中引入,用于 HTTP 和 SASL。最重要的是,启用 WDigest 会导致对本地认证账号存储明文凭据。2014 年,Microsoft 发布了补丁 ,可使用 UseLogonCredential 注册表值禁用 WDigest。然而,许多组织仍在运行启用 WDigest 的服务器和工作站。
如果启用 WDigest,攻击者就可以使用 sekurlsa::logonpasswords 命令轻松提取明文凭据:
利用可逆加密
Active Directory 允许将用户密码以可逆加密(reversible encryption)的方式保存,这本质上与将密码存储为明文(plain text)是同一回事。该策略在 Windows Server 2000 中引入,即使在最新版本中仍然存在。 根据 Microsoft 的说法 ,其引入是为了提供“对使用需要用户密码进行身份验证的协议的应用程序的支持”。
默认情况下,该策略处于关闭状态;但如果启用,攻击者就可以使用诸如 DCSync 之类的技术轻松提取明文密码:
上面的命令将返回明文密码:
可逆加密(reversible encryption)策略可以通过组策略用户帐户控制(Group Policy User Account Control)设置以及通过细粒度 密码策略 来启用。攻击者可能会恶意创建一个与“Domain Admins”关联的细粒度密码策略,从而启用其密码以可逆加密方式存储,使其能够访问特权帐户的明文密码。
结论
如您所见,获取 Active Directory 账户的明文密码的方法并不稀缺。想了解更多信息,请阅读我们关于以下主题的相关文章:使用 PowerSploit 提取明文密码,查找弱口令,攻击弱口令以及 攻击本地账户口令。
Netwrix StealthDEFEND 可帮助您在整个基础设施中有效检测这类攻击,甚至是更复杂的攻击,并以实时方式进行响应。
分享到
了解更多
关于作者
Jeff Warren
首席产品官
Jeff Warren 负责监督 Netwrix 的产品组合,在安全领域的产品管理与开发方面拥有十多年的经验。在加入 Netwrix 之前,Jeff 曾在 Stealthbits Technologies 领导产品团队;他运用自己作为软件工程师的经验,开发创新且面向企业规模的安全解决方案。凭借亲力亲为的工作方式以及解决棘手安全挑战的能力,Jeff 致力于打造真正可落地、行之有效的实用解决方案。他拥有特拉华大学(University of Delaware)的信息系统(Information Systems)学士学位。