WinRM HTTPS TLS Validation
WinRM over HTTPS on 5986 is usually the preferred deployment. The vulnerability work is in the TLS layer: weak protocol support, weak ciphers, broken certificate trust, and name mismatches.
Start by pulling the certificate and handshake details.
Explain command
| -connect $TARGET_IP:5986 | Connects to the specified host and port for TLS/SSL testing |
| -servername $DOMAIN | Specifies the SNI hostname to request from the server |
| </dev/null | Redirects empty input to stdin, closing connection immediately |
This gives you the server certificate, issuer, validity window, selected cipher, and handshake outcome. You are looking for anything that weakens identity or transport protection:
expired certificate
self-signed certificate where enterprise trust is expected
common name or subject alternative name mismatch
TLS 1.0 or 1.1 support
weak ciphers
Enumerate supported TLS versions and ciphers
Use Nmap to map the full HTTPS posture.
| ssl-enum-ciphers: | TLSv1.0: | ciphers: | TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Explain command
| -Pn | Skip ping discovery; treat host as online |
| -p 5986 | Scan only port 5986 |
| --script ssl-cert,ssl-enum-ciphers | Run NSE scripts to extract SSL cert and enumerate ciphers |
| $TARGET_IP | Target IP address or hostname to scan |
ssl-cert surfaces certificate details. ssl-enum-ciphers shows what protocol versions and cipher suites the listener accepts.
If TLS 1.0 is enabled or 3DES and static RSA suites are accepted, the service is behind current hardened baselines. That is enough to document even if stronger ciphers also exist.
Check certificate name and trust expectations
If the certificate does not match the hostname operators actually use, users often bypass warnings. That turns HTTPS into checkbox security.
Inspect the certificate fields directly:
Explain command
| -connect $TARGET_IP:5986 | Connect to target IP and port 5986 |
| -servername $DOMAIN | Set SNI hostname for the connection |
| </dev/null | Redirect stdin from /dev/null to close connection |
| 2>/dev/null | Discard stderr output |
| -noout | Do not output the certificate itself |
| -subject | Display certificate subject |
| -issuer | Display certificate issuer |
| -dates | Display certificate validity dates |
| -ext subjectAltName | Display subject alternative names extension |
What changes your next move:
If the certificate is self-signed on an internal lab host, note it but weigh the exposure realistically.
If the certificate is self-signed or mismatched on production admin infrastructure, document it as a trust-model failure.
If the certificate is expired, operators are likely ignoring validation errors already.
Confirm the listener is actually WinRM
Do not assume every HTTPS service on 5986 is configured correctly. Confirm it is the WSMan endpoint.
Explain command
| -s | Silent mode; do not show progress meter or error information. |
| -k | Allow insecure SSL/TLS connections without certificate verification. |
| -i | Include response headers in output. |
| $TARGET_IP:5986 | Target IP address and port for the HTTPS request. |
| /wsman | URI path for Windows Remote Management service endpoint. |
A 401 or 405 with WinRM-style headers is enough. If the certificate is weak and the listener also advertises Basic authentication, combine both issues in one finding chain because the TLS weakness directly affects credential safety.
Fast protocol checks with OpenSSL
When you want a quick yes or no on legacy protocol support:
Explain command
| -connect | Specifies the server hostname and port to connect to |
| $TARGET_IP:5986 | Target IP address and WinRM-HTTPS port placeholder |
| -tls1 | Forces TLS version 1.0 for the connection |
| -tls1_1 | Forces TLS version 1.1 for the connection |
| -tls1_2 | Forces TLS version 1.2 for the connection |
| </dev/null | Redirects null input to stdin to close connection immediately |
A successful handshake on -tls1 or -tls1_1 is usually enough to call out legacy protocol support.
What the output changes
If only TLS 1.2 or better is enabled and the certificate is valid:
HTTPS is probably not the weak point.
Move to authorization checks and auth method review.
If legacy TLS is enabled:
Document the protocol and any weak ciphers.
Check whether WinRM is exposed only internally or across broader network segments.
If the certificate is mismatched, expired, or self-signed in a place where enterprise trust should exist:
Document user validation bypass risk.
Re-check whether Basic authentication is also enabled.
Legacy scanners
Warning
sslscan is still useful, but Nmap ssl-enum-ciphers and OpenSSL are usually enough for WinRM checks and fit better into standard operator workflows.
References
-
ssl-enum-ciphers NSE Scriptnmap.org/nsedoc/scripts/ssl-enum-ciphers.html (opens in new tab)
Enumerate TLS versions and ciphers
-
ssl-cert NSE Scriptnmap.org/nsedoc/scripts/ssl-cert.html (opens in new tab)
Extract certificate details
-
openssl-s_clientdocs.openssl.org/master/man1/openssl-s_client (opens in new tab)
TLS handshake and certificate inspection
Was this helpful?
Your feedback helps improve this page.