在 Mimikatz 中使用 ChangeNTLM 和 SetNTLM 命令后,攻击者可以篡改用户密码并提升其在 Mimikatz中的权限。让我们来看看这些命令以及它们的作用。Active Directory。让我们来看看这些命令以及它们的作用。
ChangeNTLM
ChangeNTLM 命令用于执行密码更改。要使用该命令,你需要知道账户的当前密码或其 NTLM 密码哈希,而 NTLM 密码哈希通常比明文密码更容易被窃取。默认情况下,更改用户密码的权限授予了 Everyone,因此任何用户都无需特殊权限即可执行此命令。
下面是一个示例:仅知道当前密码哈希时,如何使用该命令来更改用户的密码:
这将在域控制器事件日志中生成事件 ID 4723。
SetNTLM
此命令用于执行密码重置。执行它不需要你知道用户的当前密码,但你必须在该帐户上拥有“Reset Password”权限;该权限默认不会授予 Everyone。
下面是使用该命令重置用户密码的示例:
这将在域控制器事件日志中生成事件 ID 4724。
攻击场景:ChangeNTLM
泄露用户的密码哈希会使攻击者能够执行 pass-the-hash attacks。然而,这些攻击通常仅限于对系统和应用程序的命令行访问。要登录 Outlook Web Access (OWA)、SharePoint 或远程桌面会话,攻击者可能需要用户的明文密码。他们可以通过四个快速步骤实施攻击并掩盖行迹:
- 泄露或攻破账号的 NTLM 哈希。
- 使用该哈希更改密码。
- 使用新的明文密码来访问所需的应用程序或服务。
- 使用被盗的哈希将密码恢复为之前的值。
该攻击非常有助于进一步利用被入侵的账号。
攻击场景:SetNTLM
在此场景中,攻击者已入侵了一个具有有限域访问权限的账户。利用该攻击路径需要通过重置用户密码来接管其账户,但攻击者不希望通过更改密码来提醒用户其账户已被入侵。攻击者应如何在目标被入侵后重置用户的密码,然后再将其恢复到原来的值?请输入 SetNTLM。
攻击者可以遵循这一基本路径:
- 使用 Bloodhound 来识别一条利用 Active Directory 权限和密码重置的攻击路径。
- 利用该攻击路径,并根据需要重置密码。
- 一旦获得特权访问,请使用 Mimikatz 提取所有受损账户的 NTLM 密码历史记录。
- 使用 SetNTLM 将先前的 NTLM 哈希应用到账户中,从而将密码恢复到原来的状态。
注意: 也可以使用 DSInternals Set-SamAccountPasswordHash 命令来完成同样的操作。
示例
假设我们有以下攻击路径,它会在三次密码重置后将我们从当前用户带到 Domain Admin:
既然我们已经知道哪些账号需要被攻破,就希望尽可能快地执行攻击,以免惊动任何用户。我们可以使用一些基础的 PowerShell 来把密码重置攻击路径脚本化。下面的脚本会接收一个密码,并沿着攻击链逐步执行,在到达目标 Domain Admin 之前,会在过程中冒充每一个被攻破的用户:
接下来,我们将以 Domain Admin 身份启动一个新的 PowerShell 会话,并执行 DCSync 操作,以获取所有账号的 NTLM 密码历史记录:
接着,我们将使用 SetNTLM 命令把密码恢复到它们先前的数值:
就这样完成了。我们已经成为 Domain Admin,并尽可能掩盖行迹,以避免用户意识到其账号在此过程中已被攻破。
检测并防止 SetNTLM 和 ChangeNTLM 攻击
检测攻击
如果攻击者使用 ChangeNTLM 攻击,将生成一个 4723 事件,但如下面所示,主体(Subject)和目标账户(Target Account)将会不同。这将有别于用户自行执行的正常密码更改;在正常情况下,这两个值是相同的。如果管理员要重置密码,他们将执行重置并生成 4724 事件。
防止攻击
为降低执行 SetNTLM 攻击的风险,请在目录中控制密码重置权限。为降低 ChangeNTLM 攻击的风险,请控制用户哈希是如何以及存储在何处。
Netwrix 如何提供帮助
The Netwrix Active Directory Security Solution 可帮助您端到端保护 Active Directory——从突出当前 AD 设置中的安全差距,到实时检测复杂攻击并立即响应威胁。它帮助您确保所有身份、它们所能访问的敏感数据以及底层 AD 基础设施都处于干净、可理解、正确配置、被密切监控且受到严格控制的状态——让您的工作更轻松,同时让组织更安全。
分享到
了解更多
关于作者
Jeff Warren
首席产品官
Jeff Warren 负责监督 Netwrix 的产品组合,在安全领域的产品管理与开发方面拥有十多年的经验。在加入 Netwrix 之前,Jeff 曾在 Stealthbits Technologies 领导产品团队;他运用自己作为软件工程师的经验,开发创新且面向企业规模的安全解决方案。凭借亲力亲为的工作方式以及解决棘手安全挑战的能力,Jeff 致力于打造真正可落地、行之有效的实用解决方案。他拥有特拉华大学(University of Delaware)的信息系统(Information Systems)学士学位。