作者:谢公子
CSDN安全博客专家,擅长渗透测试、Web安全攻防、红蓝对抗。
AS-REP Roasting攻击
AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。但是该攻击方式利用比较局限,因为其需要用户账号设置 "Do not require Kerberos preauthentication(不需要kerberos预身份验证) " 。而该属性默认是没有勾选上的。
预身份验证是Kerberos身份验证的第一步(AS_REQ & AS_REP),它的主要作用是防止密码脱机爆破。默认情况下,预身份验证是开启的,KDC会记录密码错误次数,防止在线爆破。关于 AS_REQ & AS_REP:域内认证之Kerberos协议详解。
当关闭了预身份验证后,攻击者可以使用指定用户去请求票据,此时域控不会作任何验证就将 TGT票据 和 该用户Hash加密的Session Key返回。因此,攻击者就可以对获取到的 用户Hash加密的Session Key进行离线破解,如果破解成功,就能得到该指定用户的密码明文。
AS-REP Roasting攻击条件
- 域用户设置了 “ Do not require Kerberos preauthentication(不需要kerberos预身份验证) ”
- 需要一台可与KDC进行通信的主机/用户
普通域用户下
方法一:使用 Rubeus.exe
1:使用rubeus.exe获得Hash
代码语言:javascript复制Rubeus.exe asreproast
2:使用hashcat对获得的Hash进行爆破
将hash.txt里面的除Hash字段其他的都删除,复制到hashcat目录下,并且修改为hashcat能识别的格式,在krb5asrep后面添加23拼接。
然后使用以下命令爆破
代码语言:javascript复制 hashcat64.exe -m 18200 hash.txt pass.txt --force
方法二:使用powershell脚本
1:使用Empire下的powerview.ps1查找域中设置了 "不需要kerberos预身份验证" 的用户
代码语言:javascript复制 Import-Module .powerview.ps1
Get-DomainUser -PreauthNotRequired
2:使用ASREPRoast.ps1获取AS-REP返回的Hash
代码语言:javascript复制Import-Module .ASREPRoast.ps1
Get-ASREPHash -UserName hack2 -Domain xie.com | Out-File -Encoding ASCII hash.txt
3:使用hashcat对获得的Hash进行爆破
将hash.txt复制到hashcat目录下,并且修改为hashcat能识别的格式,在krb5asrep后面添加23拼接。然后使用以下命令爆破。
代码语言:javascript复制hashcat64.exe -m 18200 hash.txt pass.txt --force
非域内机器
1:对于非域内的机器,无法通过LDAP来发起用户名的查询。
2:所以要想获取 "不需要kerberos预身份验证" 的域内账号,只能通过枚举用户名的方式来获得。而AS-REP Hash方面。非域内的主机,只要能和DC通信,便可以获取到。使用Get-ASREPHash,通过指定Server的参数即可
代码语言:javascript复制Import-Module .ASREPRoast.ps1
Get-ASREPHash -UserName hack2 -Domain xie.com -Server 192.168.10.131 | Out-File -Encoding ASCII hash.txt
3:获取到Hash后,使用hashcat对其爆破,和上面一样,这里就不演示了。