Windows认证协议的前世今生:从脆弱的LM到钢铁侠Kerberos

admin 2025年6月7日10:24:56评论5 views字数 2907阅读9分41秒阅读模式

最近在研究Windows组策略时,在LAN管理器身份验证级别中“只发送NTLMv2 响应”。这让我不禁好奇,NTLMv2 到底是个啥?它为何如此重要?带着这些疑问,我翻阅了不少资料,顺便整理了一些冷知识,今天就以轻松的方式和大家聊聊 NTLMv2 的前世今生,以及它在Windows 安全中的意义。无论是技术小白还是老司机,这篇文章都会带你从“LM 的豆腐渣安全”到“Kerberos 的硬核进化”走一遭,顺便附上实用建议,让你的系统更安全!

Windows认证协议的前世今生:从脆弱的LM到钢铁侠Kerberos

从“史前遗物”说起:LM 协议的“豆腐渣”安全

要聊 NTLMv2,得先从它的“老祖宗”——LM(LAN Manager)认证协议讲起。LM 诞生于 1980 年代,那时候互联网还很“原始”,它的任务是帮服务器验证用户身份。听起来挺简单,但它的加密方式却让人捏把汗。

LM 是怎么工作的?

  1. 把用户密码分成 7 个字符一组的小块,不足的补零。

  2. 把所有小写字母强行转成大写。

  3. 用 56 位 DES 加密每个小块。

  4. 把加密结果拼接成字符串,发送给服务器验证。

为什么 LM 这么脆弱?

  • 明文传输:加密后的密码直接在网络上跑,没有任何“遮挡”。

  • 大写限制:所有字符强制转大写,等于把密码复杂度砍了一半。

  • 56 位 DES:这在 1998 年就已经过时,当时的普通 PC 平均 6 天就能破解,现在随便一台手机几小时就能搞定。

结果呢?LM 的安全性就像“豆腐渣工程”,早早就被淘汰了。如果你还在用支持 LM 的老系统,赶紧升级吧,别让黑客笑话你的“史前遗物”!

NTLMv1:从“豆腐”到“砖头”的进化

到了 Windows NT 时代,微软推出了 NTLM 协议,取代了脆弱的 LM。NTLM 后来又分出了 NTLMv1 和 NTLMv2 两个版本。先说说 NTLMv1,它带来了一个革命性的改进——“挑战-回应”机制。

NTLMv1 是怎么玩的?

  1. 客户端先发送明文用户名给服务器。

  2. 服务器回一个随机数字(Challenge 或 Nonce),要求客户端用 DES 加密它。

  3. 客户端把密码转成 MD4 哈希值,再生成一个客户端随机数(Client Nonce),用哈希值加密 Client Nonce 和 Server Nonce。

  4. 客户端把加密结果(Response)发给服务器。

  5. 服务器把“用户名+挑战+回应”交给域控制器(Domain Controller,简称 DC)验证。

  6. DC 从数据库取出用户密码的哈希值,用 DES 加密 Challenge,比对结果是否一致。

NTLMv1 比 LM 强在哪?

  • 不传加密密码:不像 LM 那样直接暴露加密后的密码,安全性提升了一大截。

但它还是有“硬伤”

  • 固定挑战:Challenge 是固定的 16 字节随机数,黑客通过监听可以收集大量“挑战-回应”对,建立“考古题库”,一旦碰到重复的挑战,就能直接“抄答案”骗过服务器。

  • 暴力破解:2012 年 Defcon 大会上,研究人员展示了用专用硬件快速破解 NTLMv1 的 DES 加密。这意味着,黑客只需偷听几次“挑战-回应”,就能暴力破解出密码的 MD4 哈希值。

NTLMv1 的防线在被证明可暴力破解后彻底崩塌,从此被贴上“不安全”的标签。这也是所有网络安全规范强烈建议停用它的原因。

NTLMv2:从“砖头”到“钢筋”的升级

NTLMv2 早在 Windows NT4 SP4 时代就推出了,算是 NTLMv1 的“加强版”。它的核心还是“挑战-回应”机制,但做了几处硬核升级。

NTLMv2 的改进

  1. 挑战长度可变:不再是固定的 16 字节,随机性更强。

  2. 回应内容丰富:加密对象变成 Client Nonce + Server Nonce + 时间戳 + 用户名 + 目标地址。

  3. 加密算法升级:从 DES 换成了 HMAC-MD5,虽然不算最前沿,但足以应对当前硬件的破解能力(至少在量子计算机普及前)。

为什么 NTLMv2 更安全?

  • 时间戳加入:让“考古题库”破解变得几乎不可能,每次挑战都不一样。

  • HMAC-MD5:暴力破解难度大幅提升,现代设备也难以短时间内攻破。

以现在的眼光看,NTLMv2 的安全性是可以接受的,从 Windows 7 和 Windows Server 2008 开始(其实 Vista 就有了,但……我们还是聊 Windows 7 吧),系统默认只支持 NTLMv2,拒绝 LM 和 NTLMv1。

Kerberos:从“钢筋”到“合金”的飞跃

说到 NTLMv2,就不得不提它的“接班人”——Kerberos。从 Windows 2000 开始,微软引入了 Kerberos,它比 NTLMv2 更硬核,堪称认证界的“合金战士”。

Kerberos 比 NTLMv2 强在哪?

  1. 验证效率高:客户端从密钥分发中心(KDC)拿到 Ticket,直接交给资源服务器验证,不用像 NTLM 那样每次都找 DC“求证”,速度更快。

  2. 双向认证:客户端验证服务器,服务器也得证明自己合法,而 NTLM 只是单向认证。

  3. 开放标准:Kerberos 遵循 RFC 4120,是行业标准;NTLM 则是微软的“私有玩具”。

  4. 验证委派:资源服务器能拿着客户端的 Ticket,代表它访问其他服务(比如网站用用户身份登录 SQL)。

  5. 支持智能卡:Kerberos 能用 IC 卡登录,NTLMv2 不行。

Kerberos 的应用场景

在 Active Directory(AD)域环境中,Windows 系统间的认证大多用 Kerberos。只有在第三方系统对接或客户端无法连接 KDC(比如通过防火墙用 AD 账户登录 IIS)时,才会回退到 NTLMv2。

如何落实“只发送NTLMv2 响应”?

回到开头提到的问题,如何确保系统只用 NTLMv2,拒绝 LM 和 NTLMv1 呢?最简单的方法是通过本地或域安全策略强制设置。

设置步骤

  1. 打开组策略编辑器:

    • 运行 gpedit.msc(本地)或 gpmc.msc(域)。
  2. 导航路径:

    • 计算机配置 -> 策略 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项。
  3. 找到选项:

    • “网络安全:LAN Manager 身份验证级别”。
  4. 设置为:

    • “只发送 NTLMv2 响应,拒绝 LM 和 NTLM”(Send NTLMv2 response only. Refuse LM & NTLM)。
  5. 应用并重启:生效后,系统将只支持 NTLMv2。

注意事项

  • 检查老设备:如果你的环境中还有只支持 LM 或 NTLMv1 的“史前服务器”,得先升级,否则可能会无法认证。

  • 测试兼容性:调整前做好测试,确保业务系统不受影响。

我的探索与冷知识分享

在查资料的过程中,我发现了一些有趣的冷知识,顺手整理分享给大家:

  • LM 的“7字符分割”:LM 把密码分成 7 字符一组加密,导致短密码特别容易被破解。

  • NTLMv1 的“考古题库”:黑客能通过监听建立“挑战-回应”数据库,像考试作弊一样骗过服务器。

  • Kerberos 的“票据哲学”:它的 Ticket 机制灵感来源于现实中的“门票”,既高效又安全。

结语:用 NTLMv2 守护你的 Linux 系统

从 LM 的“豆腐渣”到 NTLMv1 的“砖头”,再到 NTLMv2 的“钢筋”和 Kerberos 的“合金”,认证协议的进化见证了安全需求的提升。遵循“只发送NTLMv2 响应”,不仅能满足网络安全要求,还能让你的系统更坚固。无论是保护服务器,还是在漏洞赏金中探秘,理解这些协议都是你的“硬通货”。

原文始发于微信公众号(HW安全之路):Windows认证协议的前世今生:从脆弱的LM到钢铁侠Kerberos

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月7日10:24:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows认证协议的前世今生:从脆弱的LM到钢铁侠Kerberoshttps://cn-sec.com/archives/3802134.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息