Kerberos网络认证协议的理解

admin 2022年5月4日20:29:39评论111 views字数 3548阅读11分49秒阅读模式


 看到了很多师傅都整理了以下对KB网络协议的理解,自我感觉很乱也很难理解,不够条理,所以今天在这里整理一份,希望大家对KB的学习和理解有所帮助,欢迎补充,大佬勿喷



01

概述


kerberos是一种网络认证协议,他包含了三个主体,客户端,服务器,KDC(这里可以理解为域内的DC)。


KDC又包含了AS-Authentication Service(身份验证服务)、TGS-Ticket Granting Service(票据发放服务)


具体例子:


Authentication Service:AS的作用是验证client的身份,功能类似于医院挂号,如果核验挂号密码通过,就会给client一张TGT(Ticket Granting Ticket)票据,类似于患者用身份证换取挂号单,有了该挂号单(票据)就能进去医院,但是还无法享有看病的服务。

TGS的作用是通过TGT票据换取ST(service ticket),ST也被称为TGS Ticket,有了ST票据,client才能去访问相应的服务,类似于挂号后用挂号单去护士站签到,才能享有专家看病的服务



02


名词解释




简称

 

英文全称

 

中文意思

 

作用

 

C

 

Client

 

客户端

 

访问服务

 

S

 

Server

 

服务器

 

提供服务

 

DC

 

Domain

 

域控

 

管理域内所有机器...

 

KDC

 

Key Distribution Center

 

密钥分发中心、由域控担任

 

分发、验证...密钥和票据

 

AS

 

Authentication Server

 

身份验证服务

 

Kerberos认证、身份认证、发放TGT、发放密钥

 

TGS

 

Ticket Granting Server

 

票据授予服务

 

TGT授权、解密,发放ST

 

TGT

 

Ticket Granting Ticket

 

票据

 

用于身份认证,存储在内存,默认有效期为8-10小时

 

ST

 

Service Ticket

 

服务票据

 

用于访问服务的票据

 

AD

 

Account Database

 

SAM数据库

 

存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT

 

SK

 

Session Key

 

会话密钥

 

确保客户端和KDC下阶段之间通信安全

 

SSK

 

Service Session Key

 

服务会话密钥

 

确保客户端访问服务的通信安全

 

AT

 

Authentication

 

加密时间戳

 

是一个用用户NTLM Hash加密的时间戳

 

TS

 

TimeStamp

 

时间戳

 

用户当前的时间戳

 

SPN

 

Service Principal Name

 

服务主体名称

 

Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称

 

KRBTGT

 

KRBTGT

 

KDC的内置用户

 

它不能登录,但是有hash生成

 

PAC

 

Privileged Attribute Certificate

 

特权属性证书

 

包含用户的SID,用户所在组信息

 

NTML

 

NT LAN Manager

 

响应身份验证协议

 

用于对Active Directory域上的资源的客户端进行身份验证

 

NTML HASH

 

NT LAN Manager HASH

 

支持Net NTLM认证协议及本地认证过程中的一个重要参与物





03


大体流程


(一)、Kerberos认证大体流程


  • Client先向AS请求TGT

  • 通过核验后,AS返回TGT

  • Client用TGT去请求TGS

  • 使用ST访问服务器其他服务


(二)、Kerberos认证大体交互


1.ClientAS的交互    AS_REQ    AS_REP2.ClientTGS的交互    TGS_REQ    TGS_REP3.ClientServer交互    CS_REQ    CS_REP4.ServerKDC交互    PAC_REQ    PAC_REP


(三)、流程图


Kerberos网络认证协议的理解


(四)、Wireshark大体交互图


Kerberos网络认证协议的理解



04



Kerberos交互详解


(一)、Client与AS的交互


1.AS-REQ


请求过程:


  • 域内某个用户(Client)要想访问域上的服务,输入用户名和密码(NTLM HASH)

  • 本机的Kerberos会发起跟AS的一个请求

  • 该请求会将用户(Client)的用户名、主机名、加密类型、用户NTLM HASH加密的时间戳-AT 一起发送给AS


请求发送的内容:


客户端的用户名、主机名、加密类型、加密时间戳-AT


抓包交互图:


Kerberos网络认证协议的理解

Kerberos网络认证协议的理解


2.AS-REP


响应过程:


  • 在Client用户请求过去的时候,AS会去AD里面查找该用户是否为白名单里面的用户

  • 如果在白名单里面,AS会将用户的NTLM HASH去解密加密时间戳

  • 解密成功则用户名密码正确

  • 并且校验是否在该时间戳是否在范围内(这里的时间戳要保持在五分钟之内),如果用户名密码正确,时间戳没过期

  • 则生成一个加密的SK-as、TGT-as、PAC-as发送回Client。


注意:


SK-as:是由Client用户的NTML HASH加密的Session KeyTGT-as:是krbtgt用户的HASH+TimeStamp(时间戳)加密的PAC-as:是用户的SID、用户所在组的一些信息


响应返回的内容:


SK-as、TGT-as、PAC


交互抓包图:


Kerberos网络认证协议的理解

Kerberos网络认证协议的理解


(二)、Client与TGS的交互


  • 通过Client与AS进行的交互中,Client手里有加密SK-as、TGT-as、PAC-as

  • Client使用自身的NTLM HASH将加密SK-as解密成不加密的SK

  • 现在Client本地缓存有TGT-as和Session Key

  • Client虽然认证成功了,但是他想访问服务的话还是没有权限的,因为他的NTLM HASH是解不开TGT的,所以他要向TGS去请求到一个ST。


1.TGS-REQ


请求过程:


  • Client带着自己的客户端信息(包括Session Key)、Session Key加密的时间戳-AT、TGT-as、要访问的服务名等信息去与TGS请求来换取访问服务的票据-ST


请求发送的内容:


客户端信息、SK加密的时间戳-AT、TGT-as、访问的服务名


交互抓包图:

Kerberos网络认证协议的理解



Kerberos网络认证协议的理解


2.TGS-REP


响应过程:


  • TGS收到Client发来的请求信息后,TGS首先会检查是否有客户端访问的服务,如果有

  • 则使用KDC用户krbtgt的HASH去解密TGT

  • 然后再利用Session Key去解密Session Key加密时间戳-AT得到TimeStamp

  • 核对时间戳是否在时间区间内和原始地址跟TGT保存的是否一致,如果时间戳没问题则认证成功

  • TGS会将SK-as加密成SSK(Service Session Key)作为Client和Server安全会话密钥

  • 最后TGS会用Client访问服务的NTLM HASH进行加密生成ST,跟SSK一起返回给客户端。


注意:


ST:包含PAC-客户端信息和原始SSK就算客户端没有去访问某个服务,该ST也会正常产生


响应返回的内容:


SSK、ST


交互抓包图:


Kerberos网络认证协议的理解



(三)、Client与Server交互


  1. CS-REQ


请求过程:


  • Client现在收到TGS哪里获取到ST、SSK,

  • 然后带着SSK加密的时间戳-AT、ST、SSK去请求Server。


注意:


这里的加密时间戳是客户端和服务器产生的会话密钥->SSK去加密的


请求发送的内容:


ST、SSK、SSK加密的时间戳-AT


2.CS-REP


响应过程:


  • Server收到Client发来的ST、SSK、SSK加密的时间戳-AT后

  • 会去查找自身的Client想访问的服务,找到该服务后会用服务的NTLM HASH去解密ST,解密成功后会获得用户信息和SSK

  • 然后再通过SSK去解密SSK加密的时间戳AT得到TimeStamp

  • 核对时间戳是否过期,如果没过期进行下一步

  • 查看TGS中的PAC来判断其中是否存在匹配的组SID,以便确定访问权限。

  • 登录成功,客户端用户可以访问HOST服务主体

  • Server会成功将Client想访问的服务响应给Client


注意:


这里Server跟TGS还有一个PAC请求,用来确认客户端信息是否准确


响应返回的内容:


客户端请求的服务



05


Kerberos协议下常见的攻击类型


Kerberos网络认证协议的理解



参考连接:

http://cn-sec.com/archives/138107.htmlhttps://www.cnblogs.com/0x7e/p/14964508.html https://mp.weixin.qq.com/s/-zcK5mOVQgW_5_dILK2KWQ https://blog.csdn.net/weixin_45007073/article/details/115724813 https://blog.csdn.net/qq_45510720/article/details/107207277


今天的文章就介绍到这里,欢迎师傅们三连&补充






原文始发于微信公众号(chaosec):Kerberos网络认证协议的理解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月4日20:29:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Kerberos网络认证协议的理解http://cn-sec.com/archives/973400.html

发表评论

匿名网友 填写信息