Windows的Kerberos协议——Windows内网协议学习

32 篇文章 10 订阅
5 篇文章 1 订阅

目录

讲在前面:

Kerberos协议概述

Kerberos认证流程

Kerberos协议产生的安全问题——之AS

用户名枚举

黄金票据

pass the hash 和pass the key(凭据传递攻击)

Password Spraying(密码喷洒)

AS-REPRoasting

Kerberos协议产生的安全问题之——TGS

目录

目录

讲在前面:

Kerberos协议概述

Kerberos认证流程

Kerberos协议产生的安全问题——之AS

用户名枚举

黄金票据

pass the hash 和pass the key(凭据传递攻击)

Password Spraying(密码喷洒)

AS-REPRoasting

Kerberos协议产生的安全问题之——TGS

pass the ticket

白银票据:

非约束委派攻击

约束委派攻击

基于资源的约束委派攻击

Kerberos协议产生的安全问题之——PAC


Kerberos协议产生的安全问题之——PAC


讲在前面:

该文章不是以科普的形式书写,而是在学习前辈的基础上进行的自我笔记记录以及复习。

Kerberos协议概述

kerberos协议是一种由麻省理工大学提出的一种网络身份认证协议。它旨在通过使用密钥系统为客户端/服务端应用程序提供强大的身份验证——援引百度百科

几个比较重要的知识点

1:Kerberos协议分为两个基础认证模块(AS_REQ&AS_REP,TES_REQ&TES_REP),以及微软扩展的两个认证模块(S4U和PAC)

2:Kerberos协议主要有三个角色的存在

1:访问服务的Client

2:提供服务的Server

3:KDC(Key Distribution Center)密钥分发中心

一般在域内KDC会默认安装在一台域控中,而Client和Server为域内的用户或者是服务,在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据决定

Kerberos认证流程

kerberos简化认证流程如下:

  1. AS_REQ:Client向KDC中心发起AS_REQ的请求,请求凭据是Client hash加密的时间戳
  2. AS_REP:KDC接收到请求后,KDC使用Client hash解密,如果结果正确就返回用Krbtgt hash加密的TGT票据,TGT里面包含PAC,PAC包含Client‘的sid,Client所在组。
  3. TGS_REQ:Client凭借TGT票据向KDC发起特定服务的TGS_REQ请求
  4. TGS_REP:KDC使用kbrtgt hash进行解密,如果结果正确,就返回用服务hash 加密的TGS票据(这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据)
  5. AP_REQ:Client拿着票据去请求服务
  6. AP_REP:服务使用自己的hash解密TGS票据,如果票据正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC.获取Client的sid以及所在组,再根据该服务的ACL,判断Client是否有访问服务的权限

Kerberos协议产生的安全问题——之AS

安全问题产生在下列认证流程中的详细数据包内,具体截图后续补上,目前只做文字介绍:

用户名枚举

1.AS_REQ:

漏洞点:在AS_REQ发起请求后的返回数据包内,该包内的cname字段是请求的用户名,这个用户名存不存在,返回的包有差异,可以用于枚举域内用户名

黄金票据

2.AS_REP:

漏洞点:返回数据包内包含ticket字段,这个ticket用于TGS-REQ的认证,是加密的,用户不可读取里面的内容,在AS_REQ请求里面是,使用kbrtgt的hash进行加密的,因此如果我们拥有了krbtgt的hash就可以自己制作一个ticket,即黄金票据

pass the hash 和pass the key(凭据传递攻击)

漏洞点:域内是允许直接使用hash进行认证的,在连接配置的时候设置,并不是只有账号密码才能认证,就是由于在认证的时候,是用用户hash加密时间戳,即使在使用密码的情况下,也是先把密码加密成hash,然后在进行认证。

因此在只有用户hash,没有明文密码的情况下也是可以进行认证的,有众多脚本可以支持直接使用hash进行认证(rubeus、impacket等),其中如果ntlm hash的加密方式是rc4,那么这种攻击就叫做pass the hash,如果hash是ase key的加密方式,那么这种攻击就叫做pass the key

Password Spraying(密码喷洒)

同样,在请求中,密码的正确与否的返回包内容是有所不同,在实践中,通常使用叫密码喷洒攻击的手段来爆破密码。这种针对所有用户的自动密码爆破是为了避免账户被锁定。

普通的爆破是用户名固定,爆破密码。密码喷洒是密码固定,跑用户名

AS-REPRoasting

如果域用户设置了"Do not require Kerberos preauthentication"(不要求Kerberos预身份验证),此时向域控制器的88端口发送AS_REQ请求,对收到的AS_REP内容重新组合,能够拼接成Kerberos 5 AS_REP etype23(18200)的格式,接下来就可以使用hashcat进行爆破

Kerberos协议产生的安全问题之——TGS

pass the ticket

Kerberos除了第一步AS_REQ是使用时间戳加密用户hash验证外,其他的步骤的验证都是通过票据,这个票据可以是TGT票据或者TGS票据,因为票据里面的内容主要是session_key和ticket(使用服务hash加密的,服务包括krbtgt),拿到票据后,我们就可以用这个票据来作为下阶段的验证了。

白银票据:

在AS-REQ请求里面是使用krbtgt的hash进行加密的,而在TGS_REQ里面是使用要请求的服务的hash加密的,因此如果我们拥有服务的hash就可以自己制作一个ticket,即白银票据

非约束委派攻击

约束委派攻击

基于资源的约束委派攻击

Kerberos协议产生的安全问题之——PAC

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值