NTLM认证学习
系统版本对LM和NTLM的支持
NTLM 认证
简介
NTLM是NT LAN Manager的缩写,NTLM是指telnet的一种验证身份方式,即问询/应答身份验证协议
认证流程
进行一个嫌弃自己的字好丑
这就是我理解的并且画的流程图
- 用户登录客户端,进行本地认证
- 客户端首先在本地将当前用户的密码加密为HTLM Hash
- 确认双方协议版本,客户端向服务器明文发送自己的账号
- 服务器返回一个十六位随机数,也就是图中的challenge
- 客户端需要使用本地的NTLM Hash来加密这个challenge并发回给服务器,也就是图中的response
- 服务器将明文的用户名、challenge、response发给域控制器(DC
- 域控制器用这个用户名在SAM密码管理库中找此用户对应的NTLM Hash
- 用这个NTLM Hash来加密服务器发过来的与发给用户端一样的challenge,与服务器端传过来的response进行对比,如果相同,那么就认证成功
本地认证
Windows不会储存用户的明文密码,而是将明文密码加密后储存在SAM中
本地认证的过程中,用户登录时,系统会自动将用户输入的明文密码加密为NTLM Hash,然后和SAM中的NTLM Hash进行比较
NTLM Hash的生成
hhhh这个过程还算好吧,无非就是代码写了好多行突然发现可以五行之内解决)
1 | import hashlib,binascii |
之前很迫切的没有用内置的方法去搞它,一直在那里进行一个手搓,嘛,最后的脚本在上面辣
]()
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自fault`s blog
评论 ()