Статья Реагирование на инциденты в промышленных сетях: форензика PLC, TTPs атакующих и восстановление без остановки

Распечатанная форензик-хронология на кремовой бумаге с отмеченным синим маркером кодом Modbus и рукописной пометкой об аномалии. Перьевая ручка лежит поперёк листа в мягком дневном свете.


Понедельник, 9:15 утра. SOC фиксирует аномальный всплеск Modbus-запросов с function code 0x10 (Write Multiple Registers) на участке, где штатный цикл опроса работает через FC 0x03 (Read Holding Registers). Через 12 минут оператор на HMI видит изменение уставок давления в реакторе. Антивирус на инженерной станции молчит - команды отправлены через легитимный TIA Portal. Но инженер, чьи учётные данные использовались, в отпуске уже неделю.

По данным IBM X-Force, 70% атак в 2024 году затронули критическую инфраструктуру. Mandiant M-Trends фиксирует медианное время обнаружения злоумышленника - 11 дней. В OT-среде за 11 дней можно переписать всю логику управления технологическим процессом. Ни один IT-ориентированный playbook к этому не готов.

Чем реагирование на инциденты ICS SCADA отличается от IT​

Реагирование на инциденты в промышленных сетях строится на другой модели приоритетов. В IT классика - CIA (Confidentiality, Integrity, Availability). В OT - Safety, Availability, Integrity, и только потом Confidentiality. Не теоретическая разница - она определяет каждое решение во время инцидента. Подробнее - в нашем статье о кибербезопасность критической инфраструктуры.

Протоколы без аутентификации​

Modbus TCP родом из 1979 года. Встроенной аутентификации нет. Любой узел в сегменте, способный отправить TCP-пакет на порт 502, может записать произвольные значения в регистры PLC. FC 0x05 (Write Single Coil) переключает дискретный выход - клапан, насос, размыкатель. FC 0x06 (Write Single Register) меняет числовое значение - уставку температуры, скорость привода. EDR и антивирус эти команды не видят: легитимное TCP-соединение между легитимными хостами, чего ещё надо.

DNP3 в энергетике формально поддерживает Secure Authentication (SA). На практике большинство инсталляций работают без него - включение SA требует перепрошивки RTU, а это плановый останов участка. По документам - можно включить. На практике - никто не включает.

Почему стандартные EDR и SIEM слепы в SCADA-среде

На PLC Siemens S7-300/400 нет операционной системы в привычном понимании - агент CrowdStrike Falcon или SentinelOne туда физически не встанет. Allen-Bradley ControlLogix работает на проприетарной ОС, сторонние процессы не поддерживает. RTU на базе Modbus RTU (RS-485) - микроконтроллер с прошивкой в десятки килобайт. Какой уж тут EDR.

SIEM получает события с IT-сегмента: логи Windows, NetFlow, DNS-запросы. Трафик между HMI и PLC на уровне 2 Purdue-модели в корпоративный SIEM не попадает, если не настроен специализированный сбор - через Zeek с плагинами для промышленных протоколов, Nozomi Networks или Claroty. Без этого OT-сегмент для SOC - чёрный ящик.

Ограничения патчинга​

По данным IBM X-Force, среднее время между публикацией CVE и устранением в организациях - 29 месяцев. Для OT эта цифра ещё хуже. На многих производствах PLC работают на firmware десяти-пятнадцатилетней давности. Обновление прошивки контроллера Schneider Modicon M340 - это остановка управляемого участка, перевод на ручное управление, верификация после перезагрузки. Плановое окно - раз в год при капремонте. Раз в год, Карл.

Форензика PLC и RTU в промышленных системах​

Форензика PLC в промышленных системах - совсем не то же самое, что работа с Windows-хостом. Нельзя снять образ диска - диска нет. Нельзя запустить Volatility - формат памяти проприетарный. Каждый шаг сбора артефактов несёт риск нарушения технологического процесса.

Что собирать и в каком порядке​

Порядок сбора volatile данных в OT - от наименее инвазивных действий к наиболее:
  1. Сетевой трафик (пассивный захват). Зеркалирование порта на управляемом коммутаторе уровня 2 (SPAN/mirror port) и запись pcap через tcpdump или Zeek. PLC это не затрагивает, дополнительной нагрузки на промышленную сеть не создаёт. Начинаем всегда с этого.
  2. Логи historian-сервера. OSIsoft PI, Wonderware InSQL, GE Proficy Historian хранят исторические значения тегов (process values) с метками времени. Изменение уставки, переключение режима, аварийный останов - всё отражается в historian. Для установления timeline инцидента это золото.
  3. Состояние PLC-программы. Выгрузка текущей программы (ladder logic, structured text, FBD) через инженерный софт - TIA Portal для Siemens, RSLogix/Studio 5000 для Allen-Bradley, Unity Pro для Schneider. Дальше - сравнение с эталонной копией из системы управления изменениями.
  4. Конфигурация сетевого оборудования. Таблицы MAC-адресов, ARP-кеш, правила ACL на промышленных коммутаторах (Hirschmann, Moxa, Cisco IE). Здесь можно обнаружить несанкционированные устройства, которых быть не должно.

Верификация логики PLC​

Ключевой и уникальный для OT шаг - проверка целостности управляющей программы. Атакующий, получивший доступ к инженерной станции, может модифицировать логику PLC так, что оператор на HMI не увидит изменений - значения на экране будут подменяться (техника Transmitted Data Manipulation, T1565.002, Impact). Именно так работал TRITON - малварь модифицировала логику контроллера безопасности Schneider Triconex, при этом инженерное ПО показывало «чистую» программу. Красивый фантик, а внутри - перепрошитая логика.

Проверка - побайтовое сравнение выгруженной программы с эталоном. Для Siemens S7 это сравнение блоков OB, FC, FB, DB с сохранёнными копиями. Для Allen-Bradley - сравнение .ACD-файлов через diff-утилиту RSLogix. Если эталонных копий нет (а их нет чаще, чем хотелось бы) - восстановить факт модификации можно по записям historian-сервера, проанализировав аномальные отклонения process values от baseline.

Анализ сетевого трафика промышленных протоколов​

Разбор pcap с промышленным трафиком - основной метод форензики RTU и промышленных контроллеров, которые не поддерживают локальный сбор артефактов. Zeek (ранее Bro) с модулями для Modbus, DNP3 и S7comm даёт структурированные логи каждой транзакции.

Фильтр в tshark для выявления write-команд Modbus, которых не должно быть в штатном режиме:
Bash:
tshark -r ot_capture.pcap -Y "modbus.func_code == 5 || modbus.func_code == 6 || modbus.func_code == 15 || modbus.func_code == 16" \
  -T fields -e frame.time -e ip.src -e ip.dst -e modbus.func_code -e modbus.reference_num
Вытаскиваем все write-операции (FC 5, 6, 15, 16) с метками времени, адресами источника/назначения и номерами регистров. В штатном режиме write-команды генерируются только с инженерных станций и только во время регламентных работ. Любой write с нового IP - алерт.

Detection-чеклист: правила корреляции для OT SOC​

Реагирование на инциденты в OT-среде начинается задолго до самого инцидента - с построения baseline и правил корреляции. Ниже - чеклист, который можно адаптировать под конкретный SIEM-стек.

Базовые правила для Modbus TCP​

ПравилоЛогика срабатыванияMITRE ATT&CK
Write с неизвестного IPsrc_ip NOT IN [engineering_station_list] AND modbus.func_code IN [5,6,15,16]T1565.002 (Transmitted Data Manipulation)
Массовое чтение регистровmodbus.func_code == 3 AND count > baseline_threshold за 60 секT1005 (Data from Local System)
Обращение к нестандартному Unit IDmodbus.unit_id NOT IN [known_plc_ids]T1040 (Network Sniffing) / разведка
Доступ по дефолтным кредам к HMIЛогин admin/admin, operator/operator на VNC/RDP к HMIT1078.001 (Default Accounts)
Изменение firmware PLCUpload-команда через S7comm или EtherNet/IPT1109 (Component Firmware)
Отключение logging на коммутатореИзменение syslog-конфигурации на Hirschmann/MoxaT1562.001 (Disable or Modify Tools)

Построение baseline для промышленных протоколов​

Baseline в OT - не «средний трафик за неделю». Промышленный процесс цикличен: утренний запуск линии, дневной режим, ночной простой. Baseline строится по нескольким параметрам:
  • Список пар «инициатор - PLC» с привязкой к function codes. HMI опрашивает через FC 0x03 каждые 500 мс - это норма. Инженерная станция подключается для программирования раз в квартал.
  • Диапазоны значений process variables. Температура в реакторе 180-220°C, давление 2.5-3.2 бар. Выход за диапазон без команды оператора - аномалия.
  • Расписание регламентных работ. Каждое подключение инженерной станции к PLC вне графика - событие для расследования.
Масштаб: на среднем химическом производстве - 3000-5000 тегов в historian. Построение baseline занимает 2-4 недели наблюдения за «чистой» средой. Без этой инвестиции detection в OT не работает. Совсем.

Сценарий: киберинцидент на промышленном предприятии через скомпрометированную инженерную станцию​

Типичный kill chain атаки на OT-сегмент с привязкой к TTPs - именно так выглядит большинство инцидентов, которые я видел в расследованиях.

Kill chain от DMZ до PLC​

Шаг 1. Initial Access - IT-сегмент. Фишинговое письмо с вложением, направленное инженеру АСУ ТП. По данным Verizon DBIR 2025, фишинг - вектор initial access в 36% инцидентов. Малварь закрепляется на рабочей станции инженера в корпоративной сети. Банально, но работает.

Шаг 2. Lateral Movement - переход в DMZ. Атакующий эксплуатирует уязвимость в jump-сервере между IT и OT (T1210, Exploitation of Remote Services). По CrowdStrike, среднее время lateral movement после initial access - 62 минуты. В OT-контексте jump-сервер часто единственная точка перехода, и его компрометация открывает доступ ко всему промышленному сегменту.

Шаг 3. Credential Access в OT. На инженерной станции в OT-сегменте атакующий находит сохранённые пароли к TIA Portal, RSLogix, VNC-сессии к HMI (T1078.001, Default Accounts). Учётные данные к PLC часто валяются в проектных файлах в открытом виде или защищены дефолтными паролями. admin/admin - не шутка, а реальность на половине объектов.

Шаг 4. Impact - модификация логики. Атакующий использует легитимный инженерный софт для загрузки модифицированной программы в PLC. С точки зрения сетевого трафика - стандартная операция программирования. С точки зрения процесса - изменение уставок, отключение блокировок, подмена значений на HMI (T1565.002).

Где детектировать каждый шаг​

Не каждый шаг этой цепочки можно обнаружить в OT - и Blue Team должна это понимать. Шаги 1-2 детектируются стандартными IT-средствами: EDR (CrowdStrike Falcon, SentinelOne) на рабочих станциях, SIEM-правила на аномальные подключения к jump-серверу. Шаг 3 требует аудита логонов на инженерных станциях (Windows Security Event Log, Event ID 4624/4625) и мониторинга запуска инженерного ПО вне графика. Шаг 4 - только через анализ OT-трафика: обнаружение write/upload команд в промышленных протоколах.

Именно поэтому инженерная станция - самый критический актив. Это единственный хост в OT-сегменте, на который можно установить EDR-агент и с которого собирать логи в SIEM. Компрометация инженерной станции = слепота SOC в OT.

Восстановление производства после кибератаки без остановки линии​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Количество производств, где все шесть пунктов закрыты, - единицы. Обычно есть пункт 1 (и то не всегда актуальный), а остальное - «как-нибудь потом». Именно это «потом» превращает управляемый инцидент в катастрофу.

Я участвовал в расследованиях, где отсутствие эталонных копий PLC-программ превращало четырёхчасовое восстановление в трёхнедельный проект обратной разработки ladder logic из дампа памяти контроллера. Три недели инженеры восстанавливали логику, которую можно было загрузить за 15 минут - если бы копия лежала в сейфе.

По Mandiant M-Trends, в 57% случаев организации узнают об инциденте от внешней стороны. В OT это значит, что к моменту обнаружения атакующий мог модифицировать логику десятков контроллеров. Без эталонов вы не знаете, какие из них «чистые».

Моя позиция после нескольких лет работы с OT-инцидентами: главная проблема - не отсутствие средств детектирования, а отсутствие базовых артефактов для расследования. Пассивный мониторинг Modbus-трафика через Zeek разворачивается за день. Sigma-правило на write-команды с неизвестного IP - 20 строк конфигурации. Но если нет baseline, нет эталонных программ, нет historian с достаточной глубиной хранения - детектировать нечего и восстанавливать не из чего.

NIST CSF 2.0 описывает это в категории DE.AE-01: «A baseline of network operations and expected data flows for users and systems is established and managed». Формулировка простая. Реализация на промышленном предприятии с 200 PLC и 5000 тегов - работа на месяцы. Но именно эта работа определяет, будет ли ваш incident response занимать 4 часа или 4 недели.

Проверьте свой чеклист forensic readiness прямо сейчас. Если из шести пунктов закрыты два - вы в большинстве. Если ноль - у вас не incident response plan, а надежда на удачу. Если выстраиваете мониторинг OT-сегмента или подбираете корреляционные правила под промышленные протоколы - на codeby.net коллеги обсуждают специфику интеграции Modbus/DNP3-трафика в корпоративные SIEM-стеки в тематическом треде.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab