windows认证原理-ntlm认证
Posted j0ng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows认证原理-ntlm认证相关的知识,希望对你有一定的参考价值。
本地认证流程
windows logon process(winlogon.exe),winlogon是负责处理安全相关的用户交互界面的组件。winlogon的工作包括加载其他用户身份的安全组件,提供图形化的登陆界面,以及创建用户会话。
lsass.exe(本地安全认证子系统服务)用于微软windows系统的安全机制。他负责windows系统的安全策略。在本地验证或者登陆的时候验证用户的身份,管理用户密码变更,并产生访问日志。用户注销,重启,锁屏后,操作系统会让winlogon显示图形化的登陆界面,也就是输入框,接受域名,用户名,密码后交给lsass进程,将明文密码加密成ntlm hash对sam数据库比较认证,相同则认证成功
winlogon.exe -> 接受用户的输入 -> lsass.exe ->认证
windows logon process(winlogon.exe)是windows nt用户登录程序,用于管理用户的登录和退出。
lsass用于微软windows系统的安全机制,它用于本地安全和登陆策略
操作系统的密码存储在:%SystemRoot%system32configsam
认证分类
账号密码认证:通过向服务端发送账号密码来证明自己的身份(在这里提一嘴,公有云上的账号密码认证叫做ram认证)
挑战认证(ntml认证):通过向服务端发送一段计算结果来证明自己的身份
kerberos认证:通过向服务端发送一张票来证明自己
ntlm认证(工作组-比较简单)
client(客户端),sever(服务端)
这时候我们的密码存储在sever上:%SystemRoot%system32configsam
历史版本
ntllmv1:服务器通过发送一个8字节的随机数(挑战(challenge))来验证客户端,客户端返回两个24字节hash进行计算并返回计算的结果
ntlmv2:它通过加强协议来抵御许多的欺骗攻击,并增加服务器向客户端进行身份验证的能力,从而增强了ntlm的安全性。服务器通过发送一个16字节的hamac-md5随机数(挑战(challenge))来验证客户端
ntlm认证(域)
client(客户端),sever(服务端),dc(域控)
这时候我们的密码存储在域控上:ntds.dit
第一步,首先在client输入username,password和domain,然后client会把password hash后的值先缓存到本地 第二步,之后,client把username的明文发送给server(DC) 第三步,DC会生成一个16字节的随机数,即challenge(挑战码),再传回给client 第四步,当client收到challenge以后,会先复制一份出来,然后和缓存中的密码hash再一同混合hash一次,混合后的值称为response,之后client再将challenge,response及username一并都传给server 第五步,server端在收到client传过来的这三个值以后会把它们都转发给DC 第六步,当DC接到过来的这三个值的以后,会根据username到域控的账号数据库(ntds.dit)里面找到该username对应的hash,然后把这个hash拿出来和传过来的challenge值再混合hash 第七步,将(6)中混合后的hash值跟传来的response进行比较,相同则认证成功,反之,则失败,当然,如果是本地登录,所有验证肯定也全部都直接在本地进行了
以上是关于windows认证原理-ntlm认证的主要内容,如果未能解决你的问题,请参考以下文章
深入详解windows安全认证机制ntlm&Kerberos