WinRM over SSL/TLS with certificate authentication
WinRM (Windows Remote Management) es el servicio que permite administrar Windows de forma remota; es lo que hay detrás de PowerShell Remoting. Escucha en dos puertos: 5985/tcp para HTTP (sin cifrar) y 5986/tcp para HTTPS (cifrado con SSL/TLS). Ver el 5986 abierto es un indicio de que la máquina admite la variante segura.
Lo habitual es autenticarse en WinRM con usuario y contraseña o con un NT hash (pass-the-hash). Pero la variante sobre SSL/TLS admite además un mecanismo distinto: la autenticación por certificado de cliente. En lugar de una credencial, el cliente presenta un certificado y su clave privada; si el certificado está mapeado a una cuenta del dominio, el servidor da por válida la identidad sin pedir contraseña.
Detección del servicio
nmap -p5985,5986 -sV <ip> # ¿WinRM HTTP/HTTPS abierto?
netexec winrm <ip> -u '' -p '' # confirma WinRM y el modo de authFlujo con un .pfx
Cuando aparece un fichero .pfx (contenedor PKCS#12 que empaqueta clave privada + certificado, normalmente protegido por contraseña), es candidato directo a este acceso:
- Extraer la clave y el certificado con
openssl(si el.pfxestá protegido, primero crackear su contraseña):
openssl pkcs12 -in user.pfx -nocerts -out priv-key.pem -nodes
openssl pkcs12 -in user.pfx -nokeys -out certificate.pem- Presentarlos a WinRM con
evil-winrm, indicando-S(SSL) y las rutas del certificado y la clave:
evil-winrm -i <ip> -c certificate.pem -k priv-key.pem -SSi el certificado está mapeado a un usuario válido, se obtiene una sesión interactiva de PowerShell como ese usuario, sin haber conocido nunca su contraseña. (Si en cambio lo que se tiene es la contraseña o el hash del usuario, el mismo evil-winrm entra con -u/-p o -H.)
Requisitos
WinRM sobre HTTPS (5986) habilitado y con mapeo de certificados de cliente activo, y poseer un certificado de cliente con su clave privada mapeado a una cuenta del dominio (típicamente sacado de un .pfx). El certificado equivale a la credencial de esa cuenta.
Cómo detectarlo. La conexión entrante deja un Event ID 4624 de tipo 3 (red) en el host destino, con Logon Process Kerberos/Schannel y el Authentication Package del canal TLS, hacia el puerto 5986. WinRM registra además la actividad en el log operacional Microsoft-Windows-WinRM/Operational (creación de shell remota, Event ID 91/168). La señal es un logon por WinRM/HTTPS con certificado para una cuenta que normalmente no se administra así, o desde una IP externa al rango de administración. Como el atacante suele venir de un .pfx robado, correlacionar el acceso al fichero (un .pfx leído de un share) con una sesión WinRM posterior de ese mismo usuario refuerza la detección.
Defensa. Un certificado y su clave privada son, a efectos prácticos, una credencial: hay que custodiarlos igual que una contraseña (no dejar .pfx en recursos compartidos), restringir qué cuentas admiten mapeo de certificado a WinRM y auditar la emisión de certificados de cliente. Encadena con el crackeo de .pfx y la reutilización de credenciales.
Máquinas donde se aplica
- TimelapseHackTheBox