Port 5985 · WinRM (HTTP)

All network ports
Remote access · Registered5985/tcp

Port / TCP

5985WinRM (HTTP)

Windows Remote Management over HTTP, the transport behind PowerShell Remoting and much Windows automation.

If it is internet-facing: Finding 5985 open to the internet is a finding in its own right — it warrants an explanation, not just a rule.

Exposure

Trusted network only

Transport

Encryption optional

Risk if public

High

Exposure verdict

ReachTrusted network only

Port 5985 belongs on a trusted internal network. If a perimeter scan finds it answering, treat that as a firewall defect rather than a configuration preference.

TransportEncryption optional

Encryption is available but negotiated or configured rather than guaranteed. A client that does not insist on it will silently fall back to plaintext.

RangeRegistered (1024–49151)

Registered with IANA on request, but bindable by any unprivileged user. Registration records intent — it does not reserve the port, so collisions between products are common.

FamilyRemote access

Grouped with the other remote access ports so a rule written for one can be checked against its neighbours.

What actually goes wrong

2 notes
  • The payload is encrypted by the Kerberos or NTLM negotiation rather than by TLS, so the transport is still HTTP.
  • WinRM access is remote command execution as the authenticating user — treat it exactly like SSH.

Recommended firewall rule

Allow only from 10.0.0.0/8, drop the rest

Swap in the CIDR your administrators or application tier actually come from — the point is that the default answer is no.

ufw

sudo ufw allow from 10.0.0.0/8 to any port 5985 proto tcp

iptables

sudo iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 5985 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5985 -j DROP

If you do need it open to everyone

sudo ufw allow 5985/tcp

Write down why. An unexplained allow rule outlives the person who added it, and the next reviewer has no way to tell a deliberate exception from an accident.

Check what is really there

Listening locally

sudo ss -tlpn 'sport = :5985'

The bind address is the answer that matters: 127.0.0.1 is local-only, 0.0.0.0 and :: mean every interface.

Listening (macOS)

sudo lsof -nP -iTCP:5985 -sTCP:LISTEN

macOS ships lsof rather than ss; this names the owning process and user.

From outside

nmap -sV -Pn -p 5985 <host>

A version probe confirms whether WinRM (HTTP) is actually what answers, rather than trusting the number. Only scan hosts you are authorised to test.

Reachability

nc -vz <host> 5985

The quick yes/no when you only need to know whether a path exists through the firewall.

The safer path

port 5986

Move to port 5986 — WinRM (HTTPS)

WinRM (HTTPS) does the same job with the session protected from the first byte, so there is no plaintext phase for an on-path attacker to read or strip. Migrating is usually a client configuration change plus a firewall swap.

Nearby and related ports

8
ProtocolTCP
Rangeregistered
Transportopportunistic
Exposureprivate