По данным IBM X-Force Threat Intelligence Index 2025, 70% расследованных инцидентов затронули объекты критической инфраструктуры. За последние два года я провёл восемь проектов по оценке защищённости OT-сегментов - на шести из них путь от корпоративного VLAN до ПЛК, управляющего подачей теплоносителя, проходил через единственный неуправляемый коммутатор без ACL. Ни промышленного файрвола, ни ICS-IDS, ни SPAN-порта для зеркалирования. Один L2-свитч - и ты уже в одном широковещательном домене с контроллером, который крутит насосную станцию.
Дальше - полный kill chain OT-пентеста: от пассивной разведки SCADA-систем до отправки Modbus Write-команды на контроллер, с привязкой к MITRE ATT&CK и объяснением, почему один неосторожный пакет останавливает турбину.
Бизнес-логика атаки на промышленные системы управления
Атака на IT - кража данных или шифрование файлов. Атака на OT - физическое воздействие на реальный мир: остановка энергоснабжения, изменение состава химической смеси, разрушение турбины через превышение допустимых оборотов. Три категории мотивации, объясняющие рост инцидентов OT кибербезопасности:Саботаж и кинетический эффект. Кампании TRITON/TRISIS (атака на системы противоаварийной защиты SIS нефтехимического предприятия) и Industroyer/CrashOverride (отключение подстанций энергосети) показали: APT-группы целенаправленно пишут малварь под промышленные протоколы. Фреймворк PIPEDREAM/INCONTROLLER - модульный набор для атаки на ПЛК Schneider Electric и Omron через CODESYS и OPC-UA - первый публично известный ICS-фреймворк с кроссплатформенной поддержкой контроллеров разных вендоров. Именно он показал, что state-sponsored группам больше не нужно писать отдельный модуль под каждый ПЛК.
Вымогательство с физическим рычагом. Согласно Verizon DBIR 2025, рост ransomware-инцидентов в SMB составил 18% год к году. Простой конвейера стоит десятки тысяч долларов в час - мотивация платить выкуп куда выше, чем у офисной компании с бэкапами.
Шпионаж. Конфигурации ПЛК, уставки технологических параметров, схемы техпроцесса - разведывательная ценность для state-sponsored групп. Доступ к инженерной станции даёт полную карту технологического процесса без эксплуатации уязвимостей контроллера. Зачем ломать ПЛК, если можно просто прочитать проект в TIA Portal?
Для пентестера понимание мотивации определяет глубину проверки: заказчик хочет знать, может ли атакующий повлиять на физический процесс, а не просто получить domain admin.
ICS безопасность vs IT: ключевые отличия OT-пентеста
Modbus, DNP3 и S7comm: промышленные протоколы без аутентификации
В IT протокол без аутентификации - аномалия. В OT - норма. Modbus TCP (порт 502), основанный на оригинальном протоколе Modbus 1979 года и опубликованный как открытая спецификация Modbus/TCP в 1999 году (Schneider Electric / Modicon), архитектурно не содержит механизмов аутентификации, шифрования и контроля целостности. Протоколу 45 лет, и он до сих пор работает "в чём мать родила". Если атакующий получил сетевой доступ к сегменту с ПЛК - он шлёт команды напрямую:- FC1 (Read Coils) - чтение дискретных выходов
- FC3 (Read Holding Registers) - чтение регистров хранения (уставки температуры, давления)
- FC5 (Write Single Coil) - переключение дискретного выхода (клапан, реле)
- FC6 (Write Single Register) - изменение уставки (температура, давление, скорость)
- FC15/FC16 (Write Multiple Coils/Registers) - массовая запись
Физический импакт и слепые зоны мониторинга
| Аспект | IT-пентест | OT-пентест |
|---|---|---|
| Цель kill chain | Domain admin, exfiltration | Воздействие на физический процесс |
| Ошибка сканирования | Алерт в SIEM | Остановка ПЛК, физическая авария |
| Аутентификация протоколов | Kerberos, NTLM, OAuth | Отсутствует (Modbus) или пустой пароль (S7) |
| Патч-менеджмент | Ежемесячные обновления | Раз в 3-5 лет (реквалификация ПО) |
| Endpoint protection | CrowdStrike Falcon, SentinelOne | любой endpoint protection - на ~30% станций |
| Сетевой мониторинг | SIEM на каждом сегменте | Claroty/Dragos - на 15-20% объектов |
| Lateral movement | Exploit, mimikatz, pass-the-hash | Прямой сетевой доступ к ПЛК без эксплоита |
[Применимо: внутренний пентест, legacy OT-инфраструктура]
CrowdStrike Falcon или SentinelOne на Windows-инженерной станции увидят подозрительный процесс, но Modbus FC16 (Write Multiple Registers), идущий мимо станции напрямую к ПЛК - для них невидимка. Специализированные OT-платформы - Claroty, Dragos Platform, Nozomi Guardian, PT Industrial Security Incident Manager - анализируют зеркалированный трафик пассивно. По моему опыту, они развёрнуты на 15-20% объектов КИИ. Остальные - полная слепота в промышленном сегменте.
Kill chain на объекте критической инфраструктуры: от DMZ до ПЛК
Контекст проекта: grey box, внутренний пентест значимого объекта КИИ (теплоснабжающая организация), ПЛК Siemens S7-300 на подстанциях. Модель Purdue: Level 4-5 (Enterprise) -> Level 3 (DMZ) -> Level 2 (Supervisory/HMI) -> Level 1 (Control/ПЛК) -> Level 0 (Physical Process). На бумаге - красивая сегментация. На практике граница между Level 3 и Level 2 - неуправляемый коммутатор без VLAN.
Разведка промышленного сегмента: SCADA fingerprinting
MITRE ATT&CK: Network Service Discovery (T1046, Discovery)Перед отправкой первого пакета в OT-сегмент - пассивная разведка, не генерирующая трафик к цели:
Shodan и Censys. Запрос
port:502 country:RU возвращает устройства с открытым Modbus TCP. Характерные порты промышленных протоколов: 502 (Modbus), 102 (S7comm), 4840 (OPC-UA), 20000 (DNP3), 47808 (BACnet), 44818 (EtherNet/IP). Отдельный класс целей - ATG-системы (Automatic Tank Gauging) на АЗС, регулярно торчащие в интернет. SSL-сертификаты SCADA-серверов через Censys или crt.sh раскрывают организацию, hostname и версию ПО в поле CN.GitHub dorks. Запросы
filename:plc_config, filename:*.pcap modbus - разработчики коммитят дампы конфигураций и захваченный промышленный трафик в публичные репозитории. Бесплатная разведка, от которой не защитишься файрволом.Вакансии на hh.ru. Описание позиции "инженер АСУ ТП" содержит конкретные модели ПЛК и SCADA-систем - fingerprinting ещё до первого пакета. Мой любимый OSINT-источник для OT: заказчик сам публикует свой стек на сайте поиска работы.
[Применимо: внешний пентест, black box - трафик к цели не генерируется]
Активное сканирование. После согласования scope - осторожное сканирование ICS-сегмента.
Требования к окружению: Kali Linux или любой GNU/Linux дистрибутив, nmap 7.80+ (поддержка NSE-скриптов для ICS), сетевой доступ к OT-сегменту через VPN или согласованную точку подключения, RAM от 4 ГБ. Сканирование выполняется строго с выделенного IP, согласованного с заказчиком.
Bash:
# Сканирование ICS-сегмента с rate limiting
nmap -sS --min-rate 100 --max-rate 300 \
-p 102,502,4840,20000,44818,47808 \
--script modbus-discover,s7-info \
--script-timeout 30s \
192.168.100.0/24 -oA ics_scan
--max-rate 300 - не для красоты, а чтобы не положить ПЛК. Сканируем только порты промышленных протоколов, не весь диапазон 1-65535. Версионное сканирование (-sV) намеренно исключено: его probe-пакеты провоцируют аварийное поведение legacy-контроллеров (на одном проекте S7-300 ушёл в STOP от -sV - пришлось ехать на объект и перезапускать руками). NSE-скрипт modbus-discover по умолчанию использует FC1 (Read Coils) для обнаружения устройств; с аргументом modbus-discover.aggressive=true перебирает Unit ID 0–246, включая FC17 (Report Slave ID) - стандартные безопасные операции чтения. Скрипт s7-info идентифицирует Siemens S7 через S7comm (COTP + Read SZL), возвращая модель, серийный номер и версию прошивки.Ограничения:
modbus-discover работает только с устройствами, реализующими расширенную идентификацию. Старые ПЛК с поддержкой лишь базовых FC1-FC6 не ответят - для них нужна ручная отправка FC1 (Read Coils) через mbtget. S7-300 имеет ограничение на количество одновременных PG/OP-соединений (обычно 1-2), запуск s7-info занимает слот и может вытеснить активную сессию инженерной станции независимо от версии прошивки - запускать строго в окне обслуживания.Initial access: SCADA-интерфейсы и дефолтные учётные данные
MITRE ATT&CK: Exploit Public-Facing Application (T1190, Initial Access)Типичная точка входа - web-интерфейс SCADA или HMI, опубликованный в корпоративную сеть, а иногда - прямо в интернет. Панели Wonderware InTouch, Ignition Gateway, WinCC WebNavigator - legacy-код десятилетней давности. SQL-инъекции в формах аутентификации SCADA-серверов - не теория, а реальность, а WAF перед таким интерфейсом я встречал ровно один раз за восемь проектов. Обычно HTTP без TLS на нестандартном порту. Стандартный инструментарий работает: sqlmap с
--tamper для обхода фильтрации, Burp Suite для ручного анализа. По данным Mandiant M-Trends 2025, exploits - наиболее распространённый вектор initial access (38% всех расследованных инцидентов, не только OT/SCADA).[Применимо: внешний/внутренний пентест, grey box]
MITRE ATT&CK: Valid Accounts (T1078, Initial Access / Persistence / Privilege Escalation / Defense Evasion)
Дефолтные учётные записи - системная боль промышленных систем управления. Пароли
admin:admin на HMI-станциях, OPERATOR:OPERATOR на инженерных станциях, общие Windows-учётки на машинах АСУ ТП, не менявшиеся годами. Причина понятна: смена пароля на инженерной станции может потребовать перенастройки проекта ПЛК - простой на часы. На production боятся менять, и это объяснимо. Но admin:admin - это не пароль, это приглашение. По данным CrowdStrike Global Threat Report 2025, 75% вторжений используют действительные учётные данные.Lateral movement в OT-сети и credential access
MITRE ATT&CK: Exploitation of Remote Services (T1210, Lateral Movement)Lateral movement в OT-среде часто не требует эксплуатации уязвимостей в привычном смысле. Модель Purdue предполагает сегментацию, но на практике граница между корпоративной DMZ и промышленным сегментом - один L2-свитч. Двигаться некуда - ты уже там.
Ключевой pivot point - компрометация легитимной инженерной станции. Сценарий: атакующий из корпоративной сети получает доступ к рабочей станции инженера АСУ ТП (RDP с украденными кредами, фишинг, эксплуатация непропатченного SMB). У станции два сетевых интерфейса - корпоративный VLAN и OT-сегмент. Все запросы к ПЛК с её IP - легитимны для мониторинга. Идеальный pivot. Среднее время breakout (от initial access до первого lateral movement) по данным CrowdStrike GTR 2025 - 62 минуты, рекорд - 51 секунда.
MITRE ATT&CK: OS Credential Dumping - LSASS Memory (T1003.001, Credential Access)
Инженерные станции - Windows-машины с Step 7 или TIA Portal. Часто Windows 7/10 без актуальных патчей: обновление ОС требует реквалификации ПО АСУ ТП, которая занимает месяцы. Credential dumping через ProcDump (дамп LSASS.exe) или
comsvcs.dll через rundll32 - стандартные техники, работающие как часы на незащищённых станциях.Предусловия: Windows без Credential Guard, endpoint protection отсутствует или в мониторинг-режиме. Не работает если: Kaspersky Industrial CyberSecurity for Nodes в режиме блокировки, Credential Guard включён (редкость на инженерных станциях), LSA Protection активна. По моему опыту, endpoint protection установлен на 30% инженерных станций - на остальных Windows Defender в дефолте или отключённый антивирус.
Что даёт credential access: учётные данные domain admin (инженеры логинятся в корпоративный AD), пароли к проектам ПЛК (Step 7 хранит пароли CPU в файле проекта), пароли к HMI-серверам.
Воздействие на физический процесс: SCADA атаки через Modbus Write
Здесь IT-kill chain заканчивается: domain admin получен, отчёт написан, все жмут руки. В OT-пентесте ключевой вопрос другой: может ли атакующий повлиять на физический процесс?С сетевым доступом к ПЛК через Modbus TCP:
- Чтение состояния - FC3 (Read Holding Registers) возвращает уставки температуры, давления, расхода
- Изменение уставок - FC6 (Write Single Register) задаёт новое значение параметра
- Переключение выходов - FC5 (Write Single Coil) открывает/закрывает клапаны
- Массовая перезапись - FC16 (Write Multiple Registers) меняет блок регистров
Верификация доступа на демонстрационном стенде (не production):
Bash:
# Пример для демонстрации концепции - верификация Modbus-доступа
# FC3 Read Holding Registers, slave_id=1, start_addr=100
mbtget -r3 -a 100 -n 1 -u 1 192.168.100.10
# Адресация в mbtget - 1-based, соответствует нотации Modicon:
# -a 100 = holding register 40100. PDU-адрес (на проводе) = указанный − 1.
# На Siemens S7 с CP-модулем сверять с маппингом.
OPSEC при атаках на АСУ ТП: evasion в промышленных сетях
В IT evasion - обход EDR через indirect syscalls, unhooking ntdll, sleep mask. В OT evasion - не убить физический процесс и не сгенерировать алерт в промышленной системе мониторинга. Приоритеты другие.
Что детектирует Claroty (xDome, CTD): новый IP в OT-сегменте (baseline anomaly), Modbus FC17/FC43 с нехарактерного источника, Write-команды (FC5/FC6/FC15/FC16) с адреса вне whitelist, нехарактерная частота опроса (polling rate anomaly).
Что детектирует Dragos Platform: сканирование портов промышленных протоколов (даже с низким rate), обращение к ПЛК с IP вне whitelist, изменение конфигурации ПЛК (загрузка блока кода).
Тактика обхода - работа через скомпрометированную инженерную станцию:
- IP инженерной станции - в whitelist, обращения к ПЛК штатны
- Polling rate - как у HMI: опрашивать с той же частотой (обычно 500 мс)
- Инвентаризация без сканирования - через ARP-таблицу инженерной станции
- Function codes - те же, что использует HMI (обычно FC3 Read Holding Registers)
| Действие | Последствие |
|---|---|
nmap -sV на порт 102 (S7comm) | S7-300 может перейти в STOP |
nmap -T4 -p- в OT-сегменте | Перегрузка ПЛК, потеря связи с HMI |
| Фаззинг Modbus на production | Непредсказуемое поведение физического процесса |
| FC16 без понимания техпроцесса | Физическое повреждение оборудования |
Эту таблицу я показываю каждому заказчику перед началом работ. Обычно после строки про "физическое повреждение оборудования", вопрос "а можно мы не будем сегментировать?" отпадает сам собой.
OT threat hunting: что видит и чего не видит blue team
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Девять из десяти OT-пентестов на российском рынке останавливаются на этапе "нашли дефолтный пароль и прямой маршрут до ПЛК". Заказчик получает отчёт, ставит галочку для регулятора - и продолжает работать как раньше. Реальный OT-пентест с полной kill chain до демонстрации возможности записи в регистры контроллера - редкость. Причина не в квалификации пентестеров, а в страхе заказчика: воздействие на production - это риск простоя, а простой на объекте теплоснабжения зимой - прямая угроза людям.
Индустрия любит обсуждать TRITON и PIPEDREAM на конференциях. На практике для компрометации подавляющего большинства объектов КИИ второй-третьей категории не нужен state-sponsored фреймворк - достаточно nmap с NSE-скриптом и сетевого доступа к несегментированной подсети. Средний breakout time по данным CrowdStrike - 62 минуты. В OT без сегментации двигаться некуда: всё в одном VLAN, ПЛК отвечает на любой Modbus-запрос с любого IP.
Через два-три года ситуация начнёт меняться: регуляторные требования ужесточаются, бюджеты на промышленную кибербезопасность растут, вендоры OT-мониторинга наращивают присутствие. Но сегодня главный защитный механизм промышленного сегмента - air gap, нарисованный на схеме и не реализованный физически. Один патч-корд в серверной - и корпоративная сеть сливается с OT. Проверьте свою схему сети, а потом пройдите в серверную и посмотрите, как оно на самом деле. Если увидите неуправляемый свитч между корпоративным и промышленным сегментом - у вас та же проблема, что и у шести из восьми моих заказчиков.
Последнее редактирование модератором: