查看原文
其他

域渗透之委派攻击

谢公子 谢公子学安全 2022-07-05
前言
域内委派攻击的介绍以及攻击流程


目录


域委派

委派的分类

非约束性委派流程

约束性委派流程

S4u2Self

S4u2Proxy

基于资源的约束性委派流程

筛选委派属性的账号

利用 PowerSploit 下的 PowerView.ps1脚本

利用 Empire 下的 powerview.ps1 脚本

域委派攻击

非约束委派攻击

约束性委派攻击

约束性委派攻击抓包分析

基于资源的约束性委派攻击

基于资源的约束委派攻击实现本地权限提升

基于资源的约束委派攻击抓包分析

利用委派打造隐蔽后门(权限维持)

域委派攻击防范措施


域委派是大型网络中经常部署的应用模式,给多跳认证带来了很大的便利,但是与此同时也带来了很大的安全隐患,利用委派,攻击者可获取本地管理员甚至域管理员权限,还可以制作深度隐藏的后门。

域委派

域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户权限访问域内的其他服务。如下图:

User(xie\test)——> websrv (User的身份) ——> Service(文件服务器)

域用户 xie\test kerberos 身份验证访问 Web 服务器,请求下载文件。但是真正的文件在后台的文件服务器上。于是,Web服务器的服务账号 websrv 模拟域用户 xie\test,以 kerberos 协议继续认证到后台文件服务器。后台文件服务器将文件返回给Web服务器,Web服务器将文件返回给域用户 xie\test 。这样,就完成了一个委派的流程。

1. 域用户 xie\test kerberos 身份验证访问 Web 服务器,请求下载文件。

2. Web服务的服务账号为 websrv。由于Web服务器上无用户请求的文件,所以 websvc KDC发起 xie\test 用户的票据请求。

3. KDC检查websrv服务账号的委派属性,如果被设置,则返回 xie\test 用户的可转发TGT认购权证;

4. websrv 收到 xie\test 用户的TGT认购权证后,使用该TGTKDC申请访问文件服务器的ST服务票据;

5. KDC检查websrv服务账号的委派属性,如果被设置,并且申请的文件服务在允许的列表清单中,则返回xie\test 用户访问文件服务的ST服务票据;

6. websrv 收到 KDC 返回的 xie\test 用户的ST服务票据后,用该ST服务票据访问文件服务器,并且将文件服务器返回的文件返回给xie\test用户,就此完成委派认证。

在域中,只有 服务账号  主机账号 才具有委派属性

· 主机账号就是AD活动目录中 Computers 中的计算机,也可以称为机器账号(一个普通域用户默认最多可以创建十个主机账号)

· 服务账号(Service Account)是域内用户的一种类型,是服务器运行服务时所用的账号,将服务运行起来并加入域。例如SQL Server 在安装时,会在域内自动注册服务账号 SQLServiceAccount。也可以将域用户通过注册SPN变为服务账号。

委派使用的前提

需要被委派的用户未设置不允许被委派属性。

如图,administrator 用户设置了敏感账号不能被委派,所以administrator用户不能被委派。

委派的分类

域内委派主要有3种应用方式:

非约束性委派(Unconstrained Delegation:对于非约束性委派(Unconstrained Delegation),服务账号可以获取被委派用户的TGT,并将TGT缓存到LSASS进程中,从而服务账号可使用该TGT,模拟用户访问任意服务。配置了非约束委派的账户的userAccountControl 属性有个FLAGWORKSTATION_TRUSTED_FOR_DELEGATION。非约束委派的设置需要SeEnableDelegation 特权,该特权通常仅授予域管理员  

约束性委派(Constrained Delegation:由于非约束委派的不安全性,微软在Windows Server 2003中发布了约束性委派。对于约束性委派(Constrained Delegation),即Kerberos的两个扩展子协议 S4u2self (Service for User to Self) S4u2Proxy (Service for User to Proxy ),服务账号只能获取用户的TGS,从而只能模拟用户访问特定的服务。配置了约束委派的账户的 userAccountControl 属性有个FLAGTRUSTED_TO_AUTH_FOR_DELEGATION,并且msDS-AllowedToDelegateTo 属性还会指定对哪个SPN进行委派。约束委派的设置需要SeEnableDelegation 特权,该特权通常仅授予域管理员                                                                                                       

基于资源的约束性委派(RBCDResource Based Constrained Delegation):为了使用户/资源更加独立,微软在Windows Server 2012中引入了基于资源的约束性委派。基于资源的约束委派不需要域管理员权限去设置,而把设置属性的权限赋予给了机器自身。基于资源的约束性委派允许资源配置受信任的帐户委派给他们。基于资源的约束委派只能在运行Windows Server 2012Windows Server 2012 R2及以上的域控制器上配置,但可以在混合模式林中应用。配置了基于资源的约束委派的账户的 userAccountControl 属性为 WORKSTATION_TRUST_ACCOUNT,并且msDS-AllowedToActOnBehalfOfOtherIdentity 属性的值为被允许基于资源约束性委派的账号的SID 

基于资源的约束性委派的优势:

· 委派的权限授予给了拥有资源的后端(B),而不再是前端(A)

· 约束性委派不能跨域进行委派,基于资源的约束性委派可以跨域和林

· 不再需要域管理员权限设置委派,只需拥有在计算机对象上编辑msDS-AllowedToActOnBehalfOfOtherIdentity属性的权限,也就是 将计算机加入域的域用户 和 机器自身 拥有权限。

约束性委派和基于资源的约束性委派配置的差别:

· 传统的约束委派是正向的,通过修改服务A的属性msDS-AllowedToDelegateTo,添加服务BSPNService Principle Name),设置约束委派对象(服务B),服务A便可以模拟用户向域控制器请求访问服务BST服务票据。

· 而基于资源的约束委派则是相反的,通过修改服务B属性msDS-AllowedToActOnBehalfOfOtherIdentity,添加服务ASID,达到让服务A模拟用户访问B资源的目的。

非约束性委派流程

前提:在机器账号B上配置了非约束性委派(域管理员才有权限配置)

1. 用户访问机器B的某个服务,于是向KDC认证。KDC会检查机器B的机器账号的属性,发现是非约束性委派,KDC会将用户的TGT放在ST服务票据中。

2. 用户访问机器B时,TGT票据会和ST服务票据一同发送给机器B

3. 这样B在验证ST服务票据的同时获取了用户的TGT,并将TGT存储在LSASS进程中,从而可以模拟用户访问任意服务

从网络攻击的角度来看,如果攻击者控制了机器B的机器账号,并且机器B配置了非约束性委派。则攻击者可以诱骗管理员来访问机器B,然后攻击者可以获取管理员的TGT,从而模拟管理员访问任意服务,即获得了管理员权限。

约束性委派流程

为了进行约束性委派,微软在 Kerberos 协议的 TGS_REQ & TGS_REP 阶段引入了两个扩展子协议 S4u2Self (Service for User to Self) S4u2Proxy (Service for User to Proxy )S4u2self 可以代表任意用户请求针对其自身的Kerberos服务票据(ST)S4u2Proxy可以以上一步用户的名义请求其它服务的服务票据。约束性委派就是限制了 S4u2Proxy 扩展的范围。

前提:在服务A上配置到服务B约束性委派(域管理员才有权限配置)

1. 用户访问服务A,于是向域控进行kerberos认证,域控返回ST1服务票据给用户,用户使用此服务票据访问服务A

2. 若该服务A允许委派给服务B,则A能使用S4U2Proxy协议将用户发送给自己的可转发的ST1服务票据以用户的身份再转发给域控制器。于是域控返回给服务A一个ST2服务票据,

微信扫一扫付费阅读本文

可试读21%

微信扫一扫付费阅读本文

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存