Windows域关系学习 全攻略
2021-01-20 12:23:35 Author: www.freebuf.com(查看原文) 阅读量:113 收藏

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

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

1. 基本概念

1.1什么是域

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


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

1611110949_60079a251baf1b48627ff.png!small?1611110949810

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是无法查询到域中的任何信息1611111195_60079b1b5539cea24bb05.png!small?1611111195618

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

1611111215_60079b2f7bcc8528efac4.png!small?1611111215996

加入域之后可以查询到信任关系如下:1611111229_60079b3d7522a0c2eec4d.png!small?1611111229816

可以查询另外的域中的信息,并且两个域之间的身份凭据是相互认可的。1611111280_60079b70be4cbb546567e.png!small?1611111281053

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

1611111294_60079b7e952d7142c44cc.png!small?1611111294941

1611111304_60079b8862e969fe8423c.png!small?1611111304761

但是父域的域管用户可以访问子域的资源,而子域的域管用户没有父域的权限。1611111315_60079b93351fda53f84a1.png!small?16111113154172.2 林中树之间

实验环境:

dc1:创建域 lab1.local

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

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

信任情况如下:可以看到, lab1.local 和 lab3.local 之间存在双向信任,但是 lab3.local 和sub.lab1.local 之间没有方向记录。1611111377_60079bd162eb2be12f6e7.png!small?16111113776991611111396_60079be4e46b34fad10cc.png!small?1611111397196

此时 lab3.local 域中用户可以查询同林 lab1.local 以及其子域 sub.lab1.local 的信息,用户凭据也可得到认证。1611111407_60079bef983de0156df3b.png!small?1611111407915

此时林根的域管用户可以访问 lab3.local 的资源,但是 lab3.local 的域管用户没有其他资源的权限。1611111429_60079c05315e2deeac64d.png!small?1611111429527

查询林根域的方法:

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就是传入。

1611111568_60079c90320f5b7dab753.png!small?1611111568562

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

1611111580_60079c9ced6e2603b97b3.png!small?1611111581407

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

1611111594_60079caa61bd80d11b95c.png!small?1611111594566

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

1611111606_60079cb692ca8e3795a26.png!small?1611111606854

单向内传信任

信任关系查询

1611111615_60079cbfbe86797c998a6.png!small?1611111616167

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

1611111631_60079ccf8e47528c8a942.png!small?1611111631859

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

1611111644_60079cdc1dbd76fe630df.png!small?1611111644423

3.1.2 外部域和子域之间

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

1611111664_60079cf04872a1ca314e4.png!small?1611111664575

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

1611111676_60079cfcd56d211423fad.png!small?1611111677273

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

1611111693_60079d0d2dd729c510cec.png!small?1611111693412

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

1611111702_60079d1652736e4d32f1c.png!small?1611111702539

1611111708_60079d1c782739376d112.png!small?1611111708688

3.1.3 外部域与林中树

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

1611111719_60079d273a8daa4906226.png!small?1611111719590

4. 林信任

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

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

1611111741_60079d3d52502af3feef3.png!small?1611111741707

添加双向信任后:

1611111750_60079d46c7565ed53f360.png!small?1611111751043

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

1611111761_60079d51d505ab855c295.png!small?1611111762210

5. 总结

默认配置下:

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

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

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

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

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

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

  • 外部信任则是 Attr: quarantined

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

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

1611111782_60079d665e24aacdfe106.png!small?1611111782602

6. 在其他主机中使用dsquery

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

1611111818_60079d8a4751ca56d1574.png!small?1611111818816

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

dsquery.exe.mui 放入:C:\Windows\zh-CN

dsquery.exe 放入:C:\Windows\System32

使用PTH可以进行查询

1611111828_60079d94def26c41487bb.png!small?1611111829399

但是IPC不行

1611111840_60079da01f13b3f6e2a5f.png!small?1611111840325

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

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

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

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


文章来源: https://www.freebuf.com/articles/system/261346.html
如有侵权请联系:admin#unsafe.sh