AS-REP Roasting攻击

AS-REP Roasting攻击

  1. 概述

windows对于身份验证有多种方式,而在windows 域中是使用使用Kerberos作为认证手段。AS-REP Roasting则是一种针对kerberos协议的攻击技术。Kerberos认证中,身份预认证是kerberos认证的第一步,默认是开启状态,以防止暴力破解(KDC会记录密码登陆错误次数)。关于Kerberos协议原理可参考文章。当“Do Not Require Pre-Authentication“被滥用,关闭预身份验证时,攻击者可以使用指定用户去请求票据,此时域控不会作任何验证就将 TGT票据 和 该用户Hash加密的Session Key返回。因此,攻击者就可以对获取到的 用户Hash加密的Session Key进行离线破解,如果破解成功,就能得到该指定用户的密码明文。这也就是本文的主题– AS-REP Roasting攻击。

Kerberos预身份验证为默认开启

从以上概述中可以了解到,AS-REP Roasting攻击的前提有以下3点:

1.目标域内有用户关闭了Kerberos预身份验证;

2.获取至少一个域内用户权限或收集到域内用户;

3.具备与KDC进行通信的条件。

2.利用过程

因此,总体上AS-REP Roasting攻击可分本地与远程两种方式。以下为两种方式的利用过程。

2.1本地

1.获得一个域内普通用户权限,并在其运行rubeus.exe获得Hash。如图所示,获取到hash值的用户即为关闭预身份验证的用户。

https://github.com/GhostPack/Rubeus

1
Rubeus.exe asreproast

获取用户HASH

2.使用hashcat等工具对hash值进行破解。

2.2远程

1.收集用户。本示例以kali中的enum4linux工具对某Samba主机进行枚举获取用户信息为例。收集域内用户信息的方式有很多,这里暂且不表。

1
root@scantime:~# enum4linux -a 10.129.1.77

获取域内用户信息

2.使用Impacket套件中的GetNPUsers.py进行远程攻击以获得用户hash。

https://github.com/SecureAuthCorp/impacket/blob/master/examples/GetNPUsers.py

1
root@scantime:~/tools# python GetNPUsers.py HTB/ -usersfile /root/test/smbusers.txt -no-pass -dc-ip 10.129.1.77
获取用户hash

2.使用john破解hash

1
root@scantime:~/tools#john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
破解HASH

3.总结

该攻击可以使用的工具远不止文中用到的,还可以用MSF、Powershell Empire等。总的来说该攻击的关键在于用户关闭了预身份验证,但预身份验证又是默认开启的,因此该攻击的利用条件还是有一定局限性。但在实战中,什么样的情况都有可能遇到,还是建议大家稍微关注一下吧。