Andrea Pierini Consultor principal de seguridad

Cuando la mayoría de la gente oye hablar de «WinRM sobre HTTP», inmediatamente piensa que es un desastre de seguridad a punto de ocurrir. Al fin y al cabo, llevamos años escuchando que HTTP es malo y HTTPS es bueno.

Pero, en realidad, el uso del protocolo de gestión remota de Windows (WinRM) presenta algunos matices. En muchos entornos, HTTP no es significativamente menos seguro que HTTPS.


El mito del cifrado:
¿Es WinRM sobre HTTP intrínsecamente inseguro?

El mayor error es pensar que WinRM envía datos a través de HTTP sin cifrar. No es así.

De forma predeterminada, WinRM utiliza la autenticación Kerberos o NT LAN Manager (NTLM), y los secretos se emplean para cifrar la carga útil del mensaje en la capa de aplicación, independientemente del protocolo de transporte.

En WinRM, HTTP es simplemente el canal de transporte; la protección mediante cifrado y autenticación se gestiona en la capa de aplicación situada por encima. Un atacante que espíe tu red no verá ni tu comando ni la salida. Tampoco podrá suplantar la autenticación frente al punto final HTTP de WinRM.

WinRM se diseñó teniendo en cuenta esta separación, lo que lo hace fundamentalmente diferente de, por ejemplo, un sitio web que funciona a través de HTTP, donde la carga útil se transmite realmente en texto sin cifrar.


¿Qué aporta realmente el protocolo HTTPS?

HTTPS protege toda la conexión mediante el protocolo TLS (Transport Layer Security), lo que ofrece dos garantías adicionales:

  • cifrado en la capa de transporte
  • autenticación de servidor basada en certificados

El cifrado en la capa de transporte resulta en gran medida redundante, dado que WinRM ya cuenta con cifrado de mensajes integrado.

La validación del certificado es realmente útil. Te ofrece una mayor garantía de que te estás comunicando con el servidor con el que crees que lo estás haciendo, lo que ayuda a protegerte contra ciertos tipos de ataques de intermediario (MiTM) en redes no fiables.

Sin embargo, en una red interna bien gestionada que cuente con controles adecuados de DNS y Active Directory (AD), estas amenazas ya se mitigan de manera significativa por otros medios.


Cuando el uso de WinRM sobre HTTP es perfectamente razonable

En un entorno integrado en un dominio, WinRM sobre HTTP ofrece tres elementos que resultan realmente importantes para una gestión remota segura:

  • Integridad del mensaje
  • Cifrado de mensajes, y un
  • Un cierto grado de autenticación mutua si se utiliza Kerberos

Una advertencia importante: la autenticación básica siempre debe estar desactivada, como ocurre por defecto.

La autenticación básica envía las credenciales sin ninguna protección real y constituiría la única vulnerabilidad real de WinRM sobre HTTP si se dejara activada. Por lo tanto, asegúrate de que permanezca desactivada.

Muchos entornos empresariales consolidados utilizan WinRM sobre HTTP a nivel interno sin que ello suponga un aumento significativo del riesgo. Además, la carga operativa que supone la gestión de certificados para HTTPS puede, de hecho, generar riesgos si no se lleva a cabo correctamente; los certificados caducados, las autoridades de certificación mal configuradas y los procesos de automatización defectuosos son problemas reales que HTTP evita por completo.


¿Cuándo debes usar HTTPS? Lee esto primero

HTTPS es la opción más adecuada cuando se opera en redes no seguras.

Sin embargo, implementar WinRM sobre HTTPS sin configurar correctamente un token de enlace de canal (CBT) puede, de hecho, dejarte en una situación de seguridad peor que con HTTP.

CBT vincula el protocolo de autenticación a un canal TLS específico, lo que impide que un atacante reenvíe las credenciales capturadas para autenticarse en WinRM en nombre del usuario afectado.

El protocolo HTTPS sin un certificado de autenticación (CBT) puede generar una falsa sensación de seguridad. Aunque la conexión está cifrada, la autenticación sigue siendo susceptible de ser reenviada, lo que supone una vulnerabilidad crítica. Sin certificados de autenticación, la autenticación Kerberos y NTLM a través de TLS sigue siendo vulnerable a los ataques de reenvío.

Por el contrario, WinRM sobre HTTP no se ve afectado de la misma manera, ya que el tráfico está protegido por WinRM mediante las claves de autenticación del usuario.

Afortunadamente, Windows habilita los CBT en modo «Relaxed» de forma predeterminada, lo que ofrece protección en la mayoría de los casos.

C:>winrm get winrm/config/service/auth
Auth
Basic = false
Kerberos = true
Negotiate = true
Certificate = false
CredSSP = false
CbtHardeningLevel = Relaxed

Sin embargo, la configuración recomendada es establecer explícitamente los CBT en «Estricto».

C:>winrm set winrm/config/service/auth @{CbtHardeningLevel="Strict"}

Esto garantiza que solo se acepten los intentos de autenticación correctamente vinculados al canal TLS, lo que elimina de hecho la superficie de ataque por retransmisión.


Conclusión: opta deliberadamente por WinRM sobre HTTP

Las decisiones en materia de seguridad deben basarse en modelos de amenazas reales, y no en preferencias protocolarias automáticas.

En un entorno de dominio con Kerberos, utilizar WinRM sobre HTTP no es una configuración imprudente. HTTPS es mejor en redes no confiables, pero solo si se configura correctamente. Una implementación de HTTPS sin que los CBT estén configurados al menos en el nivel predeterminado «Relaxed» —o, idealmente, en «Strict»— podría decirse que es más peligrosa que HTTP, ya que genera una confianza infundada al tiempo que deja abierto un vector crítico de retransmisión de autenticación.

Comprende cómo funciona tu protocolo de autenticación. Comprende la confianza de tu red.