RECONOCIMIENTO — Escaneo de puertos
Se lanza un escaneo con nmap para ver los puertos que tiene abiertos la máquina.
| PUERTO | ESTADO | SERVICIO |
|---|---|---|
| 53/tcp | OPEN | domain |
| 80/tcp | OPEN | http |
| 88/tcp | OPEN | kerberos-sec |
| 135/tcp | OPEN | msrpc |
| 389/tcp | OPEN | ldap |
| 445/tcp | OPEN | microsoft-ds |
| 464/tcp | OPEN | kpasswd5 |
| 593/tcp | OPEN | ncacn_http |
| 3268/tcp | OPEN | globalcatLDAP |
88 (Kerberos), 389 (LDAP) y 445 (SMB) abiertos, es evidente que la máquina es un controlador de dominio de Active Directory. El dominio identificado es EGOTISTICAL-BANK.LOCAL.
ENUMERACIÓN WEB — Nombres de empleados
Como no hay nada más por ahora, se revisa la web por el puerto 80. En la sección "About Us" se encuentran los nombres completos de varios trabajadores de la empresa.
Se crea un fichero employees.txt con los nombres y apellidos, y se usa username anarchy para generar todas las combinaciones posibles de nombres de usuario.
AS-REP ROASTING — Usuario sin preautenticación
Con la lista de posibles usuarios generada, se lanza un ataque de AS-REP Roasting usando impacket contra el dominio.
fsmith tiene desactivada la preautenticación Kerberos, lo que permite obtener su hash sin necesidad de credenciales previas.
Se intenta crackear el hash obtenido con hashcat contra el diccionario rockyou.txt.
fsmith es Thestrokes23.
ACCESO INICIAL — Shell como fsmith
Con las credenciales fsmith:Thestrokes23 se establece conexión con evil-winrm.
La conexión es exitosa. Se usa ParsingPEAS para enumerar el sistema en busca de vectores de escalada de privilegios o credenciales adicionales.
svc_loanmanager tiene la contraseña Moneymakestheworldgoround! almacenada en un atributo de LDAP, probablemente dejada ahí durante la creación de la cuenta.
Se prueba esta contraseña contra el usuario real svc_loanmgr del dominio, y funciona correctamente.
BLOODHOUND — Mapeo de permisos en el dominio
Con dos cuentas de dominio válidas, se recopila información con bloodhound-python para mapear las relaciones y permisos dentro del Active Directory.
Se suben los datos recopilados a la interfaz de BloodHound para analizar el grafo de permisos.
svc_loanmgr tiene los privilegios GetChangesAll y GetChanges sobre el objeto del dominio, lo que permite replicar el contenido del Active Directory como si fuera un controlador de dominio — un ataque DCSync.
DCSYNC — Volcado de hashes del dominio
Con los permisos GetChangesAll confirmados, se lanza el ataque DCSync con impacket-secretsdump para volcar todos los hashes NTLM del dominio, incluyendo el del Administrador.
MS-DRSR) que usan los controladores de dominio entre sí para sincronizar datos. Cualquier cuenta con los permisos GetChanges y GetChangesAll puede solicitar a un DC que le "replique" las credenciales de cualquier usuario del dominio, incluido el Administrador, sin necesidad de ejecutar código en el propio DC.
Administrator: 823452073d75b9d1cf70ebdf86c7f98e.
Con el hash del Administrador se realiza un ataque Pass-The-Hash para autenticarse sin necesidad de conocer la contraseña en texto claro.
La conexión se establece correctamente con privilegios de Administrador del dominio.
CADENA DE ATAQUE
fsmith tiene la preautenticación Kerberos desactivada → hashcat crackea el hash → fsmith:Thestrokes23fsmith → ParsingPEAS encuentra la contraseña de svc_loanmanager en LDAP → reutilizada en svc_loanmgr:Moneymakestheworldgoround!svc_loanmgr tiene GetChangesAll sobre el objeto de dominioroot.txt