一、Kerberos协议
1.什么是Kerberos
2.Kerberos的具体原理
二、kerberos 是什么
Kerberos是一种认证机制,是基于加密Ticket的身份认证协议。Kerberos协议是Windows域认证常用协议,也是黄金票据和白银票据的攻击场景,在一些情况下,可以使用Kerberos的漏洞或者不当使用来执行黄金票据或白银票据攻击,但它们本身并没有直接的关联。
kerberos认证的三个角色:客户端(client)、服务端(server)、DC(域控)
客户端(client)客户端向Kerberos认证系统发送认证请求,并在成功认证后获取用于访问受保护资源的票据
KDC:KDC是DC中负责实现Kerberos认证功能的核心组件。通过KDC,Windows域环境中的用户可以安全地进行认证并访问域中的资源。主要包含两部分
1.认证服务器(Authentication Server,AS):负责接收来自客户端的认证请求,验证客户端的身份,并颁发TGT(Ticket Granting Ticket)给客户端。
2.票据授权服务器(Ticket Granting Server,TGS):负责接收来自客户端的TGT,并根据客户端请求颁发相应服务的ST(Service Ticket)。
简单画一下Kerberos的认证流程图,不好看大家见谅
第一步客户端向DC的AS请求
当客户端向域控制器(DC)的认证服务器(AS)发送认证请求时,它实际上在请求一个用于访问域中资源的临时访问票据(TGT)。这个TGT称为票据授予票据(Ticket Granting Ticket)。
在这个过程中,客户端发送一个加密的身份信息(通常是用户名和密码)到DC的AS。认证服务器(AS)收到请求后,会解密这些信息并验证客户端的身份是否有效。如果验证通过,AS会生成一个加密的TGT,这个TGT包含有关客户端身份的信息以及一个用于生成后续服务票据(ST)的会话密钥。
客户端在收到TGT后,可以使用它来向DC的票据授权服务器(TGS)请求特定服务的访问票据。这一过程是Kerberos认证流程中的第一步,它确保了客户端在请求其他资源时有合法的身份认证
第二步 AS向客户端做出响应
验证客户端身份:
AS首先会验证客户端发送过来的身份信息,通常是用户名和密码。AS使用与域内客户端共享的密钥或密码来进行验证。
生成TGT:
如果客户端的身份验证成功,AS会生成一个加密的票据授予票据(TGT)。
TGT包含有关客户端身份的信息,例如用户名、域名以及用于生成后续服务票据(ST)的会话密钥。
发送响应给客户端:
AS将生成的TGT加密后发送给客户端。
这个响应包括了TGT以及其他必要的信息,它们都使用客户端的密钥加密,以确保只有客户端可以解密和使用它们。
第三步客户端向DC的TGS请求
客户端使用在第一步中收到的票据授予票据(TGT),向域控制器的票据授权服务器(TGS)发送服务请求。
请求中包含了客户端想要访问的服务标识,通常是服务的名称或网络地址
第四步TGS向客户端做出响应
> TGS生成服务票据(ST):
TGS接收到客户端的请求后,验证客户端提供的票据授予票据(TGT)的有效性,并检查客户端是否有权访问所请求的服务。
如果TGT有效且客户端有权访问请求的服务,TGS会生成一个加密的服务票据(ST)。
ST包含了客户端的身份信息以及用于与特定服务进行通信的会话密钥。
发送响应给客户端:
TGS将生成的服务票据(ST)加密后发送给客户端。
这个响应中包括了服务票据(ST)以及其他必要的信息,它们都使用客户端的密钥加密,以确保只有客户端可以解密和使用它们。
第五步客户向服务器请求
客户端向服务器发送请求:
客户端使用票据授权服务器(TGS)颁发的服务票据(ST),向目标服务器发送访问请求。
请求中包括了客户端的身份信息以及所请求的服务信息
第六步服务器向DC的KDC请求
服务器向KDC发送请求:
目标服务器使用客户端提供的服务票据(ST)中的信息,向域控制器的KDC发送请求。
请求可能包括验证服务票据(ST)的有效性,获取客户端的身份信息或其他额外的信息等。
第七步KDC向服务器回应
KDC向服务器发送响应:
KDC收到服务器的请求后,会验证请求的合法性,并根据请求提供相应的响应。
响应可能包括服务票据(ST)的验证结果,客户端的身份信息或其他额外的信息等
注意:
在Kerberos认证流程中,实际上并没有第六步中服务器向域控制器(DC)的密钥分发中心(KDC)请求的步骤。步骤结束于客户端成功地使用服务票据(ST)向目标服务器发送请求,并且目标服务器验证了该票据并向客户端提供了所请求的服务。
在Kerberos认证中,目标服务器不需要与KDC直接通信。相反,目标服务器只需要验证客户端提供的服务票据(ST)。票据中已经包含了客户端的身份信息以及用于与目标服务器进行通信的会话密钥,因此目标服务器可以使用这些信息来验证票据并确保客户端的身份是合法的。
因此,通常情况下,在Kerberos认证流程中,目标服务器不会向KDC发送请求。相反,它会与客户端直接进行通信,验证客户端提供的服务票据,并提供所请求的服务
第八步服务器向客户响应
服务器执行相应的操作后,会将结果打包成响应,并将响应发送回客户端。
响应可能包括所请求的服务数据、操作结果或其他相关信息。
黄金票据
黄金票据就是伪造的TGT,AS返回的票据
条件
1.域名称
2.域的sid值
3.域的KRBTGT账号的HASH
4.伪造任意用户名
适用场景
由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,管理员在域内加固时忘记重置krbtgt密码
白银票据
1.域名
2.域sid
3.目标服务器名
4.可利用的服务
5.服务账号的NTML HASH
6.需要伪造的用户名
适用场景
知道服务器的Hash,可以访问服务器的某些服务而不用于kdc进行交互
两者的区别
黄金票据:
伪造的TGT,可以获取任意Kerberos的访问权限
同KDC交互,但不同AS交互
由krbtgt NTLM Hash 加密
白银票据:
伪造的ST,只能访问指定的服务,如CIFS
不同KDC交互,直接访问server
由服务账号NTLM Hash 加密
以上只是我个人理解,哪里不对希望大佬们多多指点