1 декабря 2010 г.

Война 2.0. S01E01. Stuxnet. P01. Хронология

Как и обещал совсем недавно, начинаю новый сериал – «Война 2.0» (она же – кибервойна, К-Война). Мне даже самому странно, что до сих пор я ничего не написал на эту тему. Ну вот – надо эту странность искоренять. Война 2.0 уже не выдумка фантастов и сценаристов из Голливуда – это реальность наших дней.

Первым эпизодом сериала я решил сделать историю с вирусом Stuxnet. Публичная известность к Stuxnet пришла в июле 2010 (хотя реальная история началась существенно раньше – примерно за год до этого), потом все несколько поутихло, потом последовал всплеск интереса в сентябре 2010, когда появились первые гипотезы относительно наиболее вероятной мишени вируса, потом опять небольшое затухание интереса в октябре (хотя эксперты в своих сообществах и блогах уже не оставляли эту тему), и вот – очередной пик, связанный с практически полным прояснением механизма функционирования вируса и не оставивший сомнений относительно главной цели вирусной атаки. А самые последние новости из Ирана фактически не только подтвердили догадки относительно цели вируса, но и то, что вирус этой цели достиг!

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

Июнь 2010. Аналитики белорусской компании «ВирусБлокАда» обнаружили новый вирус, использующий для своего распространения неизвестную ранее (так называемую «0-day», т.е. для которой еще нет соответствующего патча системы безопасности) уязвимость Windows – через обработку .lnk-файлов (это файлы «иконок», располагающихся на рабочем столе). Эта уязвимость позволяла вирусу распространяться не совсем обычным образом – через зараженные USB-накопители, что делало возможным (при подсоединении «флешки» к USB-порту) заражение компьютеров, не имеющих физического подключения к компьютерным сетям. В век Интернета подобный способ распространения – большая экзотика. Точнее, это выглядело экзотикой – до тех пор, пока детальный анализ кода вируса не начал прояснять наиболее вероятную цель атаки.

16 июля 2010. В корпоративном блоге Symantec появляется первое сообщение о вирусе, которому присвоено имя W32.Stuxnet (другие антивирусные аналитики давали этому же вирусу имена TmpHider и TempHid, но они не прижились). В дальнейшем сообщения о новом вирусе будут публиковаться в блоге практически ежедневно. Помимо основных сведений о необычном механизме заражения, появляются первые интересные факты:
  • Программный код состоит из нескольких модулей, написанных на C/C++ и ассемблере, и имеет размер порядка 500 (!) КБ.
  • Вирус получил широкое распространение в странах Юго-Восточной Азии. Выделяются 3 страны – Индия (около 40% обнаруженных вирусов), Индонезия (более 30%) и Иран (более 20%).
  • Код вируса содержит динамически загружаемые библиотеки DLL, относящиеся к специализированному продукту Step 7 компании Siemens, использующемуся при работе с т.н. SCADA-системами, т.е. системами промышленной автоматики. Вирус использует стандартные (дефолтные) имя пользователя и пароль для подключения к базам данных, используемых SCADA-системами, и собирает некую информацию из этих баз.
Высказываются первые предположения относительно назначения вируса – якобы вирус занимается изощренным промышленным шпионажем, собирая инфраструктурную информацию и документы в интересах кого-то из конкурентов компаний, попавших в зону заражения.

20-21 июля 2010. Появляется детальный анализ механизма распространения вируса, выполненный экспертами Symantec. Все более очевидным становится тот факт, что вирус такой сложности и качества невозможно создать в одиночку – над его созданием работала хорошо оснащенная и высоквалифицированная команда программистов.

21 июля 2010. В посте «The Hackers Behind Stuxnet» высказываются первые предположения относительно возможных разработчиков вирусной атаки и наиболее вероятной ее цели. Появляются и первые конспирологические намеки – в теле вируса обнаружена текстовая строка с упоминанием гуавы (дерева семейства миртовых) - см. мой пост «Конспирология» (будет опубликован в ближайшее время). Кроме того, впервые в блоге Symantec упоминается о том, что два программных модуля вируса, маскирующиеся под системные драйверы, подписаны легальной цифровой подписью сторонней компании. Как в руки разработчиков вируса мог попасть сертификат секретного ключа подписи, неясно – возможно, он был похищен физически, неспосредственно из офиса компании-владельца ключа.

22 июля 2010. Очередное сообщение о Stuxnet в блоге Symantec. Главная сенсация – на первое место по числу выявленных заражений однозначно выходит Иран (почти 60%); на втором месте Индия (около 19%), на третьем Индонезия (около 9%). Общее число зараженных хостов превышает 14 тысяч. А если учитывать, что многие компьютеры выходят во внешний мир под одним и тем же IP-адресом (собственно, адресом хоста, подключенного к интернету), то число зараженных ПК оценивается уже в сотни тысяч. В прессе появляются первые гипотезы относительно того, что именно Иран является главной мишенью вирусной атаки. А где в Иране используются SCADA-системы от Siemens? Конечно же, на АЭС в Бушере и на обогатительном заводе в Натанзе...

Несколько следующих постов в блоге Symantec, опубликованные примерно в течение недели, раскрывают технические детали относительно Stuxnet – как он распространяется, как маскирует себя в зараженной системе, как ведет себя в случае наличия подключения к Интернету и т.п. Однако, по-прежнему нет ответа на главный вопрос – о конечной цели вируса.

28 июля 2010. Появляется информация о существовании, по крайней мере, двух значительно различающихся версий вируса Stuxnet. Причем, более ранняя версия написана более года назад и не использует «0-day» уязвимость, которая задействована в новой версии. Становится очевидно, что процесс распространения Stuxnet продолжается уже очень давно, и, возможно, вирус уже достиг своей цели.

5 августа 2010. Новый концептуальный пост в блоге Symantec - «Sneakernet Revisited». В двух словах, sneakernet – это «сеть», поддерживаемая физической передачей носителей информации (USB-драйвы, бандероли с жесткими дисками, ж/д вагоны с DLT-лентами, даже голубиная почта – без иронии). По сути, sneakernet – единственный способ добраться до компьютеров, физически отключенных от сети. Что и происходит с вирусом Stuxnet в Иране (правда, на момент публикации поста подобный сценарий все еще рассматривается как гипотеза, а не как подтвержденный факт). Интересующимся подробностями рекомендую почитать про sneakernet в Википедии, написано очень хорошо.

6 августа 2010. Аналитики Symantec сообщают, что угроза Stuxnet гораздо серьезнее, чем сообщалось ранее, и что вирус не только может извлекать информацию из SCADA-систем, но и умеет записывать блоки программного кода в программируемые логические контроллеры (PLC – Programmable Logic Controller) - устройства, непосредственно управляющие производственными системами и процессами. Причем, Stuxnet умеет скрывать присутствие постороннего кода в PLC, т.е. впервые в истории реализует механизм руткита для промышленных управляющих систем.

Август-сентябрь 2010. В течение более, чем месяца, новой заслуживающей внимания информации о Stuxnet не появляется – только обычные СМИшные домыслы и гипотезы. Правда, контекст Ирана и его ядерной программы постоянно присутствует в этих публикациях.

13 сентября 2010. Появляется первая короткая запись в блоге Ральфа Лангнера, немецкого исследователя в области компьютерной безопасности. Лангнер (который почему-то пишет о себе в третьем лице – и это будет достаточно часто встречаться в его блоге) сообщает, что успешно проанализировал код Stuxnet: «Stuxnet является направленной атакой против конкрентной инсталляции управляющей системы» («Stuxnet is a directed attack against a specific control system installation»). Лангнер обещает раскрыть детали на конференции в Роквилле, которая должна состояться через неделю.

14 сентября 2010. Symantec cообщает, что Stuxnet может использовать не одну, а целых 4 «0-day» уязвимости (правда, несколько позднее будет уточнено, что одна из вновь обнаруженных уязвимостей уже не является «0-day», т.е. существует средство защиты от нее).

17 сентября 2010. Очередная новость от Symantec – Stuxnet умеет обновляться с использованием механизма P2P (peer-to-peer). Зараженные компьютеры могут контактировать друг с другом (в том числе, и посредством sneakernet, о котором было сказано выше) и определять, на каком из компьютеров находится более свежая версия вируса. После этого компьютер с более свежей версией Stuxnet обновляет своего «коллегу», зараженного старой версией. Это добавляет новый штрих к профессиональному портрету разработчиков вируса – они позаботились и о том, чтобы распространение и обновление вируса продолжалось и в условиях отсутствия единого «центра управления полетом».

21 сентября 2010. Аналитик Symantec объясняет, как в руках разработчиков Stuxnet могли оказаться легальные сертификаты цифровых подписей. Для этого не нужно было физически красть сертификаты из офисов пострадавших фирм – всю работу мог проделать «троян» Infostealer.Nimkey, пришедший в виде спама по электронной почте.
В этот же день появляется еще один большой пост в блоге Symantec, в котором детально объясняется, как именно Stuxnet записывает зловредный код в PLC и как он маскирует свое присутствие там.
  • Впервые сообщается о конкретных моделях атакуемых вирусом контроллеров – это изделия Siemens с процессорами 6ES7-417 и 6ES7-315-2.
  • Вирус также проверяет наличие специального коммуникационного процессора CP 342-5 (используется с шиной данных Profibus DP) – если процессор отсутствует в конфигурации, заражения контроллера не происходит.
  • Сообщается также, что в теле вируса присутствуют три блока зловредного кода – «боеголовки» (аналитики Symantec назвали их «sequence A», «sequence B» и «sequence С»), которые могут избирательно загружаться в контроллер при совпадении результатов проверки вирусом определенных данных в контроллере. При этом последовательности A и В являются альтернативными друг другу (загружается одна из двух – в зависимости от условий), а последовательность C загружается в контроллер в результате другой серии проверок и содержит существенно более сложную логику, чем последовательности A и B.
30 сентября 2010. Symantec сообщает о публикации на своем сайте в свободном доступе давно обещанного т.н. «W32.Stuxnet Dossier» - технического обзора, содержащего всю информацию, полученную на основе анализа кода вируса. Впервые дается оценка трудоемкости разработки вируса – команда численностью в 5-10 человек должна была работать над ним в течение более чем полугода. Кроме того, Symantec обнаружил ранние образцы вируса в своих базах подозрительного кода – они находились там с июня 2009, т.е. команда разработчиков была активной более года. Аналитики Symantec вынуждены признать, что, хотя они раскрыли многие важные и второстепенные аспекты деятельности вируса, конкретная цель атаки остается неизвестной: «Мы провели реконструкцию всего кода STL, но код не содержит никакого намека на то, чем он управляет в реальном мире. Для тех, кто не знаком с промышленными системами, код просто отправляет некоторые числовые значения по некоторым адресам. Что скрывается за этим адресом – насос, центрифуга или конвейерная лента – нельзя понять, глядя на код.»
На состоявшейся днем раньше конференции Virus Bulletin аналитики Symantec провели впечатляющую демонстрацию того, как Stuxnet может изменять работу оборудования, подключенного к программируемому контроллеру:
  • Демо-стенд состоял из компьютера с установленным на нем ПО Siemens, подвергающимся атаке Stuxnet (WinCC/Step 7), собственно контроллера и подключенного к нему пневматического насоса, надувающего воздушный шарик.
  • Правильная логика функционирования контроллера состояла в том, что насос включался, надувал шарик в течение нескольких секунд, а потом отключался.
  • Под воздействием демо-«боеголовки» Stuxnet (не реального кода, а написанного специально для демонстрации) насос включался, надувал шарик и ... не останавливался. Через небольшой промежуток времени шарик лопался...
Только от фантазии зрителей зависело, картину какой реальной катастрофы они представляли себе, глядя на лопающийся шарик.

15 октября 2010. Symantec публикует предупреждение о появившемся фальшивом «чистильщике» вируса Stuxnet. Чего и следовало ожидать – на волне ажиотажа, поднявшегося вокруг Stuxnet, разработчики зловредного ПО выпустили собственную поделку, которая, конечно, уничтожала вирус Stuxnet, если он был на компьютере, но... только вместе со стиранием всего содержимого диска С.

3 ноября 2010. Выходит версия 1.2 технического обзора Symantec «W32.Stuxnet Dossier». В нее добавлено верхнеуровневое описание поведения «боеголовок» вируса, внедряющихся в контроллер. Однако, аналитикам приходится констатировать, что истинная цель вируса по-прежнему неизвестна.

12 ноября 2010. Прорыв! Под таким заголовком – «Stuxnet: A Breaktrhough» - публикуется очередной пост в блоге Symantec. В головоломку Stuxnet наконец-то добавлен недостающий элемент – это стало возможным благодаря помощи датских экспертов по шине обмена данными Profibus.
Вот основные выводы:
  • «Боеголовка» вируса нацелена на две конкретные модели т.н. частотных преобразователей, которые управляют частотно-регулируемыми приводами. Одна из моделей преобразователей (Vacon) производится в Финляндии, а вторая (Fararo Paya) – в Иране!
  • Упомянутые частотные преобразователи предназначены для управления приводами, работающими на высоких скоростях – от 807 Гц до 1210 Гц. И хотя частотные преобразователи применяются в промышленности достаточно широко, подобные высокоскоростные приводы используются только в ограниченном числе приложений.
  • Требования Stuxnet к конкретному диапазону рабочих частот преобразователей и другие операционные характеристики сужают круг потенциальных мишеней вируса.
Подчеркивается, что в США экспорт высокоэффективных частотных преобразователей с выходными частотами выше 600 Гц регулируется Комиссией по ядерному надзору, т.к. эти преобразователи могут использоваться в процессах обогащения урана. Например, вот в таких центрифугах, как на фото. Как говорится, бинго!


После того, как приводы проработают на заданной частоте достаточный период времени (что является признаком установившегося процесса), Stuxnet перехватывает управление и начинает изменять поведение приводов. Сначала вирус кратковременно повышает выходную частоту преобразователя до 1410 Гц (что находится за верхним пределом нормального рабочего диапазона), потом сбрасывает ее до 2 Гц (практически остановка), потом снова повышает до 1064 Гц. Подобные скачки продолжаются в течение нескольких месяцев. Фактически, происходит саботаж нормального производственного процесса.
Аналитики Symantec не называют никаких конкретных географических названий, но так ли это важно, когда все и так уже понятно?

29 ноября 2010. BBC опубликовала новость, в которой утверждается, что президент Ирана М.Ахмадинежад признал, что на заводе по обогащению урана в Натанзе имели место случаи саботажа. Цитата из новости:
"They succeeded in creating problems for a limited number of our centrifuges with the software they had installed in electronic parts," Mr Ahmadinejad told a news conference.
"Our specialists stopped that and they will not be able to do it again," he added without elaborating on the software thought to have been used.
Факты остановки производства на заводе в Натанзе, имевшие место в ноябре 2010, подтвердили и эксперты Международного агентства по атомной энергии.
Комментарии Ахмадинежада прозвучали в день, когда в Иране один специалист-атомщик был убит, а второй ранен в результате двух отдельных, но идентичных по технике исполнения покушений. По некоторым непотвержденным данным, погибший был не атомщиком, а ведущим экспертом, занимавшимся расследованием эпидемии Stuxnet в Иране.

Как говорится, добро пожаловать в Войну 2.0...

2 комментария: