Сетевая экспертиза, часть 2: обнаружение и анализ DoS-атаки на SCADA

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
152
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие сетевые криминалисты!

Теперь, когда вы получили базовые знания о Wireshark и провели анализ атаки вредоносного ПО с помощью Wireshark, давайте расширим сферу сетевых атак до такой важной, но часто упускаемой из виду области ИТ-безопасности, как безопасность SCADA/ICS.

6a4a49_4ddeb5cf76634811858c404d13c9996a~mv2.jpg


В отличие от большинства атак на ИТ-безопасность, атаки на системы SCADA/ICS направлены не на конфиденциальную информацию, а на сам процесс. DDoS-атака на веб-сервер может быть дорогостоящей и неудобной, а вот DDoS-атака на систему SCADA может быть опасна для жизни! DoS-атака на клапан или подсистему может привести к выводу из строя всего предприятия и иметь взрывоопасные последствия.

Ещё одним ключевым отличием традиционных ИТ-систем от систем SCADA являются протоколы связи. Системы SCADA/ICS построены на устаревших последовательных протоколах, таких как Modbus и DNP3 . Хотя теперь они инкапсулированы в TCP/IP для внешней связи, внутри они всё ещё представляют собой довольно простые последовательные протоколы.

Шаг №1: Поиск трафика Modbus

Теперь, когда мы знаем, как использовать Wireshark для обычного трафика TCP/IP, давайте применим его для анализа и изоляции трафика SCADA/ICS. Рассмотрим повсеместно распространённый протокол Modbus через TCP-пакет , пожалуй, самый распространённый протокол SCADA/ICS. Хотя Modbus изначально разрабатывался для использования в последовательных сетях, таких как RS232 или RS485, он был адаптирован для использования в сетях TCP/IP.

6a4a49_58be8c22c77545fe8e28acb6b7229210~mv2.gif


Как видите, протокол Modbus легкий и простой.

Теперь откроем пример трафика Modbus с помощью Wireshark. В этом руководстве мы будем использовать pcap-файл с тестовыми данными Modbus. Чтобы открыть его, откройте файл modbus_test_data_part1.pcap в Wireshark (Файл –> Открыть).

Теперь, когда файл захвата загружен, мы можем использовать Wireshark для анализа. Для начала разработаем несколько фильтров для трафика Modbus. Самый простой фильтр Modbus:

mbtcp

Это отфильтрует весь трафик, кроме трафика Modbus по TCP.

6a4a49_9d8ed2cafe524b6b870dee4e8002ea53~mv2.png


Если кликнуть по любому из этих пакетов, можно начать более подробный анализ. Развернув TCP-заголовок, мы увидим порт назначения и протокол (502 и mbap соответственно).

6a4a49_8fbf8fbe53484c63add5c94efb8ee2ca~mv2.png


Если прокрутить немного вниз, то мы дойдем до полей Modbus и Modbus/TCP и прочитаем их значения.

6a4a49_94e5866a92af44d588f62235d5b679d6~mv2.png


Чтобы создать более специфичные фильтры Modbus, перейдите на вкладку «Выражение» рядом с окном фильтра и откройте конструктор выражений. Прокрутите вниз до буквы «M» в подокне имени поля, пока не дойдёте до пункта «modbus».

6a4a49_982244514ed54b8bbde8bc724e63a9e5~mv2.png


Как видите выше, три (3) поля содержат в своих именах слово «modbus». Давайте развернем каждое и посмотрим, что они содержат. Фильтр для Modbus/TCP включает только поля, уникальные для реализации Modbus через TCP. Протокол Modbus включает все поля исходного протокола Modbus.

6a4a49_4f57ec2c9bbf49298042e2443a2ea8bf~mv2.png


Если мы ищем определенные поля в протоколе Modbus, а не реализацию Modbus в протоколе TCP/IP, мы будем использовать эти поля.

Шаг №2: Фильтрация диагностических кодов Modbus

Сначала давайте посмотрим на диагностические коды нашей связи Modbus (более подробную информацию о диагностических кодах Modbus см. в моей статье о протоколе Modbus ).

Мы можем сделать это, введя:

modbus.диагностический_код

в окно фильтра.

6a4a49_eb493881f66a445cb745cc42866b58be~mv2.png


После этого Wireshark извлечёт все пакеты Modbus с заполненным полем диагностического кода. Если мы проверим один из этих пакетов и прокрутим страницу вниз до полей протокола Modbus, то увидим, что у него диагностический код = 4, или «Force Listen Only Mode». Мы можем фильтровать дальше и искать только пакеты с этим диагностическим кодом, создав следующий фильтр:

modbus_diagnostic_code ==4

После этого мы увидим, что Wireshark нашел только 3 пакета с этим диагностическим кодом.

6a4a49_e7a62bb3a771462485fcda6dc2c6a9b4~mv2.png
Этот кадр Modbus с этим диагностическим кодом использовался в многочисленных DoS-атаках на SCADA, поскольку он отправляет сигнал ПЛК «Force Listen Only» (принудительно прослушивать только данные) и не отправляет данные исполнительным механизмам, устройствам сигнализации и другим ПЛК, с которыми он взаимодействует. Последствия могут быть катастрофическими!

Шаг №3: Фильтрация других подозрительных пакетов Modbus

Конечно, мы можем создать множество различных фильтров для поиска пакетов, соответствующих определённым критериям. В данном случае мы ищем «перезапуск связи», создавая следующий фильтр:

modbus.diagnostic_restart_communication_option

6a4a49_b51a34233ada42f9a754197d9516162f~mv2.png


Этот диагностический код также может быть использован для инициирования DoS-атаки, поскольку он посылает сигнал на перезапуск ПЛК.

Шаг №4: Злоумышленник читает регистры

Здесь мы ищем пакеты, которые считывают содержимое 16-битного регистра, создав фильтр, такой как:

modbus.register.uint16

6a4a49_50c09f4123d042c2b34d6110a53aa61a~mv2.png


Эти пакеты могут указывать на то, что злоумышленник пытается прочитать значения данных в регистре, чтобы понять их функционирование перед атакой (тип разведки) или перед попыткой изменить эти значения на что-то со вредоносным содержанием и воздействием.

Заключение

Wireshark также можно использовать для анализа атак на SCADA/ICS, если вы знаете, что искать. Любой инженер по безопасности, работающий в сфере SCADA/ICS, должен хорошо разбираться в Wireshark и знать особенности протоколов связи, используемых на его объекте, чтобы быть в состоянии проводить такой анализ.
 
Назад
Сверху Снизу