cover_image

横向移动-域的Kerberos协议

XG小刚 XG小刚 2021年02月20日 16:00
图片
一位苦于信息安全的萌新小白帽
本实验仅用于信息防御教学,切勿用于它用途
公众号:XG小刚

域渗透


在攻防演练中,打内网,拿域控是我们的终极目标
想要学好域渗透,了解Kerberos协议是必不可少的事情

上文介绍了两个win的认证机制《横向移动-win认证机制
本文主要唠唠这个协议到低是干嘛滴,怎么工作滴。

Kerberos协议

Kerberos是一种网络认证协议,是一种通过秘钥系统为客户端/服务器提供的认证服务
是我们域环境下强有力的认证机制

几个域的名词解释啊:
DC(Domain Controller):域控制器(域控)
KDC(Key Distribution Center):密钥分发中心
AD(Account Database):储存所有客户端的白名单,只有在白名单中的客户端才可以申请TGT
AS(Authetication Service):为客户端生成TGT的服务
TGT(Ticket-Granting Ticket):发放的票据,黄金票据
TGS(Ticket Granting Service):为客户端生成某个服务的ticket
Ticket:白银票据

粗略流程


域认证流程就用下图流程进行讲解一下
图片
1.客户端向域的kerberos服务的KDC发起请求,KDC让AS拿着请求的用户名去问AD有没有这个人

2.AD认证通过,就会让AS服务向客户端发送一个TGT票据,TGT上有客户端信息

3.当客户端想访问域内某台服务器,需要拿着TGT和客户端信息去请求KDC,KDC让TGS服务受理我们的请求,判断TGT的信息与客户端信息是否一致

4.信息一致,则返回一个Ticket小票据,这个小票只能访问指定服务器,上面也有客户端信息

5.然后拿着Ticket和客户端信息,就可以访问指定服务器了

详细认证流程


略微繁琐啊,推荐原文背诵并倒背如流。

第一步:客户端认证
客户端首先向KDC的AS服务发起请求
请求内容有客户端hash加密的时间戳、客户端信息、服务器信息等内容
图片AS去AD查客户端用户ID是否存在
然后查找域控中储存的客户端hash、并随机生成一个session key
AS一顿操作向客户端返回两条信息
图片
其中一条信息,AS从域控查找该客户端用户的hash,来加密session key

另一条信息是TGT是使用域控本身的hash加密session key、客户端信息、客户端地址、截止日期生成(TGT就是我们常用的黄金票据
图片
客户端收到两条信息后,用自己的hash将session key解密出来,然后TGT票据原封不动的保存

第二步:服务授权
客户端想访问域内某台服务器,就拿出session key加密客户端信息+时间戳
然后同TGT和服务器ID一起发给TGS进行服务器授权
图片

TGS收到请求,先去AD查找客户端发来的服务ID是否存在,存在的话就用域控本身的hash解密TGT拿到session key和TGT中存在的客户端信息
这里TGS会检测TGT中的时间戳是否过期

TGS再用得到的session key解密另一条消息,得到客户端信息,然后与TGT解密得到的客户端信息进行对比。

然后查找域控中储存的服务器hash、并随机生成一个server session key
TGS再一顿操作向客户端返回两条信息
图片
一条信息是用session key加密的server session key

一条是Ticket(白银票据)用服务器的hash加密server session key、客户端信息、客户端地址、截止日期
图片
客户端拿到两条信息后,用session key解密得到server session key,Ticket原封不动的保存

第三步:服务请求
然后客户端去找服务器进行验证,用server session key加密客户端信息和时间戳,于Ticket一起发给服务器
图片
服务器收到后,将Ticket用服务器hash解密,得到server session key和客户端信息
这里也会判断截止时间是否还有效
然后使用解密出的server session key解密另一条消息,得到客户端信息

两个解密得到的客户端信息进行对比,相同则验证成功。

小结


整个Kerberos认证流程就这些,稍微有些繁琐,但看两遍就理解了。
在域渗透过程中,我们能利用的则是黄金票据白银票据
为啥能利用,下文再好好唠唠。
横向移动 · 目录
上一篇横向移动-win认证机制下一篇横向移动-黄金白银票据

微信扫一扫
关注该公众号

继续滑动看下一个
XG小刚
向上滑动看下一个