Автоматизированные системы управления технологическими процессами (АСУ ТП) контролируют работу критических информационных инфраструктур на таких значимых для страны объектах как крупные транспортные корпорации, компании из сферы здравоохранения и связи, предприятия топливно-энергетического комплекса, атомной энергетики, оборонной, ракетно-космической, горнодобывающей, металлургической и химической промышленности.


Атака на объекты критической информационной инфраструктуры (КИИ) может вызвать различные нарушения работы систем электричества, водоснабжения, транспортной сети и других. Атака на электростанцию, к примеру, может не только обесточить город, но и вызвать разрушение самих станций, что приведет к человеческим жертвам. Атаки на другие системы тоже могут нанести значительный вред здоровью и жизни граждан. Так, например, в 2021 году в штате Флорида, США злоумышленники совершили хакерскую атаку на очистные сооружения, повысив концентрацию химикатов в сотню раз. Атаку успели заметить и устранить, в ином случае она могла бы привести к человеческим жертвам. В Йоханнесбурге несколько лет назад произошло масштабное отключение энергосистем в районах города, в Венесуэле – полное отключение энергии в 18 из 23 штатов. Подобные инциденты влекут значительное и долговременное нарушение работоспособности инфраструктуры и промышленных предприятий. Поэтому необходимо уделять большое внимание информационной безопасности объектов КИИ и АСУ ТП и постоянно анализировать существующие и новые атаки на промышленные системы, тем более, что их количество в последнее время выросло.

Рисунок 1. Протокол S7comm на схеме АСУ ТП
Рисунок 1. Протокол S7comm на схеме АСУ ТП

Программируемые логические контроллеры (ПЛК) Siemens S7 составляют более 30% мирового рынка ПЛК [1]. Так как платформа популярна, взлом ее компонентов и протоколов позволяет злоумышленникам получить доступ ко многим промышленным системам.
Таким образом, актуальным является изучение структуры и уязвимостей протокола связи S7comm, а также анализ существующих уязвимостей отдельных устройств платформы, что позволяет обеспечивать достаточный уровень защиты промышленных сетей и компонентов.

Описание протокола S7

S7comm (S7-Communication) – это собственный протокол Siemens, который позволяет взаимодействовать с программируемыми логическими контроллерами (ПЛК) семейства Siemens S7-300/400.

Он используется для коммуникаций на всех этапах жизненного цикла АСУ ТП: программирования ПЛК, обмена данными между ПЛК, доступа к данным ПЛК из систем SCADA (диспетчерское управление и сбор данных) и в диагностических целях.

Данные S7comm поступают как полезная нагрузка пакетов данных протокола COTP.

Рисунок 2. Структура S7 PDU (Protocol Data Unit – блок данных протокола S7)
Рисунок 2. Структура S7 PDU (Protocol Data Unit – блок данных протокола S7)

Ниже представлена структура заголовка блока данных протокола S7. Заголовок имеет длину 10–12 байтов, сообщения подтверждения содержат два дополнительных байта кода ошибки. В остальном формат заголовка согласован для всех PDU.

Рисунок 3. Структура заголовка S7 PDU
Рисунок 3. Структура заголовка S7 PDU

Поля:

  1. Идентификатор протокола (Protocol ID): константа протокола всегда имеет значение 0x32.

  2. Тип сообщения (MSG Type): общий тип сообщения (иногда называемый типом ROSCTR).

    a.  0x01- Job Request: запрос (например, чтение/запись памяти, чтение/запись блоков, запуска устройства/остановка, настройка связи).

    b. 0x02 - Ack: простое подтверждение, отправленное устройством без поля данных.

    c. 0x03- Ack-Data: подтверждение с дополнительным полем данных, содержит ответ на запрос.

    d. 0x07- Userdata: расширение исходного протокола, поле параметра содержит идентификатор запроса/ответа (используется для программирования/отладки, чтения SZL, функций безопасности, установки времени и других меток).

  3. Зарезервировано (Reserved): всегда имеет значение 0x0000.

  4. Ссылка на блок данных протокола (PDU reference): генерируется изначально, увеличивается с каждой новой передачей, используется для связи ответов и запросов.

  5. Длина параметра (Parameter Length): длина поля параметра.

  6. Длина данных (Data Length): длина поля данных.

  7. Класс ошибки (Error class): присутствует только в сообщениях Ack-Data.

  8. Код ошибки (Error code): присутствует только в сообщениях Ack-Data [2].

Специальные коммуникационные процессоры для серии S7-400 (CP 443) могут использовать этот протокол без уровней TCP/IP [3].

Таблица 1. Уровни OSI для протокола S7 Comm
Таблица 1. Уровни OSI для протокола S7 Comm

Чтобы установить соединение с S7 PLC, необходимо выполнить 3 шага:

  1. Подключиться к ПЛК через TCP-порт 102.

  2. Подключиться на уровне ISO (запрос на подключение COTP).

  3. Подключиться на уровне S7comm («s7comm.param.func = 0xf0», установить связь).

Зависимости протокола

S7 Communication имеет следующую структуру:

  • COTP: ISO 8073 транспортный протокол COTP, ориентированный на соединение (информация доступна в спецификации RFC905).

  • TPKT: RFC1006 «Транспортные службы ISO поверх TCP: версия 3», обновление RFC2126.

  • TCP: Обычно TPKT использует TCP в качестве транспортного протокола. Хорошо известный TCP-порт для трафика TPKT – 102.

Безопасность протокола S7

На данный момент существуют две версии протокола S7 Communication [4]:

1. S7comm

Реализация TCP/IP протокола S7 опирается на блочно-ориентированную транспортную службу ISO. Протокол S7 заключен в протоколы TPKT и ISO-COTP, что позволяет передавать PDU (блок данных протокола) по TCP. Обычно связь Siemens следует традиционной модели «звезда-подчиненный» или «клиент-сервер», когда ПК (главный/клиент) отправляет S7-запросы на устройство (подчиненное/сервер). Эти запросы используются для запроса или отправки данных на устройство или выполнения определенных команд.

Протокол является незашифрованным, что делает возможным осуществление разбора и анализа пакетов.

Рисунок 4. Трехуровневая модель АСУТП. Протокол S7comm может взаимодействовать между уровнем операторского управления и уровнем автоматизации
Рисунок 4. Трехуровневая модель АСУТП. Протокол S7comm может взаимодействовать между уровнем операторского управления и уровнем автоматизации

2. S7comm plus

Протокол является зашифрованным, отсутствует открытая документация. Разбор и дальнейший анализ пакетов протокола на данный момент не найден в открытых источниках.

Аспекты безопасности протокола S7 Communication

В версии протокола S7comm отсутствуют средства для обеспечения безопасности. Протокол не является зашифрованным, что делает возможным анализ пакетов и дальнейшие атаки на основании его результатов.

Протокол S7comm plus имеет защиту от различных атак (например, от сниффинг атаки). Так, первоначальная версия протокола (используемая для связи устройства S7-1200v3.0) не была зашифрована и использовала двухбайтовое поле, называемое идентификатором сеанса, против атаки повторного воспроизведения. Однако идентификатор сеанса не является достаточным средством защиты, так как прост в подборе.

Новая версия протокола S7сomm plus (используемого для связи устройств S7-1200v4.0 и S7-1500) имеет сложную часть шифрования для защиты от атак повторного воспроизведения.

Но согласно последним данным у этой версии протокола тоже есть существенные недостатки в реализации алгоритмов шифрования. При анализе зашифрованных пакетов было обнаружено, что основная часть шифрования происходит с помощью библиотеки OMSp_core_managed.dll. В этом файле .dll с помощью среды разработки TIA Portal генерируются ключи и шифруются отдельные части пакетов с помощью частных алгоритмов.

Авторами работы «Копье, чтобы сломать стену безопасности S7CommPlus» [5], , представленной на конференции DEF CON 25, было произведено исследование шифрования протокола S7CommPlus с использованием файла .dll и получена последовательность обмена данными по протоколу, что позволяет в дальнейшем использовать известные части алгоритма для различных атак.

Ими же были предложены следующие поправки к протоколу.

1. Уровень кода

Необходимо добавить обфускацию кода и использовать дополнительные средства защиты от отладки для ключевых файлов DLL, таких как OMSp_core_managed.dll. Код ключевых файлов DLL не был защищен, поэтому злоумышленникам было легко отладить, а затем найти алгоритм шифрования.

2. Уровень проектирования

В новом протоколе S7CommPlus компания Siemens применила сложный алгоритм шифрования для защиты от повторной атаки. Однако входной параметр и алгоритм шифрования остались неизменны. Рекомендуется использовать закрытый ключ в качестве входного параметра для алгоритма шифрования при обмене данными между программным обеспечением Siemens и ПЛК.

3. Уровень протокола

Добавить шифрование целых пакетов вместо шифрования их части.

Известные эксплойты для устройств Siemens SIMATIC S7

Были найдены следующие публичные эксплойты Siemens Simatic S7, которые являются актуальными. Нет данных о том, что уязвимости, на эксплуатацию которых направлены эксплойты, уже закрыты.

Уязвимости устройств Siemens SIMATIC S7

Известные уязвимости устройств Siemens Simatic S7 были найдены на сайте cvedetails.com и проанализированы. Всего было проанализировано 68 уязвимостей.

Среди найденных уязвимостей особое внимание необходимо обратить на те, в описании которых не указаны исправленные версии. Таких всего 9. Также для 17 уязвимостей текущая версия прошивки или программного обеспечения, предлагаемая в сети Интернет, ниже версии с исправлениями. Или же для некоторых прошивок исправления отсутствуют. Поэтому данные уязвимости можно считать актуальными.

Основным вектором атак большинства описанных уязвимостей являются специально созданные пакеты. Большая часть данных уязвимостей имеет сетевой доступ. Поэтому межсетевой экран и СОВ является решением для защиты от большинства уязвимостей при наличии известных сигнатур. В InfoWatch ARMA мы разрабатываем сигнатуры для выявления попыток эксплуатации данных уязвимостей.

К основным рекомендациям по закрытию уязвимостям можно отнести следующие частные меры:

  • Использование межсетевого экрана. Межсетевой экран может использоваться для таких мер, как блокировка входящих пакетов протокола обнаружения и настройки Profinet (DCP) (Ethertype 0x8892, Frame-ID: 0xfefe), ограничение трафика портов 161/UDP, 102/TCP, запрет на клиентские соединения ENDIS_PW с S7-1200 или S7-1500 CPU и иных в зависимости от версии устройства и рекомендаций по устранению уязвимостей для него. Одним из возможных решений является межсетевой экран InfoWatch ARMA Industrial Firewall, который создан с учетом требований для АСУ ТП. С помощью существующей базы правил обнаружения вторжений он способен обнаруживать нехарактерный трафик, который может свидетельствовать об эксплуатации описанных уязвимостей.

  • Ограничение доступа к сети для уязвимых устройств.

  • Отключение встроенного веб-сервера.

  • Использование встроенной функции «защита доступа» для защиты уязвимых устройств от неавторизованных модификаций.

  • Использование VPN для защиты сетевого обмена данными между ячейками.

  • Использование устройства в доверенных сетях.

  • Настройка уровня защиты 3 (защита от чтения и записи).

К основным рекомендациям по устранению уязвимостей можно также отнести следующие общие меры:

  • Применение концепции защиты ячеек. Концепция защиты ячеек предполагает, что части сети, например, подсети IP, защищены устройством безопасности и, таким образом, сеть защищена сегментацией. Устройства в этой ячейке могут быть защищены от несанкционированного доступа извне, что не влияет на возможность работы в реальном времени, производительность или другие функции [6].

  • Применение эшелонированной защиты. Эшелонированная защита – это принцип поэтапного добавления средств защиты информации для повышения уровня безопасности системы в целом. Другими словами, если атака приводит к отказу одного механизма безопасности, другие действующие механизмы принимают меры для дальнейшего сдерживания и даже предотвращения атаки. К возможным мерам относятся обновление программного обеспечения и компонентов, использование белых списков, регистрация событий, параметризация SQL-запросов и другие [7].

  • Использование устройств в защищенной среде. Под защищенной средой в данном случае понимается общие рекомендации компании Siemens, включающие настройку рабочей среды в соответствии с инструкциями по эксплуатации, использование принципов эшелонированной защиты и концепции защиты ячеек.

Заключение

В данной работе была описана структура протокола S7comm, показаны различия между его версиями, которые влияют на информационную безопасность. Также были проанализированы уязвимости устройств Siemens SIMATIC S7, приведены основные рекомендации по защите от их эксплуатации.

Автор статьи: Парнева Ксения


  1. Eigner, Oliver & Kreimel, Philipp & Tavolato, Paul. (2018). Identifying S7comm Protocol Data Injection Attacks in Cyber-Physical Systems. 51-56. 10.14236/ewic/ICS2018.6.

  2. The Siemens S7 Communication - Part 1 General Structure

  3. S7 Communication (S7comm)

  4. Saber Mhiri. Analyzing an OT network, what to expect. INPROSEC-AUTO

  5. Cheng Lei, Li Donghong, Ma Liang NS-Focus The spear to break the security wall of S7CommPlus. DEF CON 25 (2017)

  6. Industry White Paper V1.0 Industrial Security – Security concept for the protection of industrial plants, August 2013 Industry White Paper V1.0 Industrial Security – Security concept for the protection of industrial plants, August 2013

  7. Defence in depth and how it applies to web applications

Комментарии (0)