身份集权设施保护之Kerberos协议

本文详细介绍了Kerberos协议的工作原理,包括认证过程、相关概念和角色,以及Kerberos的攻击面,如AS-Reproasting、Kerberoasting、用户名枚举和密码爆破等。此外,还探讨了Kerberos的安全问题,如权限提升漏洞(MS14-068)和委派机制的潜在风险。
摘要由CSDN通过智能技术生成

一、Kerberos协议介绍

Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。
Kerberos认证


1)Kerberos相关概念

在Kerberos协议中主要是有三个角色的存在:
1.访问服务的客户端Client(以下表述为Client 或者用户)
2.提供服务的Server(以下表述为服务),如HTTP服务,SQL服务。
3.密钥颁发中心(Key Distribution Center,KDC),默认安装在DC (域控制器)上,是Kerberos的主要服务,由AS和TGS组成。在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据来决定。

  • AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)
  • TGS(Ticket Granting Ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(Ticket)

2)kerberos认证过程

1.AS_REQ阶段,这个阶段中客户端向KDC发起请求,凭据是客户端用户哈希加密的时间戳,KDC使用保存的用户哈希进行解密,如果解密成功则证明凭证正确
2.AS_REP阶段中返回用krbtgt哈希加密的TGT票据,里面包含了PAC,PAC中包含了用户的SID和所在组等信息。
3.TGS_REQ 阶段中,客户端凭借拿到的TGT向KDC发起请求,KDC使用krbtgt哈希进行解密,如果结果正确,就会进行TGS_REP阶段。
4.TGS_REP阶段返回用所请求服务哈希加密的TGS票据,这一步不管用户有没有访问目标服务的权限,只要TGT正确,都会返回TGS。
5.AP_REQ 阶段,用户已经拥有一个有效的 TGS 来与服务进行交互,客户端拿着TGS 去请求服务。
6.AP-REP 阶段服务使用自己的哈希解密票据,如果解密正确,就会拿着PAC去KDC那边问客户端有没有访问权限,这个时候域控解密PAC,查看里面客户端包含的SID和组信息,同时和服务的ACL进行对比,判断有没有权限,最后返回结果。

二、Kerberos攻击面

1)AS-Reproasting

1.原理

AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。但是该攻击方式利用比较局限,因为其需要用户账号设置 "Do not require Kerberos preauthentication(不需要kerberos预身份验证) " 。而该属性默认是没有勾选上的。


预身份验证是Kerberos身份验证的第一步(AS_REQ & AS_REP),它的主要作用是防止密码脱机爆破。默认情况下,预身份验证是开启的,KDC会记录密码错误次数,防止在线爆破。当关闭了预身份验证后,攻击者可以使用指定用户去请求票据,此时域控不会作任何验证就将 TGT票据 和 该用户Hash加密的Session Key返回,接下来可以使用hashcat对其破解,最终获得该用户的明文口令。


2.攻击利用
使用powerview来查询关闭了预身份认证的用户。
Import-Module .\powerview.ps1Get-DomainUser -PreauthNotRequired


使用ASREPRoast.ps1脚本来发送as-rep请求,并将结果储存在txt文件中。
Import-Module .\ASREPRoast.ps1 Get-ASREPHash -UserName yyh -Domain test19.local | Out-File -Encoding ASCII hash.txt


在$krb5asrep后面添加$23拼接,目的是让hashcat识别。


hashcat.exe -m 18200 hash.txt 密码.txt --force


2)Kerberoasting
Kerberoasting攻击是域攻击的常用方法之一,是一种针对域口令攻击方法。Kerberoasting利用Kerberos协议请求访问某服务时存在的一个缺陷进行攻击。

1.原理
当域内用户去请求域内某个服务资源时,先会通过AS进行身份认证,通过后会返回一个用用户密码hash加密的TGT给用户,用户拿着TGT向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值