技术干货 | 防御黄金票据攻击

admin 2022年4月22日00:22:51评论445 views字数 5132阅读17分6秒阅读模式

本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安世加的观点,若有无意侵权或转载不当之处请联系我们处理,谢谢合作!


欢迎各位添加微信号:asj-jacky

加入安世加 交流群 和大佬们一起交流安全技术

Kerberos与黄金票据

在上一篇文章,我们已经完整地说明了Kerberos协议的认证过程,在这里简单用文字回顾一下。

客户端在进行身份验证请求时,KDC会发出一个票据授予票据(TGT),票据其中包含了一个唯一的会话密钥(Session-key)和一个被加密时间戳。该时间戳的指定了该会话的有效时间(一般为默认为10小时)。当用户访问服务和网络资源时,只需出示该TGT来通过身份验证,而无需重新请求KDC。

AS REP消息中的TGT是KDC使用特殊账户KRBTGT的密码HASH对其进行加密而生成的,而且该密码HASH在AD域中的所有DC之间共享。

技术干货 | 防御黄金票据攻击

那么是不是意味着,能通过Kerberos身份验证的条件是建立在任何使用KRBTGT密码HASH加密的TGT都是合法的情况之上的。只要拿到了KRBTGT的密码HASH就可以伪造TGT和Session-key来直接进入TGS REQ流程从而跳过了AS的身份验证。在域渗透中,伪造出来的这个TGT票据就叫做黄金票据,因其能绕过与AS进行身份验证交互的特点,黄金票据经常被用作后渗透权限维持。

黄金票据的制作与使用

创建一个黄金票据需要以下信息:

  • 账户名

  • 域的FQDN

  • 域SID

  • KRBTGT密码HASH

账户名可以被任意伪造。

微软的MS-KILE解释:Kerberos V5不提供对TGS请求的账户撤销检查,只要TGT有效,即使该账户已被删除,TGT更新和服务票据也可以发布。KILE提供了一个可以将利用时间限制在较短的时间内(20分内)。当TGT大于20分钟时,KILE KDC需要在域中检查账户。

域信息也比较容易获取,只需要控制域内任何一个普通账户即可。

net time /domain
wmic get useraccount get name,sid
net group "domain admins" /domain

技术干货 | 防御黄金票据攻击

域名为bbk.lab,域SID为S-1-5-21-4275650387-806465445-2885188148,域管理员为Administrator

而KRBTGT的密码HASH比较关键,而且获取它相对前三者而言较为复杂。以下举例几种方法:

  • 提取NTDS.DIT导出HASH值
    在活动目录中,所有的数据都保存在ntds.dit文件中。ntds.dit是一个二进制文件,存储位置为域控制器的%SystemRoot%ntdsntds.dit。ntds.dit中包含了用户名、散列值、组、GPP、OU等活动目录相关的信息。比如可以使用卷影拷贝服务提取NTDS.DIT,然后使用impacket等工具包导出域账号密码HASH。

  • 攻击入侵和提权
    在域渗透中,攻击者可攻击域内主机作为当前跳板。如果管理员在过去某个时间点在该机器上登录,内存中可能存在来自管理员的密码凭证,攻击者抓取明文密码远程登录,或抓取管理员密码HASH通过哈希传递攻击。此外,还能利用系统漏洞进行提权,如MS14-068、MS17-010等漏洞。

  • DCSync攻击
    Active Directory 环境通常包括多个域控制器,它们必须通过相互更新更改来保持同步,例如对用户凭据的更新。在DCSync攻击中,获得访问具有域复制权限的特权账户的攻击者通过伪装成 DC 并向合法 DC 请求密码哈希来破坏此 AD 功能。DCSync是mimikatz的一项功能。

当获取到KRBTGT的HASH时,攻击者可以在任何机器上(包括本地环境)创建黄金票据。这里使用的mimikatz的lsadump::dcsync功能获取HASH值,然后使用kerberos::golden功能生成金票golden.kiribi。

# 启动mimikatz
mimikatz.exe

#
 获取KRBTGT的NTLM HASH
log
lsadump::dcsync /all /csv

#
 在域内主机以普通用户user1创建golden ticket
kerberos::purge
kerberos::golden /admin:bdministrator /domain:bbk.lab /sid:S-1-5-21-4275650387-806465445-2885188148 /krbtgt:5ded0640eb2633864f63e8616d657df1 /ticket:bdministrator.kiribi
kerberos::ptt bdministrator.kiribi
kerberos::tgt

技术干货 | 防御黄金票据攻击


技术干货 | 防御黄金票据攻击

这里admin指定为bdministrator,是为了印证黄金票据可以使用任意账户名参与伪造创建,同时也方便后续的事件日志分析。可以查看到TGT票据已经注入到内存。

访问DC共享目录C$ 确认当前权限。

技术干货 | 防御黄金票据攻击

流量与事件日志分析

流量分析

大鲨鱼抓包

技术干货 | 防御黄金票据攻击

对比正常的Kerberos认证过程,这里显然并没有出现身份验证的流量,即缺少AS REQ和AS REP过程,而是一上来就请求服务票据。

第一个TGS REQ用的就是黄金票据生成的TGT(2e9bf90aaeb开头)。

技术干货 | 防御黄金票据攻击

然后返回了一张win08.bbk.lab的CIFS服务的ST票据,而且cname就是bdministrator。

技术干货 | 防御黄金票据攻击

而后面TGS REQ请求所使用的票据也仍然还是黄金票据生成的TGT(也是2e9bf90aaeb开头)。

技术干货 | 防御黄金票据攻击

请求的服务是krbtgt,域是bbk.lab,通过的客户端账户是bdministrator。

技术干货 | 防御黄金票据攻击

事件日志

技术干货 | 防御黄金票据攻击

事件4624显示了安全ID(即SID)administrator在192.168.1.7上登录,账户名为  bdministrator,但账户名和SID并不对应。

技术干货 | 防御黄金票据攻击

事件4672显示了以bdministrator为账户名登录的账户,具有 SeBackupPrivilege、SeRestorePrivilege、SeDebugPrivilege、SeTakeOwnership 等权限,表明该用户具有对此计算机的完全管理员访问权限。

技术干货 | 防御黄金票据攻击

结合以上两条事件日志,我们可以得知bdministrator是伪造的。当然,暂且不从上帝视角看该账户实际并不存在,我们看正常情况下,账户名和SID应该一一对应,而且administrator身份出现在域内普通主机,若该主机是非常用主机,该事件日志显然表现得更加异常。

此外,针对黄金票据绕过与AS进行身份验证伪造生成TGT的特点,可以从认证流程出发寻找异常事件。以下是客户端正常访问服务的Kerberos认证流程所产生的事件。

技术干货 | 防御黄金票据攻击

正常客户端访问服务产生的事件日志:4768(TGT)- 4769(TGS)- 4624(logon),而黄金票据攻击产生的事件日志:4769(TGS) - 4624(logon)

通过对比,很明显地是后者缺少了事件4769的日志,因为黄金票据是本地离线生成的,不需要与KDC进行交互。综上,在进行日志分析和流量检测时,可以将黄金票据的缺少TGT请求作为研判的重要依据之一。

安全防御

及时、定期修改域管理员密码,同时还需要修改KRBTGT密码2次,且最好隔10小时后再重置第2次。

针对黄金票据攻击的首要防御策略是定期更改 KRBTGT 密码,但开展工作之前需要了解以下几个问题:

  • 为什么需要更改KRBTGT密码?
    黄金票据中TGT是KRBTGT的密码HASH加密生成的,重置KRBTGT密码将使所有此类票证无效。

  • 为什么需要修改密码2次?
    Krbtgt 账户的密码历史记录值为2,这意味着它包含2个最新密码。通过重置密码两次,可以有效地清除历史记录中的任何旧密码,因此无法使用旧密码将其他 DC 与此 DC 进行复制。

  • 为什么需要间隔10小时修改第2次密码?
    在windows中默认情况下,服务票证据和用户票证最长寿命策略设置为10小时。

    技术干货 | 防御黄金票据攻击
    而且需要注意的是,更改KRBTGT密码将影响几乎所有后续Kerberos操作,所有已发放的TGT都将无效,因为它们是用旧密码加密的,但在需要重新验证服务票证之前,已为资源(例如文件共享、Exchange 服务器等等)建立的所有经过身份验证的会话都是有效的。因此,如果更改了最长生存期,则重置间隔的最小等待时间应大于配置的值。

官方还提供了一个专门重置密码的脚本(https://github.com/microsoft/New-KrbtgtKeys.ps1),建议使用官方推荐,并定期(STIG建议180天)重置1次。

技术干货 | 防御黄金票据攻击

最小权限原则:减少可以访问 KRBTGT 密码哈希的账户数量。

资产收集,确认哪些账户能够执行dcsync命令,控制域管理员以及为DC提供登录权限的其他组成员的数量。如果发现任何其他账户有权访问此关键数据,调查并删除任何不必要的权限。

此外,尽可能地,不要授予域用户在工作站上的管理员权限,也不要让管理员登录域内普通计算机。这就能避免攻击者将该主机作为跳板,尝试找到任何特权凭据来获取和用于黄金票据攻击。

监控IT环境中可疑的网络活动,定期备份事件日志。

重点关注如下可能存在异常的网络活动:

  • 具有较长的生命周期的TGT,且Kerberos流量符合金票的活动特征。
    在创建TGT的时候,是否会注意到,mimikatz已预设声明TGT票据为10年有效期,即使域策略设置说明只有10小时。这也是黄金票据的特点之一。

    技术干货 | 防御黄金票据攻击
  • 异常的域复制活动。
    出现该异常说明可能有人正在使用dcsync获取域账户密码HASH,及时发现并作出反制能有效防止攻击者完成黄金票据攻击。

事件日志定期备份。攻击流量产生的完整的事件日志能够研判当前攻击利用是否成功。不过,若仅针对黄金票据攻击,因为其TGT离线伪造,Windows事件日志不包括TGT事件,在大量的日志中找出那几个异常事件确实是个比较大的挑战。

参考

Security identifiers
(https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/security-identifiers)
AD 林恢复-正在重置 krbtgt 密码
(https://docs.microsoft.com/zh-cn/windows-server/identity/ad-ds/manage/ad-forest-recovery-resetting-the-krbtgt-password)
The password for the krbtgt account on a domain must be reset at least every 180 days.
(https://www.stigviewer.com/stig/windows_server_2016/2019-01-16/finding/V-91779#:~:text=If%20the%20%22PasswordLastSet%22%20date%20is,old%2C%20this%20is%20a%20finding.&text=Reset%20the%20password%20for%20the,reduces%20the%20risk%20of%20issues)

猎豹安全中心技术分享频道





技术干货 | 防御黄金票据攻击  
  1. 海量日志分析的预处理

  2. OSSEC-Execd功能模块分析

  3. 通过流量快速识别域名信息

  4. 从android源码看脱壳

  5. Ossec-Agentd模块分析

  6. 猎豹移动DPIA系统开源

  7. 一种新的分词方法在机器学习中的应用

  8. Ossec-Logcollector模块分析

  9. Ossec-Agent-Syscheckd模块分析

  10. Ossec Agent总结

  11. HTTP走私漏洞分析

  12. BurpSuite扩展插件使用分享

  13. webshell连接工具流量分析

  14. JDK7u21调用链分析

  15. php函数中的那些坑

  16. 通过sqlmap源代码分析SQL注入漏洞检测流程

  17. 猎豹移动通过“全球首个隐私信息管理体系标准”ISO/IEC 27701认证

  18. DGA域名检测

  19. 基于NSL-KDD数据集的网络入侵检测分析

  20. 采用HAN网络模型的WebShell检测

  21. Suricata可视化规则(简单)编辑器及规则统计告警系统开源

  22. SQL注入检测

  23. Typecho利用链分析

  24. ISO27701

  25. phpinfo里面有什么?

  26. Django QuerySet.order_by() SQL注入分析

  27. 内网渗透之SOCKS代理的5类基本场景

  28. Kerberos协议之MS14-068分析和防御

原文始发于微信公众号(安世加):技术干货 | 防御黄金票据攻击

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月22日00:22:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   技术干货 | 防御黄金票据攻击http://cn-sec.com/archives/932419.html

发表评论

匿名网友 填写信息