Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Path: blob/master/documentation/modules/auxiliary/scanner/scada/profinet_siemens.md
Views: 11789
Siemens Industrial controllers and most other industrial OEMs use a proprietary protocol to discover their devices across a network. In the case of Siemens this is called the Profinet Discover Protocol. Known in Wireshark as PN_DCP
It works purely on Layer 2 (Ethernet addresses) and sends out a single multicast packet (making it safe to use in sensitive networks). Each profinet enabled responds with an array of information:
Its IP address, Subnetmask and Gateway
Its Profinet Devicename ('Station Name')
The Type of station
A Vendor ID (e.g. '002a'), signifing the vendor (e.g. 'Siemens')
A Device Role (e.g. '01'), signifing the type of device (e.g. 'IO-Controller')
A Device ID (e.g. '010d'), signifing the device type (e.g. 'S7-1200')
Vulnerable Application
This is a hardware choice of design, and as such CANNOT be changed without loss of compatibility. Possible mitigations include: pulling the plug (literally), using network isolation (Firewall, Router, IDS, IPS, network segmentation, etc...) or not allowing bad people on your network.
Most, if not all, PLC's (computers that control engines, robots, conveyor belts, sensors, camera's, doorlocks, CRACs ...) have vulnerabilities where, using their own tools, remote configuration and programming can be done WITHOUT authentication. Investigators and underground hackers are just now creating simple tools to convert the, often proprietary, protocols into simple scripts. The operating word here is "proprietary". Right now, the only thing stopping very bad stuff from happening.
Verification Steps
The following demonstrates a basic scenario, we "detect" two devices:
Options
By default, the module uses interface 'eth0', there is a check to see if it is live.
The module will send out an ethernet packet and wait for responses. By default, it will wait 2 seconds for any responses, this is long enough for most networks. Increase this on larger and/or slower networks, it just increases the wait time.