# 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 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 {