无心的梦呓 · 2019年09月27日

Windows认证 | Windows本地认证

Windows的登陆密码是储存在系统本地的SAM文件中的,在登陆Windows的时候,系统会将用户输入的密码与SAM文件中的密码进行对比,如果相同,则认证成功。

SAM文件是位于%SystemRoot%\system32\config\目录下的,用于储存本地所有用户的凭证信息,但是这并不代表着你可以随意去查看系统密码。

file

Windows本身是不会存储明文密码的,在SAM文件中所储存的是密码的hash值,在登陆对比的时候,也是先将用户的输入转换为hash值,才进行对比的。

目前在Windows中所使用的密码hash被称为NTLM hash,全称为:NT LAN Manager,它是一个由数字和字母组成的32位的值,是经过hex、Unicode、MD4三层加密后得到的。

file

所以在登陆的时候,他整体的流程是这样的

file

注:winlogon是用来管理用户登陆和登出的,lsass是用于本地安全和登陆策略的

说完了NTLM hash再说一下LM hash,LM hash是NTLM hash的前身,它本身是非常脆弱的,对于它的生成规则就不多说了,用网上的一个解释来让大家看看。

file

通过这个大家也能很明确的看出来,进行LM hash加密的时候,其中的key值是一个固定值KGS!@#$%,这就意味着它被暴力破解出来的可能性是非常大的,而且通过LM hash的生成机制,还能很清楚的看出来如果密码是否大于等于7位,因为当位数不足时,后面会用0来补全,所以当我们的密码位数小于7时,最终生成的LM hash的末尾字符是一个恒定不变的值:AA-D3-B4-35-B5-14-04-EE

目前大多数的Windows都是使用的NTLMhash的,在Windows Vista和WindowsServer 2008以前的系统还会使用LM hash

自WindowsVista和Windows Server 2008开始,Windows取消LM hash。

也正是因为密码都储存在SAM文件中,所以才会有了通过各种方法在线或者离线提取SAM文件中的hash值,当然SAM文件也是不允许直接拷贝和访问的,需要通过一些其他的办法来提取,最后通过彩虹表等其他的一些工具进行破解即可得到明文密码,或者通过Mimikatz读取lsass.exe进程能获得已登录用户的NTLM hash,这部分内容在网络上也已经有了相当多的资料,想深入了解可以自己去网上查一查即可。

文章首发公众号:无心的梦呓(wuxinmengyi)

这是一个记录红队学习、信安笔记,个人成长的公众号

扫码关注即可

file

推荐阅读
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息