红队笔记之Kerberos协议浅析

在这里插入图片描述


Kerberos是一种由麻省理工研发,用来来保护Project Athena提供的网络服务器。这个协议以希腊神话中的人物Kerberos命名,他在希腊神话中是Ha des的一条凶猛的三头保卫神犬。故Kerberos也被戏称为三只狗头。

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

  • 不依赖于主机操作系统的认证
  • 无需基于主机地址的信任
  • 不要求网络上所有主机的物理安全
  • 并假定网络上传送的数据包可以被任意地读取、修改和插入数据

在以上情况下, Kerberos 作为一 种可信任的第三方认证服务,是通过传统的密码技术(如:共享 密钥)执行认证服务的。

Kerberos协议架构 (三只狗头)

Kerberos协议由三部分组成,俗称三只狗头,这三只狗头在整个认证过程有着不同的角色,下面对协议的基本架构进行介绍

  • Client:认证发起方

  • Server:服务提供方

  • KDC(Key Distribution Center) :KDC负责管理票据、认证票据、分发票据,KDC不是一个独立的服务,它主要由两个服务组成:

    • 1、Authentication Service: 为client生成TGT的服务
    • 2、Ticket Granting Service: 为client生成某个服务的ticket
    • 备注1:整个认证的过程中KDC还要与DC(Domain Controller)中的AD(Account Database)进行交互,AD中存储所有Client的白名单,只有存在于白名单的client才能顺利申请到TGT
    • 备注2:KDC服务框架中包含一个默认的KRBTGT账户,其对应的NTLM Hash用例加密生成TGT

image-20211019153248664

Kerberos认证流程

Kerberos认证流程简述

1、Client与AS交互

Client向AS服务请求,希望获取访问Server的权限。 AS得到了这个消息,首先调用AD获取Client白名单,如Client在白名单中则返回TGT给Client。

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

2、Client与TGS交互

Client得到了TGT后,向TGS发送请求,希望获取访问Server的权限。TGS通过Client发送的TGT进行认证,如认证通过给Client发送可以访问Server的权限ticket。

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

3、Client与server交互

Client得到ticket后,将ticket发送给对应Server,Server认证通过后,Client最终获得访问Server权限。

Kerberos认证流程详解

为了表达方便,下文会采用“秘钥(密文)”的方式来表达被某种秘钥加密过的密文,如KEY1(B),将表达被秘钥KEY1加密B所产生的密文

1、Client与AS交互过程(身份认证)
  • Client先向AS发送KRB_AS_REQ,消息主要为明文的用户名信息

    KRB_AS_REQ消息体内容大致为;

    1、Pre-Authentication Data:一个被Client Hash加密的Timestamp.用于AS验证客户端身份

    2、Client Info: Client标识,用于AS查询Client对应的NTLM Hash

    3、Server Info:KDC的Tioket Granting Service

  • AS接到KRB_AS_REQ解析其中的用户名,调用AD进行查询,如用户名不在AD白名单中则认证终止,如在AD白名单中,AD将用户名对应的NTLM Hash发送给AS

  • AS生成一个随机字符串,叫TGS Session Key ,并使用用户名对应的NTLM Hash将Session Key进行加密,后文称Client Hash(TGS Session Key)

  • AS使用其默认账户KRBTGT对应的NTLM Hash对TGS Session Key,Client Info,TGT到期时间进行加密,生成KRBTGT Hash(TGS Session Key,Client Info,TGT到期时间),即TGT

  • AS向Client返回KRB_AS_REP

    KRB_AS_REP消息体内容大致为;

    MSG 1、Client Hash(Session Key):一个被Client Hash加密的Session Key,用于客户端接收后解密出Session Key

    MSG 2、KRBTGT Hash(TGS Session Key,Client Info,TGT到期时间)TGT:用于向TGS服务申请票据的凭证

  • Client使用自己的NTLM Hash解密MSG 1,获取到TGS Session Key,因为无KRBTGT对应的NTLM Hash故无法解析MSG 2获取到TGT

    至此,Client证明了自己的合法身份,并获得了TGT

2、Client与TGS交互过程(服务授权)
  • Client使用使用上一步解析出来的TGS Session Key重新加密Client Info与时间戳, TGS Session Key(Client Info+Timestamp)后文称Authenticator 1

  • Client向TGS发送KRB_TGS_REQ

    KRB_TGS_REQ消息体内容大致为;

    MSG 1、Authenticator 1 :TGS Session Key(Client Info+Timesramp)

    MSG 2、TGT:KRBTGT Hash(session key+client info+TGT到期时间),以及Server Info(要访问的服务)

  • TGS接收到KRB_TGS_REQ后,使用账户KRBTGT对应的NTLM Hash对MSG 2中的TGT进行解密,得到TGS Session Key+client info+TGT到期时间

  • TGS拿到TGS Session Key后解密MSG 1,得到Client Info+Timesramp

  • TGS将TGT中解密出来的client info与MSG 1中解密出来的client info进行比较,如相同则认证通过,并生成一个用于与被访问服务做认证随机字符串,我们称之为Server Session Key

  • TGS使用MSG 2中的Server Info信息从AD中取出Server 对应的NTLM Hash

  • TGS使用Server对应NTLM Hash对Server SessionKey,Client Info,Ticket有效时间进行加密,生成Server Hash(Server SessionKey,Client Info,Ticket有效时间),即Ticket(票据)

  • TGS使用TGS Session Key加密Server Session Key生成TGS Session Key(Server Session Key)

  • TGS向Client发送KRB_TGS_REP

    KRB_TGS_REP消息体内容大致为;

    MSG 1:TGS Session Key(Server Session Key),用于客户端解密出Server Session Key

    MSG 2:Ticket:Server Hash(Server SessionKey,Client Info,Ticket有效时间),用于服务端认证

  • Client收到到KRB_TGS_REP后使用TGS Session Key解析出Server Session Key

至此,Client得到了访问Server的钥匙,Ticket

3、Client与Server交互(服务请求)
  • Client使用上一步解析出来的Server Session Key重新加密Client Info与时间戳,生成Server Session Key(Client Info+Timestamp),后文称Authenticator 2

  • Client向server发送KRB_AP_REQ

    KRB_AP_REQ消息体内容大致为;

    MSG 1、Authenticator 2:Server Session Key(Client Info+Timestamp)

    MSG 2、Ticket:Server Hash(Server SessionKey,Client Info,Ticket有效时间)

  • Server接收到KRB_AP_REQ后使用自己的NTLM Hash对ticket进行解密得到Server SessionKey,Client Info,Ticket有效时间等信息

  • Server使用Server SessionKey解密Authenticator 2得到Client Info

  • 将Ticket解析出来的Client Info与Authenticator 2 中解析出来的Client Info进行比较,如相同则认证通过

  • server使用Server SessionKey加密Authenticator 2 中所含的Timesramp,Server SessionKey(Timestamp)

  • 服务端向Client发送KRB_AP_REP

    KRB_AP_REP消息体内容大致为;

    MSG 1、Server SessionKey(Timesramp)

  • Client接收到KRB_AP_REP后使用Server SessionKey解析出Timestamp,与自己发送的Authenticator 2总所含Timestamp进行比较,如一致,则整个认证流程完成

  • 校验通过后,认证成功,该票据会一直存在客户端内存中。

    至此,Client与Server成功完成了认证

为了您和您家人的幸福,请不要利用文中技术在用户未授权情况下开展渗透测试!!!

《中华人民共和国刑法》

第二百八十五条
违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。
第二百八十六条
违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。

违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。
故意制作、传播计算机病毒等破坏程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

方寸明光

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

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

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

打赏作者

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

抵扣说明:

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

余额充值