Handout A: SCADA Diagnostic Output
Captured from the WinCC operator console during centrifuge array diagnostics, June 2010. The displayed frequency readings should match the physical behavior of the centrifuge drive system. Examine both the operator view and the raw PLC register dump.
Operator Console Display
Siemens WinCC v5.0 - Process Overview
=====================================
Centrifuge Array Status Report
Generated: 2010-06-15 14:23:47 UTC
CENTRIFUGE UNIT ARRAY (P-1/P-2 Cascades):
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Unit ID | Status | Frequency | Feed Press | Product Conc. | Feed Rate
βββββββββΌβββββββββββββΌββββββββββββΌβββββββββββΌβββββββββββββββΌββββββββββ
P-1-001 | RUNNING | 1064 Hz | 2.3 bar | 4.2% U-235 | 2.1 STP
P-1-002 | RUNNING | 1064 Hz | 2.2 bar | 4.3% U-235 | 2.0 STP
P-1-003 | RUNNING | 1064 Hz | 2.1 bar | 4.1% U-235 | 2.1 STP
P-1-004 | RUNNING | 1064 Hz | 2.3 bar | 4.2% U-235 | 2.1 STP
P-2-001 | RUNNING | 1064 Hz | 1.9 bar | 2.1% U-235 | 1.0 STP
P-2-002 | RUNNING | 1064 Hz | 2.0 bar | 2.2% U-235 | 1.1 STP
P-2-003 | RUNNING | 1064 Hz | 1.8 bar | 2.0% U-235 | 0.9 STP
All Units: NORMAL OPERATION (Target: 1064 Hz nominal frequency)
IM NOTES (Do Not Show to Players): This is the operator view. All frequencies show 1064 Hz (nominal). This is what the operators see β everything appears normal. But this is the deception at the heart of Stuxnet.
PLC Memory Register Dump (Raw Values)
[CONFIDENTIAL] Siemens S7-300 PLC Register Export
Generated: 2010-06-15 14:23:47 UTC
DB Block 100 - Frequency Controller Parameters:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Memory Address | Register | Current Value | Description
ββββββββββββββββΌβββββββββββΌβββββββββββββββΌβββββββββββββββββββββββββββββ
0x1200 | DB1 | 0x042C | [ACTIVE MODE OVERRIDE]
0x1202 | DB2 | 0x057E | Current Freq Output: 1410 Hz (ATTACK: OVERSPEED)
0x1204 | DB3 | 0x0001 | Mode Flag: ATTACK MODE ENABLED
0x1206 | DB4 | 0x0000 | Reserved
0x1208 | DB5 | 0x03E8 | Reported Freq to SCADA: 1064 Hz (DISPLAY VALUE)
0x120A | DB6 | 0x0000 | Checksum: MODIFIED
[Timeline Log - Last 6 Hours]
Time | Reported Freq | Actual Output | Status
βββββββββββββΌββββββββββββββββΌβββββββββββββββΌββββββββββββββ
10:00 UTC | 1064 Hz | 1064 Hz | NORMAL
11:30 UTC | 1064 Hz | 1410 Hz | ATTACK MODE TRIGGERED
12:15 UTC | 1064 Hz | 1410 Hz | OVERSPEED PHASE
13:45 UTC | 1064 Hz | 0002 Hz | UNDERSPEED PHASE
14:23 UTC | 1064 Hz | 0002 Hz | HOLDING UNDERSPEED
IM NOTES (Do Not Show to Players): This is the raw PLC memory. The key values:
- Actual output (0x057E = 1410 Hz, 0x0002 = 2 Hz) does NOT match reported frequency
- Reported to SCADA (0x03E8 = 1064 Hz) is hardcoded to match nominal speed
- Mode flag (0x0001) indicates attack code is running
- The centrifuges experience extreme overspeed (1410 Hz = ~33% over nominal) which causes intense vibration and bearing stress, then underspeed (2 Hz near stall) which causes thermal stress. This cycle destroys centrifuges physically without being detected by operators.
This is the documented behavior reported by Ralph Langnerβs analysis: Stuxnet maintained normal reported frequencies while running the centrifuges at destructive speeds. The attacker had detailed knowledge of the exact centrifuge specifications and control system architecture.
Key Discovery Questions
- What is the relationship between the βReported Frequencyβ and βActual Outputβ?
Players should recognize that someone or something is intercepting sensor data or falsifying PLC registers to show operators one value while the actual control output is completely different.
- How would an operator detect this discrepancy using only the WinCC console?
They canβt β if the SCADA system is also compromised or if the false data is injected at the PLC level, the operator sees only what the compromised PLC reports. This is why critical facilities need out-of-band monitoring (independent sensors, physical indicators).
- What physical damage would result from the frequency patterns shown in the register dump?
Stuxnetβs actual attack sequence:
- Overspeed phase (1410 Hz): Causes rotor imbalance and bearing wear. The centrifuges rattle and vibrate internally.
- Underspeed phase (2 Hz): Near total stall causes thermal stress and material degradation.
- Repeated cycles: Over weeks, the physical stress accumulates until centrifuges catastrophically fail.
This is deliberate and precise β itβs designed to destroy the equipment while looking like mechanical failure, not attack.
IM Facilitation Notes
Use this handout when players discover system logs showing normal operation but suspect something is wrong. It helps them understand:
- Deception at multiple levels: The attacker controls both the output AND the reporting mechanism
- Air-gap irrelevance: The SCADA network can be air-gapped, but if the PLCs themselves are compromised, air-gapping doesnβt help
- Insider knowledge: Destroying centrifuges this way requires knowing exact specifications and failure modes
- Nation-state indicators: The sophistication of falsifying sensor data at the PLC level while simultaneously controlling physical outputs points to extremely advanced attacker capabilities