Kerberos协议简介:Kerberos协议是由麻省理工学院(MIT)开发的一种网络身份验证协议,用于在非安全网络中实现安全的身份验证。其设计目标是通过密钥系统,为客户与服务器应用程序提供强大的认证服务。Kerberos协议要解决的实际上就是一个身份认证的问题,顾名思义,当一个客户机去访问一个服务器的某服务时,服务器如何判断该客户机是否有权限来访问本服务器上的服务,同时保证在该过程中的数据包即便被拦截或者被篡改也不影响整个通讯的安全性。Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。Kerberos 协议在在内网域渗透领域中至关重要,白银票据、黄金票据、攻击域控等都离不开 Kerberos 协议。Kerberos 的原理Kerberos 的三大核心组件要理解 Kerberos,必须先了解它的三个关键角色:客户端(Client):想要访问服务的用户或机器服务器(Server):提供服务的机器,例如文件服务器、Web 服务器等密钥分发中心(KDC):这是 Kerberos 认证的核心,由两部分组成:认证服务器(AS - Authentication Server):负责验证客户端的身份票据授予服务(TGS - Ticket Granting Service):负责发放访问特定服务的票据Kerberos 的工作原理:三步认证流程Kerberos 的认证过程可以分为三个主要步骤。整个过程都围绕着**票据(Ticket)和会话密钥(Session Key)**展开。第一步:客户端获取“票据授予票据”(TGT)这是 Kerberos 认证的起点客户端请求:客户端向AS发送一个认证请求,包含它的用户名。注意,这里没有明文密码AS 验证:AS 在其数据库中查找这个用户名。如果找到,它会生成一个会话密钥(Client/TGS Session Key),并用客户端的密码哈希对这个会话密钥进行加密AS 颁发 TGT:AS 还会生成一个票据授予票据(TGT - Ticket-Granting Ticket)。这个 TGT 包含了客户端的身份信息和前面生成的会话密钥,并用TGS 的密钥进行加密。AS 将加密后的会话密钥和 TGT 一起返回给客户端客户端解密:客户端收到响应后,会使用自己的密码哈希来解密会话密钥。**这是整个过程中唯一使用到客户端密码哈希的地方。**如果解密成功,客户端就获得了 TGT 和一个会话密钥现在,客户端拥有了 TGT,它可以使用这个票据向 TGS 请求其他服务的访问权限。第二步:客户端请求“服务票据”(ST)当客户端需要访问某个服务时,它会向TGS请求一个服务票据客户端请求:客户端将TGT和想要访问的服务名发送给 TGSTGS 解密:TGS 使用自己的密钥解密 TGT。如果解密成功,就证明 TGT 是合法的。TGS 从 TGT 中提取出客户端/TGS 会话密钥TGS 颁发 ST:TGS 生成一个客户端/服务会话密钥,并用客户端/TGS 会话密钥对其加密。同时,TGS 还生成一个服务票据(ST - Service Ticket)