Kerberos浅析

Kerberos浅析

文章内容仅代表个人观点,如有不当,欢迎指正。

简介

在内网横向渗透时,绕不开PTT票据传递攻击(Pass the Ticket),攻击是基于kerberos协议进行攻击。浅析一下这个协议。
过程分为三个阶段:客户端向as(认证服务器)发送身份信息,请求服务许可票据,as通过ad活动目录对比客户端是否可信,通过认证返回客户端服务许可票据;客户端基于服务许可票据向tgs(票据许可服务器)请求服务票据,tgs基于服务请求票据判断是否有权限访问服务,通过认证获得服务票据;利用服务票据请求服务器的服务。

第一个阶段(ASREQ & ASREP)

如果as在ad活动目录中匹配到客户端信息,会取出客户端的ntlm-hash,并对as_req请求中加密的时间戳进行解密,如果解密成功则客户端提供的密码正确,如果时间在5分钟之内则预认成功;然后as会生成一个session-key AS,使用客户端的ntlm-hash加密这个key作为响应包的一部分返回,用于确保客户端和kdc之间通信安全。另一部分就是服务许可票据(tgt),使用kdc的krbtgt用户的ntlm-hash加密session-key as、时间戳、客户端的info信息。然后把这两部分信息和pac返回客户端即as_rep。pac包含的是用户的sid、用户所在组的一些信息。

第二阶段(TGSREQ & TGSREP)

客户端在接收到as的返回包后,用自己的ntlm-hash解密session key as,得到原始的session key as,并在本地缓存tgt和这个session key as;在需要请求某台服务器时,客户端用session key as加密时间戳、server-info、client-info等数据作为一部分,tgt为另一部分;组成请求报文发送到tgs。tgs得到报文,先用krbtgt用户的ntlm-hash解密tgt得到session key as、时间戳、client-info。用session key as解密报文的另一部分,得到client-info、时间戳、server-info;对比两个时间戳,如果时间戳间隔太久,就需要重新认证;对比两个client-info信息是否匹配,若匹配查询这个client是否有权限访问server-info。都通过之后,生成session key tgs。并用session key as加密session key tgs作为响应包的一部分,确保client和server之间的通信安全。另一部分是使用server服务器的ntlm-hash加密session key tgs、时间戳、client-info生成st(服务票据)作为另一部分组成返回报文。

第三阶段(AP-REQ & AP-REP)

client得到报文后,使用session key as解密session key tgs,把原始的session key tgs和st缓存到本地。请求服务器时,使用session key tgs加密时间戳、client-info作为一部分,另一部分是st,发送到server。server使用自己ntlm-hash解密st,得到session key tgs、client-info、时间戳;然后使用session key tgs解密报文中client-info,时间戳等数据。进行一一对比,时间戳一般有效期为8个小时。server认证通过client信息之后,拿着pac去询问dc,是否有访问权限;dc解密pac,通过pac中sid判断client用户权限和组信息,再把结果返回给server。server再把此信息域用户请求的服务资源对比acl,最后决定是否给用户提供相应的服务。通过认证之后返回报文,建立通信。

PAC

kerberos协议只能解决认证问题,不能解决权限控制问题;因此引入了pac。kdc在返回服务请求票据报文的阶段,会包含pac信息。client在访问server会携带pac,server在通过客户端身份认证之后,会拿着pac去询问dc这个client是否有访问权限。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值