Common attacks and weaknesses
- Unauthenticated commands to outstations without Secure Authentication.
Distributed Network Protocol used by utilities (power, water).
A controller sends commands to an industrial device on port 20000, which acts on the physical process. It travels in clear text: anyone on the path can read it.
| Service | Port | Transport | Description | Reference | Updated |
|---|---|---|---|---|---|
| dnp | 20000 | TCP, UDP, SCTP | DNP | - | - |
// source: IANA service name and port number registry
Linux
sudo ss -ltnup 'sport = :20000' # process listening on 20000
sudo lsof -nP -i :20000macOS
sudo lsof -nP -i :20000
Windows (PowerShell)
Get-NetTCPConnection -LocalPort 20000 -State Listen | Select LocalAddress, OwningProcess Get-NetUDPEndpoint -LocalPort 20000 netstat -ano | findstr :20000
From another machine
nmap -p 20000 -sV <host> sudo nmap -sU -p 20000 <host> nc -zv <host> 20000
Block it in the firewall
sudo ufw deny 20000/tcp # Linux (ufw) New-NetFirewallRule -DisplayName "Block 20000" -Direction Inbound -LocalPort 20000 -Protocol TCP -Action Block # Windows
Distributed Network Protocol used by utilities (power, water).
Port 20000 is registered for TCP and UDP and SCTP. In practice the service mostly uses TCP and UDP.
It is rated 9/10 (critical) when exposed to the Internet. Unauthenticated commands to outstations without Secure Authentication. Segment SCADA networks and use DNP3 Secure Authentication.
On Linux run "ss -ltnup 'sport = :20000'", on macOS "lsof -nP -i :20000", and on Windows "netstat -ano | findstr :20000" to see the local process. From another machine, "nmap -p 20000 <host>" shows whether it is reachable.