Статья Пентест OT ICS систем: моделирование распространения ransomware от IT-сети до контроллера

Разрезанный пополам промышленный ПЛК в корпусе стиля Siemens S7 лежит на чёрном антистатическом коврике. Из линии разлома исходит красное свечение, обнажая слои внутренних плат.


На assessment'е устойчивости к ransomware одного производственного объекта мы стартовали с assumed breach - скомпрометированная учётка инженера АСУ ТП на Level 3 по Purdue. Через четыре часа читали holding registers ПЛК, модифицировали значения на тестовом стенде и показывали заказчику, как ransomware-оператор мог бы заблокировать линию. Из трёх инструментов OT-мониторинга два показали чистый dashboard. Третий зафиксировал аномалию - спустя два часа после того, как мы уже сидели на контроллерах. По данным IBM X-Force, 70% инцидентов, расследованных X-Force в 2024 году, затронули критическую инфраструктуру. Ransomware в OT - не вопрос «если», а вопрос «насколько далеко пройдёт атакующий до того, как кто-то заметит».

Бизнес-логика атаки: почему ransomware целится в промышленные системы​

Ransomware-операторы целенаправленно расширяют scope с IT на OT-сегменты. Мотивация проста до неприличия: остановка производственной линии стоит десятки тысяч долларов в час, и собственник такого объекта платит выкуп куда охотнее, чем владелец зашифрованного файлового сервера. По данным Verizon DBIR 2025, медианный выкуп ransomware - $46 000, но для промышленных объектов с непрерывным циклом эта сумма - часы простоя, а не дни переговоров.

По данным Dragos 2025 (процитированным Zero Networks), количество ransomware-групп, атакующих OT/ICS, выросло на 60% за 2024 год. Атаки на промышленный сектор увеличились на 87% год к году - manufacturing лидирует четвёртый год подряд. Данные ransomware.live подтверждают тренд: группа Play в начале июня 2026 года публикует жертв из Manufacturing (Corley Manufacturing, США) и Agriculture/Food Production (Urschel, США) каждую неделю.

Kill chain ransomware-атаки на OT разворачивается по предсказуемому маршруту:
  1. Initial access в IT-сегмент - фишинг, скомпрометированный VPN, exploit публичного приложения (Exploit Public-Facing Application, T1190, Initial Access). По данным Mandiant M-Trends 2025, exploits - вектор номер один (38% расследований).
  2. Lateral movement по корпоративной сети - кража credentials, SMB relay, Exploitation of Remote Services (T1210, Lateral Movement). CrowdStrike фиксирует среднее время lateral movement в 62 минуты после initial access; рекорд - 51 секунда.
  3. Переход через DMZ в OT - через historian-сервер, инженерную рабочую станцию с двумя сетевыми интерфейсами или jump host подрядчика.
  4. Распространение внутри OT-сегмента - от historian до HMI, от HMI до engineering workstation, от EWS до контроллера.
  5. Impact - шифрование historian/HMI (классический ransomware) или манипуляция с контроллерами (продвинутый вариант типа TRITON).
По данным Zero Networks, 75% OT-атак начинаются как IT-breach. Задача пентеста OT ICS систем в формате ransomware resilience - проверить каждый стык этой цепочки и определить, где она ломается, а где проходит насквозь.

Assumed breach: серый ящик как стандарт OT-пентеста​

1781252279328.webp

[Применимо: внутренний пентест, grey box, после согласования с инженерами АСУ ТП]

В IT-пентесте black box - стандартная стартовая позиция. В OT - нет. Причины сугубо практические: сканирование production-контроллеров без подготовки может уронить оборудование. SYN-скан Siemens S7-300 без --max-rate способен вызвать 22 минуты простоя - контроллер перестаёт отвечать на запросы HMI, оператор жмёт аварийную остановку. Поэтому OT ICS пентест для оценки устойчивости к ransomware чаще проводится в формате assumed breach.

На практике это выглядит так:
  • Пентестер получает учётную запись уровня инженера АСУ ТП или оператора SCADA (low-priv credentials)
  • Точка старта - Level 3 по Purdue (production management): historian-сервер, engineering workstation или DMZ-сегмент между IT и OT
  • Цель - продемонстрировать, насколько глубоко ransomware-оператор может проникнуть с аналогичной стартовой позицией
Assumed breach реалистичнее black box по простой причине: настоящие ransomware-операторы не начинают с OT. Они приходят из IT-сети, уже имея domain admin или скомпрометированную сервисную учётку. По данным CrowdStrike Global Threat Report 2025, 75% вторжений используют valid credentials (T1078) - к моменту, когда атакующий добирается до OT-периметра, у него уже тот уровень доступа, который мы и моделируем.

Decision tree для grey box OT-сценария​

Перед запуском активных действий стоит проверить:
  1. Какие сетевые сегменты доступны с выданной учётной записи? Есть ли маршрут из IT VLAN в OT VLAN?
  2. Historian-сервер: какая ОС (Windows Server 2012 R2 встречается до сих пор), какой SCADA-продукт (Wonderware, OSIsoft PI, AVEVA), патч-левел?
  3. Engineering workstation: есть ли dual-homing (два сетевых интерфейса - один в IT, второй в OT)?
  4. Remote access: активные VPN-туннели подрядчиков? SSH на публичных адресах? RDP без NLA?
  5. Какие OT-мониторинговые средства установлены (Claroty, Dragos Platform, Nozomi Guardian) - и на каких именно сегментах?

Lateral movement из IT в OT: три вектора распространения ransomware​

1781252364506.webp

Historian-сервер как точка перехода​

Historian (OSIsoft PI, Wonderware, AVEVA) - база данных, которая собирает данные с ПЛК и отдаёт их в корпоративную сеть для отчётности. По Purdue это Level 3 - зона, которая общается и с IT (Level 4-5), и с OT (Level 1-2). Historian почти всегда крутится на Windows Server с SQL-бэкендом, часто с устаревшими патчами. По данным IBM X-Force 2025, среднее время между публикацией CVE и устранением в организации - 29 месяцев. Двадцать девять.

Пентест historian-а - это, по сути, стандартный Windows-пентест: проверка SMB-шар, дефолтных учёток SQL Server (sa с пустым паролем встречается до сих пор), незапатченного RDP, отсутствия LAPS. По данным Zero Networks, каждый четвёртый пентест OT-среды обнаруживает дефолтные credentials (Default Accounts, T1078.001, Initial Access).

Ограничение вектора: если сегментация между historian и OT VLAN реализована через промышленный firewall с whitelist-правилами - вектор не работает. Но в 65% OT-сред, по тем же данным, обнаруживаются insecure remote access conditions - сегментация нарушена или отсутствует.

Инженерная станция с dual-homing​

Engineering workstation (EWS) - компьютер с TIA Portal (Siemens) или Studio 5000 (Allen-Bradley). EWS часто имеет два сетевых интерфейса: один в корпоративной сети для обновлений и почты, второй - прямое подключение к OT-сегменту для загрузки проектов в контроллеры.

Для ransomware-оператора скомпрометированная EWS - прямой маршрут в OT без прохождения firewall. Lateral movement к EWS из IT-сети идёт через стандартные TTPs: кража credentials через Network Sniffing (T1040) в plaintext-протоколах Modbus/DNP3, Exploitation of Remote Services (T1210) или RDP с перехваченными учётными данными.

Ограничение вектора: если EWS изолирована в выделенном VLAN с доступом только через jump host с MFA - lateral movement останавливается. На практике такая конфигурация встречается реже, чем dual-homing. Гораздо реже.

VPN и jump host подрядчика​

Vendor remote access - одна из самых типичных дыр. Подрядчик Siemens или Schneider получает VPN-доступ для удалённой диагностики, и этот доступ остаётся активным месяцами после окончания работ. По данным Dragos (цитируемым Zero Networks), SSH с публичными маршрутизируемыми адресами обнаружен у 45% OT-организаций. Забытый VPN-туннель подрядчика - подарок для атакующего, который даже не надо заворачивать.

SCADA security тестирование: fingerprinting протоколов перед ударом​

[Применимо: внутренний пентест, grey/white box, после получения доступа к OT VLAN]

Попав в OT-сегмент, пентестер выстраивает baseline - выясняет, какие устройства общаются друг с другом, какие протоколы используются, какие function codes летят по сети. Пассивная разведка - единственный безопасный способ сделать это в production.

Wireshark на зеркалированном порту (SPAN) коммутатора OT-сегмента показывает полную картину без отправки единого пакета:
Код:
modbus                  # весь Modbus TCP (порт 502)
modbus.func_code == 3   # Read Holding Registers - штатный опрос
modbus.func_code == 6   # Write Single Register - команда управления
modbus.func_code == 16  # Write Multiple Registers - пакетная запись
s7comm                  # Siemens S7 (порт 102)
dnp3                    # DNP3 (порт 20000)
enip                    # EtherNet/IP (порт 44818)
Modbus TCP передаёт всё в plaintext. Function code 0x03 (Read Holding Registers) показывает, какие регистры опрашивает SCADA-сервер и с какой частотой. Function codes 0x06 и 0x10 - команды записи, которые физически меняют состояние оборудования. Modbus не имеет аутентификации на уровне протокола - любой узел в сети может отправить Write-команду, и ПЛК её исполнит. Это не уязвимость - это архитектура протокола 1979 года. Сокеты Modbus - анархисты: им всё равно, кто отправил команду.

Для DNP3 существует Secure Authentication (SA), но инсталляции с включённым SA - единичные проценты. EtherNet/IP (CIP) для Allen-Bradley разбирается через фильтр enip - видны CIP-сервисы и типы connected/unconnected messages.

Что ищем при passive recon для ransomware-сценария:
  • Какие хосты общаются с ПЛК напрямую - потенциальные точки перехвата управления
  • Частота опроса регистров - baseline для безопасного активного тестирования (если SCADA опрашивает раз в секунду, 100 дополнительных запросов уронят контроллер)
  • Web-интерфейсы HMI на нестандартных портах (8080, 8443) - часто с дефолтными паролями
  • Broadcast-трафик, раскрывающий топологию сегмента
Ограничение: пассивный перехват работает только при физическом или логическом доступе к OT VLAN. Если коммутатор не настроен на SPAN - виден только broadcast. Согласование SPAN-порта с инженерами АСУ ТП - обязательный шаг, без него половина разведки слепая.

Симуляция ransomware impact: что можно и чего нельзя трогать​

Запретная зона: production-контроллеры​

Запись в holding registers production-ПЛК, отправка Stop-команд (Service Stop, T1489), модификация ladder-логики - всё это запрещено без исключений. TRITON (2017) перепрограммировал SIS-контроллер (Safety Instrumented System) на нефтехимическом заводе - ошибка в payload вызвала аварийную остановку и привела к обнаружению. Если бы payload отработал чисто, атакующий отключил бы защитные механизмы перед ударом по DCS. Повезло.

Industroyer (2016) использовал легитимные function codes промышленных протоколов (IEC 60870-5-101/104, IEC 61850, OPC DA) для размыкания выключателей украинских подстанций. Дополнительный DoS-модуль эксплуатировал CVE-2015-5374 в Siemens SIPROTEC - специально сформированные пакеты на порт 50000/UDP вызывали отказ защитных реле (CWE-19, затронуты SIPROTEC 4, SIPROTEC Compact, EN100 Ethernet module). Оба инцидента объясняют, почему пентестер не воспроизводит impact на боевом оборудовании. Никогда.

Безопасная демонстрация на production​

С письменного согласия заказчика допустимо:
  • Чтение holding registers через Modbus TCP (function code 0x03) - read-only операция, безопасная при разумном rate
  • Fingerprinting ПЛК через Redpoint NSE-скрипты (s7-info.nse, modbus-discover.nse) с жёстким --max-rate 5
  • Скриншоты web-интерфейсов HMI с дефолтными учётками
  • Перехват и демонстрация Modbus-команд в plaintext (Network Sniffing, T1040)

Тестовый стенд для impact-демонстрации​

Требования к окружению: Kali Linux 2024.x+, Nmap 7.94+, Metasploit Framework 6.x (активно поддерживается, rapid7/metasploit-framework), Python 3.8+ (для PLCScan), 4 GB RAM минимум. Для эмуляции - OpenPLC Runtime или GRFICSv3 (обновлённая версия представлена на ICS Cybersecurity Conference 2025). Изолированная сеть без маршрутизации в production.

На стенде можно демонстрировать полный impact: запись в регистры (Transmitted Data Manipulation, T1565.002), остановку контроллера (T1489), модификацию логики, шифрование historian-базы и HMI-проекта.
Bash:
# Fingerprinting Siemens S7 на тестовом стенде (НЕ production)
nmap -Pn -sT -p 102 --script s7-info --max-rate 5 192.168.1.10

# Обнаружение Modbus-устройств в тестовом сегменте
nmap -Pn -sT -p 502 --script modbus-discover --max-rate 5 192.168.1.0/24
Даже на стенде --max-rate обязателен - промышленные контроллеры обрабатывают сетевые запросы в одном потоке с циклом управления, перегрузка блокирует scan cycle.

Защита промышленных систем от ransomware: почему стандартные EDR и SIEM слепы​

Стандартный IT-стек защиты не работает в OT по архитектурным причинам. Не по организационным, не по бюджетным - именно по архитектурным:

Средство защитыПочему не работает в OTАльтернатива
EDR (CrowdStrike Falcon, SentinelOne, Elastic EDR)ПЛК и HMI-панели не поддерживают агентов. RTU работает на RTOS. Historian на Windows - единственная точка, где EDR теоретически возможенOT NDR: Claroty, Dragos Platform, Nozomi Guardian - пассивный мониторинг сетевого трафика
SIEM (Splunk, Elastic, MaxPatrol SIEM)Нет event source от ПЛК. Modbus/DNP3 не генерируют логи аутентификации, потому что аутентификации нетDeep packet inspection промышленных протоколов на уровне OT NDR
Сетевая сегментация (VLAN, firewall)Firewall между IT и OT часто имеет слишком широкие правила. EWS с dual-homing обходит firewall полностьюMicro-segmentation с whitelist-правилами на уровне отдельных устройств
MFAПЛК и SCADA не поддерживают MFA. Modbus не имеет концепции пользователя. OPC-UA поддерживает сертификаты, но PKI на единицах процентов инсталляцийJump host с MFA как единственная точка входа

OT NDR (Claroty, Dragos, Nozomi) решают часть проблем: разбирают промышленные протоколы на уровне function codes и алертят на аномалии. Но и у них есть ограничения, которые вылезают именно на пентесте:
  • Baseline-зависимость: OT NDR учит «нормальный» трафик. Если атакующий действует медленно и использует те же function codes, что легитимный SCADA-сервер - детекция затруднена. На том assessment'е, с которого я начал статью, мы именно так и прошли - тихо, теми же командами, что и штатный опрос.
  • Blind spots при passive deployment: сенсор видит только трафик на SPAN-порту. Если коммутатор access-уровня не зеркалирует трафик - EWS-to-PLC коммуникация невидима.
  • Encryption gap: OPC-UA с TLS шифрует payload - passive NDR видит метаданные соединения, но не содержимое команд.
Sigma-правила для обнаружения Network Service Discovery (T1046) в публичном SigmaHQ существуют - net_firewall_susp_network_scan_by_ip.yml детектит аномальные сканы, opencanary_portscan_syn_scan.yml ловит SYN-сканирование. Но для OT-специфичных действий (Modbus write с нового IP в нерабочие часы) публичных Sigma-правил нет - их приходится писать под конкретную инсталляцию или полагаться на OT NDR.

Чеклист: оценка устойчивости OT к ransomware​

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

Последние два года я наблюдаю одну и ту же картину: компании ставят OT NDR, получают dashboard с asset inventory - и считают себя защищёнными. На пентесте выясняется, что сенсор стоит на SPAN ядрового коммутатора, но трафик между EWS и ПЛК идёт через access-уровень и в SPAN не попадает. Или что historian с Windows Server 2012 R2 без патчей - единственный хост, где мог бы работать EDR, но агент не установлен, "чтобы не повлиять на performance". Это не безопасность - это галочка в отчёте для руководства.

Ransomware-группы вроде Play публикуют жертв из manufacturing каждую неделю. Тренд 2026 года, по оценкам Dragos и GuidePoint Security - не просто шифрование IT-данных, а целенаправленное давление через угрозу остановки производства. Пентест OT ICS систем в формате ransomware resilience - проверка конкретного сценария, который разворачивается прямо сейчас. И по моему опыту, вопрос не в том, есть ли у компании Purdue-модель на бумаге. Вопрос - остановится ли атакующий на Level 3 или пройдёт до контроллера за те же четыре часа, что и мы на assessment'е. Проверьте свой historian nmap --script smb-vuln* -p 445 - если он отвечает на SMB без патчей, у вас та же проблема.
 
Последнее редактирование модератором:
Мы в соцсетях:

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

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab