01 写在开篇
此前,小星已经向大家分享了非约束委派的利用原理和常用的的攻击方法。那本期分享,就让我们一起来了解一下约束委派吧~
02 约束委派攻击原理
由于非约束委派的不安全性,微软在windows server 2003中引入了约束委派,对Kerberos协议进行了扩展,并引入了S4U运行服务代表用户向KDC请求票据。其中,S4U支持两个子协议——S4U2Self和S4U2proxy。
不同于允许委派所有服务的非约束委派,约束委派的目的是在于模拟用户的同时,限制委派机器或帐户对特定服务的访问。约束委派的请求过程如下图所示,每一步的详细过程不再赘述。
总体而言,约束委派只能获取每个主机服务的ST,所以只能模拟用户访问特定的服务,是无法获取用户的TGT。如果我们能获取到开启了约束委派的服务用户的明文密码或者NTLM Hash,我们才可以伪造S4U请求,进而伪装成服务用户,以任意账户的权限来申请访问某服务的ST。
当前域环境:
03 约束委派环境配置
在Windows系统中,普通用户的属性中是没有委派这个选项,只有服务账号和主机账号才有委派这个选项。
1. 设置域内主机WEB-2102对域控基于cifs服务的资源委派。
2. 添加一个服务。
3. 输入域控主机名称OWA后,点击检查。
4. 选择cifs服务。
04 约束委派攻击利用
1. 使用ADfind查询域中配置约束委派的用户。注意:需要获取一个域用户账号密码,否则将会显示为无效凭据。
2. 需要注意的是,使用Adfind查询需要一个域用户账号密码,否则查询会返回凭据无效。
3. 以域用户saul进行查询,发现域主机WEB-2012存在约束委派。
4. 使用mimikatz获取web-2012机器账号的密码或HASH。
5. 使用kekeo请求KDC生成账户的TGT。
6. 通过TGT伪造s4u请求,以域管理员Administrator的身份请求访问域控的cifs服务的ST2,此处包含两个步骤:
(1)使用约束委派账号的TGT,以S4U2Self协议请求KDC生成域管用户,访问自身服务(web-2012)的可转发的票据ST1。
(2)web-2102服务利用ST1票据使用S4U2Proxy协议,以域管理员用户的名义,请求一张访问域控的CIFS服务的ST2票据。
7. 运行成功后,系统会生成S4U2Self获取到的ST1和S4U2Proxy获取到的用来访问dc CIFS服务的st2。
8. 使用mimikatz注入票据。
9. 注入票据后,成功访问域控。