2. Почему IPS?
• Количество публикуемых ежегодно уязвимостей в SCADA с 2010
по 2012 год увеличилось в 6 раз - с 20 в 2010 до 124 в 2012.
• Поставить патч на АСУ ТП – очень тяжело.
• IPS позволяет отражать атаки, использующие эти уязвимости.
2
Источник:
NSS Labs
3. Проблематика
• Используемые протоколы специфичны, уязвимы (нет
аутентификации, авторизации, шифрования)
• Особые требования к безопасности, с особыми требованиями к
доступности и невмешательству в имеющиеся сети
• До последнего времени – отсутствие предложений по защите АСУ
ТП от популярных производителей
3
4. Содержание
• Введение: об АСУ ТП, Modbus/TCP и их защите
• Обзор тестового стенда
• Разбор сигнатур
• Сравнение созданных сигнатур с сигнатурами ведущих
вендоров
4
5. Цели
• Продемонстрировать принципиальную возможность
создания собственного пакета сигнатур для защиты АСУ ТП
• Показать эффективность подхода, оценив полноту
собственного пакета сигнатур по сравнению с
предложениями ведущих производителей
• Дать навыки и наработки для повышения эффективности
ваших IPS в условиях АСУ ТП
5
6. Ликбез
• IPS: Intrusion Prevention System – система предотвращения
вторжений
6
• Сигнатура атаки: характерные признаки атаки - содержимое
пакета, количественные или качественные аномалии трафика.
ABCVIRUSXYZ
Sig: match “*VIRUS*”
7. АСУ ТП
Ликбез 7
• АСУ ТП (ICS, SCADA): Автоматизированная Система Управления
Технологическим Процессом. Для связи использует промышленную сеть.
• Применяются повсюду: заводы, электростанции, нефте/водо/газопроводы…
• Состоят из станций и серверов управления, контроллеров, станков,
роботов...
Станции
операторов
и
серверы
Станки
Контроллеры
Роботы
Технологическая
сеть
8. Ещѐ об АСУ ТП
• АСУ ТП отслеживают и управляют технологическими процессами,
включая критически важные
• Ранее использовали проприетарные протоколы и отдельные сети
8
9. АСУ ТП сегодня
• В настоящее время АСУ ТП переходят на TCP/IP и Ethernet,
появляются связи с Интернет, что создает новые угрозы
• Например:
• 1. Ищем открытые устройства:
• 2. Подключаемся по протоколу Modbus/TCP (порт TCP502) и
запрашиваем информацию об устройстве:
• 3. Цель известна, уязвимости известны - можно атаковать.
9
000-Tx:00 14 00 00 00 05 01 2B 0E 01 01
001-Rx:00 14 00 00 00 2D 01 2B 0E 01 01
00 00 03 00 0D 54 45 4C 45 4D 45 43 41
4E 49 51 55 45 01 0E 54 53 58 20 50 35
37 20 32 36 33 34 4D 00 02 04 56 30 2E
32
Модель контроллера (ASCII):
Telemecanique
TSX P57 2634M, V0.2
(Schneider Electric
Modicon Premium)
Запрос
Ответ
10. Покупка спокойствия
• Производитель Х – 175 сигнатур для промышленных сетей
(считая дубликаты)
• Сколько применимо к вашей сети? 20, 25?
• Дорогая подписка на обновления
• Время реакции на уязвимость – до 18 МЕСЯЦЕВ!!!
10
11. Своими руками
• Свобода выбора платформы
• Низкая стоимость
• Оперативная реакция на уязвимости
• Экспертиза и уверенность в сигнатурах
11
12. О Modbus/TCP
• Реализация Modbus под TCP/IP; порт TCP502
• Один из наиболее популярных протоколов в АСУ ТП
• Передает данные с контроллеров на серверы и/или рабочие станции
операторов и обратно
• Модель работы – клиент/сервер (master/slave)
• DISCLAIMER: Здесь и далее обсуждается стандартная реализация
Modbus/TCP
• Пользователи Modbus:
12
13. О Modbus/TCP: регистры 13
Название
Размер
ячейки
Тип Адресация
Output Coils 1 bit RW, Discrete 1-9999
Input Coils 1 bit RO, Discrete 10001-19999
Input Registers 16 bit RO, Numerical 30001-39999
Holding Registers 16 bit RW, Numerical 40001-49999
40 000 ячеек четырёх типов:
14. О Modbus/TCP: команды
• Коды чтения/записи каждой из таблиц:
– 01-04: чтение.
– 05-06: запись одной ячейки
– 15-16: запись последовательных ячеек
– 17: одновременное чтение и запись
– 22: побитовая запись в ячейку (запись с маской)
• Диагностические (код 08, код 17, код 43/14)
• Подтверждения или ошибки в ответ на каждую из команд
• DISCLAIMER: это не полный список команд!
14
15. Тестовый стенд: схема, ПО
• Cisco 2851: IOS 15.1(4)M
• Modbus-Master VM:
• MS Windows 7
• ModbusTools Modbus Poll
• Wireshark
15
• Modbus-Slave VM:
• MS Windows 7
• Ananas Modbus/TCP Server
• Wireshark
16. Тестовый стенд: система DPI
• Простейшая технология DPI
• Stateless
• Поиск по регулярным выражениям
• Не использует проприетарных технологий
• По функционалу несравнимо беднее современных IPS…
• …но еѐ достаточно.
16
Cisco FPM
17. Атака 1: Получение информации об устройстве
(вариант 1)
Эффект: злоумышленник получает информацию об
устройстве (серийный номер устройства, производитель,
модель и др. в зависимости от устройства и производителя)
17
match “.{47}x11”
• Function Code 17: Report Slave ID
18. Атака 2: Получение информации об устройстве
(вариант 2)
Эффект: злоумышленник получает информацию об
устройстве (серийный номер устройства, производитель,
модель и др. в зависимости от устройства и производителя)
18
match “.{47}x2Bx0E”
• Function Code 43: Encapsulated Interface Transport
• MEI Type 14: Read Device ID
19. Атака 3: Удаленная перезагрузка интерфейса
контроллера
Эффект: интерфейс контроллера перезагружается;
непрерывные запросы приводят к недоступности
контроллера.
19
match “.{47}x08x00x01”
• Function Code 08: Diagnostics
• Function Sub-Code 01 (00 01): Restart Communications
20. Атаки 4-7: Некорректные запросы на чтение
Эффект: некорректный запрос может вызвать отказ в
обслуживании на контроллере.
20
• match “.{47}x01” AND NOT “.{2}x00x34.{46}(x00[x01-xFF]|[x01-x06]|x07[x00-xD0])”
• match “.{47}x02” AND NOT “.{2}x00x34.{46}(x00[x01-xFF]|[x01-x06]|x07[x00-xD0])”
• match “.{47}x03” AND NOT “.{2}x00x34.{46}x00[x01-x7D]”
• match “.{47}x04” AND NOT “.{2}x00x34.{46}x00[x01-x7D]”
• Function Code 01: Read Output Coils
• Function Code 02: Read Input Coils
• Function Code 03: Read Holding Registers
• Function Code 04: Read Input Registers
21. Эффект: некорректный ответ может вызвать отказ в
обслуживании на клиенте Modbus (сервере SCADA/консоли
оператора).
21
• match “.{47}x01” AND NOT “.{2}(x00[x32-xFF]|x01[x00-x2C])”
• match “.{47}x02” AND NOT “.{2}(x00[x32-xFF]|x01[x00-x2C])”
• match “.{47}x03” AND NOT “.{2}(x00[x33-xFF]|x01[x00-x2C])”
• match “.{47}x04” AND NOT “.{2}(x00[x33-xFF]|x01[x00-x2C])”
• Function Code 01: Read Output Coils
• Function Code 02: Read Input Coils
• Function Code 03: Read Holding Registers
• Function Code 04: Read Input Registers
Атаки 8-11: Некорректные ответы на запросы чтения
22. Атаки 12-13: Некорректные запросы на запись
(часть 1 из 3 - запись по одной ячейке)
Эффект: некорректный запрос может вызвать переполнение
буфера и отказ в обслуживании на контроллере.
22
• match “.{47}x05” AND NOT “.{2}x00x34.{46}(x00|xFF)x00”
• match “.{47}x06” AND NOT “.{2}x00x34”
• Function Code 05: Write Single Coil
• Function Code 06: Write Single Register
23. Атака 14: Некорректные запросы на запись
(часть 2 из 3 – запись ячейки с маской)
Эффект: некорректный запрос может вызвать отказ в
обслуживании на контроллере.
23
match “.{47}x16” AND NOT “.{2}x00x36”
• Function Code 22: Mask Write Register
24. Атаки 15-16: Некорректные запросы на запись
(часть 3 из 3 – запись ряда ячеек)
Эффект: некорректный запрос может вызвать отказ в
обслуживании на контроллере.
24
• match “.{47}x0F” AND NOT
“.{2}(x00[x36-xFF]|x01[x00-x2C]).{46}(x00[x01-xFF]|[x01-x06]|x07[x00-xB0]”
• match “.{47}x10” AND NOT
“.{2} (x00[x36-xFF]|x01[x00-x2C]).{46}x00[x01-x7B]”
• Function Code 15: Write Multiple Coils
• Function Code 16: Write Multiple Registers
25. Атаки 17-20: Некорректные ответы на запросы
записи (часть 1 из 2 – запись без маски)
Эффект: некорректный ответ может вызвать отказ в обслуживании на
клиенте Modbus (сервере SCADA/консоли оператора).
25
• match “.{47}x05” AND NOT “.{2}x00x34.{46}(x00|xFF)x00”
• match “.{47}x06” AND NOT “.{2}x00x34”
• match “.{47}x0F” AND NOT “.{2}x00x34.{46}(x00[x01-xFF]|[x01-x06]|x07[x00-xB0]”
• match “.{47}x10” AND NOT “.{2}x00x34.{46}x00[x01-x7B]”
• Function Code 05: Write Single Coil
• Function Code 06: Write Single Register
• Function Code 15: Write Multiple Coils
• Function Code 16: Write Multiple Registers
26. Атака 21: Некорректный ответ на запрос записи
(часть 2 из 2 – запись с маской)
26
Эффект: некорректный ответ может вызвать отказ в
обслуживании на клиенте Modbus (сервере SCADA/консоли
оператора).
match “.{47}x16” AND NOT “.{2}x00x36”
• Function Code 22: Mask Write Register
27. Атака 22: Некорректный запрос чтения/записи
Эффект: некорректный запрос может вызвать отказ в
обслуживании на контроллере.
27
match “.{47}x17” AND NOT
“.{2}(x00[x3B-xFF]|x01[x00-x2C]).{46}x00[x01-x7D].{2}x00[x01-x79]”
• Function Code 23: Read/Write Multiple Registers
28. Атака 23: Некорректный ответ на запрос
чтения/записи
28
match “.{47}x17” AND NOT
“.{2}(x00[x33-xFF]|x01[x00-x2C])
Эффект: некорректный ответ может вызвать отказ в
обслуживании на клиенте Modbus (сервере SCADA/консоли
оператора).
• Function Code 23: Read/Write Multiple Registers
29. Атака 24: Выключение контроллера из системы
Эффект: контроллер не отвечает на запросы, не высылает
информацию о состоянии подключенных систем. Требуется
перезагрузка интерфейса контроллера.
29
match “.{47}0x08x00x04”
• Function Code 08: Diagnostics
• Function Sub-Code 04 (00 04): Force Listen-Only mode
30. Атака 25: Превышение макс. размера пакета
Эффект: слишком большой пакет может привести к отказу в
обслуживании контроллера.
30
match “.{2}x01[x2D-xFF]|[x02-xFF])”
• Размер пакета более 300 байт
31. Атака 26 (25+): Не-Modbus трафик 31
Эффект: не-Modbus трафик может привести к отказу в
обслуживании либо быть признаком несанкционированного
доступа к АСУ ТП.
match “.{2}x01[x2D-xFF]|[x02-xFF])” OR NOT
“.{32}[x50-x5F]” OR NOT
“.{42}x00x00”
• Размер пакета более 300 байт ИЛИ
• Заголовок TCP не равен 20 байт ИЛИ
• Поле Protocol ID не равно 0х0000
32. Атака 27: Сброс счетчиков диагностики
Эффект: сбрасываются счетчики и диагностический регистр,
что удаляет данные о проведенных действиях над
контроллером.
32
match “.{47}x08x00x0A”
• Function Code 08: Diagnostics
• Function Sub-Code 10 (00 0A): Clear Counters and the Diagnostic
Register
33. Сравнение с продуктами ведущих производителей
(часть 1 из 5)
33
Вендор 1 Вендор 2 Наш IPS
TCP MODBUS - Report
Server Information
Modbus TCP - Report Server
Information
Атака 1: Получение
информации об устройстве
(вариант 1)
TCP MODBUS - Read
Device Identification
Modbus TCP - Read Device
Identification
Атака 2: Получение
информации об устройстве
(вариант 2)
TCP MODBUS - Restart
Communications Opt.
Modbus TCP - Restart
Communications Option
Атака 3: Удаленная
перезагрузка контроллера
TCP MODBUS - Force Listen
Only Mode
Modbus TCP - Force Listen
Only Mode
Атака 24: Выключение
контроллера из системы
TCP MODBUS - Illegal
Packet Size
Modbus TCP - Illegal Packet
Size
Атака 25: Превышение
макс. размера пакета
----- Modbus TCP - Non-Modbus
Communication
Атака 26: Не-Modbus
трафик
TCP MODBUS - Clear Ctrs
and Diag Registers
Modbus TCP - Clear
Counters and Diagnostic
Registers
Атака 27: Сброс счетчиков
диагностики
35. Сравнение с продуктами ведущих производителей
(часть 3 из 5)
35
Вендор 1 Вендор 2 Наш IPS
------- MODBUS Invalid Read Coils
Response Parameters
MODBUS Invalid Read Discrete
Inputs Response Parameters
MODBUS Invalid Read Input
Registers Response Parameters
MODBUS Invalid Read Holding
Registers Response Parameters
Атаки 8-11:
Некорректные ответы
на запросы чтения
------- Modbus TCP - (0x05) Write
Single Coil Invalid Response
Modbus TCP - (0x0F) Write
Multiple Coils Invalid Response
Modbus TCP - (0x10) Write
Multiple Registers Invalid
Response
Modbus TCP - (0x16) Mask Write
Register Invalid Response
Атаки 17-21:
Некорректные ответы
на запросы записи
------ MODBUS Illegal Read-Write
Multiple Registers Response
Parameters
Атака 23: Некорректный
ответ на запрос
чтения/записи
36. Сравнение с продуктами ведущих производителей
(часть 4 из 5)
36
Вендор 1 Вендор 2 Наш IPS
------- MODBUS Serial Commands over TCP
Modbus TCP - Invalid Function Code Is
Used
Modbus TCP - Reserved Function Code
Used
Реализуемо
------- Large MODBUS/TCP Data Overflow Реализуемо
------ Modbus Slave Device Busy Exception
Code Delay
Modbus Acknowledge Exception Code
Delay
Реализуемо
MODBUS Invalid Read File Record
Request Parameters
MODBUS Invalid Write File Record
Request Parameters
MODBUS Illegal Read File Record
Response Parameters
MODBUS Invalid Read FIFO Queue
Response Parameters
MODBUS Invalid Write File Record
Response Parameters
Реализуемо всѐ плюс
«Invalid Read FIFO
Queue Request
Parameters»
37. Сравнение с продуктами ведущих производителей
(часть 5 из 5)
37
Вендор 1 Вендор 2 Наш IPS
------- MODBUS Response Header Length
TCP Segment Size Mismatch
Замещается сигнатурой
26 (Не-Modbus трафик)
------- Modbus TCP - Value Scan
MODBUS Function Code Scan
MODBUS Point List Scan
Не реализуемо;
реализуемо на любом
stateful IPS
38. Выводы
• Современные АСУ ТП по природе своей уязвимы и нуждаются в
защите
• Доступную и эффективную защиту можно реализовать
собственноручно
• Сигнатуры, сделанные лично, могут быть выпущены оперативнее,
а действовать – точнее и эффективнее готовых решений,
предлагаемых рынком
• Следует строго оценивать пригодность коробочных решений для
применимости их в своей сети
38