最近在研究Windows组策略时,在LAN管理器身份验证级别中“只发送NTLMv2 响应”。这让我不禁好奇,NTLMv2 到底是个啥?它为何如此重要?带着这些疑问,我翻阅了不少资料,顺便整理了一些冷知识,今天就以轻松的方式和大家聊聊 NTLMv2 的前世今生,以及它在Windows 安全中的意义。无论是技术小白还是老司机,这篇文章都会带你从“LM 的豆腐渣安全”到“Kerberos 的硬核进化”走一遭,顺便附上实用建议,让你的系统更安全!
从“史前遗物”说起:LM 协议的“豆腐渣”安全
要聊 NTLMv2,得先从它的“老祖宗”——LM(LAN Manager)认证协议讲起。LM 诞生于 1980 年代,那时候互联网还很“原始”,它的任务是帮服务器验证用户身份。听起来挺简单,但它的加密方式却让人捏把汗。
LM 是怎么工作的?
-
把用户密码分成 7 个字符一组的小块,不足的补零。
-
把所有小写字母强行转成大写。
-
用 56 位 DES 加密每个小块。
-
把加密结果拼接成字符串,发送给服务器验证。
为什么 LM 这么脆弱?
-
明文传输:加密后的密码直接在网络上跑,没有任何“遮挡”。
-
大写限制:所有字符强制转大写,等于把密码复杂度砍了一半。
-
56 位 DES:这在 1998 年就已经过时,当时的普通 PC 平均 6 天就能破解,现在随便一台手机几小时就能搞定。
结果呢?LM 的安全性就像“豆腐渣工程”,早早就被淘汰了。如果你还在用支持 LM 的老系统,赶紧升级吧,别让黑客笑话你的“史前遗物”!
NTLMv1:从“豆腐”到“砖头”的进化
到了 Windows NT 时代,微软推出了 NTLM 协议,取代了脆弱的 LM。NTLM 后来又分出了 NTLMv1 和 NTLMv2 两个版本。先说说 NTLMv1,它带来了一个革命性的改进——“挑战-回应”机制。
NTLMv1 是怎么玩的?
-
客户端先发送明文用户名给服务器。
-
服务器回一个随机数字(Challenge 或 Nonce),要求客户端用 DES 加密它。
-
客户端把密码转成 MD4 哈希值,再生成一个客户端随机数(Client Nonce),用哈希值加密 Client Nonce 和 Server Nonce。
-
客户端把加密结果(Response)发给服务器。
-
服务器把“用户名+挑战+回应”交给域控制器(Domain Controller,简称 DC)验证。
-
DC 从数据库取出用户密码的哈希值,用 DES 加密 Challenge,比对结果是否一致。
NTLMv1 比 LM 强在哪?
-
不传加密密码:不像 LM 那样直接暴露加密后的密码,安全性提升了一大截。
但它还是有“硬伤”
-
固定挑战:Challenge 是固定的 16 字节随机数,黑客通过监听可以收集大量“挑战-回应”对,建立“考古题库”,一旦碰到重复的挑战,就能直接“抄答案”骗过服务器。
-
暴力破解:2012 年 Defcon 大会上,研究人员展示了用专用硬件快速破解 NTLMv1 的 DES 加密。这意味着,黑客只需偷听几次“挑战-回应”,就能暴力破解出密码的 MD4 哈希值。
NTLMv1 的防线在被证明可暴力破解后彻底崩塌,从此被贴上“不安全”的标签。这也是所有网络安全规范强烈建议停用它的原因。
NTLMv2:从“砖头”到“钢筋”的升级
NTLMv2 早在 Windows NT4 SP4 时代就推出了,算是 NTLMv1 的“加强版”。它的核心还是“挑战-回应”机制,但做了几处硬核升级。
NTLMv2 的改进
-
挑战长度可变:不再是固定的 16 字节,随机性更强。
-
回应内容丰富:加密对象变成 Client Nonce + Server Nonce + 时间戳 + 用户名 + 目标地址。
-
加密算法升级:从 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 强在哪?
-
验证效率高:客户端从密钥分发中心(KDC)拿到 Ticket,直接交给资源服务器验证,不用像 NTLM 那样每次都找 DC“求证”,速度更快。
-
双向认证:客户端验证服务器,服务器也得证明自己合法,而 NTLM 只是单向认证。
-
开放标准:Kerberos 遵循 RFC 4120,是行业标准;NTLM 则是微软的“私有玩具”。
-
验证委派:资源服务器能拿着客户端的 Ticket,代表它访问其他服务(比如网站用用户身份登录 SQL)。
-
支持智能卡:Kerberos 能用 IC 卡登录,NTLMv2 不行。
Kerberos 的应用场景
在 Active Directory(AD)域环境中,Windows 系统间的认证大多用 Kerberos。只有在第三方系统对接或客户端无法连接 KDC(比如通过防火墙用 AD 账户登录 IIS)时,才会回退到 NTLMv2。
如何落实“只发送NTLMv2 响应”?
回到开头提到的问题,如何确保系统只用 NTLMv2,拒绝 LM 和 NTLMv1 呢?最简单的方法是通过本地或域安全策略强制设置。
设置步骤
-
打开组策略编辑器:
-
运行 gpedit.msc(本地)或 gpmc.msc(域)。 -
导航路径:
-
计算机配置 -> 策略 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项。 -
找到选项:
-
“网络安全:LAN Manager 身份验证级别”。 -
设置为:
-
“只发送 NTLMv2 响应,拒绝 LM 和 NTLM”(Send NTLMv2 response only. Refuse LM & NTLM)。 -
应用并重启:生效后,系统将只支持 NTLMv2。
注意事项
-
检查老设备:如果你的环境中还有只支持 LM 或 NTLMv1 的“史前服务器”,得先升级,否则可能会无法认证。
-
测试兼容性:调整前做好测试,确保业务系统不受影响。
我的探索与冷知识分享
在查资料的过程中,我发现了一些有趣的冷知识,顺手整理分享给大家:
-
LM 的“7字符分割”:LM 把密码分成 7 字符一组加密,导致短密码特别容易被破解。
-
NTLMv1 的“考古题库”:黑客能通过监听建立“挑战-回应”数据库,像考试作弊一样骗过服务器。
-
Kerberos 的“票据哲学”:它的 Ticket 机制灵感来源于现实中的“门票”,既高效又安全。
结语:用 NTLMv2 守护你的 Linux 系统
从 LM 的“豆腐渣”到 NTLMv1 的“砖头”,再到 NTLMv2 的“钢筋”和 Kerberos 的“合金”,认证协议的进化见证了安全需求的提升。遵循“只发送NTLMv2 响应”,不仅能满足网络安全要求,还能让你的系统更坚固。无论是保护服务器,还是在漏洞赏金中探秘,理解这些协议都是你的“硬通货”。
原文始发于微信公众号(HW安全之路):Windows认证协议的前世今生:从脆弱的LM到钢铁侠Kerberos
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论