Команда специалистов по влажной уборке городов рассказывает об участии в соревновании «CityF: противостояние», прошедшем в рамках Positive Hack Days 2016.

Прошли недели с окончания конференции Positive Hack Days 2016. Ты, наверное, уже видел статьи и заметки в блогах о том, как доблестные защитники не дали хакерам получить контроль над городом в состязании под названием «CityF: противостояние». Поэтому расскажу, как команда Evil Dwarfs, состоящая из трех человек, несколько раз таки провела влажную уборку макета населенного пункта.

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

Стоит отметить некоторые весьма «интересные» шаги команды защиты для обеспечения безопасности серверов. Например, блокирование POST-запросов и использование белого списка для URL. В результате атакующие не могли ни использовать уязвимые параметры в POST-запросах, ни брутить пароли для интерфейса администратора. К нашему сожалению, после таких мер, проблемы с доступом возникли и у администраторов сервисов ;). В итоге организаторам соревнований пришлось вмешаться, и они смогли убедить защитников использовать менее «эффективные» методы.

Второй день начался с открытия доступа к игровым стендам. Обнаружив контроллеры релейной защиты и автоматики SIPROTEC4 фирмы Siemens, мы при помощи команд MMS (стандарт МЭК61850) проанализировали структуру каждого устройства. Нашлось несколько устройств в составе магистральной подстанции, которые управляли коммутационными аппаратами. Мы сопоставили полученную информацию со схемой стенда (она была изображена на самом стенде) и нашли соответствие между контроллерами управления и коммутаторами. Используя стандартный клиент MMS, мы стали отправлять управляющие команды. Это привело сразу к нескольким авариям:

  1. отключение понижающего трансформатора привело к потере электропитания городской подстанцией и соответственно обесточиванию города;
  2. включение заземляющего ножа шин 500 кВ под напряжением, то есть замыкание на землю работающих шин. От этого выгорело несколько элементов подстанции;
  3. отключение работающего генератора ГЭС от электросети, что потребовало резкого экстренного его останова.
Внутренняя структура контроллера SIPROTEC4
Внутренняя структура контроллера SIPROTEC4
Выдача команды управления
Выдача команды управления

Таким образом, мы смогли помыть город первый раз. Собственно, этот момент и был зафиксирован многими участниками конференции в своих блогах.

Далее нами был обнаружен ПЛК S7-1500 фирмы Siemens, у которого оказался поднятым веб-сервис. Зная, что в веб-интерфейсе присутствует возможность управления тегами на контроллере, мы незамедлительно приступили к подбору пароля. Это, увы, ничего нам не дало, так как интерфейса управления тегами не было.

Веб-интерфейс администратора ПЛК
Веб-интерфейс администратора ПЛК

Пришлось ломать сам контроллер. Вдоволь наигравшись с протоколами, мы скачали сервисное ПО под названием Tia Portal. Для корректной работы в нем необходимо создать правильную модель контроллера. Когда SCADA атакуют удаленно, с этим могут быть связаны проблемы. В нашем же случае достаточно было подойти к стенду и подсмотреть макет контроллера.

ПЛК
ПЛК

На ПЛК находится программа, которая управляет работой окружающих его устройств. То есть, получив контроль над ним, ты получаешь контроль над ГЭС. Но когда мы подключились к ПЛК, механизм аутентификации помешал нам сделать что-либо кроме запуска или остановки программы. Впрочем, и это уже неплохо: мы остановили программу в тот момент, когда на ГЭС были открыты заслонки для сброса лишней воды. Само собой, они не закрылись после сброса необходимого количества воды, и мы помыли город еще раз.

На этом этапе стали появляться другие команды хакеров, которые добрались до ПЛК. Поэтому после подбора пароля мы не просто заменили пароль на свой, но и выставили самые секьюрные настройки, которые не позволяли делать с ПЛК что-то плохое.

Мы получили полный доступ к контроллеру — можно выдыхать и пораскинуть мозгами. Первая появившаяся у нас мысль — написать программу, в которой всем тегам присваивается единичка, и загрузить ее на ПЛК. Но мы решили этого не делать и за два часа до окончания соревнований обратились за помощью к тем людям, что сидели за стендами. Мы хотели не устраивать в городе полный хаос, а культурно провести еще одну влажную уборку. В результате была написана программа, которая открывала все заслонки для сброса воды.

Программа, контролирующая ГЭС
Программа, контролирующая ГЭС

Здесь уже эпического потопа не получилось, так как много воды было израсходовано в прошлые разы. Нам пришлось довольствоваться небольшим ручейком. Тем не менее наша команда получила полный контроль над ГЭС, и, как можно судить по публикациям, это осталось незамеченным.

Никто не обратил внимания и на наш «стелс»-роутер, который мы на второй день установили в сеть со стендами. Его не обнаружили даже несмотря на то, что мы сканировали сеть, перехватывали и подменяли трафик.

В итоге нашей команде очень понравились соревнования в этом году, даже несмотря на безрезультатный первый день. Мы выражаем благодарность организаторам, а также тем, кто занимался сопровождением стендов. Особенно Илье Карпову и Максиму Никандрову. Респект! А с вами были Лёша, Дима и Боря. До новых встреч!

1 комментарий

  1. A.T.

    14.06.2016 at 22:29

    1. Если долбануть красноярскую ГЭС, то затопит целый миллионный город.
    2. …
    3. PROFIT!!!

Оставить мнение

Check Also

Tips’n’Tricks из арсенала андроидовода. Самые интересные, полезные и нестандартные трюки с Android

Многие годы мы рассказывали про самые разные способы оптимизировать, модифицировать и твик…