TryHackMe-AD证书模板

news2024/11/19 1:45:54

AD Certificate Templates

SpecterOps 完成并作为白皮书发布的研究表明,可以利用配置错误的证书模板进行权限提升和横向移动。根据错误配置的严重性,它可能允许 AD 域上的任何低特权用户只需单击几下即可将其权限提升为企业域管理员的权限!

简介

在之前,我们利用AD证书来进行权限提升和持久化

ADCS是微软的公钥基础设施(PKI)实现。由于AD在组织中提供了一定程度的信任,因此它可以用作CA来证明和委托信任。AD CS用于多种用途,例如加密文件系统,创建和验证数字签名,甚至用户身份验证,这使其成为攻击者的有前途的途径。

我们不但能利用证书的缺陷进行权限提升。就像域持久化当中所说的,我们通过伪造根证书以让我们保持域访问权限,并且不受凭据轮换影响,由于伪造的证书不由CA颁发,所以根本无法将其吊销,只能吊销其被恶意利用的证书。

摘自 SpecterOps 白皮书

组织往往太大,无法让管理员手动创建和分发每个证书。这就是证书模板的用武之地。AD CS 的管理员可以创建多个模板,这些模板可以允许具有相关权限的任何用户自行请求证书。这些模板具有指示哪个用户可以请求证书以及所需内容的参数。SpecterOps发现,这些参数的特定组合可能具有令人难以置信的毒性,并被滥用于权限提升和持久访问!

证书模板枚举

我们可以利用sysinternels工具包的certutil来获取证书模板信息

certutil -v -template

我们正在寻找的特定毒性参数集具有以下内容:

  • 我们具有请求证书的相关权限或我们拥有具有这些权限的帐户的模板
  • 允许客户端身份验证的模板,这意味着我们可以将其用于 Kerberos 身份验证
  • 允许我们更改主题备用名称 (SAN) 的模板

相关权限

我们需要具有生成证书请求的权限才能使此漏洞利用起作用。它通常以AD组为单位分配权限

在这里插入图片描述

查看所有证书权限通常是明智的,因为它可能会将指向一个可以泄露的帐户的方向。

客户端身份验证

我们应该寻找具有Client Authentication的EKU, 因为该EKU允许我们利用其进行kerberos身份验证, 还有其他方法可以利用证书,但对于这个房间,这个 EKU 将是主要关注点。

在这里插入图片描述

指定SAN

我们需要验证模板是否允许我们(证书客户端)指定主题备用名称 (SAN)。SAN 通常类似于我们要加密的网站的 URL。例如:tryhackme.com。但是,如果我们有能力控制 SAN,我们就可以利用证书为我们选择的任何 AD 帐户实际生成 kerberos 票证

获取应设置为 1 的CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 属性标志。这表明我们可以自己指定 SAN

从certutil导出的证书模板当中,我们找到这么一个模板

  Template[31]:
  TemplatePropCommonName = UserRequest
  TemplatePropFriendlyName = User Request
  TemplatePropEKUs =
3 ObjectIds:
    1.3.6.1.5.5.7.3.2 Client Authentication
    1.3.6.1.5.5.7.3.4 Secure Email
    1.3.6.1.4.1.311.10.3.4 Encrypting File System

  TemplatePropCryptoProviders =
    0: Microsoft Enhanced Cryptographic Provider v1.0

  TemplatePropMajorRevision = 64 (100)
  TemplatePropDescription = User
  TemplatePropSchemaVersion = 2
  TemplatePropMinorRevision = a (10)
  TemplatePropRASignatureCount = 0
  TemplatePropMinimumKeySize = 800 (2048)
  TemplatePropOID =
    1.3.6.1.4.1.311.21.8.13251815.15344444.12602244.3735211.11040971.202.13950390.3651808 User Request

  TemplatePropV1ApplicationPolicy =
3 ObjectIds:
    1.3.6.1.5.5.7.3.2 Client Authentication
    1.3.6.1.5.5.7.3.4 Secure Email
    1.3.6.1.4.1.311.10.3.4 Encrypting File System

  TemplatePropEnrollmentFlags = 19 (25)
    CT_FLAG_INCLUDE_SYMMETRIC_ALGORITHMS -- 1
    CT_FLAG_PUBLISH_TO_DS -- 8
    CT_FLAG_AUTO_ENROLLMENT_CHECK_USER_DS_CERTIFICATE -- 10 (16)

  TemplatePropSubjectNameFlags = 1
    CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT -- 1

  TemplatePropPrivateKeyFlags = 1010010 (16842768)
    CTPRIVATEKEY_FLAG_EXPORTABLE_KEY -- 10 (16)
    CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
    TEMPLATE_SERVER_VER_2003<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 10000 (65536)
    TEMPLATE_CLIENT_VER_XP<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT -- 1000000 (16777216)

  TemplatePropGeneralFlags = 2023a (131642)
    CT_FLAG_ADD_EMAIL -- 2
    CT_FLAG_PUBLISH_TO_DS -- 8
    CT_FLAG_EXPORTABLE_KEY -- 10 (16)
    CT_FLAG_AUTO_ENROLLMENT -- 20 (32)
    CT_FLAG_ADD_TEMPLATE_NAME -- 200 (512)
    CT_FLAG_IS_MODIFIED -- 20000 (131072)

  TemplatePropSecurityDescriptor = O:LAG:S-1-5-21-3330634377-1326264276-632209373-519D:PAI(OA;;RPWPCR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;DA)(OA;;RPWPCR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;DU)(OA;;RPWPCR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;S-1-5-21-3330634377-1326264276-632209373-519)(OA;;CR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;AU)(OA;;CR;a05b8cc2-17bc-4802-a710-e7c15ab866a2;;AU)(A;;CCDCLCSWRPWPDTLOSDRCWDWO;;;DA)(A;;CCDCLCSWRPWPDTLOSDRCWDWO;;;S-1-5-21-3330634377-1326264276-632209373-519)(A;;CCDCLCSWRPWPDTLOSDRCWDWO;;;LA)(A;;LCRPLORC;;;AU)

    Allow Enroll	LUNAR\Domain Admins
    Allow Enroll	LUNAR\Domain Users
    Allow Enroll	LUNAR\Enterprise Admins
    Allow Enroll	NT AUTHORITY\Authenticated Users
    Allow Auto-Enroll	NT AUTHORITY\Authenticated Users
    Allow Full Control	LUNAR\Domain Admins
    Allow Full Control	LUNAR\Enterprise Admins
    Allow Full Control	LUNAR\Administrator
    Allow Read	NT AUTHORITY\Authenticated Users

EKU中允许利用进行身份验证,同时还设置了CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,并且允许了domain users组进行注册

组合在一起,该模板允许我们可以控制SAN,为任何用户请求证书,并且进行身份验证

生成恶意证书

我们确定了可以利用的证书模板,是时候生成证书请求了。如果您愿意,您可以从命令行执行此步骤

通过mmc进行请求证书和导出证书都相当简单,这里我就不再记录

通过证书进行用户模拟

现在我们使用Rubeus来利用证书请求TGT

在这里插入图片描述

有了tgt,我们能做很多事情,我们可以通过各种工具来利用tgt,比如mimikatz

这里我们使用Rubeus修改账户密码

在这里插入图片描述

然后使用runas注入凭据,值得注意的是这里不要加/netonly参数,因为我们要进行本地访问而不仅仅只是网络通信需要使用注入的凭据

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言宏使用

C语言宏 编译一个C语言程序的第一步骤就是预处理阶段&#xff0c;这一阶段就是宏发挥作用的阶段,编译完之后宏对二进制代码不可见。 使用 1. 宏常量 #define PI 3.142. 宏语句 #define Print printf("hello,world!\r\n")3. 宏函数 使用宏来定义函数&#xff0c…

基于灰狼算法的极限学习机(ELM)回归预测-附代码

基于灰狼算法的极限学习机(ELM)回归预测 文章目录 基于灰狼算法的极限学习机(ELM)回归预测1.极限学习机原理概述2.ELM学习算法3.回归问题数据处理4.基于灰狼算法优化的ELM5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;本文利用灰狼算法对极限学习机进行优化&#xff0c;并…

[stable-diffusion-art] 指北-3 inpainting

https://stable-diffusion-art.com/inpainting_basics/https://stable-diffusion-art.com/inpainting_basics/inpainting的应用主要是重绘&#xff0c;目前的模型换衣主要还是通过lora训练特定衣服来实现的。 模型权重&#xff1a; !wget https://huggingface.co/runwayml/sta…

一、spring Cloud Alibaba概述

spring Cloud Alibaba学习&#xff0c;第一篇spring Cloud Alibaba概述篇。 微服务是一种架构思想&#xff0c;spring Cloud Alibaba是微服务的系列化实现方式之一。 一、架构演变过程 架构粒度更加精细&#xff0c;拆分成不同的服务&#xff0c;每个服务直接互不影响&#…

基于海鸥算法的极限学习机(ELM)回归预测-附代码

基于海鸥算法的极限学习机(ELM)回归预测 文章目录 基于海鸥算法的极限学习机(ELM)回归预测1.极限学习机原理概述2.ELM学习算法3.回归问题数据处理4.基于海鸥算法优化的ELM5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;本文利用海鸥算法对极限学习机进行优化&#xff0c;并…

【LeetCode股票买卖系列:309. 最佳买卖股票时机含冷冻期 | 暴力递归=>记忆化搜索=>动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

C/C++笔记-分析带有Q_OBJECT继承QObject的类make流程

此篇博文记录到个笔记时间2023-02-15&#xff0c;发表到网上的时间是2023-05-03。 这里以Qt5.5.1为例&#xff0c;操作系统是centos 7.5版本。 代码如下&#xff1a; MOCQtConsole.pro QT coreTARGET MOCQtConsoleSOURCES main.cpp \Test.cppHEADERS Test.hTest.h …

Threejs进阶之十二:Threejs与Tween.js结合创建动画

tween.js介绍 Tween.js是一个可以产生平滑动画效果的js库&#xff0c;其官方地址为&#xff1a;https://github.com/tweenjs/tween.js/&#xff0c;可以将源码下载后&#xff0c;可以在tween.js/dist/文件夹下找到相应的js代码&#xff0c;在HTML中进行引用&#xff1b;也可以…

配置KylinV10

配置KylinV10 文章目录 配置KylinV10设置“root”登录密码允许通过图像界面登录到“root”开机自动登录到“root”关闭“麒麟安全授权认证”关闭自动睡眠挂载“Windows”下共享目录到虚拟机安装“Docker”到“KylinV10”B/S安装“Maven-3.6.3”安装“Gradle-4.4.1”安装“Jdk-8…

UG NX二次开发(C++)-建模-创建基准坐标系(NXOpen方法)

文章目录 1、前言2、UG NX中根据菜单来创建基准坐标系2.1 打开UG NX2.2 打开基准坐标系创建界面2.3 根据两个轴和原点创建基准坐标系 3、采用NXOpen方法来创建基准坐标系3.1 创建创建基准坐标系的方法3.2 在do_it方法中添加调用代码3.3 生成dll&#xff0c;并用NXOpen执行来测试…

spring boot原理分析

总体流程 prepareEnvironment里会生成基本的propertySource列表&#xff0c;当然后续还可能会改&#xff0c;比如apollo会在refreshContext时添加自己的propertySource。 prepareContext里会调initializer初始化ApplicationContext&#xff0c;接着加载bean定义。 refreshCo…

深入源码理解redis数据结构(一)

文章目录 一. 动态字符串SDS二. IntSet三. Dict 一. 动态字符串SDS 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。不过Redis没有直接使用C语言的字符串&#xff0c;因为C语言字符串存在着很多…

LVS负载均衡集群--DR模式

一、LVS-DR集群介绍 LVS-DR&#xff08;Linux Virtual Server Director Server&#xff09;工作模式&#xff0c;是生产环境中最常用的一 种工作模式。 1、LVS-DR 工作原理 LVS-DR 模式&#xff0c;Director Server 作为群集的访问入口&#xff0c;不作为网关使用&#xff0…

《程序员面试金典(第6版)》面试题 16.11. 跳水板

题目描述 你正在使用一堆木板建造跳水板。有两种类型的木板&#xff0c;其中长度较短的木板长度为shorter&#xff0c;长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法&#xff0c;生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例 1 输入&a…

Request和Response应用

ServletRequest应用 ServletRequest应用非常广泛&#xff0c;下面是一些例子&#xff1a; 获取请求参数&#xff1a;可以使用HttpServletRequest的getParameter()方法获取请求参数。 获取请求头信息&#xff1a;可以使用HttpServletRequest的getHeader()方法获取请求头信息。…

数据结构(六)—— 二叉树(3)

文章目录 题1 589 N 叉树的前序遍历2 226 翻转二叉树递归迭代 3 101 对称二叉树递归迭代 4 104 二叉树的最大深度层序遍历直接解决递归 5 111 二叉树的最小深度层序遍历递归 6 222 完全二叉树的节点个数递归遍历 7 110 平衡二叉树递归 题 递归三部曲 1、确定递归函数的参数和返…

如何使用 PyTorch 进行半精度、混(合)精度训练

https://featurize.cn/notebooks/368cbc81-2b27-4036-98a1-d77589b1f0c4 nvidia深度学习加速库apex简单介绍 NVIDIA深度学习加速库Apex是一个用于PyTorch的开源混合精度训练工具包&#xff0c;旨在加速训练并减少内存使用。Apex提供了许多用于混合精度训练的工具&#xff0c;…

【Python基础入门学习】Python函数与变量的使用

python语法 1. 函数的快速体验2. 函数的基本使用2.1 函数的定义2.2 函数的调用2.3 第一个函数演练2.4 PyCharm 的调试工具2.5 函数的文档注释 3. 函数的参数3.1 函数参数的使用3.2 函数参数的作用3.3 形参和实参 4. 函数的返回值5. 函数的嵌套使用6 使用模块中的函数6.1 第一个…

码出高效:Java开发手册笔记(线程池及其源码)

码出高效&#xff1a;Java开发手册笔记&#xff08;线程池及其源码&#xff09; 码出高效&#xff1a;Java开发手册笔记&#xff08;线程池及其源码&#xff09; 码出高效&#xff1a;Java开发手册笔记&#xff08;线程池及其源码&#xff09;前言一、线程池的作用线程的生命周…

剑指 Offer:003 前 n 个数字二进制中 1 的个数

题目&#xff1a; 给定一个非负整数 n&#xff0c;请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数&#xff0c;并输出一个数组 示例&#xff1a; 1、 输入: n 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 2、 输入: n 5 输出: [0,1,1,2,1,2] 解释: 0 …