Kerberos认证

Posted 番茄酱料

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kerberos认证相关的知识,希望对你有一定的参考价值。


名词介绍:

DC(Domain Controller):域控
KDC(Key Distribute Center):密钥分发中心
AS(Authentication Service):身份验证服务
TGS(Ticket Granting Service):票据分发服务
TGT(Ticket Granting Ticket):票据分发票据
AD(Active Directory):活动目录(维护一个账户数据库),该数据库中存储了所有用户的密码hash和白名单,只有账户密码都在白名单中的Client才能申请到TGT
注意:在DC中有一个特殊用户叫做:krbtgt,它是一个无法登录的账户,是在创建域时系统自动创建的,在整个kerberos认证中会多次用到它的Hash值去做验证
注意:以下内容中的服务器代表TGS服务器,服务端代表我们最终需要请求的服务

第一步(图中1阶段)

(1)客户端会发送自己的信息以及要连接服务器的信息给AS然后AS会去ad数据库看是否在白名单中
(2)如果是处于白名单中,则身份验证通过,AS就会返回随机产生的session key(会话密钥,相等于登录成功)同时会生成两个票:
1.TGT1(session key,TGS服务信息,票据到期时间),TGT1使用客户端的NTLM hash加密
2.TGT2(session key,客户信息,票据到期时间),TGT2是使用KDC的NTLM hash加密
然后AS将这两个票发送给客户端

第二步(图中2阶段)

客户端拿到两个票之后
(1)先用客户端自己的NTLM hash解密TGT1,因为TGT1是用客户端的NTLM hash加密的,从而得到session key,
(2)然后生成认证因子(客户信息,当前时间戳),然后用解密出来的sessionkey加密
(3)之后发送给TGS服务器认证因子和TGT2,因为TGT2是用KDC NTLM hash进行加密的所以无法解密只能原封不动的发送,同时也会发送自己的客户端信息和TGS服务器信息用于校验

第三步(图中3阶段)

(1)TGS服务器拿到该内容后(认证因子+TGT2+客户端信息+服务器信息),先用KDC NTLM hash解密TGT2得到(session key,客户信息,票的结束时间)
(2)再用得到的session key去解密认证因子,因为认证因子使用session key进行加密的,从而得到(客户信息,时间戳)
(3)然后校验三点
<1>时间戳和当前时间的差距是不是很大,如果很大就说明会话有问题
<2>用解密的TGT2里面的客户信息与session key解密的客户信息进行比较,相同则通过
<3>客户端权限访问服务端是否正常
然后校验通过,TGS服务器将随机生成一个server session key
再次生成两个票:
TGT3(server session key,服务端信息,票据到期时间)用AS返回的session key进行加密的
TGT4(server session key,客户信息,票据到期时间)用服务端的NTLM hash加密的
服务端的NTLM hash:当访问服务时,他肯定有一个计算机名,在加入域时也会随机生成一个NTML hash值
它将TGT3和TGT4返回给客户端

第四步(图中4阶段)

客户端收到TGT3和TGT4后
(1)首先解密TGT3,因为session key是第一次AS生成的,客户端也是知道的,从而得到(server session key,服务端信息,票据到期时间)
(2)再生成认证因子2(服务端信息,票据到期时间),然后再用server session key进行加密
(3)将认证因子2和TGT4发送给服务端,因为TGT4是用的服务端的NTLM hash加密的,客户端不知道服务端的NTLM hash

第五步(图中5阶段)

服务端收到客户端后
(1)首先会解密TGT4,因为加密TGT4时用的是服务端的NTLM hash,因此服务端可以用自己的NTLM hash进行解密,从而得到(server session key,客户信息,票据到期时间)
(2)然后再用得到的server session key去解密认证因子2,从而得到服务端信息,票据到期时间。
(3)服务将会成功发送给客户端

第六步(图中6阶段)

客户端将会成功进行服务的访问

以上是关于Kerberos认证的主要内容,如果未能解决你的问题,请参考以下文章

CobaltStrike使用-第七篇(获取信任凭证哈希认证Kerberos票据横向移动)

Kerberos的黄金票据详解

Kerberos简单介绍及使用

kerberos 协议初探

Kerberos

关于星环TDH产品的Java通过Kerberos安全认证连接hyperbase