windows认证基础
windows的认证包括三个部分:
- 本地认证:用户直接操作计算机登录账户
- 网络认证:远程连接到工作组中的某个设备
- 域认证:登录到域环境中的某个设备
本地认证
1、用户输入密码
2、系统收到密码后将用户输入的密码计算称NTLM Hash
3、与sam数据库(%SystemRoot%\system32\config\sam)中该用户的hash进行对比
4、匹配则登录成功,不匹配则登录失败
本地认证中用来处理用户输入密码的进程即lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM hash与sam进行比对,我们使用mimikatz来获取的明文密码,便是在这个进程中读取到的。
网络认证
网络认证即在工作组环境下远程登录另一台电脑所采用的认证机制
NTML协议的认证过程分为三步,也叫做挑战相应机制:
1、协商
双方确定使用的协议版本,NTML存在v1和v2两个版本,区别在于加密方式不一样。
2、质询
挑战(challenge)/响应(Response)认证机制的核心
判断发送的用户名,如果没有则验证失败,如果有,使用登录用户名NTML hash加密生成一个challenge(16位)字符,同时将challenge1存储在内存中,将challenge返回给客户端。这里challenge相当于加密的密钥,challenge1为密码加密的结果。
客户端接收challenge后,使用自己提供的账户的密码转换为NTML hash,然后使用这个NTLM hash加密Challenge生成Respone,然后将respone发送至服务端。
3、验证
如果响应的challenge和内存中的challenge1相等则认证通过
其中经过NTLM Hash加密Challenge的结果在网络协议中称为Net NTLM Hash(不能直接用来进行hash传递攻击,但可以通过暴力破解获取明文密码)
其中关键点在于:第二步中客户端发送的是NTLM哈希值,于随机字符串的加密结果,而这个NTLM哈希是由御用输入的密码本地计算得出的,所以在这个步骤中,只要能提供正确的NTLM哈希即使步知道正确的密码也可以通过认证
域认证
Kerberos协议详解
kerberos协议中存在三个角色,分别是:
1、客户端:发送请求的一方
2、服务端:接收请求的一方
3、密钥分发中心(Key Distribution Center,KDC):密钥分发中心一般又分为两部分,分别是:
- AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)
- TGS(Ticket Granting Ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需要的服务授予票据
黄金票据: 伪造TGT(伪造TGT之后就可以访问任何主机的任何服务的票据)
白银票据:伪造ST(伪造ST之后只能去访问某个主机某个服务的票据)
彻底搞懂黄金白银票据和委派攻击_哔哩哔哩_bilibili