Почему Modbus остаётся в каждой сети
Modbus разработала компания Modicon, а его спецификация открыта и свободна от лицензионных отчислений. Модель данных проста: дискретные выходы (coils), дискретные входы, входные регистры и регистры хранения (holding registers). Любой ПЛК, преобразователь частоты, счётчик или датчик можно подключить к SCADA, написав несколько строк конфигурации.
Оборудование на объектах работает десятилетиями, а замена протокола в работающей системе означает замену контроллеров, шлюзов и части SCADA. Поэтому Modbus/TCP, который передаёт тот же кадр Modbus внутри TCP-соединения на порт 502, по-прежнему встречается практически на любом предприятии.
Чего в Modbus/TCP нет
Кадр Modbus/TCP состоит из заголовка MBAP длиной 7 байт и блока PDU (код функции и данные). Максимальный размер кадра составляет 260 байт. На рис. 1 показана его структура.

Обратите внимание на то, чего в кадре нет. В нём нет полей для идентификации отправителя, подписи сообщения, шифрования и номера сессии. Поле Unit ID задаёт адрес устройства за шлюзом, и его нельзя считать механизмом защиты: это просто байт, который клиент указывает сам.
Из этого следует главное: сервер Modbus не может определить, кто ему пишет. Команда от штатной SCADA и команда от случайного узла в сети для контроллера неразличимы, если оба пакета корректны.
Что это значит на практике
Коды функций делятся на чтение (например, 0x03 — чтение регистров хранения) и запись (0x05 и 0x0F — запись выходов, 0x06 и 0x10 — запись регистров). Любой узел, который может установить TCP-соединение с портом 502, получает доступ ко всем этим операциям.
- Разведка тривиальна. Карта регистров с уставками, режимами и состоянием оборудования читается без каких-либо учётных данных.
- Запись не требует эксплойта. Изменить уставку или включить выход можно штатной командой протокола. Это не уязвимость, а свойство протокола, поэтому обновление прошивки его не устраняет.
- Следов может не остаться. Как правило, контроллер не фиксирует, с какого адреса пришла запись, а журналы SCADA отражают только собственные команды.
- Доступность тоже под угрозой. У многих контроллеров ограничено число одновременных соединений, и лишние подключения могут вытеснить штатный опрос.
Как атакующий добирается до сегмента с Modbus
Сегмент с контроллерами редко доступен напрямую из интернета, хотя случайно открытые порты 502 всё же встречаются. Чаще путь проходит через корпоративную сеть. Сначала компрометируется офисный узел, затем учётная запись, затем хост на границе сетей: инженерная станция, сервер исторических данных, компьютер подрядчика с VPN или машина с двумя сетевыми интерфейсами.
Дальнейшее движение внутрь строится на том, что скомпрометированный узел используется как ретранслятор трафика. Эта техника называется pivoting (перемещение через скомпрометированный узел во внутренние сегменты). В плоской сети она превращает один взломанный ноутбук в точку доступа ко всему, что с него видно.
Типичные слабые места технологических сетей: отсутствие сегментации, общие учётные записи на инженерных станциях, удалённый доступ без многофакторной аутентификации и забытые маршруты между офисной и технологической сетью.
Пример: FrostyGoop
Показательный случай — вредоносная программа FrostyGoop, которую описала компания Dragos. По данным SecurityWeek, 22 января 2024 года в Львове была нарушена работа муниципальной теплоснабжающей компании, обслуживающей около 600 многоквартирных домов, и восстановление заняло почти два дня.
Программа отправляла команды по Modbus на порт 502 напрямую контроллерам ENCO. Исследователи пишут, что прошивка контроллеров была заменена на версию без мониторинга, а показания искажались так, что система «видела» горячую воду там, где она была холодной. Первичный доступ, вероятно, получили через уязвимость в доступном из интернета маршрутизаторе, а сеть объекта не была сегментирована. Атрибуция в материале не приводится.
Здесь важны два вывода. Во-первых, управление процессом шло штатными командами Modbus, а не эксплойтами. Во-вторых, сеть объекта не была сегментирована, и от внешнего маршрутизатора до контроллеров не было препятствий.
Как защищаться
Заменить Modbus на защищённый протокол в большинстве систем невозможно, поэтому защита строится вокруг протокола.
1. Сегментация: зоны и каналы
Стандарт IEC 62443 описывает технологическую сеть как набор зон с общими требованиями безопасности, между которыми разрешены только явно описанные каналы. Практически это сводится к модели Purdue: уровни 0–1 (датчики и контроллеры), уровни 2–3 (SCADA, HMI, инженерная станция, сервер исторических данных), промышленная DMZ на уровне 3.5 и корпоративная сеть на уровнях 4–5. Рис. 2 показывает целевую схему.
Источник: controleng.ru