Windows域关系学习 全攻略

本文作者:掉到鱼缸里的猫(Ms08067内网安全小组成员)

说明:本文仅在Windows Server 2016 R2上进行测试,不保证其他版本环境下结果一致。

1. 基本概念

1.1什么是域

Windows网络操作系统的安全边界,域内主机各种策略由域控制器统一设定,域中所有主机共享一个集中式的目录数据库,包含着整个域内的对象。父域和子域之间构成域树,多个域树构成域林,林中的第一个被创建的域,作为该林的根域。Windows NT中,名称空间是平行的,尽管可以将NT域配置为彼此信任,但每个域都是一个完全独立的实体。


目录林根级域包含 Enterprise Admins 和 Schema Admins 组。这些服务管理员组用于管理林级操作,例如添加和删除域以及实现架构更改。

Windows域关系学习 全攻略

1.2 信任方向:

  1. 内传(内向信任,Direct Inbound):信任此域的域,这个域(当前域)中的用户,可以在指定域、领域或林中得到身份验证。

  2. 外传(外向信任,Direct Outbound):受此域信任的域,指定的域、领域或林中的用户可以在这个域中得到身份验证。

  3. 双向:内传 + 外传

1.3 信任传递

企业内部来自间接信任域的用户可以在信任域中进行身份验证。

1.4 信任类型

  1. 外部信任:林外部的两个域之间的不可传递的信任。

  2. 林信任:两个林之间的可传递信任,允许一个林中的任何域中用户在另一个林中的任何域收到身份验证。只有林的根域之间才可以使用这个选项。

1.5 身份验证级别

  1. 全域性身份验证:windows将自动对指定域用户使用本地域的所有资源进行身份验证,在默 认情况下可以进行IPC连接。

  2. 选择性身份验证:windows将不会自动对指定域的用户使用本地域的任何资源进行身份验证,需要由管理员向指定域用户授予每个服务器的访问权。

这样一来,域之间的相互信任关系就可以大致分为三类:林中父子域、林中树和树、不同林的域之间的信任关系。

2. 林中的信任关系

2.1 父子域

实验环境:

dc1:创建域 lab1.local ,作为父域,同时也是该林的根。

dc2:作为子域 sub.lab1.local 加入父域 lab1.local

加入域之前,dc2是无法查询到域中的任何信息Windows域关系学习 全攻略

加入域(查询目标域,可以使用域用户,但是加入域的时候需要使用域管理员用户的凭据)

Windows域关系学习 全攻略

加入域之后可以查询到信任关系如下:Windows域关系学习 全攻略

可以查询另外的域中的信息,并且两个域之间的身份凭据是相互认可的。Windows域关系学习 全攻略

但是在没有分配权限时,是没有权限访问远程目录的;同时父域用户因为未在子域中登记,所以无法通过认证。

Windows域关系学习 全攻略

Windows域关系学习 全攻略

但是父域的域管用户可以访问子域的资源,而子域的域管用户没有父域的权限。Windows域关系学习 全攻略2.2 林中树之间

实验环境:

dc1:创建域 lab1.local

dc2:作为子域 sub.lab1.local 加入父域 lab1.local

dc3:作为林中的另一个树 lab3.local

信任情况如下:可以看到, lab1.local 和 lab3.local 之间存在双向信任,但是 lab3.local 和sub.lab1.local 之间没有方向记录。Windows域关系学习 全攻略Windows域关系学习 全攻略

此时 lab3.local 域中用户可以查询同林 lab1.local 以及其子域 sub.lab1.local 的信息,用户凭据也可得到认证。Windows域关系学习 全攻略

此时林根的域管用户可以访问 lab3.local 的资源,但是 lab3.local 的域管用户没有其他资源的权限。Windows域关系学习 全攻略

查询林根域的方法:

1. powershell

Get-ADRootDSE|select rootDomainNamingContext

2. vbs:

Set objRootDSE = GetObject(“LDAP://RootDSE”)
Wscript.Echo “Root Domain: ” &
objRootDSE.Get(“RootDomainNamingContext”)

3. 不同林中的信任关系

实验环境:

dc1:创建域 lab1.local

dc2:创建子域 sub.lab1.local

dc3:创建域树 lab3.local

dc4:创建域 lab4.local

3.1 外部信任

3.1.1 两个林根域之间

单向外传信任

使用全域性身份验证时,信任查询如下:对于lab4是传出,则对于lab1就是传入。

Windows域关系学习 全攻略

lab1 的用户身份在 lab4 中可以得到有效认证,但是在未授权的情况下无法访问资源:

Windows域关系学习 全攻略

而子域 sub.lab1.local 和同林树域 lab3 中的用户无法在 lab4 中得到认证。

Windows域关系学习 全攻略

使用选择性身份认证时,当不进行任何配置时,lab1的用户无法通过lab4的认证:

Windows域关系学习 全攻略

单向内传信任

信任关系查询

Windows域关系学习 全攻略

选择性身份验证时,lab4的用户无法进行身份验证。

Windows域关系学习 全攻略

修改为全域认证后,可以访问 lab1 ,但是无法访问子域和同林域。

Windows域关系学习 全攻略

3.1.2 外部域和子域之间

单向外传信任时,信任关系查询结果:

Windows域关系学习 全攻略

这里虽然通过命令无法查询到,但是直接查看子域的信任关系属性,是可以看到的:

Windows域关系学习 全攻略

仅 lab4 可以查询 sub , lab1 、 lab3 均无法查询:

Windows域关系学习 全攻略

修改为双向之后,仅 sub 、 lab4 之间可以互相认证, lab3 、 lab1 与 lab4 之间均无法查询:

Windows域关系学习 全攻略

Windows域关系学习 全攻略

3.1.3 外部域与林中树

仅在 lab3 和 lab4 之间可以查询到信任关系,同样通过可视化工具可以在其他域控(比如 dc2 )上查询到 lab3 和 lab4 之间的信任记录,此时, lab3 和 lab4 之间可以完成用户的认证, lab1 、 sub 与lab4 之间无法完成。

Windows域关系学习 全攻略

4. 林信任

林根域和其他林的子域、树根域之间只能外部信任

添加林之间的信任时会提示目标林中的其他名称后缀情况:

Windows域关系学习 全攻略

添加双向信任后:

Windows域关系学习 全攻略

添加信任后,两个林之间所有的域用户身份都可以在其他域中得到认证:

Windows域关系学习 全攻略

5. 总结

默认配置下:

1.父域和子域之间:自动产生可传递的双向信任关系,两个域之间的身份凭据相互认可,同时父域管理员可以访问子域资源,反之不行。

2.林中的树之间:树根之间自动产生双向可传递信任关系,另一个域树的子域也会显示出来(但是不 会显示信任传递方向),任意域的用户在其他域中都可以得到认证,仅林根域管理员具有其他同林 域资源的访问权限。

3. 外部信任:只能访问参与配置的域的信息(也就是 nltest中有显示的域),无法获取到林中其他域的信息。

4. 林信任:任意域之间的用户都能得到认证。

林根域之间的外部信任和林信任的区别:

  • 林信任下,另一个根域的信任信息中会标记 Attr: 0x8;

  • 外部信任则是 Attr: quarantined

5. 外传、内传是站在命令执行者角度观察;只有参与配置的两个域之间可以通过 nltest命令查询到另一方。

dsquery和 net use在不同情形下的提示:

Windows域关系学习 全攻略

6. 在其他主机中使用dsquery

在其他主机上无法使用dsquery,因为没有这个程序 这不是废话

Windows域关系学习 全攻略

以win10 为例,将2016 的文件拷出

dsquery.exe.mui 放入:C:Windowszh-CN

dsquery.exe 放入:C:WindowsSystem32

使用PTH可以进行查询

Windows域关系学习 全攻略

但是IPC不行

Windows域关系学习 全攻略

MS08067实验室官网:www.ms08067.com

公众号:” Ms08067安全实验室”

Ms08067安全实验室目前开放知识星球: WEB安全攻防,内网安全攻防,Python安全攻防,KALI Linux安全攻防,二进制逆向入门

最后期待各位小伙伴的加入!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论