点我

从Windows 2000开始,微软添加了委派功能,委派共分为三种

  • 非约束性委派(Windows Server 2000)
  • 约束性委派(Windows Server 2003)
  • 基于资源的约束委派(Windows Server 2012)

非约束性委派

委派是一种应用模式,指的是将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。

非约束性委派指的是服务账号可以请求得到域内用户的TGT,服务账号使用该TGT模拟域内用户访问任意服务。

被配置为非约束性的系统将把TGT存储到LSASS内存中,以便于用户能够访问终端资源。

存在的问题
  1. 如果配置了非约束性委派的机器被控制,就会很危险
  2. 如果没有对非约束性委派的机器做限制,则该机器就可以代表用户访问域内任意机器
  3. 如果域管理员访问了非约束性委派的机器,那么整个域内机器都可能被控制
如何让域管理员访问配置了非约束性委派的机器呢?
  • 域管理员主动访问被配置了非约束性委派的机器(钓鱼等手法)
  • 域管理员被动访问被配置了非约束性委派的机器(结合漏洞等手法)

约束性委派

Windows Server 2003 之后微软引入了非约束性委派,由于非约束性委派的不安全性或者场景或限制(配置了非约束性委派的机器在LSASS中缓存了用户的TGT票据可以模拟用户去访问域中任意服务),微软于2007年为Kerberos协议进行了扩展引入了S4U(Service For User)协议,该协议分为两个子协议:

  • S4U2Self(Service For User To Self)
  • S4U2ProxyService For User To Proxy)

两个子协议都允许服务代表用户从KDC中请求票据,约束委派限制了S4U2Proxy协议的请求范围,使得配置了委派属性的服务只能模拟用户身份访问特定的其他服务。

约束性委派是对委派的机器做了约束,被委派的机器只能访问设定好的机器服务。

基于资源的约束性委派

Windows Server 2012之后微软新引入了基于资源的约束性委派,基于资源的约束性委派不需要通过域管理员修改,而是将设置属性的权限给到了服务资源本身,可以将基于资源的约束性委派理解为传统约束性委派的反向过程。

约束性委派:委派机器的WEB系统是在域控上对WEB服务器进行了设置。

基于资源的约束性委派:委派机器的WEB系统是通过文件系统自己设置的。

S4U2Self与S4U2Proxy

2007年为Kerbero协议进行了扩展引入S4U(service for user)协议,该协议有两个子协议:

  • S4U2Self(Service For User To Self)
  • S4U2Proxy(Service For User To Proxy)

两个扩展协议都允许服务代表用户从KDC中请求票据,约束性委派限制了S4U2Proxy协议的请求范围,使得配置了约束性委派属性的服务只能模拟用户身份访问特定的服务。

约束性委派与基于资源的约束性委派都会用到这两个协议。

流程步骤

用户A访问WEB系统B,B代表A向KDC申请访问B的TGT和ST-B(使用S4U2Self协议),用户A拿到了ST-B就可以访问WEB系统B了。

如果在WEB系统B上配置了约束性委派(A到C的约束性委派),则WEB系统B能够使用S4U2Proxy协议将用户A发给自己的ST-B票据,转发以用户A的身份发给KDC,KDC返回WEB系统B访问文件系统C的票据ST-C,这样WEB系统B就可以访问文件系统C。

  1. 用户A通过NTLM或者其他认证能够访问WEB系统B
  2. WEB系统B代表用户A申请访问web系统B的票据(TGT和ST-B)
  3. KDC返回用户A的TGT和ST-B票据给WEB系统B
  4. B把ST-B的票据给到用户A
  5. 用户A拿着ST-B的票据访问WEB系统B
  6. WEB系统B拿着用户A的ST-B票据作为证据,去向KDC申请访问文件系统C的ST-C票据
  7. WEB系统使用ST-C的票据访问文件系统
存在的问题
  • 服务账号B可以代表用户A向KDC申请访问B的票据,那么服务账号B能否代表域内管理员向KDC申请访问B的票据呢?
    在这个过程中,不需要域内管理员的参与,在服务账号B自身就可以完成
  • 服务账号B可以代表用户A向KDC申请访问C的票据,那么服务账号B能否代表域内管理员向KDC申请访问C的票据呢?

    在这个过程中,不需要域内管理员的参与,在服务账号B自身就可以完成

分类: 内网渗透

评论

-- 评论已关闭 --

目录