Kerberos 是一种网络认证协议,其通过密钥系统为客户机 / 服务器 应用程序提供强大的认证服务。
kerberos协议中存在三个角色,分别是
1、客户端(client):发送请求的一方
2、服务端(server):接收请求的一方
3、密钥分发中心(key Distribution Center,简称:KDC)
而KDC中一般分为两部分:
3.1、AS(Authentication Server):认证服务器,专门用来认证客户端身份并发放客户用于访问TGS的TGT(票据授予票据)
3.2、TGS(Ticket Granting Ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端是所需的ST(服务授予票据)
认证过程(重点)
简单理解就是
1.从AS里获取TGT(票据授予票据)。
2.将TGT给TGS从而获取ST(票据授予票据)。
3.将ST给要访问的服务端,获取服务。
详细认证流程
第一步:客户端拿着身份信息去AS认证,通过后返回TGT
其中身份信息为
TGT内容:
krbtgt:是KDC中的账号。
CT_SK:是一段随机随机字符串,用于后面加密使用
图中的两个CT_SK内容一样。
第二步:用户用重新构造好好的TGT去TGS获取ST
用户将TGT中用户加密部分解密出CT_SK,再重新构造信息后,用CT_SK加密。再附上服务端名称(server name)发送给TGS。
重新构造的TGT:
Servername:就是你要获取的服务。
TGS收到TGT后,将krbtgt那部分进行解密,再用其中的CT_SK对CT_SK加密部分进行解密,然后对照其中信息是否一致,一致就返回给用户ST。
ST:
其中server hash加密是用要获取的服务端密码进行加密的。
第三步:将ST重构后发给服务端,获取服务
重新构造的ST:
服务端解密后,再对照信息,然后获取服务。
简单理解-kerberos之黄金票据
黄金票据
说白了就是伪造TGT,绕过AS的认证。
而其中伪造的难点是什么呢?
就是krtbtgt的hash加密是无法伪造的。
注意:CT_SK是可以伪造的。
黄金票据攻击
就是用伪造的TGT去获取ST,然后控制服务端的域内主机。
简单理解-kerberos之白银票据
白银票据
其实和黄金票据类似,就是直接伪造ST。
白银票据和黄金票据的差别
在这里说一下白银票据和黄金票据的差别
黄金票据:伪造TGT(伪造TGT之后就可以买去访问任意服务的票据)
白银票据:伪造ST(伪造ST后只能访问去某个服务的票据)