本文介绍一种方法,通过 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