NTLM认证

NTLM(NT LAN MANAGER)是一种网络认证协议,它是基于挑战(Challenge)/响应(Response)认证机制的一种认证模式。

NTLM使用在Windows NT和Windows 2000 Server(or later)工作组环境中(kerberos用在域模式下)。在AD域环境中,如果需要认证Windows NT系统,也必须采用NTLM。

NTLM协议的认证过程分为三步:

1、协商:主要用于确认双方协议版本(NTLM v1/NTLM v2)

2、质询:就是挑战/响应认证机制起作用的范畴

3、验证:验证主要是在质询完成后,验证结果,是认证的最后一步

质询的完整过程:

1、客户端向服务端发送用户信息(用户名)请求

2、服务器接受到请求,判断本地账户列表是否有用户名,如果有,生成一个16位的随机数,被称之为“Challenge”,使用登陆用户名对应NTLM Hash加密Challenge(16位随机字符),生成Challenge1,生成一个Net-NTLM Hash存在内存中,同时,生成Challenge1后,将Challenge(16位随机字符)发送给客户端。

3、客户端接收到Challenge后,使用将要登陆的账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。

4、验证,服务器接收到客户端的Response后,对比Challenge1与Response是否相等,若相等,则认证通过。

ps:

1、Challenge是Server产生的一个16字节的随机数,每次认证随机数都不同

2、Response的表现形式是Net-NTLM Hash,它是由客户端提供的密码Hash加密Server返回Challenge产生的结果

NTML认证方式

1、交互式认证:使用域账号登陆到客户端;涉及到两部分(客户端、域控)

2、非交互式认证:在已登陆的客户端上使用SSO的方式访问一台服务器;涉及三部分(客户端、域控、服务器) 

Hash类型

1、LM HASH:LM Hash是一种比较古老的Hash,在LAN Manager协议中使用,非常容易通过暴力破解获取明文凭据。Vista以前的Windows OS使用它,Vista之后的版本默认禁用了LM协议,但某些情况下还是可以使用。

2、NTLM HASH:Vista以上现代操作系统使用的Hash。通常意义上的NTLM Hash指存储在SAM数据库及NTDS数据库中对密码进行摘要计算后的结果,这类hash可以直接用于PTH,并且通常存在于lsass进程中。

3、NET-NTLM HASH:Net-NTLM Hash用于网络身份认证(例如ntlm认证中),目前分为两个版本Net-NTLM v1和Net-NTLM v2;两个版本认证方式相同,但加密方式不同(net-ntlmv1 challenge8位,net-ntlmv2 challenge16位)

NTLM Hash产生方式

LM Hash 与 NTLM的关系:

1、在NTLM协议问世前,它的前身就是LM(LAN Manager)协议

2、不同点:加密算法

3、相同点:认证机制

4、目前大多数的Windows都采用NTLM协议认证,LM协议已经基本淘汰。

NTLM Hash产生:假设我们的密码是admin,那么操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash。

password ==> hex ==> Unicode ==> MD4 ==> NTLM Hash

NTLM系统下的hash密码格式

用户名称:SID:LM-HASH值:NT-HASH值

Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::

LM Hash是AAD3B435B51404EEAAD3B435B51404EE这表示空密码或者是未使用LM_HASH;

Hash一般存储在两个地方:1、SAM文件,存储在本机对应本地用户来;2、NTDS.DIT文件,存储在域控上对应域用户。

域中NTLM认证

在域中,NTLM认证多了一个角色:服务器

1、首先在client输入username,password和domain,然后client会把password hash后的值先缓存到本地,之后,client把username的明文发送给DC

2、DC会生成16字节的随机数,即challenge,再传回给client

3、当client收到challenge后,会先复制一份出来,然后和缓存中的密码hash再一同混合hash一次,混合后的值称为response,之后client再将challenge,response及username一并传给server

4、server端在收到client传过来的这三个值后,会把它们都转发给DC

5、当DC接收到过来的三个值后,会根据username到域控的账号数据库(ntds.dit)里面找到该username对应的hash,然后把这个hash拿出来和传过来的challenge值再混合hash

6、将混合后的hash值跟传来的response进行比较,相同则认证成功,反之,认证失败;如果是本地登陆,所有验证肯定也全部直接在本地进行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值