如何通过横向移动实施TGS-REP Kerberoasting攻击?
摘要:本文通过 Google 翻译 AD Escalation – Kerberoasting Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。 导航 0 前言 1 Kerberos 简介 2 Ke
本文通过 Google 翻译 AD Escalation – Kerberoasting Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。
导航
0 前言
1 Kerberos 简介
2 Kerberoasting 攻击简介
3 手动搜寻 SPN – 本地
3.1 搜寻可 Kerberoasting 的服务帐户 – setspn.exe
3.2 搜寻可 Kerberoasting 的服务帐户 – Get-SPNs.ps1
4 手动申请服务票据 to 内存 – 本地
4.1 申请服务票据 – PowerShell
5 手动导出服务票据 from 内存 – 本地
5.1 导出服务票据 – Invoke-Mimikatz
5.2 票据格式 Kirbi 转换为可破解格式
6 自动 Kerberoasting 攻击 – 本地
6.1 Rubeus.exe
6.2 Invoke-Kerberoast
7 自动 Kerberoasting 攻击 – 远程(携用户凭据)
7.1 GetUserSPNs.py
7.2 CrackMapExec
7.3 Pypykatz
8 破解 TGS-REP 哈希
0、前言
在这篇文章中,我们将探讨多种在 AD 环境中执行 Kerberoasting 攻击的方法。
首先,我们将简要了解一下 Kerberos 是什么以及 Kerberoasting 攻击的工作原理;接着,在目标主机上建立立足点之后,利用 LOLBins 和 PowerShell 脚本来枚举可进行 kerberoasting 攻击的域服务帐户;然后,使用多种方式去进行本地 半自动/自动 kerberoasting 攻击;此外,我们还将了解另外三种可以远程 自动执行 kerberoasting 攻击的工具;最后,我们将使用 hashcat 对那些在 Kerberoasting 攻击中提取到的服务帐户的 TGS-REP 哈希值进行破解。
1、Kerberos 简介
Kerberos 是一种身份验证协议,它用于验证两个或多个受信任主机之间的服务请求。
作为替代 NTLM 的一种手段,Kerberos 提供了一种安全的票据机制来验证网络用户和服务的身份。客户端可以凭借域账户密码向 KDC(即密钥分发中心,它提供身份验证和票据发放服务。)发起身份验证以申请票据授予票据(即 TGT),然后再使用 TGT 票据向 KDC 申请服务票据(即 ST),最后使用 ST 票据与所申请的服务进行身份验证并建立安全会话。
2、Kerberoasting 攻击简介
Kerberoasting 攻击是一种允许攻击者请求任何已注册 SPN 服务的服务票据的技术。票据请求成功后,该服务票据将以 TGS-REP 哈希的形式呈现给攻击者,然后攻击者就可以使用 hashcat 之类的工具去破解哈希以期望获得服务帐户的密码。因此,该攻击的主要目标就是获取 AD 中以域用户帐户运行的服务的服务票据。
通常,Kerberoasting 的攻击主要涉及四个步骤:
发现 SPN
申请服务票据
导出服务票据
破解服务票据
而要进行上述这些步骤之前,我们还需要满足以下任一条件才行:
在域主机上建立立足点(任何帐户)
拥有一组有效的域帐户凭据(任何帐户)
如果域服务帐户具有注册的 SPN,那么它应该是可以进行 Kerberoasting 攻击的。至于攻击能否取得收获,这还取决于密码的强度以及所破解的服务帐户所具有的权限级别。
现在,我们已经了解了 Kerberos 和 Kerberoasting。接下来,让我们开始吧。
3、手动搜寻 SPN – 本地
在这个示例中,目标网络情况如下:
Juggernaut-DC – Server 2019 – 172.16.1.5
JUGG-backup – Server 2019 -172.16.1.10
JUGG-efrost – Windows 10 – 172.16.1.100
同时,我们假设在 Windows 10 主机 (172.16.1.100) 上发现了一个漏洞,并成功利用该漏洞获得了反向 shell。
此时,虽然我们没有一组可用的凭证,但我们有一个立足点,它满足 Kerberoasting 攻击的两个要求之一。
注:只要域中某台机器上的某个服务以域账户的身份启动运行,那么它便会向 DC 注册 SPN,以唯一标识一个服务实例。
