【Try to Hack】Kerberos基础

举报
开心星人 发表于 2022/10/14 11:12:07 2022/10/14
【摘要】 📒博客主页:开心星人的博客主页🔥系列专栏:Try to Hack🎉欢迎关注🔎点赞👍收藏⭐️留言📝📆首发时间:🌴2022年10月7日🌴🍭作者水平很有限,如果发现错误,还望告知,感谢!@toc Kerberos概述Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。==Kerberos是一个假设网络环境不安全的情况下能...

📒博客主页:开心星人的博客主页
🔥系列专栏:Try to Hack
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年10月7日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!

@toc

Kerberos概述

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。

==Kerberos是一个假设网络环境不安全的情况下能够正常进行认证工作的协议。== 该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。
在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

  • Domain Controller (域控制器),简称DC,一台计算机,实现用户、计算机的统一管理。
  • Key Distribution Center(秘钥分发中心),简称KDC,默认安装在域控里,包括AS和TGS。
  • Authentication Service(身份验证服务),简称AS,用于KDC对Client认证,为Client生成TGT的服务。
  • Ticket Grantng Service (票据授予服务),简称TGS,用于KDC向Client和Server分发Session Key(临时key)。
  • Active Directory(活动目录),简称AD,用于存储用户、用户组、域相关的信息。
  • Client 客户端,指用户。
  • Server 服务端,可能是某台计算机,也可能是某个服务(如HTTP服务,SQL服务)。

票据(Ticket):是网络对象互相访问的凭证。

TGT(Ticket Granting Ticket):入场券,通过入场券能够获得票据,是一种临时凭证的存在。

KDC负责管理票据、认证票据、分发票据,但是KDC不是一个独立的服务,它由以下服务组成:
Authentication Service: 为client生成TGT的服务
Ticket Granting Service: 为client生成某个服务的ticket

域认证粗略流程

在这里插入图片描述
在这里插入图片描述

1、client向kerberos服务请求,希望获取访问server的权限。 kerberos得到了这个消息,首先得判断client是否是可信赖的, 也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分client。成功后,返回AS返回TGT给client。
2、client得到了TGT后,继续向kerberos请求,希望获取访问 server的权限。kerberos又得到了这个消息,这时候通过client 消息中的TGT,判断出了client拥有了这个权限,给了client访问server的权限ticket。
3、client得到ticket后,终于可以成功访问server。这个ticket只是针对这个server,其他server需要向TGS申请。

域认证详细流程

在这里插入图片描述

1、AS-REQ—AS-REP阶段:
首先Client用自己的哈希值NTLM-hash对timestamp、client-info、server-info等数据进行加密,发送给AS,向AS请求TGT票据。(AS-REQ)

当AS收到Client发来的信息后,AS会先向活动目录AD请求,询问是否有此Client用户,如果有的话,就会取出该Client的NTLM hash,然后生成一个随机秘钥称为Session-Key as(临时秘钥Session-Key)。并使用Client NTLM-hash 加密 Session-key as 作为一部分内容。

还有一部分内容就是TGT:使用KDC一个特定账户krbtgt的NTLM-hash对Session-key as、timestamp、Client-info进行的加密。然后将这两部分回复给Client。(AS-REP)

该阶段是Client和AS的认证。

2、TGS-REQ—TGS-REP阶段:
Client 收到AS发来的AS-REP后,先使用自身的 NTLM Hash 解密得到 Session-key as,然后使用 Session-key as 对 Client-Info、timestamp、Server-Info 加密作为一部分,加上TGT ,一并发送给 KDC中的 TGS。(TGS-REQ)

TGS 收到请求后,使用 krbtgt 的 NTLM Hash 解密 TGT,得到 Session-key as、timestamp、Client-info,同时,使用 TGT 解密出的 Session-key as 解密第一部分内容,得到Client-info、timestamp。 比对这两部分解密得到的内容以验证是否通过。通过后,生成一个新的随机秘钥(Session-Key tgs),并向Client回复TGS-REP的两部分内容:

一部分是Session-key as 加密的 Session-key tgs
另一部分是ST(ticket),即Server NTLM-hash加密的数据(Session-key tgs、timestamp、Client-info)
该阶段是Client和KDC的通信。

3、AP-REQ—AP-REP阶段:
Client收到TGS-REP后,先用自己保存的Session-key as解密出了Session-key tgs。再使用Session-key tgs加密Client-info、timestamp作为一部分内容,另一部分是ST,一并发送给Server。(AP-REQ)

Server 收到Client发来的AP-REQ后,用自身的NTLM Hash解密了ST,得到Session-key tgs,再用Session-key tgs解密第一部分得到Client-info、timestamp。然后与ST的Client-info、timestamp进行对比。timestamp 一般时间为8小时。验证通过后,回复AP-REP,最终建立通信。

https://www.freebuf.com/articles/network/245872.html
https://zhuanlan.zhihu.com/p/77873456
https://payloads.online/archivers/2018-11-30/1/
https://daiker.gitbook.io/windows-protocol/kerberos/1

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。