有关Windows域信任关系的一系列知识

简单的总结了一下来自这篇文章的知识点

https://www.kroll.com/-/media/kroll/pdfs/publications/rootedcon2019-pentesting-active-directory-forests-carlos-garcia.pdf

视频录像为

https://www.youtube.com/watch?v=6aV5tZlQ2EQ&t=10s&themeRefresh=1

森林


  • 域是由树和森林构成的

    • 树是一系列相关的域
    • 森林是一系列彼此信任的树的集合
  • 在一个森林当中只有一个Enterprise Admins

    • 该组只存在于根域当中
    • 不存在于任何子域当中
    • 被添加在每一个子域控制器的本地管理员组中

信任关系


  • 允许认证流量在两个域之间传递
  • 让用户拥有在一个域内向另一个域内的资源进行认证的能力

信任流向


  • 单向信任

    • B域信任A域
    • 在A域的用户可以访问在B域的资源,在B域的用户无法访问A域的资源
  • 双向信任

    • A域信任B域,B域信任A域
    • A域的用户和B域的用户可以相互访问资源

信任的可传递性


决定了一个信任关系能否能两个域间延伸出来

  • 可传递

    • 可以将信任关系延伸至别的域
  • 不可传递

    • 不允许信任关系延伸至别的域

信任类型

类型方向可传递性描述
父子信任双向可传递当一个新的域在域树中被创建时自动和其父域建立
林根信任双向可传递当一个域树被添加到森林时新域树的根域和林根域之间自动创建
外部信任单向或双向不可传递在一个域林中的域和在另一个不同的域林之间的域手动创建,这两个域林之间并没有信任关系
林间信任单向或双向可传递在一个域的林根域和另一个林根域之间手动创建
快捷信任单向或双向可传递在同一个林中的域手动创建,用于缩短在复杂域树或者域林中的信任路径,提升认证时间
领域信任单向或双向可传递或不可传递在一个AD域和非Windows的Kerberos V5领域中手动创建

有关信任的总结

  1. 在同一个域森林中的信任关系都是双向且可传递的,这就是为什么在同一个森林内的域都是彼此信任的原因。
  2. 在同一个域森林中,来自任意域的用户都能访问另一个任意域的资源,前提是他们有对指定资源的权限和连通的网络。

林中信任关系:

在这里插入图片描述

跨域信任关系:

在这里插入图片描述
B域信任A域,则A域能访问B域的资源。

通过信任关系进行的NTLM认证

在这里插入图片描述

  1. A域中的用户向B域中的服务器发起认证请求
  2. B域中的服务器向A域中的用户发送challenge请求
  3. A域中的用户向B域中的服务器发送response响应
  4. B域中的服务器将A域中的用户名称,challenge以及response都发送给B域的域控制器
  5. B域中的域控制器将用户的认证请求发送信任路径的下一个域
  6. A域中的域控制器将会比较chanllenge和response,从而对用户A的身份进行认证

通过信任关系进行的Kerberos认证

当一个用户请求访问另一个域中的资源时:

  • 用户所在的DC是没有办法生成另一个域的ST的,这是因为ST只能通过目标服务的密码构造,而用户所在的域控制器只包含自己所在域的密码信息
  • 在同一个域森林中的不同两个域间存在一个信任密码,信任密码用于跨域的Kerberos认证

在这里插入图片描述

  1. A域用户使用自己的哈希加密时间戳
  2. A域的域控制器使用A域的krbtgt账户哈希加密TGT
  3. A域的用户请求B域的资源和服务
  4. A域的域控制器向A域的用户发送一张使用A域和B域间的inter-realm key加密的TGT
  5. A域的用户使用这张inter-realm key加密的TGT向B域的域控制器请求特定服务
  6. B域的域控制器返回指定的ST
  7. A域的用户使用ST请求B域中的指定服务

通过信任进行枚举

当进入域环境后,渗透测试的路径取决于:

  1. 当前身处的域环境和当前域的信任关系
  2. 获取到的权限
  3. 用户在外部域的权限

枚举指定外部域的信任关系:

Get-DomainTrust -Domain FOREIGN DOAMIN FQDN

一般是指定为主域控制器

枚举当前或指定的林的信任关系:

Get-ForestTrust -Domain FOREIGN DOMAIN FQDN

在如图所示的域中,假如我们所处的位置为test.dev.ciyilab.local

  1. 此时我们使用Get-DomainTrust -Domain test.dev.ciyilab.local查询,只能查询到和dev.ciyilab.local的父子信任关系。

  2. 再使用Get-DomainTrust -Domain dev.ciyilab.local去查询dev.ciyilab.local的信任关系,只能查询到和ciyilab.local的双向父子信任关系以及canete.local的单向外部信任。

  3. 最后使用Get-DomainTrust -Domain ciyilab.local查询根域的信任关系。此时能查询到和dev.ciyilab.local的双向父子信任关系,和assuan.local的双向树根信任关系以及和tricia.local的双向林间信任关系。
    在这里插入图片描述

也就是说我们完全可以处于整个Windows域林的任意一个节点当中,获得整个Windows域林的结构。

假如我们处于canete.local中,我们可以查看到dev.ciyilab.local的域信任关系,本地组成员等信息,但由于外部信任关系无法传递的原因,攻击者是无法查看到ciyilab.local的任何信息。

总结

  1. 如果某个域信任你当前所在的域,那么你就可以查询到它AD中的信息。
  2. 如果失去了域林中任意一个域的krbtgt账户密码,就等同于你失去了对整个域林的控制。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值