域渗透学习笔记二:Windows认证机制Net-NTLM刨析
基础知识
1.Windows本地认证:
认证的密码储存在SAM文件中,其位置为C:/Windows/system32/config/sam,词组security account manager,意思是安全账号管理器,其作用是对windows账户安全管理,类似于linux系统中的/etc/passwd文件,删除该文件即可删除账号密码。这也是PE破解系统密码的原理。
登录认证是会从该文件读取里面的加密后的密码(NTLM hash)和用户输入的密码进行对比。
NTLM hash生成流程如下:
-
将明文口令转换成十六进制的格式
-
转换成Unicode格式,即在每个字节之后添加0x00
-
对Unicode字符串作MD4加密,生成32位的十六进制数字串
NTLM hash支持Net NTLM认证协议以及本地认证协议。其前身为LM Hash(LM算法脆弱,响应存在一些缺陷。主要出现在xp,03之下的系统)
Net-NTLM认证流程:
- 协商:主要用于确认双方协议版本
- 质询:就是挑战(Chalenge)/响应(Response)认证机制起作用的范畴。
- 验证:验证主要是在质询完成后,验证结果,是认证的最后一步。
质询的完整过程:
- 1.客户端向服务器端发送用户信息(用户名)请求
- 2.服务器接受到请求,生成一个16位的随机数,被称之为“Challenge”, 使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1。生成一 个Net-NTLM Hash存在内存中,同时,生成Challenge1后,将Challenge(16位随机 字符)发送给客户端。
- 3.客户端接受到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。
其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash。
验证: 服务器端收到客户端的Response后,比对Chanllenge1与Response是否相等,若相等,则认证通过。
注意:
1.Chanllenge是Server产生的一个16字节的随机数,每次认证都不同
2.Response的表现形式是Net-NTLM Hash,它是由客户端 提供的密码Hash加密Server返回的Chanllenge产生的结果。
3.SMB走的也是Net-NTLM协议。
以上属于Net-NTLM v2协议的详细流程
Net-NTLMv1的加密流程如下:
- 1.客户端向服务器发送一个请求
- 2.服务器接收到请求后,生成一个8位的Challenge,发送回客户端
- 3.客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
- 4.服务器校验response
两者的流程可以说是相同的,但加密算法不同,后者Net-NTLMv1相对脆弱
质询抓包分析
使用域户向域控共享目录发起请求,
在域用户机器上Wireshark抓包如下:
步骤上质询有四步,可以将其看为一发一收两个来回
第一发:基础信息发送
第一收:获取对方生成并发过来的Challenge
第二发:将要登录到账户对应的NTLM Hash加密Challenge生成Response并发给服务器
第二收:服务器校验response并返回结果
(登录成功)
(登录失败)
至此Net-NTLM协议通讯过程分析完成,也可以看到文章NTLM hash和Net-NTLM hash介绍0x03 Net-NTLM hash中的分析是错误的。
有个非常值得关注的点:
- 当用户进行涉及Net-NTLM认证的访问时系统默认会先将本地NTLM hash去走一遍Net-NTLM验证。
NTLM本地认证流程:
winlogon.exe -> 接收用户输入
lsass.exe -> 认证
工作组认证和域环境认证的区别:
工作组:点对点交易,无法相互信任。
域环境:有信托机构(域),相当于闲鱼卖东西需要闲鱼官方担保。
参考资料:
也无风雨也无晴