How Modbus works
Modbus operates on a master/slave model. A master device (typically a SCADA system or HMI) sends requests to slave devices (PLCs, sensors). Slaves respond with data or execute commands. Modbus TCP runs over standard Ethernet on port 502. The protocol has no built-in authentication, encryption, or authorization. Any device that can reach a Modbus slave on port 502 can read sensor values, write coil states, or issue control commands. Key function codes:FC01— Read Coils (digital outputs)FC02— Read Discrete Inputs (digital inputs)FC03— Read Holding Registers (analog values, configuration)FC04— Read Input RegistersFC05— Write Single CoilFC06— Write Single RegisterFC16— Write Multiple Registers
Why attackers target Modbus
The combination of ubiquity, no authentication, and direct physical control makes Modbus uniquely dangerous. An attacker who reaches a Modbus-exposed PLC can:- Read process values (temperatures, pressures, flow rates) for reconnaissance
- Write register values to alter setpoints
- Toggle coil states to activate or deactivate physical equipment
- Issue commands that cause physical damage (as demonstrated by Stuxnet)
What Reyhford observes
Modbus (port 502) is the highest-volume ICS protocol in our honeypot network. Our sensors observe:- Reconnaissance scanning — FC03 read requests probing register ranges to fingerprint device type and extract configuration
- Function code enumeration — systematic testing of all function codes to identify supported operations
- Write attempts — FC06 and FC16 write requests attempting to modify register values
- Global source distribution — scanning originates from infrastructure across Asia, Europe, and North America simultaneously