目录
在网络安全领域,NTLM 哈希认证是一个重要的知识点。今天我们来深入探讨一下 NTLM 哈希认证的相关内容。
一、NTLM 哈希概述
NTLM 哈希是被 Windows 系统认可的一种算法,用于替代古老的 LM 哈希。在 Windows win7、windows server2008 及以后的系统中,NTLM 哈希算法默认启动,而之前的版本使用的是 LM 哈希。
(一)NTLM 哈希生成原理
- 用户输入的密码首先会转换为 16 进制格式。例如,密码 “123456” 会转为对应的 16 进制。
- 接着将 16 进制格式的密码进行编码(文中提到优酷编码,可能有误)。
- 然后使用 MD4 摘要算法对编码后的数据进行哈希计算。
二、NTLM 哈希相关特性
(一)密码长度与哈希算法选择
- LM 哈希密码最大长度只有 14 位。当密码长度超过 14 位时,在 Windows 2000、XP 和 2003 等系统中,会采用 NTLM 哈希进行加密。在当前的一些系统中,当密码超过 14 位时,使用 NTLM 哈希加密码。
(二)哈希存储位置
- 在个人主机上,存储在 SAM 文件中,保存的是本地用户的相关信息。
- 在域环境下,存储在 NTDS.DIT 文件(即活动目录)中,对应的是域用户信息。
三、Windows 认证机制
(一)认证类型
- 本地认证
- 用户直接在操作系统计算机中登录账户。系统收到用户输入的密码后,将其计算为 NTLM 哈希,再与 SAM 数据库进行对比。在本地认证中,用来处理用户输入密码的进程是 LSASS.EXE,在某些版本之前,密码会在这个进程中明文保存,以便将密码计算成 NTLM 哈希与 SAM 数据库进行对比,但在 windows 2008、2012R2 等版本之后,LSASS.EXE 文件不再记录明文密码。
- 网络认证
- 在工作组环境中,远程登录到另外一台电脑所采用的认证机制也叫挑战相应机制。具体过程如下:
- 第一步是协商双方确定使用的协议版本,因为 NTLM 哈希存在 V1 和 V2 两个版本,不同版本加密方式不同,同时还有 C10vi3 种协议,不同协议使用不同格式的挑战码和加密算法。
- 第二步是质询挑战。客户端向服务端发送用户名请求,服务器收到请求后,若本地用户列表存在该用户名,则生成一个 16 位的随机数(挑战码),用登录对应的 NTLM 哈希加密挑战码生成挑战码一,保存在内存中同时将挑战码明文发送给客户端。
- 第三步是验证。客户端使用账号密码转化的 NTLM 哈希加密挑战码生成响应并发送至服务器端,服务器收到响应后与之前保存在内存中的挑战码进行比较,相同则认证通过。
- 在工作组环境中,远程登录到另外一台电脑所采用的认证机制也叫挑战相应机制。具体过程如下:
- 预认证
- 登录到域环境中的某个设备或某台计算机。
NTLM 哈希认证在 Windows 系统的安全体系中有着重要地位,无论是本地用户管理还是网络环境中的设备连接认证等方面都起着关键作用。了解其原理和机制有助于我们更好地理解 Windows 系统的安全性以及应对相关的网络安全问题。