На конференции 37C3 этичные хакеры рассказали, как они взламывали поезда, чтобы их отремонтировать — а в процессе обнаружили много интересного
В конце 2023 года конференции 37C3 польские хакеры из команды Dragon Sector рассказали о том, как они взламывали поезда, — а главное, почему и зачем они это делали.
Зачем польские хакеры взламывали поезда
История началась с того, что польская железнодорожная компания «Нижнесилезские железные дороги» (НСЖД) приобрела у польского же производителя Newag одиннадцать поездов Impuls 45WE. Примерно через пять лет интенсивного использования поездов настало время для их сервисного обслуживания. Это достаточно сложная и дорогостоящая процедура, которую проводят при пробеге в 1 000 000 км. Для выбора ремонтной мастерской для сервисного обслуживания поездов НСЖД объявила тендер. Компания-производитель, Newag, также приняла в нем участие, но проиграла ремонтной мастерской SPS, которая смогла предложить железной дороге существенно более выгодные условия. Однако после того как SPS закончила техобслуживание первого поезда, тот… просто не завелся. И это несмотря на то, что как механически, так и электрически все с ним вроде бы было в порядке. Всевозможные инструменты диагностики говорили о полной исправности, также ее подтверждали осмотры механиков и электриков. И тем не менее состав наотрез отказывался даже пытаться куда-либо ехать.
Через некоторое время история повторилась с несколькими другими поездами, которые попали в сервис SPS, а также еще с одним поездом, отправленным на обслуживание в другую ремонтную мастерскую. Собственно, на этом моменте, после многочисленных попыток разгадать загадку отказывающихся работать поездов, в SPS решили позвать на помощь команду хакеров.
Закладки и бэкдоры от производителя в прошивке поездов
Далее последовали нескольких месяцев реверс-инжиниринга, анализа и сравнения прошивок как уже вышедших из строя, так и еще исправных поездов. В итоге исследователи не только научились запускать загадочно сломавшиеся поезда, но и обнаружили в коде несколько интересных механизмов, заложенных туда программистами Newag.
Например, они обнаружили в прошивке одного из поездов функцию проверки GPS-координат. Условие состояло в том, что если поезд проводил более 10 дней в одном из участков, заданных этими координатами, то после этого он просто переставал запускаться. Что же это были за координаты? Эти координаты определяли территории нескольких ремонтных мастерских. Координаты собственной мастерской производителя также фигурировали в коде, но в них не запускалась логика блокировки поезда, — так что, по всей видимости, координаты мастерской Newag использовались в тестовых целях.
Другая функция блокировала поезд после замены одной из деталей, отслеживая это событие по изменению серийного номера. Чтобы после этого разблокировать поезд, требовалось нажать определенное сочетание кнопок на бортовом компьютере в кабине машиниста.
В одном из составов была обнаружена еще одна интересная закладка. Она посылала сообщение о неисправности компрессора в том случае, если текущая дата была больше или равна 21, месяц был больше или равен 11 и год — больше или равен 2021. А все дело в том, что сервисное обслуживание этого состава было запланировано на 21 ноября 2021 года. Активации данной закладки удалось избежать чудом: поезд отправился в сервис раньше запланированного, а вернулся в строй только в январе 2022 года. Поэтому условие не сработало — месяц был меньше 11.
Также в одном из исследованных составов было обнаружено устройство, подписанное как «конвертер UDP<->CAN», которое было подключено к GSM-модему. При этом бортовой компьютер данного поезда отправлял обнаруженному устройству статус блокировки.
Впрочем, наиболее часто встречавшейся закладкой (а надо отметить, что в прошивки разных составов были встроены разные механизмы) была блокировка поезда в том случае, если он простаивал в течение определенного количества дней, что при активном использовании может произойти только в случае техобслуживания. Суммарно команда польских хакеров исследовала 30 поездов Impuls, принадлежащих как НСЖД, так и нескольким другим железнодорожным компаниям. Закладки того или иного типа были обнаружены аж в 24 составах.
Как защищаться от закладок
Эта история показывает, что вредоносные закладки могут встречаться в самых неожиданных местах и самых разнообразных информационных системах. Поэтому над каким бы проектом вы ни работали, если у вас используется какой-либо сторонний код, а тем более система целиком, перед эксплуатацией имеет смысл как минимум провести ИБ-аудит. Дополнительно, желательно в договорных документах (в частности в техническом задании к ПО) нужно указать требование к наличию либо отсутствию кода в ПО, возможно приводящему к непредвиденным последствиям.
По материалам Касперский