Pull to refresh

Comments 63

Вы молодец! Отличная статья! Вся шумиха раздута обывателями далекими от производства, не понимающими насколько распределенной и разномастной, по составу оборудования и используемых сетей может быть асу.
Спасибо. Согласен с Вами. Иногда асу бывают настолько разнообразными, что подчас самим инженерам сложно разобраться, а не то что вирусам :) А если серьезно, то для того, чтобы разобраться в угрозах АСУ ТП, надо сначала разобраться, что такое сами АСУ ТП. Я надеюсь моя статья немного поможет в этом.
К сожалению, все не так безоблачно.

Для начала лирическое отступление: у меня на объектах (даже небольшие котельные, до 5 МВатт) вся критичная автоматика продублирована «дубой» — релейными схемами аварийного отключения. Сделано это неспроста, чтобы даже в случае выхода из строя или схода с ума ПЛК была возможность автоматически и безболезненно погасить систему. К примеру, отключение клапана газа по срабатыванию сигнализаторов загазованности реализовано как на контроллере, так и на размыкании «сухих» контактов. Мне в этом случае вирусы не страшны.

А вот по поводу собственно заражения: действительно, есть возможность «поиметь» именно ПЛК — на уровне программирования. Те же самые симатики, шнайдеры и прочие на сегодняшний день прошиваются исключительно из-под винды. Sad, but true. А теперь представим картину: инженегр-программист пишет на своем ноуте/компутере серьезную модификацию алгоритма, требующую непосредственной заливки в ПЛК. А ноут/комп с установленным ПО для заливки заражен тем-самым-страшным-ничем-не-определяющимся-новым-триппером. Идет он в машзал, цепляется к степсевэну и жмет кнопку загрузки. Вирус хитрый — он перехватывает нажатие и загружает ТОТ ЖЕ алгоритм, но со своими модификациями. На предмет этих модификаций фантазий у меня масса — вплоть до небольшого бутлодера или зомби-бота, ждущего команд от «хозяина». Хозяином в этом случае может выступать любая машина с любыми привилегиями, хоть АРМ оператора, хоть показометр диспетчера — немного разобравщись с протоколами взаимодействия (хоть LONBus, хоть MODBus, хоть любой завороток в TCP/IP — тысячи их, зависит от конкретной таргет-системы) легко пускать до контроллера свой «левый» трафик. Дальнейший сценарий понятен — ПЛК в руках злоумышленника (хоть и опосредовано — время передачи команд будет велико и равно путешествию флэшки от машины с интернетом до любого узла прямого взаимодействия с ПЛК). Но судя по тому, что первые экземпляры стухнета датированы годом 2007, а выявлены лишь сейчас — времени этого было предостаточно.

А самое страшное то, что с ростом «монструозности» автоматизированных систем все сложнее становится сделать нормальный «дубовый» дубляж систем и все больше ответственности возлагается на ПЛК. Так что я, если честно, при упоминании о таких попытках заражения, как стухнет и прочие, немного ссусь.
а если все это помножить на безалаберность многих инженеров, и традиционно несерьезное отношение к информационной безопасности в АСУ, то ссыкотно еще больше.
По поводу безалаберности, я скажу так, те производства, где плоховато с безопасностью АСУ, еще находятся в переходном периоде, есть еще дядечки, которые с помощью ручных байпасов всегда могут сделать дело )) Ну. а на тех производствах, которые по уму снабжены и РСУ, и ПАЗ, отношение совершенно другое…
Я пишу о наиболее приближенным к правильной реализации асу тп, т.е. конечно, многие предприятия, чтобы сэкономить делают и РСУ и ПАЗ на одинаковых, плохо подходящих для этих целей контроллерах. И потом инженер, с вирусом ходит и обновляет алгоритмы… Но на самом деле, я конечно не могу говорить обо всех предприятиях, на большинстве (читайте, на всех) опасных производствах к системам ПАЗ совершенно другое отношение, после сдачи объекта в промышленную эксплуатацию, уже очень трудно изменить какие-либо алгоритмы, тем более инженеры ПАЗ осознают всю ответственность. Я устанавливаю на станцию инженера винду (только лицензия + последние патчи), специализированный софт, сразу отрубаю автозагрузку и т.д. и т.п., и никакими флешками не пользуюсь, проект переноситься с проверенного сд.
По поводу самого вируса, чтобы причинить вред, он должен действительно знать, как это сделать, это какой-то ИИ, а не вирус.
UFO just landed and posted this here
Тому, кто сумеет написать для симатика LON или ещё чего по встроенному профинету — уже можно памятник поставить. А если ещё написать так, чтоб он не сожрал всю загрузочную память и не определился при сравнении онлайн-оффлайн — сразу звезду героя.
Бутлоадер в симатике я вообще затрудняюсь представить. Ещё могу поверить в такой фокус на степ 5 — там можно собрать указатель на область памяти с собственно программой и писать по этому адресу.
И, наконец, самый интересный момент. Этот гениальный червь должен понимать процесс даже лучше тех, кто его проектировал. Просто угробить программу — неинтересно. Объект встанет и всё. Конечно, если исходники утеряны, то начнётся веселье. Однако же, цель злоумышленника — устроить аварию. И для этого нужно понимать процесс и знать реализацию. Мне тут недавно пришлось реверсить STL от фрицев почти 20-летней давности. Ужос. В результате сделали иначе… И опять приходим к тому, что без инсайдера не обойтись. При чём, серьёзного инсайдера, а не старшего помощника младшего дворника. А, имея серьёзного инсайдера, совершенно необязательно рвать зубы через задницу и так откровенно наследить.
Ребят, поддержите статтю. Автор однозначно заслужил на инвайт!
Спасибо! Но у меня, вроде, уже есть инвайт ;)
В любом случае плюс от меня получил
:)))))))))))))))))))))))))
К сожалению на большинстве предприятий Украины, безопасность на нуле.
Разложить пасьянс или посмотреть фильм ночью, который оператор принес на флешке обыденная вещь.
Очень мало внимания уделяется безопасности процессов.
Согласен, бывает и такое, с этим надо бороться.
Но я скорее хотел донести мысль, что на опасных объектах, как правило, есть еще и полностью автоматизированные системы противоаварийной защиты (ПАЗ), которым по сути, что раздолбай-оператор, что некий вирус, что внештатная ситуация — все равно, система отработает. А то, просто, читаю про stuxnet и такое впечатление, что это не вирус, а какой-то искусственный интеллект, уже и на все аэс забрался и всеми производствами хацкеры управляют. Больше похоже на фантастический фильм ((
Не знаю как АЭС, но видя как производятся Пиво, Вода и Конфеты мне становится страшно.
Даже не имея большого желания, можно сделать диверсию не прилагая больших усилий.
Вы не знаете, как подаётся вода и откачивается канализация. Для апокалипсиса необязательно марсиан в тарелках, достаточно канализацию поломать :))
Вах! Отличная статья.

Я пропусил последний апдейт хабра (с модернизацией песочницы), поэтому не понимаю, автору нужен
инвайт или нет?

про SCADA системы тоже можно просветить сообщество. Если там есть о чем говорить…
В основном начинается холивар )))) Каждому нравится свое.
да ради бога, многие про scada ни сном, ни духом, как я, например.
Я об этом кое-что писал, но ленюсь накропать что-то действительно развернутое. Уж очень много
Согласен. Дело даже не в нравиться/не нравиться, а в том, что и SCADA систему можно сделать так, что с точки зрения безопасности, ни один вирус не подкопается :)
Есть одно решение, которое защитит от вирусов — физическая изоляция от других источников данных.

Остальное — временное.
Тема про АСУ ТП вообще очень обширная, можно писать и писать. SCADA — понятие очень неопределенное, многие спорят, какие системы относить к SCADA-подобным, а какие нет. Но если вкратце, то HMI у SCADA может быть одной компании, контроллер другой, связь между ними вообще может быть организована с помощью не детерминированного протокола. В системы РСУ и ПАЗ, и интерфейс, и контроллер, и связь между ними (как правило, используется закрытый детерминированный протокол) реализовано одной корпорацией, тем самым достигается большая надежность, потому как производитель в ответе за всю систему, а не только за определенную часть. Но на самом деле, конечно, понятие SCADA сложнее и многограннее.
а не приходилось слышать или работать с компонентами производства Phoenix Contact?
Да, при разработке асу тп часто используют блоки питания, промежуточные реле и многие другие продукты этой компании. В принципе, насколько я знаю, особых нареканий по надежности работы нет.
был на парочке их семинаров, и очень понравилось как они себя позиционируют, заваливают каталогами, приезжают с обучениями, звонят постоянно. Не то, что huber suhner =)

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

Рад, что нашелся человек, которому не лень это расписать ;)
Очень хотелось бы на Хабре блог про АСУ ТП (SCADA системы, ПЛК, HMI)
Поддерживаю!!!
Тоже бы хотелось такой раздел! А то кроме Trace Mode и не знаю других SCADA, но знаю что есть какой — то под линухом…
Вообщем, если бы есть люди компетентные в данном вопросе, то с удовольствием почитаю, думаю как и многие тут.
Имел в виду — хотелось бы услышать мнения людей, которые имели опыт эксплуатации или разработки под соответствующие SCADA.
ТрейсМоуд вспомнил потому что имел некоторое соприкосновение с ним и немного представляю что он из себя представляет.
Vijeo/Citect SCADA от Schneider-Electriс
Wonderware Intouch
Непосредсвенно связанный со стухнетом Siemens PCS7/WinCC
ещё слыхал про роквелловский РСвью…
их как грязи, на каждой кафедре АСУ каждого университета обязательно ещё и свою кто-то из студентов пилит… ), что кстати очень дает очень хороший образовательный эффект.
Realflex 4 под ОРВС QNX 4. Все дубовое, сложнючее, но зато работает как часы )) Все не можем перейти на QNX 6
представляет собой персональный компьютер, с установленной на нем ОС Windows (2000/XP) и специфичным программным обеспечением

В связи с чем отдается предпочтение Windows, какие преимущества это дает? Ну кроме «ну вот мы изначально софт под виндоус написали, потому что откат или по другому не умеем».
Есть пример перехода с юникса на форточки ) — Foxboro.
Да, индесы кроме как vb мало что знают. Видел исходный код некоторых вещей — его точно писали индусы (это из комментариев к коду стало понятно)
На самом деле существуют и *nix системы. Например, в энергетическом и нефтяном секторе довольно популярны системы на RTAP. Первоначально являлась разработкой HP, работает под HP-UX. Причем реализована вполне себе в соответствии с unix-way. Помимо нее очень популярны, особенно на постсоветском пространстве всевозможные системы на QNX. Да и вообще, в большинстве контроллеров вообще свои ОС реального времени, даже не *nix.
А то что HMI часто бывает на венде — скорее всего обусловлено простотой разработки графики под нее.
и OPC. OLE for process control. На никсах его ещё написать надо…
Да OLE на никсы, по моему, просто невозможно портировать. И лицензионно и физически (это же большой кусок потрохов винды).
Остается только ждать когда OPC-UA пойдет в массы.
Автор описал каноническую структуру. Однако на практике часто системы имеют множество архитектурных упрощений, компромиссов надежности, консервативного подхода к безопасности и удобства эксплуатации.
Если даже ПО Seamens может быть атаковано вирусом, то о защищенности остальных, а особенно отечественных АСУ, говорить можно только теоретически.
Чем сложнее система тем больше дыр. Некоторые hmi вообще до сих пор на IE6 базируются!!!
Да, именно поэтому в начале я и отметил, что это общее описание, все действительно будет зависеть от конкретной реализации. Но по поводу вируса, я не согласен, меня вообще удивляют заголовки, типа «Stuxnet поразил более 1000 предприятий Китая». Похоже больше на заголовки желтой прессы, пишут «поразил», а что конкретно он делает неизвестно. Плюс еще интересный журналистский прием, пишут поразил системы Siemens, а какие конкретно — нет. Я думаю, многие понимают, что некоторые предприятия не являются опасными объектами, и к безопасности асу на них относятся по иному. Поэтому проводить аналогию, поразил 1000 предприятий (если это вообще правда) на системах Siemens в Китае, все значит, все АЭС, на которых также применяется АСУ ТП компании Siemens в опасности, это, по меньшей мере, странно.
Что касается софта Siemens, а конкретно PCS7, то система очень сложная, старая, довольно глючная, и нифига не защищенная. Смысл в том, что атака на такую систему, где вся безопасность сводится к «security through obscurity» маловероятна, но возможна по следующему сценарию.
Вирус модифицируется под конкретный объект по инсайдерской информации или утекшим спекам или сначала вирус номер один сливает исходники микропрограммы для контроллера с инженерной станции, ну или хотя, бы «физические адреса» управляющих устройств с контроллера. Как эти данные утекают с инженерной станции — возможны варианты. Далее по данным вирус номер 2 допиливается и возвращается на инженерную станцию, где меняет программу ПЛК и таким образом нарушает работу системы. Достаточно например заменить где-то в программе ПИД-регулятор на другой или сбить уставку или просто отключить его пустив сигнал в обвод и всё — техпроцесс нарушен, а SCADA показывает, что всё ОК, но до поры, пока не просигнализирует следующее в техцепочке звено и не сработает блокировка…
Но по большому счету такая атака очень сложна и, конечно, возможна тоьлко под заказ.
Кроме того изолированная система ПАЗ тоже делает свое дело. Однако сценарии могут быть очень разными — смотри пример Makran ниже…
>По типу сигналы от КИПиА могут быть аналоговые (4-20мА, 0-5В и т.д.) и дискретные.
Что означает «аналоговые (4-20мА, 0-5В и т.д.)»? Причем здесь единицы измерения, и почему не Паскали или Джоули? Или это аббревиатуры такие?
Потому что измерительные приборы не измеряют джоули или паскали. Они создают сигнал в виде тока или напряжения в определенных пределах. Этот сигнал можно потом сопоставить с значением физической величины.
Это два исторически сложившихся стандарта передачи аналоговых величин. 4-20мА — «токовая петля» и 0-5В — когда по напряжению измеряем. Паскали\Джоули и линейные или не очень коэффициенты уже контроллером считаются.
Это унифицированные понятные контроллеру сигналы. Аналоговый вход контроллера может быть токовым (0..20, 4..20 мА), входом напряжения (0..2, 0..5, 0..10 вольта) и входом измерения сопротивления — к такому соглашению пришли производители. Есть так называемые первичные преобразователи, которые физические величины преобразуют в именно такие сигналы.

Примеры: манометр избыточного давления, рассчитанный на 0..4 килограмма, имеет токовый выход 4..20 мА — это значит, что 0 кг измеренного давления будет соответствовать 4 мА ток, 4 кг — 20 мА. Точно также эта же шкала может быть наложена на выход напряжения (0 кг = 0 в, 4 кг = 10 в). Шкала в данном случае линейная, преобразование ведется по двум точкам. Преобразователи сопротивления, обычно же, используются в термодатчиках — там шкала нелинейная, характеристики ее зависят от примененного материала (медь, платина итд), но суть та же — соответствие значения сопротивления физической величине. В контроллере (к примеру) происходит обратное преобразование.

Тем самым достигается унификация сигналов — к одним и тем же входам контроллера можно подключать разнотипные датчики, меняя лишь программную часть.
Спасибо — вспомнил былые времена. Учился на данной специальности, только по нефтянке, но сложилось так, что ушёл в айтишники.
Расскажите еще детальнее контроллеры и про SCADA системы — будет занимательно :)
Где тут информационная безопасность? Переливание из пустого в порожнее.

Ни примеров, ни описания проблем в SCASDA security, ни PLC security, ни рассмотрения технологий и уязвимостей в их протоколах и архитектуре, ни DB security.

Пусто.
Может быть автор добавит в апдейт конкретный пример:
Проблемы почти всех SCADA — как ни странно невысокая защищенность от злокозненных действий конечного пользователя. Честное слово, вирусы СМС-блокеры гораздо лучше справляются с задачей заблокировать для пользователя все кроме себя, чем предназначенные для этого SCADA системы.
Возьму хорошо знакомую мне SCADA из Honeywell Experion PKS. Она базируется на IE6 (список дыр перечислять не нужно?). Вроде бы только с последним релизом она слата работать с IE8. Соответственно в рекомендациях по настройке безопасности операторской станции присутствует пункт о полном запрете доступа к IE для пользователя, под которым будет крутиться оболочка. Это в какой-то мере обеспечит безопасность от вирусей, эксплуатирующих уязвимости в IE.
Вообще. чтобы в ручную закрыть уязвимые места на операторской станции требуется около часа возни с установкой патчей, политиками безопасности и настройкой фаервола. Но можно самому написать скрипт, для автоматизации этих действий. Производитель, к сожалению, об этом не позаботился.
Теперь по конкретной проблеме вируса:
А. Если удастся захватить под контроль станцию.
Б. Если удастся узнать пароль инженера или каким-то иным способом повысить себе привилегии доступа.
В. Если в деталях знать систему ПАЗ предприятия, то вырисовывается следующее:
1. тянем информацию о системе управления;
2. анализируем;
3. засылаем на станцию троян для перехвата управления;
4. получаем привилегированный доступ к системе;
5. в нужный момент открываем/закрываем нужный клапан, не забыв перед этим снять деблок ключи…

6. Если имеем дело с быстротекущими процессами и оператор зазевается и не успеет рубануть кнопку принудительной блокировки, то PROFIT.
Что-то многовато если. И сработают они при наличии инсайдерской информации.
Теперь предположим что я тот самый инсайдер-саботажник. Выдали мне 5 сантиметров бумаги с портретами Франклина за саботаж. Что я стану делать:
1. Создам контур управления системой, который в нужный момент возьмет контроль на себя и создаст аварийную ситуацию.
2. Все действия он должен совершать от имени оператора, чтобы в логах системы не осталось ненужных следов.
3. Контур после этого должен самоуничтожиться не оставив после себя никакой информации. То есть для этого должен самостоятельно перепрошиться контроллер ПАЗ. Такой вариант производителем не предусмотрим. Но и этот вариант решаем при помощи скрипта, повторяющего записанные ранее действия.
4. Опять не забыть вытереть за собой следы.
5. Подсаживаем в систему вирус. Желательно чтобы в нужный момент из-за него пара станций вывалилась в синий экран, остальные начали бы вытворять незнамо чего.
6. В итоге в День Д начинается «хакерская атака». Со станциями управления начинает происходить что-то непонятное. Внезапно какое-то оборудование самостоятельно отключается, клапаны открываются, блюкировки не срабатывают.
7. В логах системы видно заражение станций вирусом, и действия операторов по созданию аварии. Так же в тех же логах видно, что не сработала система ПАЗ.
8. Вывод — виноват вирус и неизвестный хакер. На инженера-саботажника нет даже намека. Он вообще в этот момент на пляже попу грел.
Правда в данном случае это будет хакер с кувалдой и ноутбуком.
Как-то так получается. Как это проделать постороннему человеку — не представляю.
Во-во, полностью поддерживаю! Правда я про Сименсовскую скаду писал тут. Очень много «если», и без инсайдера никак. Но на что только идут в «большой игре»…
Добавил в статью ссылку на ваш сценарий атаки. С его возможностью согласен, но он, как и вы сказали, чисто инсайдерский, а это значит, что вирус как таковой и не особо нужен…
А, Б, В — слишком дохрена если.

А теперь, если отойти от уровня понимания реальности десктопными программистами.

Все алгоритмы крутятся не на скаде, а в контроллере. Залезть в который значительно сложнее. И если по условиям работы какой-то конкретный кран нельзя открыть (либо закрыть), контроллер и не даст этого сделать. Просто я достаточно натрахался повозился с наладкой, чтобы представлять это…

А если кто-то почему-то часть логики вынес из контроллера в скаду — тому следует умереть в муках.

Варианты «перепрошить контроллер», да ещё и скриптом удалённо — любопытно. Про Stuxnet я тоже слышал. И не только я. Вот только никто его не видел, почему-то :)
Большинство мощных ПЛК — это процессор разряда смартфона с linux "внутри". Причем производитель не особо говорит о нюансах безопасности системы(пустые пароли на ssh,web, открытые порты служб, никакой проверки валидности файлов). Довольно легко как подменить сами прошивки codesys, так и вообще их не трогая использовать подмешивание команд в rs485. Не говоря уже о самой шине rs485, если к ней есть доступ, внесение искажений довольно простая задача.
Я вам сейчас страшную вещь скажу :) такие же АСУ ТП стоят у америкосов на подводных лодках…
А вот у нас не стоят, потому что мы как бы чуток отстали.
Наверное это к лучшему.
На подлодках используется навигационное оборудование от Honeywell, а вот ПО там сильно специализированное. На авианосцах они вроде тоже засветились. Так что не все там так страшно.
Не только навигационное оборудование, но и практически все системы управления построены с использованием подобной архитектуры, естественно не одной Honeywell…
Амеры ездят на win2000, британцы на ХР :) единственно где используются действительно специализированное ПО и ОС реального времени это системы управления оружием :)
У нас до подобного идиотизма все-таки не дошло…
Я году в 2001 участвовал в пусконаладке системы на базе Honeywellовского контроллера, и меня удивила одна вещь. Естественно, все ходы по установке системы на операторские станции были подробно расписаны в официальной документации. При этом оператор, если следовать всем шагам, имел права администратора на машине. Почему не ограничить его в правах, чтоб он не мог наломать дров? Надеюсь, с тех пор подход к безопасности пересмотрели.
Если 2001 год, то это скорее всего был TPS. С тех пор много воды утекло )
там по умолчанию создается профиль менеджера системы с административными правами. Далее уже из под него добавляются и конфигурируются пользователи. Там кстати есть 2 механизма аутентификации: на windows аккаунтах или аккаунтах Experion, в каждом случае свои нюансы. С какого-то релиза при установке системы стали требовать создать пароль менеджера, а не оставлять по умолчанию. Потому что потом сменить пароль — очень непростая и опасная процедура процедура (от этого пользователя запускается с десяток различных служб, идет работа с базами данных и т.д.) Многие оставляли его как было. А дефолтовый пароль админа — большой и жирный крест на всей безопасности.
Кажется, система называлась Plantscape.

Хотя могу соврать, давно дело было… Точно помню, что ОС была NT 4 — в общем, каменный век :)
На тот момент она была самой надежной виндой. W2K только вышла в свет, толком не обзавелась сервиспаками. XP и 9х вообще помолчу. так что на тот момент совсем не каменный век. Кстати у меня в зоопарке до сих пор есть пара машинок с NT4.0 на борту. Прекрасно справляются со своей работой. Другое дело, что интерфейс TPS был мрак полный. В плане самого управления она великолепно справлялась со своими обязанностями. Но вот с историческими, архивными и учетными функциями — очень плохо.
Исторические значения буквально пару суток хранила (в смысле с секундной и менее регистрацией) У современных систем: 2000 параметров 1с, хранится 2 недели, занимает около 30 Гб дискового пространства). Аварийный рапорт с дискретизацией 100мс (тут в принципе ничего не поменялось, за него все тот же FSC отвечает).
На тот же 2001 год Emerson DeltaV предоставляла нормальный графический интерфейс, FBD ( Function Block Diagram — графический язык программирования стандарта МЭК 611131-3. Предназначен для программирования промышленных логических контроллеров ПЛК), нормальную базу данных и прочие плюшки.
После Honeywell купила у allen bradley контроллер Logic назвав его C200, у разработчиков iFIX — базу данных, кто делал скаду — не знаю и выпустила сначала пробную PlantScape, а потом и Experion PKS. Только к 200 (эдак 2005 год) релизу поравнялась по возможностям DeltaV образца 2002 года, и только к 310 довела до ума (но получилось очень хорошо). Сейчас вышел 400 релиз, там обещают много вкусностей и прочих плюшек. Хотя это я уже с жиру выискиваю недостатки. То что в Simatic приходится делать при помощи танцев с бубном и такой-то матери неделями, на С200/300 платформе от Honeywell я сделаю за пару дней. Хотя любители Siemens могут за такие слова начать кидать в меня гнилые помидоры.
Sign up to leave a comment.

Articles