0x00:简介

简述一下windows的几种认证,包括本地认证、NTLM认证(工作组)、NTLM认证(域)

认证分类可以分为:
账号密码认证:通过账号密码直接向服务器证明自己身份
挑战认证(NTLM)认证:通过向服务端发送一段计算结果来证明自己的身份
kerberos认证:通过向服务端发送一张票据来证明自己

0x01:本地认证流程

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系统的安全机制,它用于本地安全和登陆策略

操作系统的密码存储在:C:\Windows\System32\config\sam

0x02:NTLM认证(工作组)

工作组中只有client (客户端)和 server (服务端)

此时密码储存在server上 C:\Windows\System32\config\sam

历史版本

ntllmv1:服务器通过发送一个8字节的随机数(挑战(challenge))来验证客户端,客户端返回两个24字节hash进行计算并返回计算的结果

ntlmv2:它通过加强协议来抵御许多的欺骗攻击,并增加服务器向客户端进行身份验证的能力,从而增强了ntlm的安全性。服务器通过发送一个16字节的hamac-md5随机数(挑战(challenge))来验证客户端

0x03:ntlm认证(域)

client(客户端),sever(服务端),dc(域控)

这时候我们的密码存储在域控上:C:\Windows\NTDS\ntds.dit

认证过程:

  • 1,客户端首先在本地加密当前用户的密码成为密码散列
  • 2,客户端向服务器发送自己的账号,这个账号是没有经过加密的,明文传输.
  • 3,服务器端产生一个16位的随机数字发送给客户端,作为一个challenge(挑战)
  • 4,客户端再用加密后的密码散列来加密这个challenge,然后把这个返回给服务器,作为response(响应)
  • 5,服务器端将用户名,给客户端的challenge,客户端返回的response这三个东西发送给域控制器.
  • 6,域控制器用这个用户名在SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密chellenge
  • 7,域控制器比较两次加密的challenge,如果一样,那么认证成功,反之,则认证失败.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注