С этого момента червь Stuxnet стал объектом обширных и пристальных исследований специалистов по компьютерной безопасности. Которые довольно скоро и вполне единодушно были вынуждены признать, что ничего подобного им в своей практике видеть прежде не доводилось. Тогда же в июле Stuxnet был классифицирован как гиперусложненная вредоносная программа, созданная, вероятнее всего, целой командой опытных разработчиков по заказу какого-то государства.
Оценка одного из пораженных инженеров, занимавшегося "препарированием" червя, звучала примерно так: "После десяти лет ежедневных занятий обратной инженерной разработкой кодов, я еще никогда не встречался ни с чем, что хотя бы близко было похоже на ЭТО". Небывало огромный для подобного типа программ (размер исполняемого кода составляет порядка полумегабайта), обильно зашифрованный и слишком сложный для быстрого понимания его назначения, этот червь чрезвычайно удивил специалистов. По словам другого антивирусного эксперта, в сравнении с червем Stuxnet все прочие примечательные атаки последнего времени, вроде приснопамятной Aurora, в ходе которой были хакнуты сети Google и десятков других ведущих компаний, выглядят просто детскими игрушками.
При всей своей перегруженности программа Stuxnet написана чрезвычайно хорошо и грамотно. Она очень, очень тщательно заточена под то, чтобы ничего не поломать и не нарушить в заражаемых ею системах, чтобы не было видно абсолютно никаких внешних признаков инфицирования, а самое главное, она делает все для гарантирования того, чтобы ее окончательная миссия, которая манипулирует параметрами и кодами в управляющем компьютере SPS, была запущена и выполнена лишь в том случае, когда имеется полная уверенность, что это именно та самая система, на которую программа изначально была нацелена.
Однако понимание всех этих нюансов пришло, конечно же, далеко не сразу. Поначалу специалисты фирм Symantec и Kaspersky Lab, примерно одновременно и всерьез взявшихся за борьбу с червем, обнаружили лишь один опасный zero-day-баг. Это была дыра в защите от подсоединяемых к ПК USB-устройств, получившая название LNK, и срабатывала она для инфицирования почти любых компьютеров — в независимости от версии операционной системы Windows, начиная с ископаемой Win 2000 и до наиболее современной, предположительно весьма безопасной Windows 7.
Еще через несколько недель исследований специалисты обеих антивирусных фирм независимо друг от друга обнаружили, что Stuxnet в действительности использует для внедрения далеко не одну, а четыре прежде неизвестных zero-day-уязвимостей (баг спулера печати и два EoP-бага, повышающих привилегии). Одновременное использование сразу четырех zero-day-багов - это очень и очень необычное свойство вредоносной программы, никогда прежде не наблюдавшееся специалистами ни в Symantec, ни у Касперского.
Соответственно, не доводилось им видеть и поведение столь продвинутого червя в работе. Попадая в корпоративную сеть — на первом этапе через зараженное USB-устройство — Stuxnet использовал баги, повышающие его привилегии (EoP), чтобы получить доступ администратора к другим ПК, разыскивал системы, в которых работают программы управления WinCC и PCS 7 SCADA, захватывал эти системы, используя баг спулера печати, а затем пытался применять принятый по умолчанию фабричный пароль Siemens для захвата управления программным обеспечением SCADA.
После чего червь получал возможность перепрограммировать так называемую программу PLC (programmable logic control — программируемый логический контроллер), чтобы диктовать всем управляемым системой механизмам новые команды и инструкции. Попутно следует подчеркнуть, что опаснейшие коды атакующего червя для всякой зараженной системы выглядели совершенно легитимными, поскольку люди, стоявшие за созданием Stuxnet, предварительно похитили по крайней мере два цифровых сертификата, принадлежащие компаниям Realtek Semiconductor и JMicron Technology. Драйверы и программы этих фирм давно и прочно прописаны в операционных системах компьютеров, поэтому действия правильно подписанных кодов Stuxnet не вызывали абсолютно никаких сигналов тревоги.
Еще один интересный нюанс - это один из способов, которым атакующая сторона минимизировала риски обнаружения своей программы. В каждом USB-устройстве, куда подсаживался Stuxnet, работал счетчик, который контролировал число заражаемых устройством машин и не позволял инфицировать больше трех компьютеров. Другими словами, атакующие, судя по всему, таким образом пытались ограничить масштабы распространение червя, дабы он оставался как можно ближе к объекту, против которого был направлен.
Функционирование червя Stuxnet рассчитано на полностью автономную работу программы и не требует ни подключений к интернету для получения дополнительных инструкций, ни управления со стороны человека вообще. В программе выявлено настолько много разных типов выполняемых функций, что для экспертов очевидно - созданием этого продукта занималась команда людей с богатым опытом в самых разных областях: от конструирования невидимых руткитов и эксплуатации багов проникновения до работы с базами данных.
Вредоносное ПО написано на множестве разных языков. С одной стороны, это C, C++ и другие объектно-ориентированные языки высокого уровня. А с другой — коды STL (Statement List), низкоуровневый язык типа ассемблера, используемый в системах управления промышленными процессами. Плюс вообще впервые наблюдаемый специалистами руткит PLC, скрывающий вредоносный STL-код. Если же говорить о работе червя со SCADA-системами вообще, то в первую очередь следует подчеркнуть, что эта область приложения компьютеров отличается очень высоким уровнем специализации. Иначе говоря, по свидетельству специалистов, разработчики Stuxnet в своем распоряжении непременно должны были иметь для тестирования именно то реально применяемое аппаратное обеспечение, под которое затачивалось их кибероружие. Ибо все признаки свидетельствуют, что они в точности и в деталях знали нюансы работы техники на том конкретном объекте, который был избран целью атаки.
Начиная с этого момента разбора представляется наиболее логичным от наблюдений и свидетельств антивирусных экспертов из Symantec и Kaspersky Lab перейти к результатам анализа, выполненного специалистом по безопасности компьютерных промышленных систем из фирмы Siemens. Ибо Stuxnet был несомненно заточен против ПО именно этой компании, уверенно доминирующей на рынке SCADA-систем, а весьма уважаемый германский специалист по безопасности промышленных систем Ральф Лангнер (Ralph Langner), работающий в Siemens, недавно опубликовал в Сети результаты своих исследований, посвященных интересным свойствам невиданного прежде гипер-червя из киберпространства.
Поначалу, как и у экспертов из антивирусных фирм, первой идеей Лангнера было то, что Stuxnet написали для похищения промышленных секретов - каких-нибудь фирменных формул, рецептов или схем, которые могут быть использованы конкурентами для производства контрафактной продукции. Однако, углубившись в анализ свойств червя, обнаружил Лангнер нечто существенно иное.
Червь Stuxnet действительно занят непрерывными поисками, однако разыскивает он очень специфические установочные параметры системы, нечто вроде ее "отпечатков пальцев", которые говорят, что именно работает под управлением PLC или программируемого логического контроллера. Как уже говорилось, промышленные SCADA-системы весьма специфичны для каждой конкретной фабрики. Они состоят из множества небольших узлов, измеряющих температуру, давление, потоки жидкостей и газов, они управляют вентилями, моторами, и всем прочим хозяйством, необходимым для поддержания нередко опасных промышленных процессов в рамках их норм безопасности и в пределах эффективности. Таким образом, оба компонента систем - аппаратные модули конфигурации и программное обеспечение - являются специфическим набором, изготовляемым для каждой конкретной фабрики. Ну а с точки зрения червя Stuxnet все эти вещи выглядят как "отпечаток пальцев". И лишь только в том случае, если идентифицирована надлежащая конфигурация, он начинает делать больше, много больше, нежели просто тихо распространять себя в поисках цели.
(Именно эта особенность программы свидетельствует об одной принципиально важной вещи: атакующая сторона очень точно знала конфигурацию выбранной цели. Она наверняка должна была иметь поддержку инсайдера или группы инсайдеров внутри фабрики, либо какой-то еще способ доступа к программной части и аппаратной конфигурации избранного для атаки объекта.)
Среди шагов, которые, как обнаружил Лангнер, делает Stuxnet при обнаружении искомой цели, оказались изменения в фрагментах программного кода Siemens, известного как "оперативный Блок 35". Этот важный компонент программы Siemens занимается мониторингом критических производственных операций — вещей, которые требуют срочной реакции в пределах 100 миллисекунд. Вмешиваясь в работу Блока 35, Stuxnet может, к примеру, легко вызвать аварийный сбой в работе, ведущий к саморазрушению промышленного процесса. Так, во всяком случае, это видит Лангнер.