ru
ru en

Команда Хакердом: Мы взломали цифровую подстанцию, ничего не зная об электроэнергетике и оборудовании

О том, как взламывали цифровую подстанцию, ничего не зная ни о архитектуре и функциях РЗА и АСУ ТП.

В нескольких материалах на нашем сайте, посвященным вопросам кибербезопасности энергообъектов (раз, два, три), многими специалистами отмечалась необходимость понимания хакерами принципов работы комплексов РЗА и АСУ ТП. Но есть и обратное мнение:

Плотников

Константин Плотников – участник команды Хакердом (Екатеринбург), которая участвовала в конкурсе Лаборатории Касперского по взлому цифровой подстанции – Kaspersky Industrial CTF. По итогам конкурса команда Хакердом заняла второе место, не имея в своем составе специалистов по РЗА и АСУ ТП, в отличии от команды, занявшей первое место. Вот их впечатления от конкурса:

Хакердом
Команда «Хакердом»
Екатеринбург
По итогу отборочных соревнований нашу команду пригласили на финал соревнований Kaspersky Industrial CTF. И в четверг-пятницу, пока все готовились отмечать Хэллоуин, мы пытались взломать электроподстанцию.

Выглядела она так:

Хакердом

На стенде было использовано реальное оборудование Siemens, а за основу взята схема реального объекта, так что всё как в жизни. Конечно, сеть АСУ ТП (автоматизированной системы управления технологическим процессом) должна быть изолирована, но в реальности это, зачастую, не так, поэтому из-под стенда тянулась связка Ethernet-кабелей, к которым подключались участники. Ключевой задачей было устроить диверсию — короткое замыкание, на которое не отреагирует система защиты, и тем самым спалить ЛЭП. Конечно, очки давали и за другие типы заданий: сбор информации и взлом.

ЛЭП

Стенд мы увидели в среду вечером, по приезде в Москву. Сфоткали модели используемого оборудования, любезно указанные производителем на передней панели (Siemens Siprotec 7SD5, 6MD66, 7SJ64, 7UT63) и после ужина пошли изучать, что же это такое. К счастью, Дима Симонов, один из участников нашей команды, знаком с физикой немного больше школьного курса и смог нам в общих чертах описать работу цепи, изображенной в центре стенда. На стенде была собрана модель подстанции, понижающей напряжение с 500 до 330 кВ. Подстанция имеет два ввода ЛЭП для резервирования (в верхней части). Две окружности в центре — это силовой трансформатор, понижающий напряжение. Красные и зеленые квадраты — высоковольтные выключатели, предназначенные для включения и выключения цепи под нагрузкой. Белые квадраты — это разъединители, необходимые для создания видимого разрыва в цепи либо заземления участка цепи на время проведения обслуживания, и не предназначенные для включения и выключения под нагрузкой. Оборудование стенда, ориентируясь на сигналы датчиков, должно воздействовать на переключатели, чтобы минимизировать последствия различных аварий. Нам нужно было понять принцип работы контроллеров, чтобы вывести из строя системы защиты.

На следующее утро сонные, но уверенные в себе, мы подключились и начали слушать/сканировать сеть, надеясь наткнуться на что-то интересное. На интерфейсе мы услышали широковещательные пакеты из сети 172.20.0.0/24, в которую мы тут же и прописались, но nmap дал лишь несколько открытых портов, да и те, вероятно, на машинах участников. Как выяснилось позже, организаторы просто забыли открыть доступ внутрь. Через некоторое время, оказавшись внутри, мы увидели много интересного. Прежде всего у всех контроллеров был веб-интерфейс, в котором видна подробная информация об устройствах, включая версии прошивок. Найти такую информацию было одним из заданий. Кроме того, на UDP-порту 50000 висел интерфейс управления контроллером. На этом порту положено общаться тем самым протоколом, который был в бонусных заданиях отборочного тура. И его использует утилита DIGSI, которую мы заранее приготовили. Демо-версии для неё нет, но, если реальный злоумышленник может скачать её с торрента, придётся и нам поступить так же. Для подключения к устройству нужно указать модель устройства и двухбайтовый адрес, причём устройство отвечает «я не AAA, я BBB!» когда обращаешься к нему неправильно, а 65536 комбинаций адреса было не сложно перебрать. Формально необходимо ещё указать пароль, который по умолчанию имеет значение 000000, но система настолько завязана на этот пароль, что его смена приводит к отказу многих модулей, так что пароль никто не меняет. Получив все нужные значения, контроллер пустил нас в интерфейс управления, и мы получили полный контроль над устройствами. Сначала мы научились просто разрывать сеть разъединителем, чего нельзя делать под нагрузкой, так как это приводит к его повреждению. Это принесло немного баллов, но короткое замыкание устроить не получалось. Потом заметили галочку «игнорировать защитные блокировки» и, отключив их, спалили ЛЭП, чуть уступив соперникам по времени.

Поскольку использование DIGSI открывало полный доступ, мы получили небольшое число баллов за разные другие шалости, например дефэйс:

Siemens

Кто-то из участников даже попытался прошить два устройства неизвестными прошивками, что привело к окирпичиванию устройств (стоимостью не менее € 10 000 каждое), и организаторам до конца соревнований так и не удалось их восстановить. Вскоре организаторы заявили, что больше взломы с использованием DIGSI не принимаются, и нужно искать другие пути.

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

Широковещательные пакеты, которые мы увидели ранее, относились к протоколу GOOSE, так что мы начали пасти гусей. Гуси стали локальным мемом, потому что мы их слушали, изучали и пытались засылать в эфир своих, в надежде на реакцию. GOOSE — это очень простой протокол поверх Ethernet, обеспечивающий взаимодействие типа «Publisher–Subscriber». В нем не заложено никаких средств для аутентификации, поскольку сообщения должны передаваться и обрабатываться максимально быстро. Каждое устройство посредством гусей рассказывало остальным о своем состоянии. Нам удалось написать скрипт для этого протокола, который отправкой нелегитимных пакетов позволил прервать гусиное общение :-). Для отправки поддельных гусей и других L2-пакетов пользовались утилитой Mausezahn. Ещё ночью между первым и вторым днём соревнования у нас получился фаззер для протокола, по которому работала DIGSI, правда особого результата он, увы, не принёс. Попутно мы изучали другие устройства в сети — например, маршрутизатор Ruggedcom RX 1000 и NTP-сервер Метроном-300 имели дефолные пароли. Перезагрузка маршрутизатора парализовала сеть, а отключение NTP могло привести к аварии в результате рассинхронизации. Но мы ограничились сменой времени, чтобы результат атаки можно было увидеть за время соревнований. Кто-то из участников сумел проэксплуатировать уязвимость на коммутаторах (возможно, shellshock), на датчиках тоже обнаружился порт, к которому можно подключиться специальной бесплатной утилитой без аутентификации и выполнять произвольные команды, например, прошивать. О части уязвимостей я умолчу, поскольку они были впервые выявлены в ходе соревнований, и, прежде чем предавать их огласке, следует сообщить разработчикам. Я много времени потратил на взлом Windows-машин, которые тоже были в сети, но на них, к сожалению, были установлены актуальные обновления, а пароли по умолчанию в установленных программах изменены. Так что проломиться через их защиту никому так и не удалось, зато все остальные устройства, представленные на стенде, хоть кто-то да взломал.

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

Kaspersky

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

Когда конференция закончилась, нам наконец удалось прогуляться по гостинице. Место организаторы выбрали шикарное. Вот вид из окна, чтобы можно было оценить пафос:

ImperialHotel

ImperialHotel-1

Кроме того, в проживание включены и бассейн и SPA, так что мы немного расслабились перед ужином.
После ужина мы повнимательнее изучили призы.

Prize

Кроме сувенирной продукции там были и интересные хакерские инструменты. Мне достались портативная точка доступа и Lan Turtle — сетевая карта для USB, позволяющая оставлять back-connect shell или проводить MITM-атаку. Ещё там были флешка, определяющаяся как клавиатура и подающая на ввод предварительно запрограммированый набор нажатий, диск на 2 ТБ с радужными таблицами для гарантированного взлома GSM за 3 минуты, и программируемый эмулятор RFID-метки. В целом впечатления от проведенной конференции очень хорошие. Единственный минус — теперь стало страшнее жить в мире, полном беззащитных систем АСУ ТП, которые в любой момент могут сгореть, взорваться, отравить атмосферу и принести много бед живущим поблизости людям. Но хорошо, что вопрос защиты АСУ ТП встаёт всё острее.

Цифровая подстанция

(close)