当前位置: 首页 > news >正文

集权攻击系列:如何利用PAC新特性对抗黄金票据?

黄金票据简介

黄金票据是一种常见的域内权限维持手段,这种攻击主要是利用了Kerberos认证过程中TGT票据由KRBTGT用户的hash加密的特性,在掌握KRBTGT用户密码之后可以通过签发一张高权限用户的TGT票据,再利用这个TGT向KDC获取域内服务的ST来实现对域的控制。那么这里的“高权限用户”是通过什么来判断的呢,答案就是PAC。

1.PAC的作用

PAC的结构如下图所示(MS-PAC)

 

整个结构详解可以参考daiker师傅的这篇文章,由于TGT是krbtgt用户的hash加密的,我们在wireshark抓包是看不到TGT的结构的,不过我们可以写了一个工具来解密TGT和PAC。

PAC解析后内容如下:

 

 可以看到在没有更新之前PAC中一共由5种类型的INFO_BUFFER:

·KERB_VALIDATION_INFO(0x1)

·PAC_CLIENT_INFO(0x0A)

·UPN_DNS_INFO(0x0C)

·PAC_SERVER_CHECKSUM (0x06)

·PAC_PRIVSVR_CHECKSUM(0x07)

当用户通过Kerberos预认证之后,KDC会给用户返回TGT票据,在TGT票据中包含了用户的SID、组等信息。在后续的TGS请求中KDC会将TGT中的PAC直接复制到返回给用户的ST票据中,最终由服务向KDC申请验证该PAC来确认用户是否有权访问该服务。

通过上面的描述,可以看出PAC在Kerberos认证的权限校验过程起着非常关键的作用,在历史上也因为PAC的问题出现过非常严重的安全漏洞(如著名的ms14-068),然而这个过程在微软针对CVE-2021-422287漏洞修复更新之后发生了一些变化。

2.PAC_REQUESTOR

2021年11月9日,微软发布了针对CVE-2021-42287漏洞的修复补丁,跟据微软的文章描述,此次更新后,在PAC中添加了一个新属性PAC_REQUESTORKDC将会在PAC的PAC_REQUESTOR结构体填充原始请求者的SID,并且在TGS_REQ过程验证请求用户(cname)是否和PAC_REQUESTOR中的SID相匹配。我们用工具解析安装CVE-2021-42287补丁更新之后的域控返回的TGT。

 考虑到更新之后票据的兼容问题,微软增加了一个注册表项

PACRequestorEnforcement来对验证规则进行控制,该注册表位于HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\KdcPACRequestorEnforcement的默认值为1,当该注册表项的值为0时表示不验证PAC_REQUESTOR, 值为1时表示如果PAC中存在PAC_REQUESTOR结构就验证,如果不存在就不验证,当值为2时所有PAC都需要验证PAC_REQUESTOR, 不包含PAC_REQUESTOR结构的PAC将会被拒绝。

微软将整个更新过程分为三个阶段

1.初始部署阶段更新时间为2021年11月9日,在这个阶段增加了对PacRequestorEnforcement注册表项的支持,用户可以通过设置该注册表项对PAC新增属性的验证规则进行控制。

2.第二个部署阶段更新时间为2022年7月12日,在这个阶段的更新执行之后,PacRequestorEnforcement等于0的情况将不被支持,将这个注册表设置为0将等同于设置成1。

3.强制执行阶段安装了这次更新的域控将移除PacRequestorEnforcement注册表,也就是只支持带有PAC_REQUESTOR结构的TGT,并且和存在以下情况的域控不兼容

· 未安装 2021 年 11 月 9 日或更高版本更新的域控制器。

· 已安装 2021 年 11 月 9 日或更高版本更新,但尚未安装 2022 年 7 月 12 日更新的域控制器以及 PacRequestorEnforcement 注册表值为 0 的域控制器。

与此同时,这次更新也新增了新的系统日志,日志ID和对应的含义如下:

 3.基于PAC更新的黄金票据检测

在这次更新之后,一些黑客工具也对此进行了相应的更新

 

不过需要注意这些工具(impacket、mimikatz、Rubeus)在生成黄金票据的过程中伪装的用户SID默认都是500。

 

 

大部分情况下,攻击者不会去修改默认的用户SID,如果在制作黄金票据时对应的用户名不存在或者其SID不是500的话,域控上将会触发event 38日志,如果使用的工具没有更新PAC结构的话将会触发event 37日志,通过这两条日志就可以对黄金票据攻击进行检测。

 

相关文章:

集权攻击系列:如何利用PAC新特性对抗黄金票据?

黄金票据简介 黄金票据是一种常见的域内权限维持手段,这种攻击主要是利用了Kerberos认证过程中TGT票据由KRBTGT用户的hash加密的特性,在掌握KRBTGT用户密码之后可以通过签发一张高权限用户的TGT票据,再利用这个TGT向KDC获取域内服务的ST来实…...

同程面试(部分)(未完全解析)

一面 Java直接内存有了解吗?为什么Java NIO的效率更高?Netty用到很多NIO,来了一个请求后Netty是怎么分发的,它里面有哪些角色?粘包、拆包怎么解决?为什么建立TCP连接是三次握手,而不是四次&…...

讯飞星火_VS_文心一言

获得讯飞星火认知大模型体验授权,第一时间来测试一下效果,使用申请手机号登录后,需要同意讯飞SparkDesk体验规则,如下图所示: 同意之后就可以进行体验了,界面如下: 讯飞星火效果体验 以下Promp…...

Java的集合

1. HashMap排序题&#xff0c;上机题。 已知一个HashMap<Integer&#xff0c;User>集合&#xff0c; User有name&#xff08;String&#xff09;和age&#xff08;int&#xff09;属性。请写一个方法实现对HashMap 的排序功能&#xff0c;该方法接收 HashMap<Intege…...

addr2line 使用,定位kernel panic 代码位置

在kernel崩溃时&#xff0c;方便定位代码。 需要打开kernel配置CONFIG_DEBUG_INFO。 需要有System.map和vmlinux文件&#xff0c;一般在out目录。 一般panic的时候会有给出panic的指针&#xff0c;如下down_write。 el1_data说明发生异常了&#xff0c;进入和entry.S文件&a…...

OpenAI目前所有模型介绍

目录 概述 GPT-4 (limted beta) GPT-3.5 GPT-3 各类模型介绍 DALLE Beta Whisper Beta Embeddings Moderation Codex (deprecated) 概述 模型描述GPT-4 Limited beta 一组在 GPT-3.5 上改进的模型&#xff0c;可以理解并生成自然语言或代码GPT-3.5一组在 GPT-3 上改…...

【P43】JMeter 吞吐量控制器(Throughput Controller)

文章目录 一、吞吐量控制器&#xff08;Throughput Controller&#xff09;参数说明二、测试计划设计2.1、Total Executions2.2、Percent Executions2.3、Per User 一、吞吐量控制器&#xff08;Throughput Controller&#xff09;参数说明 允许用户控制后代元素的执行的次数。…...

方正书版命令详解

方正书版常用的排版符包括&#xff1a; 空格&#xff1a;表示文字之间的间距&#xff0c;不同字号的文字需要适当调整空格大小。 省略号&#xff1a;用于省略一段文字&#xff0c;通常用三个点表示&#xff08;…&#xff09;。 破折号&#xff1a;用于表示强调或者断句&…...

Gradio的web界面演示与交互机器学习模型,高级接口特征《6》

大多数模型都是黑盒&#xff0c;其内部逻辑对最终用户是隐藏的。为了鼓励透明度&#xff0c;我们通过简单地将Interface类中的interpretation关键字设置为default&#xff0c;使得向模型添加解释变得非常容易。这允许您的用户了解输入的哪些部分负责输出。 1、Interpret解释 …...

本地项目上传到Git(Gitee)仓库

一、步骤解答&#xff08;详细图解步骤见第二大点&#xff09; 1、打开我们的项目所在文件夹&#xff0c;我们发现是不存在.git文件 2、在你的项目文件夹外层【鼠标右击】弹出菜单&#xff0c;在【鼠标右击】弹出的菜单中&#xff0c;点击【Git Bash Here】&#xff0c;弹出运…...

Android 12.0屏蔽掉SystemUI的某些通知提示音

1.概述 在12.0的系统开发中,在系统SystemUI中会发一些通知的声音,但是同时也会在开机的时候,会有一些通知的声音,特别是不想要的一些通知的声音, 这些对于产品还是有一些影响的,所以为了产品体验,就需要屏蔽掉一些开机的通知的声音 2.屏蔽某些通知的提示音的核心代码 …...

测试计划模板二

XXX测试计划 文档作者: 编写日期: 项目经理: 批准日期: 文档模板修改纪录表 日期 修改人 修改内容描述...

华为OD机试真题B卷 Java 实现【分奖金】,附详细解题思路

一、题目描述 公司老板做了一笔大生意&#xff0c;想要给每位员工分配一些奖金&#xff0c;想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序&#xff0c;每个人随机抽取一个数字。按照工号的顺序往后排列&#xff0c;遇到第一个数字比自己数字大的&#xff0c;那么…...

IMX6ULL平台I2C数据结构分析

IMX6ULL平台I2C数据结构分析 文章目录 IMX6ULL平台I2C数据结构分析i2c_clienti2c_adapterimx_i2c_structimx_i2c_hwdataimx_i2c_dma 在 i.MX 平台的 I2C 驱动中&#xff0c;存在多个相关的结构体&#xff0c;它们之间的联系和在内核中的作用如下&#xff1a; struct i2c_client…...

实时时钟 RTC(2)

RTC 使能与停止 RTC 上电后立即启动&#xff0c;不可关闭&#xff0c;软件应在32K 晶体振荡器完全起振后再设置当前时间&#xff1b;在晶体振荡器起振之前芯片使用内部环振计时&#xff0c;偏差较大。 RTC 时间设置 软件可以在任意时刻直接设置RTC 时间寄存器&#xff1b;由于…...

弄懂局部变量

成员变量和局部变量的区别 多个线程调用同一个对象的同一个方法时&#xff1a; 如果方法里无成员变量&#xff0c;那么不受任何影响 如果方法里有成员变量&#xff0c;只有读操作&#xff0c;不受影响 存在写操作&#xff0c;考虑多线程影响值 多线程调用…...

倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨

倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨 倾斜摄影是一种先进的数字摄影技术&#xff0c;可以生成高分辨率、高精度的三维模型数据。然而&#xff0c;在倾斜摄影中&#xff0c;由于相机的倾斜角度和地形的高程差异&#xff0c;可能会出现高程偏差问题。为了…...

怎么发表CCF期刊?CCF期刊有什么不同之处? - 易智编译EaseEditing

发表CCF期刊&#xff0c;可以参考一下步骤&#xff1a; 选择目标期刊&#xff1a; 首先选择一个适合自己的目标期刊&#xff0c;可以是CCF推荐的高水平期刊&#xff0c;也可以是其他被广泛认可的期刊。 撰写论文&#xff1a; 根据目标期刊的要求&#xff0c;撰写论文。确保论…...

feat:使用企业微信JS-SDK的onMenuShareAppMessage()实现点击转发自定义分享内容(TypeScript)

背景&#xff1a;企业微信应用使用企业微信JS-SDK的分享接口实现分享样式自定义 原生&#xff1a; 需要实现成&#xff1a; 企业微信JS-SDK 是企业微信面向网页开发者提供的 基于企业微信内 的网页开发工具包。 通过使用企业微信JS-SDK&#xff0c;网页开发者 可借助企业微信…...

Java键盘事件处理及监听机制解析

文章目录 概念KeyEventKeyListener代码演示总结 概念 Java事件处理采用了委派事件模型。在这个模型中&#xff0c;当事件发生时&#xff0c;产生事件的对象将事件信息传递给事件的监听者进行处理。在Java中&#xff0c;事件源是产生事件的对象&#xff0c;比如窗口、按钮等&am…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...

二维数组 行列混淆区分 js

二维数组定义 行 row&#xff1a;是“横着的一整行” 列 column&#xff1a;是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...