Добро пожаловать обратно, мои начинающие сетевые криминалисты!
Теперь, когда вы получили базовые знания о Wireshark и провели анализ атаки вредоносного ПО с помощью Wireshark, давайте расширим сферу сетевых атак до такой важной, но часто упускаемой из виду области ИТ-безопасности, как безопасность SCADA/ICS.
В отличие от большинства атак на ИТ-безопасность, атаки на системы 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.
Как видите, протокол Modbus легкий и простой.
Теперь откроем пример трафика Modbus с помощью Wireshark. В этом руководстве мы будем использовать pcap-файл с тестовыми данными Modbus. Чтобы открыть его, откройте файл modbus_test_data_part1.pcap в Wireshark (Файл –> Открыть).
Теперь, когда файл захвата загружен, мы можем использовать Wireshark для анализа. Для начала разработаем несколько фильтров для трафика Modbus. Самый простой фильтр Modbus:
mbtcp
Это отфильтрует весь трафик, кроме трафика Modbus по TCP.
Если кликнуть по любому из этих пакетов, можно начать более подробный анализ. Развернув TCP-заголовок, мы увидим порт назначения и протокол (502 и mbap соответственно).
Если прокрутить немного вниз, то мы дойдем до полей Modbus и Modbus/TCP и прочитаем их значения.
Чтобы создать более специфичные фильтры Modbus, перейдите на вкладку «Выражение» рядом с окном фильтра и откройте конструктор выражений. Прокрутите вниз до буквы «M» в подокне имени поля, пока не дойдёте до пункта «modbus».
Как видите выше, три (3) поля содержат в своих именах слово «modbus». Давайте развернем каждое и посмотрим, что они содержат. Фильтр для Modbus/TCP включает только поля, уникальные для реализации Modbus через TCP. Протокол Modbus включает все поля исходного протокола Modbus.
Если мы ищем определенные поля в протоколе Modbus, а не реализацию Modbus в протоколе TCP/IP, мы будем использовать эти поля.
Шаг №2: Фильтрация диагностических кодов Modbus
Сначала давайте посмотрим на диагностические коды нашей связи Modbus (более подробную информацию о диагностических кодах Modbus см. в моей статье о протоколе Modbus ).
Мы можем сделать это, введя:
modbus.диагностический_код
в окно фильтра.
После этого Wireshark извлечёт все пакеты Modbus с заполненным полем диагностического кода. Если мы проверим один из этих пакетов и прокрутим страницу вниз до полей протокола Modbus, то увидим, что у него диагностический код = 4, или «Force Listen Only Mode». Мы можем фильтровать дальше и искать только пакеты с этим диагностическим кодом, создав следующий фильтр:
modbus_diagnostic_code ==4
После этого мы увидим, что Wireshark нашел только 3 пакета с этим диагностическим кодом.
Этот кадр Modbus с этим диагностическим кодом использовался в многочисленных DoS-атаках на SCADA, поскольку он отправляет сигнал ПЛК «Force Listen Only» (принудительно прослушивать только данные) и не отправляет данные исполнительным механизмам, устройствам сигнализации и другим ПЛК, с которыми он взаимодействует. Последствия могут быть катастрофическими!
Шаг №3: Фильтрация других подозрительных пакетов Modbus
Конечно, мы можем создать множество различных фильтров для поиска пакетов, соответствующих определённым критериям. В данном случае мы ищем «перезапуск связи», создавая следующий фильтр:
modbus.diagnostic_restart_communication_option
Этот диагностический код также может быть использован для инициирования DoS-атаки, поскольку он посылает сигнал на перезапуск ПЛК.
Шаг №4: Злоумышленник читает регистры
Здесь мы ищем пакеты, которые считывают содержимое 16-битного регистра, создав фильтр, такой как:
modbus.register.uint16
Эти пакеты могут указывать на то, что злоумышленник пытается прочитать значения данных в регистре, чтобы понять их функционирование перед атакой (тип разведки) или перед попыткой изменить эти значения на что-то со вредоносным содержанием и воздействием.
Заключение
Wireshark также можно использовать для анализа атак на SCADA/ICS, если вы знаете, что искать. Любой инженер по безопасности, работающий в сфере SCADA/ICS, должен хорошо разбираться в Wireshark и знать особенности протоколов связи, используемых на его объекте, чтобы быть в состоянии проводить такой анализ.
Теперь, когда вы получили базовые знания о Wireshark и провели анализ атаки вредоносного ПО с помощью Wireshark, давайте расширим сферу сетевых атак до такой важной, но часто упускаемой из виду области ИТ-безопасности, как безопасность SCADA/ICS.
В отличие от большинства атак на ИТ-безопасность, атаки на системы 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.
Как видите, протокол Modbus легкий и простой.
Теперь откроем пример трафика Modbus с помощью Wireshark. В этом руководстве мы будем использовать pcap-файл с тестовыми данными Modbus. Чтобы открыть его, откройте файл modbus_test_data_part1.pcap в Wireshark (Файл –> Открыть).
Теперь, когда файл захвата загружен, мы можем использовать Wireshark для анализа. Для начала разработаем несколько фильтров для трафика Modbus. Самый простой фильтр Modbus:
mbtcp
Это отфильтрует весь трафик, кроме трафика Modbus по TCP.
Если кликнуть по любому из этих пакетов, можно начать более подробный анализ. Развернув TCP-заголовок, мы увидим порт назначения и протокол (502 и mbap соответственно).
Если прокрутить немного вниз, то мы дойдем до полей Modbus и Modbus/TCP и прочитаем их значения.
Чтобы создать более специфичные фильтры Modbus, перейдите на вкладку «Выражение» рядом с окном фильтра и откройте конструктор выражений. Прокрутите вниз до буквы «M» в подокне имени поля, пока не дойдёте до пункта «modbus».
Как видите выше, три (3) поля содержат в своих именах слово «modbus». Давайте развернем каждое и посмотрим, что они содержат. Фильтр для Modbus/TCP включает только поля, уникальные для реализации Modbus через TCP. Протокол Modbus включает все поля исходного протокола Modbus.
Если мы ищем определенные поля в протоколе Modbus, а не реализацию Modbus в протоколе TCP/IP, мы будем использовать эти поля.
Шаг №2: Фильтрация диагностических кодов Modbus
Сначала давайте посмотрим на диагностические коды нашей связи Modbus (более подробную информацию о диагностических кодах Modbus см. в моей статье о протоколе Modbus ).
Мы можем сделать это, введя:
modbus.диагностический_код
в окно фильтра.
После этого Wireshark извлечёт все пакеты Modbus с заполненным полем диагностического кода. Если мы проверим один из этих пакетов и прокрутим страницу вниз до полей протокола Modbus, то увидим, что у него диагностический код = 4, или «Force Listen Only Mode». Мы можем фильтровать дальше и искать только пакеты с этим диагностическим кодом, создав следующий фильтр:
modbus_diagnostic_code ==4
После этого мы увидим, что Wireshark нашел только 3 пакета с этим диагностическим кодом.
Шаг №3: Фильтрация других подозрительных пакетов Modbus
Конечно, мы можем создать множество различных фильтров для поиска пакетов, соответствующих определённым критериям. В данном случае мы ищем «перезапуск связи», создавая следующий фильтр:
modbus.diagnostic_restart_communication_option
Этот диагностический код также может быть использован для инициирования DoS-атаки, поскольку он посылает сигнал на перезапуск ПЛК.
Шаг №4: Злоумышленник читает регистры
Здесь мы ищем пакеты, которые считывают содержимое 16-битного регистра, создав фильтр, такой как:
modbus.register.uint16
Эти пакеты могут указывать на то, что злоумышленник пытается прочитать значения данных в регистре, чтобы понять их функционирование перед атакой (тип разведки) или перед попыткой изменить эти значения на что-то со вредоносным содержанием и воздействием.
Заключение
Wireshark также можно использовать для анализа атак на SCADA/ICS, если вы знаете, что искать. Любой инженер по безопасности, работающий в сфере SCADA/ICS, должен хорошо разбираться в Wireshark и знать особенности протоколов связи, используемых на его объекте, чтобы быть в состоянии проводить такой анализ.