基础知识
概述:NTLM(NT LAN Manager)认证是一种早期的Windows网络身份认证协议。它在Windows系统中用于验证用户的身份,并提供对网络资源的访问控制,它是一种基于Challenge/Response的认证机制。
认证流程
NTLM协议Challenge/Response认证机制:
1.协商:双方先确定一下传输协议的版本等各种信息
2.质询:这一步是挑战/响应的关键一步
3.验证:对质询的最后一个结果进行验证,验证通过之后,即允许访问资源
NTLM协议Challenge/Response认证流程:
1.首先,client会向server发起请求连接协商一些相关东西
2.server就会在本地生成一个(16位或8位)随机字符,即Challenge,并将Challenge传给client
3.当client接收到Challenge时,将username的NTLM-hash对Challenge进行加密(加密过程中会利用到用户名、域名、机器名等相关信息),生成Response,并将Response发送给server
4.server在收到Response后,将其和相同的方式进行加密生成另一个Response,如果相同,则验证成功,如果不同就失败
Challenge和Response分析
Challenge:client向server发起协商后,server会随机产生一个Challenge值给client,它是无法预估的,每一次值都不会一样
Response:response=NTProofStr+blob
NTProofStr=将NTLM-V2-HASH(key)和(challenge+blob)两个进行HMAC-MD5加密
NTLM-V2-HASH=(大写的用户名+域名)编码成Unicode格式和用户密码的hash值(key)两个进行HMAC-MD5加密
blob:是由时间,目标信息,随机填充字符生成
因此在我们平时使用工具进行攻击的时候抓到的都是Net-NTML-Hash的数据
Net-NTML-Hash:username:domain:challenge:NTProofStr:blob
NTLM协议安全问题
1.PTH攻击:因为NTLM认证过程中使用到用户的NTLM-hash值计算,如果说我们知道对方电脑的Hash值就可以进行PTH攻击
2.NTLM中间人攻击:也叫中继攻击,如果获得Net-NTLM v1 Hash也可以重放,进行认证
3.Net-NTLM v1 v2 Hash破解:v1较为简单,容易破解使用DES,如果是v2就要使用碰撞的方式使用彩虹表或者暴力猜解等方式,获取明文账号密码
知识补充-NTLM Hash
NTLM Hash是微软为了提高安全性的同时保证兼容性而设计的散列加密算法,NTLM Hash是基于MD4加密算法进行加密的NTLM-Hash值
NTLM-Hash加密流程:
1.将明文口令转换为十六进制的格式
2.将十六进制转换成Unicode格式,即在每个字节之后添加0x00
3.把Unicode字符串进行MD4加密后,生成32位的十六进制数字串
这里介绍两个密码抓取工具(可以直接抓取到NTLM hash值):QuarksPwDump milikatz
首先使用QuarksPwDump,直接使用命令:QuarksPwDump --dump-hash-local
注:
另一个工具milikatz:需要先提权到debug
然后使用命令:sekurlsa::logonPasswords