Windows Remote Management
Windows Remote Management #
- Permet executar remots comandes o scripts (principalment PowerShell) en equips Windows sobre HTTP/HTTPS
- WinRM implementa WS-Management (SOAP sobre HTTP/HTTPS) per a gestió remota de Windows.
- Ports per defecte: 5985/tcp (HTTP), 5986/tcp (HTTPS).
- Suporta Kerberos i NTLM
- Kerberos: reutilitza el servei d’autenticació del domini; és segur i habitual en entorns AD. Requereix que client/servidor puguin validar tickets.
- NTLM: autenticació challenge–response usada sovint amb equips fora de domini o quan Kerberos no és possible. Pot permetre tècniques com pass-the-hash si es disposa de hashes.
- Basic: envia credencials en base64; només segur si es fa sobre HTTPS. Normalment està deshabilitat per polítiques.
Enumeració #
- amb nmap
nmap -sV -p 5985,5986 <IP>
- amb powershell
Test-WSMan -ComputerName <IP>
- amb curl
curl -i http://<IP>:5985/wsman
Comandes WinRM / PowerShell des d’una màquina Windows #
Mostrar listeners
winrm enumerate winrm/config/listener
veure la configuració del servei
winrm get winrm/config/service
Mostrar autentificacions permeses
winrm get winrm/config/service/auth
Eines per auditar #
| Eina | Objectiu |
|---|---|
| pywinrm | executar comandes remotes via WinRM des d’un script Python. |
| crackmapexec (cme) | proves massives d’autenticació i alguns mòduls d’enumeració. |
| evil-winrm | client interactiu |
pywinrm #
Exemple.
( cal instal·lar pip install pywinrm )
import winrm
s = winrm.Session('http://<IP>:5985/wsman', auth=('user','pass'))
r = s.run_cmd('whoami')
print(r.std_out.decode())
evil-winrm #
Us bàsic
evil-winrm -i <IP> -u <USER> -p <PASS>
si el servidor accepta NTLM i es possible fer un Pass-the-Hash es pot fer amb -H hash NTLM (Pass-the-Hash)
- Té les comandes propies upload i downloads
- Pots enviar scripts amb base64 per ofuscarlos
- Per evitar que revisi el contingut del que executes
powershell -ExecutionPolicy Bypass -File fitxer