0%

域基础及黄金票据复现

0x00 前言

啥都不说,做合规工作,偶尔更新一下。新年第一个博客,就简单写一下这几天复现的经典域环境中的黄金票据问题吧。

0x01 域环境搭建

虚拟机安装,网卡设置仅主机模式。

域控机器:windows service2016

客户端:Windows10

其中域控机器的DNS与IP一致,客户端DNS设置为域控机器的IP。

系统安装过程省略。

在使用win10客户端加入域控时,出现大致如下错误:

1
2
3
4
"DNS 服务器失败。"
(错误代码 0x0000232A RCODE_SERVER_FAILURE)

此查询用于查找 _ldap._tcp.dc._msdcs.throld.com 的 SRV 记录

此时在DNS管理器中缺少_ldap的记录。(以下为修复后出现_ldap记录)

解决方案:

此外,本人还重启了DNS服务,域环境搭建完成。

0x02 Kerberos认证

域内认证即采用了Kerberos协议的认证机制,其设计目标是通过密钥系统为客 户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不 依赖于主机操作系统的认证,无需基于主机地址的信任,不要求 网络上所有主机的物理安全,并假定网络上传送的数据包可以被 任意地读取、修改和插入数据。与本地认证和网络认证相比最大的区别是有个一个可信的第三方机构KDC的参与。

参与域认证的三个角色:

  • Client
  • Server
  • KDC(Key Distribution Center) = DC(Domain Controller)

Kerberos几个重要组件

KDC:

KDC负责管理发放Ticket和记录授权的中心服务器,包含两部分:AS认证服务器(Authentication Server),TGS服务授权服务器(Ticket Granting Server)

  • Authentication Service:验证Client的身份,验证通过就会生成一个TGT (Ticket Granting Ticket) 给Client
  • Ticket Granting Service: 为client用AS给予的TGT票据换取访问Server的ticket

其他重要组件:

  • AD(account database):存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT
  • Client 客户端:需要使用kerberos服务的客户端
  • Server 服务端:提供具体服务的服务端

Kerberos认证流程

kerberos认证交互过程可以简要概括为以下图片中的三次通信:

粗略流程:

  1. client先向DC请求,要求获取访问server的权限,当DC接收到请求之后,先由AS向AD发起请求,查看此client是否在白名单中,成功后,则由AS将TGT返回给client。
  2. 然后client带着TGT继续向DC发起请求,要求获取访问server的权限,当DC接收到请求后,TGS会通过TGT判断此client是否有获取server服务的权限,成功后,则将Ticket返回给client。
  3. 最后client凭借Ticket去访问所请求的server,这个Ticket只对该server有效,如果要访问其他server,需要重新申请。

详细过程见:Kerberos认证相关

0x03 黄金票据复现

简义 : 在拥有普通域用户权限和 krbtgt账号的hash的情况下,获取域管理员权限。

由来:

Kerberos信任及完全依赖于KDC密码,由于Kerberos协议是无状态的,因此密钥分发中心KDC和票据授予服务TGS并没记录以前的交互信息。 因此票据授予服务所需使用的全部信息都位于TGT票据中。因为TGT使用krbtgt的密钥加密过, 理论上讲网络上只有两方能够解密TGT:

​ 颁发票据的KDC和接受票据并创建访问网络资源的服务票据的票据授予服务TGS。

这种情况让krbtgt成为系统中最重要的密码。最终结果是只要TGT被krbtgt账户密码正确地加密,TGT中的所有信息都是可信的。

复现流程:(以下操作均在win10客户端操作)

  1. 提权到管理员用户,使用mimikatz导出krbtgt NTLM Hash

  2. 生成黄金票据,在目录下生成了golden.ti票据文件

    1
    kerberos::golden /admin:administrator /domain:domain-name /sid:user-sid /krbtgt:ntlmhash-value /ticket:golden.ti

    注:SID复制时去掉最后的RID(502),不然生成的票据无法使用。)

  3. 此时使用普通用户打开mimikatz,导入golden.ti,低权限本地用户,就被提升到域管理权限。

  4. 此时使用使用dir \\ad.test.local\c$查看文件夹可以访问,与之前对比:

    dir2

0x04 参考文章

Windows认证 | 域认证

域渗透相关

-------本文结束  感谢您的阅读-------