# 5985,5986 - Pentesting WinRM
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
**HackenProof es el hogar de todas las recompensas por errores de criptografía.**
**Obtén recompensas sin demoras**\
Las recompensas de HackenProof se lanzan solo cuando sus clientes depositan el presupuesto de recompensa. Obtendrás la recompensa después de que se verifique el error.
**Obtén experiencia en pentesting web3**\
¡Los protocolos blockchain y los contratos inteligentes son el nuevo Internet! Domina la seguridad web3 en sus días de crecimiento.
**Conviértete en la leyenda del hacker web3**\
Gana puntos de reputación con cada error verificado y conquista la cima de la clasificación semanal.
[**Regístrate en HackenProof**](https://hackenproof.com/register) ¡comienza a ganar con tus hacks!
{% embed url="https://hackenproof.com/register" %}
## WinRM
[Windows Remote Management](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx) (WinRM) es un protocolo de Microsoft que **permite la administración remota de máquinas Windows** a través de HTTP(S) utilizando SOAP. En el backend, utiliza WMI, por lo que se puede pensar en él como una API basada en HTTP para WMI.
Si WinRM está habilitado en la máquina, es trivial administrarla de forma remota desde PowerShell. De hecho, puedes ingresar a una sesión remota de PowerShell en la máquina (¡como si estuvieras usando SSH!)
La forma más sencilla de detectar si WinRM está disponible es verificando si el puerto está abierto. WinRM escuchará en uno de estos dos puertos:
* **5985/tcp (HTTP)**
* **5986/tcp (HTTPS)**
Si uno de estos puertos está abierto, WinRM está configurado y puedes intentar ingresar a una sesión remota.
## **Iniciando una sesión de WinRM**.
Podemos configurar PowerShell para trabajar con WinRM. Según la documentación de Microsoft, Enable-PSRemoting es un cmdlet que configura la computadora para recibir comandos remotos de PowerShell. Si tenemos acceso a un símbolo del sistema de PowerShell elevado en la víctima, podemos habilitarlo y agregar cualquier "atacante" como hosts de confianza. Podemos ejecutar los siguientes dos comandos:
```
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Esto agrega un comodín a la configuración de trustedhosts. Ten cuidado con lo que eso implica. _Nota: También tuve que cambiar el tipo de red en mi máquina de ataque de "Pública" a "Red de trabajo"._
También puedes **activar** WinRM de forma **remota** _\*\*\_usando \_wmic_:
```
wmic /node: process call create "powershell enable-psremoting -force"
```
### Prueba si está configurado
Una vez que la máquina de ataque esté configurada, utiliza la función `Test-WSMan` para comprobar si el objetivo está configurado para WinRM. Deberías ver información devuelta sobre la versión del protocolo y wsmid:
![](<../.gitbook/assets/image (161) (1).png>)
![](<../.gitbook/assets/image (162).png>)
En este caso, el primero está configurado y el segundo no lo está.
### Ejecutar un comando
Ahora podemos utilizar el comando `Invoke-Command` de PowerShell para ejecutar de forma remota un comando en el objetivo a través de WinRM. Para ejecutar de forma remota `ipconfig` y ver la salida:
```
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
```
![](<../.gitbook/assets/image (163) (1).png>)
También puedes **ejecutar un comando de tu consola PS actual a través de** _**Invoke-Command**_. Supongamos que tienes localmente una función llamada _**enumeration**_ y quieres **ejecutarla en un equipo remoto**, puedes hacerlo de la siguiente manera:
```ruby
Invoke-Command -ComputerName -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
### Ejecutar un Script
To execute a script using WinRM, you can use the `Invoke-Command` cmdlet. This cmdlet allows you to run commands or scripts on remote computers.
```powershell
Invoke-Command -ComputerName -ScriptBlock {