当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 哈希跨越攻击:原理和检测

作者:精品下载站 日期:2024-12-14 06:11:16 浏览:13 分类:玩电脑

哈希跨越攻击:原理和检测


Overpass-the-hash 攻击是其他两种攻击的组合:pass-the-hash 和 pass-theticket。 所有这三种技术都属于 Mitre 类别“远程服务利用”。

在 overpass-the-hash 攻击中,攻击者利用用户帐户的 NTLM 哈希来获取可用于访问网络资源的 Kerberos 票证。如果您无法获取帐户的明文密码但需要 Kerberos 身份验证才能到达目的地,则此技术非常方便。此攻击可用于在本地或远程服务器上执行操作。用于执行此类攻击的最常见工具是 Mimikatz 和 Rubeus。

Overpass-the-Hash 是如何工作的

步骤 1. 获取用户帐户的密码哈希。

第一步与哈希传递攻击相同:获取我们想要入侵的用户帐户的 NTLM 密码哈希(NT 哈希)。为此,我们将使用 Mimikatz:

Privilege::debug
Sekurlsa::logonpasswords

[玩转系统] 哈希跨越攻击:原理和检测

步骤 2. 执行 Overpass-the-hash 攻击。

使用 NTLM 哈希,我们可以执行跨越哈希攻击:

Sekurlsa::pth /user:[USER] /domain:[DOMAIN] /ntlm:[NTLM HASH]

[玩转系统] 哈希跨越攻击:原理和检测

我们不仅传递了哈希值,而且还超越了它:NTLM 哈希值使用 RC4 加密传递到 Kerberos 身份验证提供程序。这是可能的,因为 Microsoft 提供了基于 NTLM 哈希创建 RC4-HMAC-MD5 加密的 Kerberos 令牌的功能。支持这一点主要是为了向后兼容,但它也可能被利用——您只需要用户的 NTLM 哈希即可创建具有最低安全级别的 Kerberos 票证。有关更多详细信息,请阅读 Benjamin Delpy 的博客文章。

执行跨越哈希攻击的其他选项

您还可以使用有关用户的其他信息(例如其 AES 密钥)创建 Kerberos 票证。 Mimikatz 使您能够通过几种不同的方式提取 AES 密钥。如果您拥有适当的 Active Directory 权限,DCSync 命令将为域中的任何用户返回此信息。或者,您可以在本地系统上使用sekurlsa::ekeys命令。

Lsadump::dcsync /user:[USER] /domain:[DOMAIN]

一旦我们能够访问用户的 AES 密钥,我们就可以滥用它们,而无需实际的权限升级。

[玩转系统] 哈希跨越攻击:原理和检测

从那里我们可以发出 pass-the-hash 命令将 AES 密钥注入到 Kerberos 票证中。这将更难以检测,因为它将使用更安全和常用的加密密钥。

Sekurlsa::pth /user:[USER] /domain:[DOMAIN] /aes256:[AES256 KEY]

[玩转系统] 哈希跨越攻击:原理和检测

现在我们可以验证该用户的身份。如果我们使用 klist 命令,我们应该看到 AES256 加密的 Kerberos 票证用于我们的身份验证:

[玩转系统] 哈希跨越攻击:原理和检测

检测跨越哈希攻击

使用哈希传递检测技术

发现 overpass-the-hash 黑客攻击的最佳方法是使用与检测 pass-the-hash 相同的策略:在每个端点的身份验证过程中查找以下事件日志签名:

  • 事件 ID 4624,登录类型=9,身份验证包=协商,登录过程=seclogo
  • Sysmon 事件 ID 10 LSASS 进程访问

当您同时看到这两个事件时,您要么通过哈希,要么通过哈希,因为在两种攻击中将 NTLM 身份验证和 Kerberos 票证注入新会话的过程是相同的。但是,端点无法区分从事件日志传递到 pass-the-hash 命令的选项。

那么管理员如何区分 pass-the-hash 和 overpass-the-hash 呢?主要区别在于,在 overpass-the-hash 中,事件日志将显示域控制器上的 Kerberos(而不是 NTLM)身份验证活动。我们来比较一下两种攻击期间的事件日志(差异以粗体显示):

传递哈希日志

Source HostTarget HostDomain Controller 4648 – A logon was attempted using explicit credentials.4624 – An account was successfully logged on. Logon Type 3, NTLM4776 – The computer attempted to validate the credentials for an account. 4624 – An account was successfully logged on. (Logon type = 9 Logon Process = Seclogo)4672 – Special privileges assigned to new logon. 4672 – Special privileges assigned to new logon. (Logged on user, not impersonated user)

超越哈希日志

Source HostSource Host Target HostDomain Controller 4648 – A logon was attempted using explicit credentials.4624 – An account was successfully logged on. (Logon Type = 3, Logon Process = Kerberos, Authentication Package = Kerberos)4768 – A Kerberos authentication ticket (TGT) was requested. (Encryption Type for RC4/AES128/AES256) 4624 – An account was successfully logged on. (Logon type = 9 Logon Process = Seclogo)4672 – Special privileges assigned to new logon.4769 – A Kerberos service ticket was requested. (Encryption Type for RC4/AES128/AES256) 4672 – Special privileges assigned to new logon. (Logged on user, not impersonated user)

值得注意的是,在域控制器上,您可以看到票证的加密级别(RC4 为 0x17、AES128 为 0x11、AES256 为 0x12)。然而,正如我们所证明的,这不是一种可靠的检测技术,因为攻击者可以在创建票证时指定其中的任何或全部。

回顾一下,最好的检测方法是检查登录类型=9 和 Sysmon 事件 ID 10 的事件 ID 4624 的端点。然后,我们可以检查域控制器日志中该用户的事件 ID 4776(传递哈希值) )或 4768/4769(跨越哈希)。

使用传递票检测技术

我们的传票教程中介绍的检测策略在这里也很有用。这涉及检查用户会话的关联 Kerberos 票证。如果存在与会话关联的用户不匹配的票证,则存在票证注入。

overpass-the-hash 的一项有用功能是,我们在登录类型为 9 的端点上获取 4624 事件,其中包含新会话的会话 ID:

[玩转系统] 哈希跨越攻击:原理和检测

我们可以看到用户 Michael 有了一个新的登录。如果我们对该登录 ID 使用 klist -li 命令,我们可以看到任何关联的 Kerberos 票证。在这种情况下,它将显示来自受感染用户的票证:

[玩转系统] 哈希跨越攻击:原理和检测

结论

上面详述的策略是检测网络中的跨越哈希和其他横向移动技术的一种方法,但它们通常需要收集和检查事件日志并在每个端点和域控制器上运行诊断脚本。如需检测、预防和响应这些及其他 Active Directory 攻击的综合方法,请查看 Netwrix Active Directory 安全解决方案。

常问问题

什么是overpass-the-hash?

Overpass-the-hash 是一种攻击,使攻击者能够将用户帐户的 NTLM 哈希传递到 Kerberos 身份验证提供程序。它结合了哈希传递和票证传递技术。

如何检测跨越哈希攻击?

检测此攻击的最佳方法是检查端点日志中登录类型=9 的事件 ID 4624。同时检查 Sysmon 事件 ID 10 将减少误报。

什么是 NTLM 密码哈希?

NTLM 身份验证协议依赖于密码哈希,这是一种将明文密码转换为另一文本字符串的单向函数 - NTLM 密码哈希

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯