Как преступники находят уязвимости в SCADA?

Как преступники находят уязвимости в SCADA?

Для кого эта статья?

  1. Для начинающих пентестеров.
  2. Для тех, кто хочет понять принципы работы и проблемы безопасности SCADA.
  3. Для работников предприятий, которые заинтересованы безопасностью производств.

Дисклеймер: статья создана исключительно для ознакомления и автор не несет ответственности за ваши действия. Весь материал представлен исключительно для защиты от злоумышленников.

Регулярные атаки на умные дома, взлом нефтепровода в США, взлом электростанций во Франции, взлом завода по обогащению урана в Иране - все это последствия уязвимых SCADA систем, атаки на которые растут в геометрической прогрессии.

SCADA - это программный комплекс, использующийся на различных производствах, для визуализации информации с различных датчиков и другого «железа», интегрированного в производство. То бишь SCADA работает по схеме: диспетчер - устройство.

Чтобы лучше понять концепцию работы SCADA давайте представим, что мы с вами владеем заводом по упаковке продуктов. У нас есть огромное множество датчиков, резервуаров, высокоточных устройств и т.д. Логично, что человек не сможет каждую секунду рабочего времени считывать и анализировать сотни показателей термометров, параллельно записывая те или иные непредвиденные обстоятельства в журнал.

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

Не стоит думать, что системы SCADA применяются исключительно в промышленных масштабах, все-таки под определения SCADA можно вполне записать системы умных домов.

Обращу внимание на то, что с развитием технологий SCADA системы тоже не отставали в развитии и получали новые технологии в виде дистанционного взаимодействия через веб приложения, быстрые базы данных и так далее.

Где применяются системы SCADA и почему их защита должна быть приоритетом для любого государства?

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

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

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

Давайте для лучшего понимания критичности SCADA рассмотрим громкий случай взлома SCADA системы его последствия.

Stuxnet

Наверное малварь Stuxnet, которая атаковала предприятие при обогащению урана в Иране, стала самой известной и обсуждаемой в мире атак на SCADA. Этот червь буквально отбросил ядерную программу целой страны на несколько лет назад и причинил огромный репутационный и финансовый ущерб для целой страны. И самое интересное, что этот червь распространялся дальше по сети и до сих пор некоторые хосты в системах SCADA могут содержать stuxnet.

Как работает SCADA?

Для начала давайте представим процессы, проходящие на том или ином предприятии.

У нас есть работник, который видит на своем мониторе показатели. Например, температуры и давления. Датчики, которые измеряют давление и температуру как-то должны передать информацию на экран оператора.

Делается это при помощи ПЛК(программируемый логический контроллер), который соединяется с датчиками и обрабатывает информацию с них, отдавая результат в графическом или табличном виде(например в веб приложение, мобильное приложение или сенсорный экран на стене)

Протоколы взаимодействия между Master(устройство, на которое поступают данные) и Slave(в виде датчика давления) устройствами могут быть разными. Мы остановимся на одном из самых популярных протоколов под названием Modbus.

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

Slave устройства в виде «железяк», которые отдают данные на ПЛК. В большинстве случаев у slave устройств будут регистры в памяти, в которые и будут записываться данные, которые будет брать ПЛК(самым банальным примером будет Arduino, но понятное дело, что по вычислительным параметрам и требованиям безопасности он не годится для крупных производств)

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

Удаленно он может сделать это подключившись к ПЛК через, например, веб интерфейс, где он удаленно сможет отдать ПЛК команду отключить необходимый элемент. Плюсом ко всему в SCADA используется историческая база данных как раз таки для отслеживания и записи таких инцидентов.

ПЛК имеет возможность работать с Ethernet, то бишь через компьютерную сеть. Работа ПЛК проходит через протокол ModBus TCP. При таком способе работы у ПЛК есть свой IP адрес в сети. При определенных настройках роутера ПЛК будет иметь выход в интернет. В тот же ПЛК Siemens встроен веб-сервер из коробки. С недавних пор новейшие ПЛК умеют использовать облака для реализации удаленного контроля.

Т.е глобально(и конечно же упрощенно) структура производственного процесса выглядит так:

Оператор - ПЛК - Устройство или станок.

Как злоумышленники могут нарушить работу SCADA?

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

1) Веб уязвимости

Для работы с веб уязвимостями злоумышленники первым делом будут искать страницы входа для контроллеров. Логичнее и эффективнее всего это делается через Shodan/Censys.

Давайте сделаем поиск по 502 порту, присущему протоколу Modbus. Вводим в строку поиска port:502.

Поиск по 502 порту

Видим что открыты еще несколько портов, включая 80.

Открытые порты

Видим страницу входа, которая потенциально может быть уязвима к атакам грубой силы или иным векторам нападения.

Для того, чтобы не спутать 502 порт связанный с modbus и просто нестандартный порт для веба, стоит поглядывать на окно от самого shodan.

Открытый 502 порт

К слову, shodan здесь сразу выдает доступные CVE:

Выдача Shodan`ом доступных CVE

Еще немного страничек входа, так или иначе связанных с 502 портом:

Страница входа
Страница входа
Страница входа
Страница входа

Чаще всего находятся именно системы умных домов, которые при настройке забывают защитить должным образом.

Так же преступник будет анализировать и другие открытые порты, помимо 80 и 502, например если открыт 21,22 или иные порты, вполне вероятно, что он будет проводить атаку брутфорса или поиск эксплоитов.

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

Стоит понимать, что нет ограничений лишь поиском по порту, есть возможность искать контроллеры и админки при помощи тех же названий компаний, которые занимаются разработкой аппаратуры. Например Siemens, Schneider Electric, General Electric и т.д 

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

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

2) DOS атаки

Думаю, не стоит пояснять, что атаки на стандартную бизнес инфраструктуру и SCADA отличаются. Так же ни для кого не является секретом, что DOS атака вне скады далеко не всегда является эффективной. Но давайте немного подумаем. Что случится, если датчик по подсчету единиц товара на крупном предприятии отключится хотя-бы на полчаса? 

Думаю, очевидно, что злоумышленники захотят провести DOS на тот же веб интерфейс, торчащий из сети.

Для лучшего понимания давайте немного дополним пункт про работу Modbus.

У этого протокола есть так называемые sub codes, каждый из которых соответствует определенному действию с самим ПЛК(для удобства можно их представлять как некий функционал ПЛК). Например sub code’у 00 соответствует функционал возврата запрошенных данных у другого железа, а 01 соответствует перезагрузке ПЛК. Так же sub code 04 говорит ПЛК, что он должен находится только в режиме прослушивания.

Из всех кодов злоумышленнику интересны только 01 и 04, которые так или иначе могут либо перезагрузить, либо прервать запросы данных от датчиков, что может обернуться катастрофой. Т.е если преступник пошлет код 01 или 04, то работа ПЛК будет прервана.

Злоумышленник может такое провернуть либо через веб интерфейс, где будет функция посылки sub codes, либо с помощью MITM атаки, посредством просмотра трафика через wireshark, где будет виден modbus трафик. Т.е если злоумышленник находится в одной сети с ПЛК, он может атаковать этот самый ПЛК. И не обязательно, чтобы злоумышленник находился в непосредственной близости.

Относительно недавно была атака на NASA, где специально оставленный Raspberry PI был запрограммирован на перехват данных внутри сети, что повлекло кражу секретных документов.

3) Атаки на порты и стандартные логины/пароли

Во время рассказа про разведку я акцентировал внимание на том, что злоумышленник может протестировать порты кроме 80 и 502.

Давайте проведем логическую связь. Есть отдельно взятый сервер автоматизации от конкретного производителя, к которому можно подключится и по SSH. Логично предположить, что администратор забыл поменять стандартные данные для входа, чем преступник может воспользоваться, применяя брутфорс.

4) Атаки на регистры

Выше было сказано, что slave устройством будет являться, например, датчик температуры. Давайте для лучшего понимания регистров на датчиках смоделируем этот датчик и присвоим разные значения температуры, хранящиеся в регистрах.

Установим ПО ModbusPal и запустим его, попутно добавив новое устройство:

Установка ModbusPal и добавление нового устройства

После уже добавим значения самих регистров, то бишь абстрактные значения с датчиков

Изменения значения в регистре
Изменения значения в регистре

Примерно так и будут храниться регистры, теперь давайте подумаем, что если эти регистры можно прочитать или даже перезаписать? И на это есть решение в том же Metasploit, где уже есть готовые эксплоиты для работы с регистрами и протоколом modbus. Т.е при закупке оборудования для системы умного дома или при выборе поставщиков датчиков давления на предприятии стоит лично проверить, уязвимы ли покупаемые устройства.

Модули modbus

Так же не стоит забывать про физические атаки и атаки на открытое ПО, под которое преступники со 100% вероятностью будут писать свои эксплоиты

Заключение

В заключение хочу еще раз отметить, что если вам, как читателям статьи, придется столкнуться со SCADA в роли рабочего на предприятии или при настройке своей системы умного дома, просто не забывайте про меры безопасности, ведь именно от вас будет зависеть ваша же конфиденциальность и огромные бюджеты предприятий.