Attacktive Directory - TryHackMe
Máquina introductoria al Active Directory donde realizaremos un ataque ASREPRoast y escalaremos privilegios a través de una técnica llamada DCSYNC.
Reconocimiento
Comenzamos la resolución del laboratorio, y como siempre comenzamos por el recocimiento.
Antes de comenzar a lanzar nmap para escanear los puertos abiertos en la máquina objetivo voy a averiguar a que sistema operativo me enfrento, aunque es un poco obvio pero es un pequeño truco para averiguarlo de forma segura.
- Lanzamos un ping a la dirección ip objetivo.
Como podemos ver posee un ttl de 127, lo que nos indica que estamos ante una máquina Windows, ya que las máquinas Linux tienen un ttl de 64 y las Windows de 128.
Linux/Unix: 64
Windows: 128
MacOS: 64 S
Solaris/AIX: 254
FreeBSD: 64
Tras averiguar el sistema operativo procedemos a enumerar los puertos abiertos en la máquina objetivo.
Reconocimiento de Puertos🔎
Lanzamos nmap para buscar los puertos abiertos en la máquina objetivo.
nmap -p- -Pn -n --min-rate 5000 $ip
Tras realizar el escaneo y para facilitar el siguiente escaneo de todos los puertos hago uso de la herramienta extractPorts de s4vitar, que lo que hace es coger del output de nmap los puertos abiertos y los copia en el portapapeles para su posterior uso en el siguiente comando.
Dejo por aquí el código de la herramienta:
A continuación realizo el siguiente escaneo, el cual me arrojará mucha más información de los puertos abiertos, así como los servicios que corren en cada uno, sus correspondientes versiones... etc.
nmap -p53,80,88,135,139,389,445,464,593,636,3268,3269,3389,5985,9389,47001,49664,49665,49666,49668,49669,49670,49671,49673,49677,49683,49695,49789 -sCV $ip -oN servicios
Tras el escaneo podemos resaltar la siguiente información:
Dominio: spookysec.local
Nombre de Dominio: THM-AD
Kerberos
El siguiente paso es añadir el dominio junto a la dirección ip al archivo hosts.
10.10.235.118 spookysec.local
A continuacion voy a enumerar el dominio spookysec.local a través de la utilidad enum4linux.
Enumeración del dominio spookysec.local🕵️
La enumeración en este caso es muy sencilla, solo debemos usar enum4linux y pasarle la dirección ip de la máquina objetivo.
enum4linux $ip
Aparentemente no veo nada que me pueda servir... ningún usuario ni nada útil.
Podríamos también intentar enumerar recursos compartidos, pero no disponemos de usuario ni de contraseña por lo que lo intentaré haciendo uso de la NULL Session.
smbclient -L \\$ip -N
Necesitamos obtener algún usuario y contraseña... por lo que podríamos intentar jugar con kerberos para descubrir usuarios del dominio.
Enumeración de Usuarios con Kerbrute
Para realizar la enumeración de usuarios necesitamos la herramienta kerbrute.py y un listado de usuarios que la propia sala de TryHackMe nos facilita junto a un listado de contraseñas.
En primer lugar vamos a realizar la enumeración de usuarios, aunque es posible realizar la enumeración y el ataque de diccionario a la vez en un mismo comando, pero en mi caso prefiero mostrarlo por partes.
- Enumeración de Usuarios
python3 kerbrute.py -users /home/elc4br4/userlist.txt -domain spookysec.local -t 150
- Tenemos un listado de usuarios válidos del dominio, por lo que ahora realizaremos el ataque de diccionario.
python3 kerbrute.py -users /home/elc4br4/userlist.txt -passwords /home/elc4br4/passwordlist.txt -domain spookysec.local
Pero no encuentra ninguna contraseña válida, por lo que podríamos probar algo...
Explotación - ASREPRoast Attack
El ataque ASREPRoast es una técnica parecida a Kerberoasting que intenta crackear offline las contraseñas de los usuarios de servicio pero las de los que tienen el atributo DONT_REQ_PREAUTH, es decir, los que no se les requiere pre-autenticación en kerberos.
De esta forma el KDC devolverá un TGT cifrado y y podremos hacerle fuerza bruta de forma offline.
Y tenemos el usuario svc-admin con el atributo NOT PREAUTH por lo que realizaremos el ataque usando este usuario.
Para ello seguimos estos pasos:
- Con la herramienta GetNPUsers.py lanzamos el ataque.
GetNPUsers.py spookysec.local/svc-admin -no-pass
- Una vez hemos obtenido el TGT cifrado debemos meterlo en un archivo y craquearlo, ya sea con hashcat o con john the ripper.
hashcat -m 18200 --force -a 0 hash /opt/rockyou.txt
svc-admin:management2005
A continuación podríamos probar a listar los recursos SMB ya que ya tenemos credenciales.
Y encuentro el recurso backup.
Por lo que procedo a acceder al recurso y ver que hay dentro del mismo.
Encontramos un archivo de texto llamado backup_credentials.txt que me descargo.
Lo abro y veo una cadena encodeada en base64, por lo que la descifro.
DCSync - Volcado de Hashes
De nuevo tenemos unas credenciales, por lo que podríamos intentar obtener todos los hashes de los usaurios del dominio con la utilidad secretsdump.py.
Para obtener estos hashes vamos a utilizar la técnica DCSync que se utiliza para pedir las claves de cualquier usuario a un controlador del dominio a través del protocolo de replicación (DRSUAPI).
secretsdump.py -just-dc backup@10.10.183.243
Llegados a este punto podríamos intentar craquear el hash del usuario Administrador o hacer PASS THE HASH y conectarnos a la máquina con Evil-WinRM
evil-winrm -i 10.10.183.243 -u Administrator -H 0e0363213e37b94221497260b0bcb4fc
Otra opción para conectarnos sería usando la utilidad psexec.py.
Y con esto doy por finalizado el laboratorio Attacktive Directory.