NTLM Hash与 NTLM的关系、NTLM网络认证流程
关键词
NTLM Hash
NTLM
LSASS
Net-NTLM hash
关键词解释:
NTLM Hash
:存储在SAM数据库
及NTDS数据库
中对密码进行 Hash摘要计算后的结果Net-NTLM hash
:通常是指网络环境下 NTLM认证中的 Hash (下有说明)NTLM
:除Kerberos
之外的一种网络认证协议,只支持 WindowsLSASS
:Windows系统的安全机制(系统进程)。用于本地安全和登陆策略
本地认证
Windows不存储用户的明文密码,它会将用户的明文密码经过加密后存储在 SAM (Security Account Manager Database,安全账号管理数据库)中。
SAM文件的路径是
%SystemRoot%\system32\config\sam
在进行本地认证的过程中,当用户登录时,系统将用户输入的明文密码加密成 NTLM Hash
*,与 SAM数据库中的 *NTLM Hash
进行比较,从而实现认证
1 | winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证) |
首先,用户注销、重启、锁屏后,操作系统会让 winlogon
显示登录界面,也就是输入框,接收输入后,将密码交给 lsass
进程,这个进程中会存一份明文密码,将明文密码加密成 NTLM Hash
,对比 SAM数据库中的 Hash进行验证
NTLM Hash
Hash,一种将任意长度的消息压缩到某一固定长度的消息摘要的函数 。—— 度娘百科
通常意义上的 NTLM Hash
指存储在 SAM数据库
及NTDS数据库
中对密码进行 Hash摘要计算后的结果,这类 Hash可以直接用于 PTH,并且通常存在于 LSASS
进程中,便于 SSP(NTLM 安全支持提供程序)使用
NTLM Hash的生成
- 用户密码:
susi2001
- 首先,密码经过十六进制转为
7375736932303031
- 将十六进制结果转为 Unicode格式
73007500730069003200300030003100
- 以 Hex(16进制)数据作 MD4加密
ed3202726368f8e9fd23e78fbfac8c13
MD4加密使用
HashCalc
NTLM 和 NTLM Hash
NTLM 是一种网络认证协议,与 NTLM Hash
的关系就是:NTLM网络认证协议是以 NTLM Hash
作为根本凭证进行认证的协议
NTLM网络认证机制
NTLM是一种基于质询/应答 (Challenge/Response )消息交换模式的认证机制,常用于 工作组和域环境下登录场景的身份认证
NTLM 认证方式
- 交互式认证 :使用域账号登录到客户端;涉及两部分(客户端、域控)
- 非交互式认证 :在已经登陆 的客户端上使用 SSO 的方式访问一台服务器;涉及三部分(客户端、域控、服务器)
1 | # 非交互式场景 |
认证流程
NTLM协议的认证过程有三步:
- 协商:主要用于确认双方协议版本(NTLMv1、NTLMv2等)
- 质询:质询/应答 (Challenge/Response)模式,用于消息交换
- 验证:验证身份合法性,通常由 Server端或 DC完成这个过程
大致流程如下:
- 使用用户名和密码尝试登录客户端
- 客户端对密码进行哈希处理并缓存密码 hash,丢弃实际的明文密码(不存储),然后将用户名发送到服务器,发起认证请求
- 服务器生成一个 16字节的随机数,称为 质询 (Challenge) 或随机数 (nonce.aspx),并发送给客户端
- 客户端使用缓存的 用户密码的 Hash 对此
Challenge
进行加密,加密结果为Response
(暂且叫做Challenge1
),然后将结果发送给服务器 - 服务器发送三项数据给域控制器:
User name
- 发送给客户端的
Challenge
(已加密) - 从客户端接收到的
Response
- 域控制器使用
User name
从 AD中检索该用户密码的NTLM Hash
,并使用此NTLM Hash
来加密Challenge
,然后把这个值和客户端计算的响应值(Challenge1
)进行比较。如果它们相同,则验证成功
经过
NTLM Hash
加密Challenge
的结果在网络协议中称之为Net NTLM Hash
在以上流程中,用户的登录密码 Hash 即为
NTLM Hash
,Response中则包含Net-NTLM Hash
NTLM v2
NTLM version 2 (NTLMv2)是在 Windows NT 4.0 SP4中引入的(在 Windows 2000 中得到了本地支持),它通过加强协议来防止许多欺骗攻击,并增加服务器向客户机进行身份验证的能力,从而增强了 NTLM的安全性
NTLM v1
与 NTLM v2
最显著的区别就是 Challenge
与 加密算法 不同,共同点就是加密的原料都是 NTLM Hash
:
- Challenge:
v1
: 8-bytev2
:16-byte
- Net NTLM Hash:
v1
:DESv2
: HMAC-MD5
1 | # NTLM |
1 | # NTLM v2 |