NTLM 降级攻击技巧

6 月 24, 2024 技术分享

本文介绍一种方法,通过 NTLM 降级获取 NetNTLMv1 哈希,再通过破解 NetNTLMv1 到更为通用的 NTLM 哈希。

NTLM / NetNTLMv1 / NetNTLMv2

NTLM(New Technology LAN Manager)是微软提供的一组安全协议,用于认证用户身份。它是一个基于质询响应的协议,在验证用户的过程中不需要传输用户的明文密码。

在质询和响应阶段,客户端会收到来自服务器的质询(Challenge),然后使用用户的密码哈希对质询进行加密,生成响应(Response),这个响应就是 NetNTLM 响应。NetNTLMv2 是 NetNTLM 响应的一个较新的版本,早期版本为 NetNTLMv1。

NetNTLMv2 与 NetNTLMv1 都用于相同的认证过程,但 NetNTLMv2 相对于 NetNTLMv1 提供了更强的安全性,v2 使用了更复杂的加密方法和更长的质询,这使得破解密码变得更加困难。

因此,红队会尝试降级 NTLM 协商过程,转而获得更容易破解的 NetNTLMv1。

NTLM 降级

我们准备一个 Windows Server 2019 测试系统,将登录的账户密码修改为难以破解的超长密码,如下图所示:

编译并以管理员模式运行 Internal-Monologue,这个程序会将 NTLM 降级,并自动获取 NetNTLMv1 哈希:

获取到的 NetNTLMv1 哈希为:480c165778cfecf2a48f9e6f0191369994e8d011e8dc44d5

NetNTLMv1 -> NTLM

接下来,我们使用 ntlmv1.com 网站破解 NetNTLMv1,如下图所示:

破解成功后得到的结果即为常用的 NTLM 哈希:73b636dd3af905cda7c6bcd84a09a278

通过设置的密码生成 NTLM 哈希来校验一下解密结果是否正确:

NTLM 降级的优点

  • 获取 NTLM 哈希无需接触 Lsass 进程
  • 永久削弱目标系统的密码安全级别(在不恢复 NTLM 协商等级之前)

虽然还有其他潜在行为特征可以检出降级攻击,但如果你已经意识到了这一点,那绕过这些也应当非常简单 🙂

参考链接

https://book.hacktricks.xyz/windows-hardening/ntlm
https://github.com/eladshamir/Internal-Monologue
https://www.hackingarticles.in/ntlm-downgrade-attack-internal-monologue/
https://www.freebuf.com/articles/web/350726.html
https://zhuanlan.zhihu.com/p/637258145