NTLM Hash与 NTLM的关系、NTLM网络认证流程
关键词
NTLM HashNTLMLSASSNet-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 |