黄金票据与白银票据
什么是白银票据?
ST(白银票据)即为服务器NTLM–hash加密的数据(随机秘钥、时间戳、客户端信息)等信息。
什么是黄金票据?
TGT(黄金票据)–使用KDS(秘钥分发中心)一个特定账户的NTMK–hash加密的(随机秘钥,时间戳、客户端信息)等信息。
哈希传递攻击/黄金白银票据
Kerberos认证
当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份,然后通过 AS 发放的 TGT 向 Server 发起认证请求,这个过程分为三块:
The Authentication Service Exchange:Client 与 AS 的交互,
The Ticket-Granting Service (TGS) Exchange:Client 与 TGS 的交互,
The Client/Server Authentication Exchange:Client 与 Server 的交互
Kerberos认证简单示意图
AS:认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)
TGS:票据授予服务器,用来发放整个认证过程以及客户端访问服务端所需要的服务授予票据
客户端先找AS服务进行身份验证,获取身份票据TGT
用TGT票据去找TGS服务,获得服务票据ST
拿着TGS发的服务票据访问具体的服务
Kerberos认证一共分为三个阶段六个过程:
1、客户端发送自己的用户名给AS
2、AS验证用户名是否在白名单列表,如果在的话随机生成session key(as),返回如下信息
TGT1(session key(as),TGS服务器信息等)--客户端NTML哈希加密
TGT2(session key(as),客户端信息等)--KRBTGT NTML哈希加密
3、用自己的NTML哈希解密TGT1,获得TGS服务器信息以及session key(as),TGT2由于是别人的哈希,所以解不开
生成认证因子(客户端信息,当前时间)--session key(as)加密
发送认证因子以及TGT2给TGS服务
4、TGS服务先解密TGT2获得session key(as),紧接着利用session key(as)解密认证因子,对比认证因子与TGT2的客户端信息是否一致,如果一致生成session key(TGS),返回如下信息给客户端
TGT3(session key(TGS),服务器信息,票据到期时间)--session key(as)加密
TGT4(session key(TGS),客户端信息,票据到期时间)--客户端想要访问的服务器的哈希加密
5、客户端解密TGT3,得到session key(TGS),服务器信息
生成认证因子2(服务器信息,票据到期时间)--session key(TGS)加密
发送认证因子2以及TGT4给服务器
6、服务器先用自己的哈希解密TGT4得到session key(TGS),客户端信息,票据有效期
利用session key(TGS)解密认证因子对比客户端信息决定是否提供服务