Дмитрий Дудов. Индустриальная IPS своими руками

  • 273 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
273
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. © AMT Group, 2013Индустриальная IPS своими рукамиДмитрий Дудов,Ведущий инженер по защите систем SCADA ddudov@amt.ru
  • 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• Сигнатура атаки: характерные признаки атаки - содержимоепакета, количественные или качественные аномалии трафика.ABCVIRUSXYZSig: match “*VIRUS*”
  • 7. АСУ ТПЛикбез 7• АСУ ТП (ICS, SCADA): Автоматизированная Система УправленияТехнологическим Процессом. Для связи использует промышленную сеть.• Применяются повсюду: заводы, электростанции, нефте/водо/газопроводы…• Состоят из станций и серверов управления, контроллеров, станков,роботов...СтанцииоператоровисерверыСтанкиКонтроллерыРоботыТехнологическаясеть
  • 8. Ещѐ об АСУ ТП• АСУ ТП отслеживают и управляют технологическими процессами,включая критически важные• Ранее использовали проприетарные протоколы и отдельные сети8
  • 9. АСУ ТП сегодня• В настоящее время АСУ ТП переходят на TCP/IP и Ethernet,появляются связи с Интернет, что создает новые угрозы• Например:• 1. Ищем открытые устройства:• 2. Подключаемся по протоколу Modbus/TCP (порт TCP502) изапрашиваем информацию об устройстве:• 3. Цель известна, уязвимости известны - можно атаковать.9000-Tx:00 14 00 00 00 05 01 2B 0E 01 01001-Rx:00 14 00 00 00 2D 01 2B 0E 01 0100 00 03 00 0D 54 45 4C 45 4D 45 43 414E 49 51 55 45 01 0E 54 53 58 20 50 3537 20 32 36 33 34 4D 00 02 04 56 30 2E32Модель контроллера (ASCII):TelemecaniqueTSX P57 2634M, V0.2(Schneider ElectricModicon 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-9999Input Coils 1 bit RO, Discrete 10001-19999Input Registers 16 bit RO, Numerical 30001-39999Holding Registers 16 bit RW, Numerical 40001-4999940 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• Wireshark15• Modbus-Slave VM:• MS Windows 7• Ananas Modbus/TCP Server• Wireshark
  • 16. Тестовый стенд: система DPI• Простейшая технология DPI• Stateless• Поиск по регулярным выражениям• Не использует проприетарных технологий• По функционалу несравнимо беднее современных IPS…• …но еѐ достаточно. 16Cisco FPM
  • 17. Атака 1: Получение информации об устройстве(вариант 1)Эффект: злоумышленник получает информацию обустройстве (серийный номер устройства, производитель,модель и др. в зависимости от устройства и производителя)17match “.{47}x11”• Function Code 17: Report Slave ID
  • 18. Атака 2: Получение информации об устройстве(вариант 2)Эффект: злоумышленник получает информацию обустройстве (серийный номер устройства, производитель,модель и др. в зависимости от устройства и производителя)18match “.{47}x2Bx0E”• Function Code 43: Encapsulated Interface Transport• MEI Type 14: Read Device ID
  • 19. Атака 3: Удаленная перезагрузка интерфейсаконтроллераЭффект: интерфейс контроллера перезагружается;непрерывные запросы приводят к недоступностиконтроллера.19match “.{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 – запись ячейки с маской)Эффект: некорректный запрос может вызвать отказ вобслуживании на контроллере.23match “.{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: Некорректный запрос чтения/записиЭффект: некорректный запрос может вызвать отказ вобслуживании на контроллере.27match “.{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: Некорректный ответ на запросчтения/записи28match “.{47}x17” AND NOT“.{2}(x00[x33-xFF]|x01[x00-x2C])Эффект: некорректный ответ может вызвать отказ вобслуживании на клиенте Modbus (сервере SCADA/консолиоператора).• Function Code 23: Read/Write Multiple Registers
  • 29. Атака 24: Выключение контроллера из системыЭффект: контроллер не отвечает на запросы, не высылаетинформацию о состоянии подключенных систем. Требуетсяперезагрузка интерфейса контроллера.29match “.{47}0x08x00x04”• Function Code 08: Diagnostics• Function Sub-Code 04 (00 04): Force Listen-Only mode
  • 30. Атака 25: Превышение макс. размера пакетаЭффект: слишком большой пакет может привести к отказу вобслуживании контроллера.30match “.{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: Сброс счетчиков диагностикиЭффект: сбрасываются счетчики и диагностический регистр,что удаляет данные о проведенных действиях надконтроллером.32match “.{47}x08x00x0A”• Function Code 08: Diagnostics• Function Sub-Code 10 (00 0A): Clear Counters and the DiagnosticRegister
  • 33. Сравнение с продуктами ведущих производителей(часть 1 из 5)33Вендор 1 Вендор 2 Наш IPSTCP MODBUS - ReportServer InformationModbus TCP - Report ServerInformationАтака 1: Получениеинформации об устройстве(вариант 1)TCP MODBUS - ReadDevice IdentificationModbus TCP - Read DeviceIdentificationАтака 2: Получениеинформации об устройстве(вариант 2)TCP MODBUS - RestartCommunications Opt.Modbus TCP - RestartCommunications OptionАтака 3: Удаленнаяперезагрузка контроллераTCP MODBUS - Force ListenOnly ModeModbus TCP - Force ListenOnly ModeАтака 24: Выключениеконтроллера из системыTCP MODBUS - IllegalPacket SizeModbus TCP - Illegal PacketSizeАтака 25: Превышениемакс. размера пакета----- Modbus TCP - Non-ModbusCommunicationАтака 26: Не-ModbusтрафикTCP MODBUS - Clear Ctrsand Diag RegistersModbus TCP - ClearCounters and DiagnosticRegistersАтака 27: Сброс счетчиковдиагностики
  • 34. Сравнение с продуктами ведущих производителей(часть 2 из 5)34Вендор 1 Вендор 2 Наш IPSTCP MODBUS -Unauthorized ReadRequestMODBUS Invalid Read CoilsRequest ParametersMODBUS Invalid Read DiscreteInputs Request ParametersMODBUS Invalid Read InputRegisters Request ParametersMODBUS Invalid Read HoldingRegisters Request ParametersАтаки 4-7:Некорректные запросына чтениеTCP MODBUS -Unauthorized WriteRequestModbus TCP - (0x06) WriteSingle Register Invalid RequestModbus TCP - (0x16) Mask WriteRegister Invalid RequestMODBUS Invalid Write SingleCoil Request ParametersMODBUS Invalid Write MultipleRegisters Request ParametersMODBUS Invalid Write MultipleCoils Request ParametersАтаки 12-16:Некорректные запросына запись----- MODBUS Illegal Read-WriteMultiple Registers RequestParametersАтака 22: Некорректныйзапрос чтения/записи
  • 35. Сравнение с продуктами ведущих производителей(часть 3 из 5)35Вендор 1 Вендор 2 Наш IPS------- MODBUS Invalid Read CoilsResponse ParametersMODBUS Invalid Read DiscreteInputs Response ParametersMODBUS Invalid Read InputRegisters Response ParametersMODBUS Invalid Read HoldingRegisters Response ParametersАтаки 8-11:Некорректные ответына запросы чтения------- Modbus TCP - (0x05) WriteSingle Coil Invalid ResponseModbus TCP - (0x0F) WriteMultiple Coils Invalid ResponseModbus TCP - (0x10) WriteMultiple Registers InvalidResponseModbus TCP - (0x16) Mask WriteRegister Invalid ResponseАтаки 17-21:Некорректные ответына запросы записи------ MODBUS Illegal Read-WriteMultiple Registers ResponseParametersАтака 23: Некорректныйответ на запросчтения/записи
  • 36. Сравнение с продуктами ведущих производителей(часть 4 из 5)36Вендор 1 Вендор 2 Наш IPS------- MODBUS Serial Commands over TCPModbus TCP - Invalid Function Code IsUsedModbus TCP - Reserved Function CodeUsedРеализуемо------- Large MODBUS/TCP Data Overflow Реализуемо------ Modbus Slave Device Busy ExceptionCode DelayModbus Acknowledge Exception CodeDelayРеализуемоMODBUS Invalid Read File RecordRequest ParametersMODBUS Invalid Write File RecordRequest ParametersMODBUS Illegal Read File RecordResponse ParametersMODBUS Invalid Read FIFO QueueResponse ParametersMODBUS Invalid Write File RecordResponse ParametersРеализуемо всѐ плюс«Invalid Read FIFOQueue RequestParameters»
  • 37. Сравнение с продуктами ведущих производителей(часть 5 из 5)37Вендор 1 Вендор 2 Наш IPS------- MODBUS Response Header LengthTCP Segment Size MismatchЗамещается сигнатурой26 (Не-Modbus трафик)------- Modbus TCP - Value ScanMODBUS Function Code ScanMODBUS Point List ScanНе реализуемо;реализуемо на любомstateful IPS
  • 38. Выводы• Современные АСУ ТП по природе своей уязвимы и нуждаются взащите• Доступную и эффективную защиту можно реализоватьсобственноручно• Сигнатуры, сделанные лично, могут быть выпущены оперативнее,а действовать – точнее и эффективнее готовых решений,предлагаемых рынком• Следует строго оценивать пригодность коробочных решений дляприменимости их в своей сети38
  • 39. СПАСИБО ЗА ВНИМАНИЕ!39Дмитрий ДудовВедущий инженер по защите систем SCADAddudov@amt.ru+7 (495) 725-7660