网络认证与NTLM协议详解
文章目录
目录
- 网络认证概述
- NTLM挑战响应协议机制
- Challenge与Response分析
- NTLMv1与NTLMv2区别
- NTLM协议安全问题
1. 网络认证概述
本地认证 vs 网络认证
- 本地认证:账号密码存储于本地电脑,无需联网即可登录(如工作组环境)。
- 网络认证:验证用户身份以访问网络资源(老板访问财务电脑)。
常见认证方式
认证方式 | 特点 |
---|---|
用户名密码认证 | 基础方式,适用于本地账户或域账户。 |
Kerberos | 域环境首选,通过票据(TGT)验证身份,安全性高。 |
NTLM | 基于挑战响应机制,兼容旧系统,常用于工作组或跨系统场景。 |
密钥认证 | 使用预共享密钥,适用于特定场景。 |
远程桌面认证 | 通过目标计算机凭据远程访问。 |
2. NTLM挑战响应协议机制
认证流程(4步)
- 协商:协商协议版本(向下兼容)。
- 质询(Challenge):服务端生成随机Challenge(8或16位)发送给客户端。
- 响应(Response):
- 客户端用NTLM-Hash加密Challenge,附加域名、IP等信息生成Response。
- 将Response发送给服务端。
- 验证:服务端用相同方式加密生成Response,对比结果决定认证成功/失败。
3. Challenge与Response分析
Challenge
- NTLMv1:8位随机值。
- NTLMv2:16位随机值(Windows Vista后默认)。
Response生成(NTLMv2)
-
NTLMv2-Hash = HMAC-MD5(密码Hash, Unicode编码(大写用户名+域名))。
-
NTProofStr = HMAC-MD5(作为key:NTLMv2-Hash, 作为字符串:Challenge+Blob)。
-
Blob = 时间戳+客户端随机值+目标信息。
-
Response = NTProofStr + Blob。
Net-NTLMv2 Hash格式(工具:Inveigh和WireShark抓包):
username::domain:challenge:NTProofStr:blob
4. NTLMv1与NTLMv2区别
特性 | NTLMv1 | NTLMv2 |
---|---|---|
Challenge长度 | 8位 | 16位 |
Response生成 | 分3组DES加密Challenge | HMAC-MD5加密Challenge+Blob |
安全性 | 弱(易破解) | 较高(抗重放、抗暴力破解) |
默认使用 | Windows XP及更早 | Windows Vista及更新 |
5. NTLM协议安全问题
主要攻击方式
-
Pass-the-Hash (PTH)
- 利用获取的NTLM-Hash直接伪造身份认证。
-
NTLM Relay攻击
- 中间人截获Net-NTLM Hash并重放至其他服务。
-
Hash破解
- NTLMv1:DES加密易被彩虹表或暴力破解。
- NTLMv2:需更复杂的碰撞攻击,但仍可能被破解。
防御建议
- 禁用NTLMv1,强制使用NTLMv2或Kerberos。
- 启用SMB签名防止Relay攻击。
- 定期更新密码,避免弱口令。
总结:NTLM是Windows网络认证的核心协议,理解其机制与安全风险对防御攻击至关重要。