Cyber Range (SCADA + MODBUS)

Емулятор SCADA/Modbus TCP

Цей емулятор призначений для Live Fire cyber range як контрольований OT/ICS endpoint, який використовує Modbus TCP і створює телеметрію для моніторингу, threat hunting, incident response та after-action review.

І емулятор, і консоль оператора написані на PowerShell 🙂

Консоль оператора має вигляд:

GUI циклічно читає рівень резервуара, температуру, тиск, alarm status, setpoint і стан coils. Центральна мнемосхема показує резервуар, труби, насос і клапани. Оператор може:

  • перемикати насос;
  • відкривати або закривати inlet/outlet valve;
  • вмикати manual mode;
  • скидати alarm;
  • змінювати level setpoint;
  • задавати бажану температуру;
  • перемикати heater mode між “AUTO”, “ON” і “OFF”.

На мнемосхемі:

  • рівень води в резервуарі змінюється відповідно до register “0”;
  • inlet/outlet valves зелені, коли відкриті, і червоні, коли закриті;
  • насос позначається зеленим станом, коли coil “0” активний;
  • alarm badge стає червоним при high/low level alarm;
  • manual/auto mode показується окремим індикатором;
  • heater indicator показує, чи обігрівач фактично гріє.

Карта Modbus

Coils

Адреса Назва Опис
0 Pump Run Command Команда запуску насоса
1 Inlet Valve Open Команда відкриття вхідного клапана
2 Outlet Valve Open Команда відкриття вихідного клапана
3 Alarm Reset Скидання аварії, якщо рівень повернувся до норми
4 Manual Mode Вимикає автоматичне керування setpoint

Discrete Inputs

Адреса Назва Опис
0 High Level Alarm Рівень резервуара вище порогу
1 Low Level Alarm Рівень резервуара нижче порогу
2 Pump Feedback Стан насоса
3 Manual Mode Feedback Ознака ручного режиму
4 Heater Feedback Фактичний стан обігрівача

Holding Registers

Адреса Назва Опис
0 Tank Level Percent Поточний рівень резервуара, 0-100
10 Alarm Status 0 normal, 1 high level, 2 low level
20 Level Setpoint Цільовий рівень для автоматичного режиму
21 Temperature Setpoint C x10 Бажана температура у десятих частках градуса
22 Heater Mode 0 auto, 1 on, 2 off

Input Registers

Адреса Назва Опис
0 Tank Level Percent Поточний рівень резервуара, 0-100
1 Temperature C x10 Температура у десятих частках градуса
2 Pressure kPa Тиск у кПа

Підтримувані функції Modbus

  • "01" Read Coils
  • "02" Read Discrete Inputs
  • "03" Read Holding Registers
  • "04" Read Input Registers
  • "05" Write Single Coil
  • "06" Write Single Register
  • "15" Write Multiple Coils
  • "16" Write Multiple Registers

Приклади перевірки

З клієнта Modbus прочитайте holding register 0 для Unit ID 1`, щоб отримати рівень резервуара.