环境
域名为adc.com
一共有三台机器
DC机2012。账号administrator,密码admin@888。机器名:DC.abc.com
PC机2008。账号ZS,密码admin@123。机器名:08-PC.abc.com
PC机2003。账号LS,密码admin123@#。机器名:03-PC.abc.com
操作
kali先开启wireshark,抓eth0的包
08机器输入klist查看内存的票据
然后尝试访问03机器的c盘资源
拒绝访问,没有权限
这时候使用kekeo工具
申请一个DC域管administrator的票据
这里需要输入DC机用户名,域名和DC机密码
申请成功会得到一个票据
然后将这个票据放入内存中
需要输入票据的名称,目标服务,目标机器名称
cmd输入klist查看是否成功
这时候去访问03机的c盘就可以访问了
数据包分析
第一阶段
首先是08机器向AS发送身份信息(AS-REQ),AS返回TGT(AS-REP)
这两个数据包是krb5协议
AS-REQ
AS-REQ主要包含了用户的一些信息,是由客户端发送给AS的数据包
PA-DATA pA-ENC-TIMESTAMP 使用用户的hash,或者AES key加密时间戳 生成value(这个数据包中的重要信息)
cname 请求的用户名
realm: 域名
sname 请求的服务名
AS-REP
其中ticket中的enc-part是krbtgt哈希值加密的内容
里面有name,ip,time,TGSNAME,TGT有效时间,CT_SK
下面的enc-part是用户哈希值加密的内容
里面是time,TGSname,TGT有效时间和CT_SK
第二阶段
这时候08机向TGS发送TGT(TGS-REQ),TGS返回一个ST(TGS-REP)
这两个数据包也是krb5协议
TGS-REQ
08机在收到AS返回的TGT后,用自己的哈希值解密拿到CT_SK。
使用拿到的这个CT_SK加密自己的name,ip和time
然后和krbtgt哈希加密的内容,还有想要访问的servername拼接在一起
TGS-REQ数据包
enc-part是使用krbtgt的哈希加密的
authenticator是使用CT_SK加密的
下面还有要访问的服务名
TGS-REP
TGS在接收到用户的TGT后,用自己的哈希解密拿到信息,然后用CT_SK解密用户的信息
经过对比确认用户信息后,使用服务机(03机)的哈希对信息加密
然后和用户的加密信息拼接在一起发送给用户
TGS-REP数据包
内层的cipher是使用server的哈希加密的内容
外层的cipher是使用CS_SK加密的内容
第三阶段
08机向服务机(03)发送ST(AP-REQ),服务机(03)返回信息(AP-REP)
这时候的数据包不是krb5协议了,是smb或smb2协议
AP-REQ
08机使用CS_SK重新加密信息和server哈希加密的内容拼接发送给服务机(03)
AP-REQ数据包
enc-part包含了使用服务端hash加密的内容
authenticator:包含了使用CS_SK加密内容
AP-REP
服务机使用自己的哈希解密内容拿到CS_SK
使用CS_SK解密用户信息,经过对比确认身份,然后返回信息允许操作
AP-REP数据包
服务端发送给客户端的信息