文章目录
一、网络认证概述
什么是网络认证?
网络认证是指在 Windows 操作系统中,用户在进行网络通信和资源访问时,通过验证身份和授权权限来确保网络安全的一种机制。它可以有效限制未经授权的访问,并根据用户权限级别进行操作。
常见的网络认证方式
-
用户名和密码认证
用户通过提供有效的用户名和密码来完成身份验证。这是最基础的认证方式,适用于本地计算机账户或域账户。 -
Kerberos 认证
Kerberos 是一种网络身份验证协议,广泛应用于 Windows 域环境中。它通过使用票据和票据授予票证(TGT)来完成身份验证,并生成会话密钥以加密通信。 -
NTLM 认证
NTLM(NT LAN Manager)是早期的 Windows 网络认证协议,采用质询-响应机制进行身份验证。尽管 Kerberos 是现代系统的首选协议,但 NTLM 仍在某些旧版系统或非 Windows 系统中使用。 -
密钥认证
使用预先共享的密钥进行身份验证,通常应用于特定场景或应用程序中。 -
远程桌面认证
即 Remote Desktop Authentication,用户在远程访问计算机时需要输入目标计算机的凭据进行认证,以获得访问权限。
二、NTLM 协议质询响应认证机制
基本流程
NTLM 协议采用质询(Challenge)/响应(Response)认证机制,主要包括以下步骤:
-
协商阶段
确定传输协议的版本和其他配置信息,这也是为了解决历史遗留问题并保证向后兼容。 -
质询阶段
服务端生成随机的 Challenge,并将其发送给客户端。这一步是质询响应机制的关键。 -
验证阶段
客户端使用 NTLM-Hash 对 Challenge 加密后生成 Response,服务端通过相同方式验证 Response。
成功认证流程
- 客户端向服务端发起连接请求,并协商传输协议。
- 服务端本地生成随机 Challenge(16 位或 8 位)并发送给客户端。
- 客户端接收到 Challenge 后,利用 NTLM-Hash 加密 Challenge,结合用户信息生成 Response 并发送给服务端。
- 服务端验证客户端发送的 Response,匹配则认证成功,否则失败。
三、NTLM 抓包分析
实验环境
- 操作系统:两台 Windows Server 2008
- IP 地址:
- 192.168.41.239
- 192.168.41.187
实验步骤
- 使用
net use \\IP /u:账号 密码
进行认证。 - 同时打开 Wireshark 抓包工具进行数据流量分析,关注
smb
协议流量包。
抓包分析要点
-
协商阶段
前四个数据包主要用于协商协议版本和参数,内容简单且意义不大。
第五个数据包是用户启动身份的验证包,以及包含一些规则。 -
Challenge 数据包
第 6 个数据包包含服务端生成的随机 Challenge。- NTLMv1 使用 8 位 Challenge。
- NTLMv2 使用 16 位 Challenge(自 Windows Vista 起默认启用)。
-
Response 数据包
第 7 个数据包中包含客户端生成的 Response 和账户名等相关信息。 -
验证结果
第 8 个数据包显示服务端验证结果:成功或失败。失败通常会返回ERROR
信息。
四、Challenge 和 Response 分析
Challenge 和 Response 的作用
-
Challenge
服务端生成的随机字符,用于防止重放攻击。NTLMv1 为 8 位,NTLMv2 为 16 位。 -
Response
客户端通过 Challenge、用户凭据和其他信息加密生成,用于身份验证。
Response 的生成过程
-
NTLMv2-Hash
- 用户名(大写)和域名编码为 Unicode。
- 将上述结果与 NTLM-Hash 通过 HMAC-MD5 加密生成 NTLMv2-Hash。
-
NTProofStr 和 blob
- 使用 NTLMv2-Hash 对 Challenge 和 blob 进行 HMAC-MD5 加密,生成 NTProofStr。
- blob 包含时间戳、目标信息和随机填充字符。
-
完整 Response
Response = NTProofStr + blob。
五、NTLMv1 和 NTLMv2 的区别
-
Challenge 的长度
- NTLMv1 使用 8 位 Challenge。
- NTLMv2 使用 16 位 Challenge。
-
Response 的生成方式
- NTLMv1:将 NTLM-Hash 填充为 42 位,分为三组,每组 14 位,通过 DES 加密 Challenge 后拼接成 Response。
- NTLMv2:包含 NTProofStr 和 blob,使用 HMAC-MD5 加密生成。
-
安全性
NTLMv2 提供更强的安全性,防止弱密码的暴力破解。
六、NTLM 协议安全问题
-
PTH(Pass-the-Hash)攻击
攻击者只需获取目标系统的 NTLM-Hash,无需明文密码即可模拟认证。 -
Net-NTLM Hash Relay 攻击
通过中间人攻击截获 Net-NTLM Hash,重放以绕过身份验证。 -
Hash 破解
- NTLMv1 使用 DES,破解较为容易。
- NTLMv2 使用碰撞攻击或彩虹表,破解难度较大但并非不可能。
-
向后兼容性漏洞
旧版系统的协议设计缺陷容易被攻击者利用。应优先启用更安全的认证协议(如 Kerberos)并禁用 NTLMv1。