Stuxnet фактически является первым в истории вирусом, переступившим через границу киберпространства в реальный физический мир, первым вирусом, способным портить не только данные и программный код, но и вполне реальные машины и установки.
Павел Волобуев,
Специалист по информационной безопасности
технологических систем,
Digital Security
Про этого червя писали много. Но все же по странным причинам не так много, как могли бы, ведь речь идёт не просто об обычном вирусе. Stuxnet фактически является первым в истории вирусом, переступившим через границу киберпространства в реальный физический мир, первым вирусом, способным портить не только данные и программный код, но и вполне реальные машины и установки. Его появление не только выявило очередные уязвимости в операционных системах Microsoft, но и устремило взоры специалистов по информационной безопасности в абсолютно новую для них область – безопасность промышленных систем. Раньше мало кто задумывался об этом, хотя некоторые компании предупреждали об этом ещё несколько лет назад. Причины вполне ясны: промышленные сети обычно изолированы не только от сетей общего пользования, но и от внутренних сетей предприятия, в них применяется очень специфическое оборудование и ПО, все процессы чётко регламентированы. Казалось бы, никакой опасности быть просто не может! Но как выясняется, это не так. Подобную «фантастическую» картину мы могли видеть в уже достаточно старом фильме «Хакеры». Разработчикам червя Stuxnet удалось без труда обойти эту, казалось бы, самую надёжную физическую защиту. Почему «разработчикам»? Потому что тут речь, несомненно, идёт не об одном человеке, а о целой группе, в составе которой кроме профессиональных программистов и эксплоитописателей были и инженеры, и специалисты по АСУ ТП, знающие специфику работы с промконтроллерами и другим периферийным оборудованием. Вопросов много, а ответов… несмотря на то, что прошло уже 4 месяца с момента первого обнаружения червя, чётких ответов пока нет. Причин этого несколько:
Digital Security – одна из немногих в России компания, работающая в сфере информационной безопасности, имеющая в штате специалистов с опытом разработки и внедрения автоматизированных систем управления сложными технологическими процессами. И именно по этой причине мы решили провести собственный анализ, чтобы разобраться, что же происходит на самом деле.
Итак, попробуем разобраться по порядку…
Представьте себе промышленную установку, которая что-то делает, и агрегатами которой нужно управлять по заданному алгоритму. Мы обвешиваем эту установку различными датчиками и исполнительными механизмами и подключаем к PLC – контроллеру, который и выполняет этот алгоритм. При этом контроллер проверяет уровни температуры, напряжения, давления, следит за оборотами двигателей, включает и выключает различные механизмы. И если какие-то параметры заходят за пределы дозволенного (уставки этих пределов также прописаны в контроллере), он останавливает установку или технологический процесс. Установок может быть много, и контроллеров, соответственно, тоже. Общаются они между собой обычно через Ethernet, RS485,и их вариации. Промышленная сеть Ethernet – это обычная сеть Ethernet, в которой активное оборудование для промышленных сетей является более стойким к внешним воздействиям, вибрации, электромагнитным помехам, температуре, влажности и пр. Промышленные протоколы Modbus, Profibus и пр. в современных промышленных сетях часто работают поверх TCP/IP. На самом деле отличия от классических сетей, конечно, есть, но они не принципиальны в контексте данной статьи.
Сам контроллер – это тот же компьютер, но в миниатюрном исполнении, предназначенный для выполнения определенных задач, и со своей операционной системой. ОС на промконтроллерах – обычно собственной разработки производителя, информация о которой малодоступна – QNX (реже Lunix) или DOS. Структура контроллеров, как правило, является модульной: к ним подключаются различные модули ввода-вывода для решения ряда задач. И все бы было хорошо, но кроме контроллеров за работой процесса следит еще и человек – оператор. И следить за информацией с десятков, а зачастую и сотен контроллеров вручную ему, конечно, неудобно. Для оператора в промышленную сеть устанавливается АРМ – Автоматизированное Рабочее Место. АРМ – это компьютер с операционной системой Windows, на который устанавливается программа для отображения технологического процесса (SCADA). SCADA выводит на экран показания с контроллеров, обеспечивает возможность управления механизмами в ручном режиме и позволяет изменять некоторые параметры технологического процесса, а так же ведёт запись архивов. На АРМах часто устанавливают базу данных для записи статистики и генерации отчетов. АРМов в сети может быть несколько – их количество зависит от величины производства и количества операторов. АРМы всегда находятся в одной сети с контроллерами. Зачастую антивирусное ПО на них не устанавливается, а если и устанавливается, то уж точно не обновляется. Считается, что вирусы в этой изолированной среде появиться никак не могут… Стоит отметить также, что никакого обновления системного ПО на АРМах естественно не происходит: многие из них до сих пор работают под Windows XP SP1 или, вообще без Service Pack, что делает их крайне уязвимыми.
У многих малознакомых с АСУ ТП людей возникает вполне логичный вопрос: если есть полноценные компьютеры, которые могут всем управлять, то зачем еще и контроллеры? Ответ прост: им не доверяют. Компьютеры под управлением Windows имеют свойство «виснуть», и, собственно, Windows никак не претендует на звание Realtime OS. А у контроллеров своя операционная система, свое промышленное резервированное питание, и отказоустойчивость в разы выше, чем у любого персонального компьютера.
Конечно, это было очень поверхностное объяснение принципов работы промышленных систем, но без него было бы трудно рассказать о самом черве, а главное – о проблемах, связанных с его лечением. Итак, Stuxnet…
Речь идет о чрезвычайно высокотехнологичном вредоносном ПО во всех его проявлениях. Данный червь использует четыре ранее неизвестные уязвимости системы Microsoft Windows, одна из которых направлена на распространение при помощи USB-flash накопителей. Причем данная уязвимость выявлена во всех версиях Windows, включая XP, CE, Vista, 7, Windows Server 2003, 2008 и 2008R2, как в 32разрядных, так и в 64разрядных. Уязвимость заключается в выполнении кода при попытке системы отобразить иконку c накопителя, например, при просмотре в проводнике. Исполнение кода происходит даже при полностью отключенном автозапуске для всех носителей. Кроме этого в коде зловреда реализована и возможность заражения по сети. Но, тем не менее, на большинство промышленных объектов червь попал именно через внешние носители – как и почему, будет рассказано немного позднее. Большой вклад в анализ кода червя и используемых им уязвимостей внесло Российское представительство компании ESET во главе с Александром Матросовым.
Червь устанавливает в систему два драйвера, один из которых является драйвером-фильтром файловой системы, скрывающим наличие компонентов вредоносной программы на съемном носителе. Второй драйвер используется для внедрения зашифрованной динамической библиотеки в системные процессы и содержит в себе специализированное ПО для выполнения основной задачи. Драйверы, которые троян устанавливает в систему, снабжены цифровыми подписями, украденными у производителей легального программного обеспечения. Известно об использовании подписей, принадлежащих таким компаниям, как Realtek Semiconductor Corp. и JMicron Technology Corp. Злоумышленники используют цифровую подпись для «тихой» установки драйверов руткита в целевую систему. В системах безопасности многих производителей файлы, подписанные известными фирмами, заведомо считаются безопасными, и наличие подписи дает возможность беспрепятственно, не выдавая себя, производить действия в системе. Кроме того, червь располагает механизмами контроля количества заражений, самоликвидации и дистанционного управления.
Кроме распространения посредством внешних носителей червь также успешно заражает компьютеры посредством соединения через локальную сеть. То есть оказавшись на компьютере вне промышленной сети, он анализирует все активные сетевые соединения и «пробивается» к промышленной сети всеми возможными способами. После внедрения в систему вредоносное ПО ищет в ней присутствие SCADA-системы фирмы Siemens. Причем им атакуются только системы SCADA WinCC/PCS7. Данных о заражении другой SCADA-системы от Siemens – Desigo Insight, которая широко используется для автоматизации зданий и жилых комплексов, аэропортов и т.д., у нас нет. Это говорит о «заточенности» червя на крупные промышленные и стратегические объекты.
Когда червь «понимает», что оказался на машине с WinCC, он заходит в систему, используя стандартные учётные записи. Стоит заметить, что официальный Siemens не рекомендует менять стандартные пароли на своих системах, так как «это может повлиять на работоспособность системы», и использование червем стандартных паролей гарантирует почти 100% успешной авторизации. Итак, вирус соединяется с WinCC и таким образом получает доступ к технологическому процессу. Но и это еще не все… Он «осматривается» в локальной сети АРМа. Найдя в ней другие АРМы, червь заражает и их, используя 0day уязвимости в службе печати Windows (кроме того, червь может получать права системы, в случае необходимости используя две другие уязвимости нулевого дня). Также червь видит в сети и контроллеры. Тут мы дошли, пожалуй, до самого главного и опасного его функционала: да, Stuxnet умеет перепрограммировать PLC, естественно не все, а только Simatic фирмы Siemens. И это не так мало, если учесть, что на этих контроллерах построен технологический процесс на огромном количестве объектов, в том числе стратегических и военных. Например, атомная станция в Иране (Бушер), которую многие эксперты считают «целью» этого кибероружия (именно так охарактеризовал червя Евгений Касперский), конечно, не использует контроллеры Siemens для управления самим реактором, но использует их в большом количестве для управления вспомогательным оборудованием. А этого вполне достаточно чтобы червь мог парализовать работу атомной станции. Причем сам процесс «парализации» проходит очень интересно. Троян не записывает в контроллеры мусор и не выводит их из строя. «Живя» в системе достаточно долгое время, он накапливает информацию о технологическом процессе, о режимах работы оборудования – о тех самых «уставках» температуры, давления, частоте работы двигателей о которых я уже говорил выше. И в какой-то момент троян их меняет. Пример: допустим, аварийная уставка по температуре охлаждающей жидкости в установке равна 75°С. Нормальная температура работы – 40-45°С. Изменение значения аварийной остановки в контроллере с 75 до 40’ приведёт к тому, что контроллер будет инициировать остановку агрегата по аварии в тот момент, когда он достигает своей нормальной рабочей температуры. Или ещё хуже – уставка меняется в другую сторону, и агрегат продолжает работать после перегрева до полного самоуничтожения. При этом на экране SCADA-системы оператор продолжает видеть нормальные значения и уставки, которые троян подменяет в реальном времени. И если это, например, установка, перекачивающая газ, управляемая САУ турбоагрегатами «последнего» поколения, то изменение уставок может привести к исчезновению с карты всей компрессорной станции вместе с прилегающими к ней районами.
В одной из версий червя, «разобранной» специалистами компании Symantec, найден функционал управления частотно-регулируемыми приводами (ЧРП) электродвигателей, причем двух конкретных производителей, при работе на определенной частоте. По последним данным, в Иране червь уже привел к выходу из строя большого количества центрифуг, используемых для обогащения урана. В управлении ими как раз применялись ЧРП. Читатель может задать логичный вопрос: нас должно волновать, что в Иране ломаются центрифуги? Ответ прост: Stuxnet может, например, вывести из строя сверхскоростные поезда «Сапсан», которые полностью построены на системах Simatic и используют в работе большое количество тех самых «частотников»… И не только «Сапсан», а огромное количество самых разных систем…
Еще одна интересная функциональная особенность вируса – искать активное Интернет-соединение и отсылать информацию на определенные адреса. По всей видимости, именно эта особенность стала причиной заявления специалистов антивирусной лаборатории Данилова о возможном использовании трояна в качестве инструмента для промышленного шпионажа. Также червь умеет обновлять себя через Интернет, и именно этим обусловлен тот факт, что у разных аналитиков «выловленные» копии вируса сильно отличаются как по размеру (примерно от 500к до более чем 2Мб), так и по функционалу.
Зачем все эти интернет-функции, когда промышленные сети не связаны с интернетом? Хочу вас расстроить: связаны. Не все, и не постоянно, но связаны. На некоторых предприятиях связь осуществляется посредством второй сетевой карты на АРМе для дистанционного контроля и сбора статистики, на других – GSM-модемом для удаленной техподдержки или диспетчеризации. В некоторых случаях АСУ ТП и ERP-система предприятия вообще бывает «в одном флаконе»… Способов выхода во внешний мир много, и это непринципиально… главное – сам факт: многие промышленные сети связаны с сетями общего доступа на постоянной или временной основе.
На сегодняшний день все современные антивирусные программы успешно чистят компьютеры от червя Stuxnet. И, казалось бы, все хорошо: антивирусы лечат машины от червя, Microsoft выпустил обновления для устранения критических уязвимостей, которые использует червь для распространения, SIEMENS тоже выпустил «заплатку» для WinCC. Проблема решена? Нет… Антивирус очищает от зловреда только АРМ, то есть ту часть технологической сети, которая работает под управлением Windows. А как же контроллеры? А вот тут мы подходим к самому интересному…
Как было сказано выше, основным источником распространения червя являются внешние носители. По регламенту практически всех предприятий подключение таких носителей, тем более личных, категорически запрещено. Но кто же соблюдает регламенты… Оператор, сидящий в ночную смену, сильно скучает: на предприятии тихо, никого нет, технологический процесс идет в автоматическом режиме… а перед глазами АРМ, то есть компьютер! Хочется фильм посмотреть, в игрушку поиграть. По нашему опыту работы на объектах можно утверждать – вирусы на АРМах были, есть и будут. Компании, занимающиеся разработкой и поддержкой АСУ ТП, время от времени специально посылают своих специалистов на объекты для чистки АРМов и находят множество вирусов. И проблема эта совсем не новая… просто до недавнего времени вирусы не атаковали промконтроллеры, и присутствие их на АРМах хоть и приносило некоторые неудобства, но не представляло реальной опасности.
Как же защититься от подобных действий персонала? Если CD/DVD приводы просто не устанавливаются в машины пользователей, то USB входы всегда есть по умолчанию. Элегантное решение нашли технические специалисты одного из коммерческих банков Санкт-Петербурга – все USB порты были залиты клеем из термопистолета. Но такое решение не всегда можно использовать, т.к. может существовать необходимость использования портов USB, например, для ключей защиты программных продуктов или для переноса информации инженерно-техническим персоналом. К тому же через USB зачастую работают средства пользовательского интерфейса и принтеры, так что физическое уничтожение портов не совсем уместно, вот почему не рекомендуется прибегать к таким радикальным мерам. Единственный способ уберечь системы от заражений, и не только Stuxnetом, но и другой заразой – это соблюдение персоналом регламентов предприятия и элементарных правил информационной безопасности. К сожалению, этому аспекту уделяют мало внимания, а зачастую и вовсе забывают об этом. По личному опыту знаю – персонал на большинстве объектов даже не задумывается о том, к каким последствиям может привести установленная на АРМе компьютерная игра, или принесенный с собой GSM-модем для «серфинга» с АРМа по сети Интернет. Среди персонала также часто наблюдается отсутствие элементарной компьютерной грамотности. Начальство же либо не знает о происходящем, либо закрывает на это глаза, хотя не должно ни в коем случае. Персонал, непосредственно работающий с АРМами и другими частями современной АСУ ТП, должен проходить соответствующее обучение и инструктаж, в том числе и по проблемам информационной безопасности, но этого, к сожалению, не происходит.
Именно этим объясняется то, что Stuxnet присутствует на большом количестве объектов и систем, но факт такого присутствия тщательно скрывается персоналом и руководителями «на местах». Нам известны факты такого сокрытия, когда руководство крупной компании после появления Stuxnet разослало по всем своим объектам инструкции и ПО для выявления и лечения вируса. И вирус действительно нашли на многих объектах, но НИКТО ЕГО НЕ ЛЕЧИТ! Причина: для успешной очистки системы от вируса необходима перезагрузка системы (систем), то есть остановка технологического процесса. Также настоятельно рекомендуется присутствие специалистов для выявления и возможного исправления изменений в контроллерах. Остановить установку, цех или все предприятие – дело непростое: это ЧП, которое нужно чем-то обосновывать. А обосновывать наличием вредоносного ПО нельзя, ведь именно руководители на местах отвечают за выполнение регламента и инструкций. Если червь попал в систему, значит инструкции не выполнялись, и у руководителя будут неприятности. А неприятностей никто не хочет… Объекты так и живут со Stuxnetом, и не только с ним, а мы все сидим на этой «пороховой бочке». Именно на «пороховой бочке», потому что никто не может гарантировать, что пока что «спящий» троян в какой-то момент не атакует любой из этих объектов или не появится новый экземпляр. По нашим данным, кроме ядерной программы Ирана Stuxnet уже успел навредить некоторым промышленным предприятиям в Китае и разным объектам других странах, и системы эти не имели отношения к ядерным программам.
Как написано выше, Stuxnet успешно выявляется и лечится всеми современными антивирусными средствами. И, тем не менее, существуют свои тонкости: после очистки систем от червя необходимо проверить, чтобы программы и уставки в контроллерах соответствовали актуальным значениям, необходимым для нормальной работы АСУ. При необходимости программы должны быть откорректированы. В этом могут помочь специалисты отделов контрольно-измерительных приборов и автоматики КИПиА или производители АСУ ТП. Мы в Digital Security также можем в этом помочь. При лечении систем на базе Windows CE/Embedded ни в коем случае нельзя устанавливать антивирусное ПО непосредственно на компьютер с этой версией Windows. Систему необходимо остановить, через специальный адаптер подключить носитель к другому компьютеру с установленным антивирусным ПО и очистить. С официальными инструкциями по удалению червя Stuxnet можно ознакомиться на сайте Siemens AG: http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&lang=en&objid=43876783&caller=view. Там же можно скачать и специальную утилиту для удаления Stuxnet, патч для WinCC и патч от Microsoft, которые необходимо установить, чтобы избежать повторного заражения. Если у вас возникнут вопросы – обратитесь за помощью к специалистам по информационной безопасности. Уместно будет заметить, что главный «виновник торжества» - фирма SIEMENS со своим «дырявым» ПО и замечательными рекомендациями о «недопустимости смены паролей» (интересно, зачем в таком случае нужно было тратить время на создание функции запроса паролей) очень немногословна в своих заявлениях. Компания утверждает, что по ее сведениям червь обнаружен всего чуть больше, чем у двух десятков ее клиентов, и случаев нарушения технологического процесса не наблюдалось. Здесь необходимо дать некоторые уточнения:
Рекомендации
При подготовке использованы материалы компаний: ESET, SYMANTEC, Антивирусная лаборатория Касперского, Антивирусная лаборатория Данилова, Siemens, а также личный опыт автора, полученный при работе инженером–пусконаладчиком АСУ ТП.
Автор выражает особую благодарность инженерно-техническому персоналу Научно-производственной компании «ЛЕНПРОМАВТОМАТИКА» за помощь в подготовке статьи.
Павел Волобуев родился и вырос в Санкт-Петербурге. В течение 15 лет жил и работал в сфере IT за границей. Его клиентами были крупные компании промышленного, финансового, гостиничного, государственного и образовательного сектора, такие как Intercontinental Hotels, Marriott Hotels, MaltezosSolarSystems, City University, Национальная метеорологическая служба Греции, Министерство обороны и командование ВВС Греции, Афинский Международный Аэропорт и многие другие. После возвращения в Россию работал в должности инженера в НПК «Ленпромавтоматика», участвовал во внедрении и пуско-наладке систем автоматизированного управления технологическими процессами на ответственных объектах. С 2010 года пополнил коллектив Digital Security,являясь ведущим специалистом по информационной безопасности технологических систем.
Разбираем кейсы, делимся опытом, учимся на чужих ошибках