# 5985,5986 - Pentesting WinRM
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
**HackenProof é o lar de todas as recompensas por bugs de criptografia.**
**Seja recompensado sem atrasos**\
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
**Adquira experiência em pentesting web3**\
Protocolos de blockchain e contratos inteligentes são a nova Internet! Domine a segurança web3 em seus dias de ascensão.
**Torne-se a lenda do hacker web3**\
Ganhe pontos de reputação com cada bug verificado e conquiste o topo do leaderboard semanal.
[**Cadastre-se no HackenProof**](https://hackenproof.com/register) comece a ganhar com seus 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) é um protocolo da Microsoft que **permite o gerenciamento remoto de máquinas Windows** por meio de HTTP(S) usando SOAP. Nos bastidores, ele utiliza o WMI, então você pode pensar nele como uma API baseada em HTTP para o WMI.
Se o WinRM estiver habilitado na máquina, é trivial administrar remotamente a máquina a partir do PowerShell. Na verdade, você pode simplesmente entrar em uma sessão remota do PowerShell na máquina (como se estivesse usando SSH!)
A maneira mais fácil de detectar se o WinRM está disponível é verificando se a porta está aberta. O WinRM ouvirá em uma das duas portas:
* **5985/tcp (HTTP)**
* **5986/tcp (HTTPS)**
Se uma dessas portas estiver aberta, o WinRM está configurado e você pode tentar entrar em uma sessão remota.
## **Iniciando uma sessão WinRM**.
Podemos configurar o PowerShell para trabalhar com o WinRM. De acordo com a documentação da Microsoft, Enable-PSRemoting é um cmdlet que configura o computador para receber comandos remotos do PowerShell. Se tivermos acesso a um prompt de PowerShell elevado na vítima, podemos habilitá-lo e adicionar qualquer "atacante" como hosts confiáveis. Podemos executar os seguintes dois comandos:
```
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Isso adiciona um caractere curinga à configuração trustedhosts. Tenha cuidado com o que isso implica. _Observação: também tive que alterar o tipo de rede na minha máquina de ataque de "Pública" para "Rede de trabalho"._
Você também pode **ativar** o WinRM **remotamente** _usando o _wmic_:
```
wmic /node: process call create "powershell enable-psremoting -force"
```
### Testar se está configurado
Uma vez que a máquina de ataque está configurada, use a função `Test-WSMan` para testar se o alvo está configurado para o WinRM. Você deve ver algumas informações retornadas sobre a versão do protocolo e o wsmid:
![](<../.gitbook/assets/image (161) (1).png>)
![](<../.gitbook/assets/image (162).png>)
Neste caso, o primeiro está configurado e o segundo não.
### Executar um comando
Agora podemos usar o `Invoke-Command` do PowerShell para executar remotamente um comando no alvo através do WinRM. Para executar remotamente o comando `ipconfig` e ver a saída:
```
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
```
![](<../.gitbook/assets/image (163) (1).png>)
Você também pode **executar um comando do seu console PS atual via** _**Invoke-Command**_. Suponha que você tenha localmente uma função chamada _**enumeration**_ e queira **executá-la em um computador remoto**, você pode fazer:
```ruby
Invoke-Command -ComputerName -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
To execute a script using WinRM, you can use the `Invoke-Command` cmdlet in PowerShell. This cmdlet allows you to run commands or scripts on remote Windows machines.
Here is an example of how to execute a script using WinRM:
```powershell
Invoke-Command -ComputerName -ScriptBlock {