В январе 2010 года официальные лица Международного агентства по атомной энергии (МАГАТЭ), органа Организации Объединенных Наций, ответственного за мониторинг ядерной программы Ирана, впервые начали замечать нечто необычное, происходящее на заводе по обогащению урана за пределами Натанза в центральной части Ирана.
Внутри большого центрифужного цеха, расположенного подобно бункеру на глубине более пятидесяти футов под поверхностью пустыни, тысячи сверкающих алюминиевых центрифуг вращались со сверхзвуковой скоростью, обогащая газообразный гексафторид урана, как это было в течение почти двух лет. Но за последние недели рабочие на заводе убирали партии центрифуг и заменяли их новыми. И они делали это с поразительной скоростью.
В Натанзе каждая центрифуга, известная как IR-1, рассчитана на срок службы около десяти лет. Но устройства хрупкие и легко ломаются. Даже при нормальных условиях Ирану приходится заменять до 10 процентов центрифуг каждый год из-за дефектов материалов, проблем с обслуживанием и несчастных случаев на производстве.
В ноябре 2009 года в Иране было установлено около 8 700 центрифуг в Натанзе, поэтому было бы совершенно нормально видеть, как технические специалисты выводят из эксплуатации около 800 из них в течение года, поскольку устройства по той или иной причине вышли из строя. Но когда представители МАГАТЭ подсчитали количество центрифуг, вывезенных за несколько недель в декабре 2009 года и начале января, они поняли, что Иран использует их с необычной скоростью.
Инспекторы Департамента гарантий МАГАТЭ посещали Натанз в среднем два раза в месяц — иногда по предварительной записи, иногда без предупреждения — для отслеживания деятельности Ирана по обогащению и прогресса.1 Каждый раз, когда работники завода выводили из эксплуатации поврежденные или иным образом непригодные центрифуги, они должны были выстраивать их в контрольную зону сразу за дверью центрифужных помещений, пока инспекторы МАГАТЭ не прибудут с очередным визитом, чтобы осмотреть их. Инспекторы проверяли каждую центрифугу с помощью портативного гамма-спектрометра, чтобы убедиться, что в них нет контрабандного вывоза ядерного материала, затем одобряли демонтаж центрифуг, отмечая в отчетах, отправляемых обратно в штаб-квартиру МАГАТЭ в Вене, количество выведенных из эксплуатации центрифуг каждый раз.
Цифровые камеры наблюдения МАГАТЭ, установленные за дверью каждой центрифужной камеры для наблюдения за деятельностью Ирана по обогащению, запечатлели техников, снующих в белых халатах, синих пластиковых ботинках на ногах, когда они один за другим вытаскивали блестящие цилиндры, каждый около шести футов в длину и около полуметра в диаметре. Рабочие, по соглашению с МАГАТЭ, должны были держать хрупкие устройства в руках, завернутыми в пластиковые рукава или в открытых коробках, чтобы камеры могли зафиксировать каждый предмет по мере его удаления из помещения.
Камеры наблюдения, которые не были допущены в помещения центрифуги, сохранили изображения для последующего просмотра. Каждый раз, когда инспекторы посещали Натанз, они изучали записанные изображения, чтобы убедиться, что Иран не убрал дополнительные центрифуги или не сделал ничего другого запрещенного во время их отсутствия.2 Но по прошествии недель, когда инспекторы отправили свои отчеты обратно в Вену, тамошние чиновники поняли, что количество демонтируемых центрифуг намного превысило норму.3
Официально МАГАТЭ не скажет, сколько центрифуг Иран заменил за этот период. Но новостные сообщения, цитирующие европейских “дипломатов”, ставят цифру от 900 до 1000. Бывший высокопоставленный чиновник МАГАТЭ, однако, считает, что фактическое число было намного выше. “По моим обоснованным предположениям, было повреждено 2000 человек”, - говорит Олли Хейнонен, который был заместителем директора Отдела гарантий, пока не ушел в отставку в октябре 2010 года.
Каким бы ни было число, было ясно, что с устройствами что-то не так. К сожалению, Иран не был обязан сообщать инспекторам, почему они заменили их, и, официально, инспекторы МАГАТЭ не имели права спрашивать. Мандат агентства заключался в том, чтобы следить за тем, что происходит с ураном на заводе по обогащению, а не отслеживать вышедшее из строя оборудование.
Чего инспекторы не знали, так это того, что ответ на их вопрос был прямо у них под носом, похороненный в битах и памяти компьютеров в промышленной диспетчерской Натанца. Несколькими месяцами ранее, в июне 2009 года, кто-то незаметно запустил разрушительную цифровую боеголовку в компьютеры в Иране, где она бесшумно проникла в критически важные системы в Натанзе, и все это с единственной целью — саботировать иранскую программу обогащения урана и помешать президенту Махмуду Ахмадинежаду создать ядерную бомбу.
Ответ был там, в Натанзе, но пройдет почти год, прежде чем инспекторы получат его, и даже тогда он придет только после того, как более дюжины экспертов по компьютерной безопасности по всему миру потратили месяцы на разбор того, что в конечном итоге станет известно как один из самых сложных вирусов, когда-либо обнаруженных - программное обеспечение, настолько уникальное, что войдет в историю как первое в мире цифровое оружие и первый выстрел из лука, возвещающий эпоху цифровой войны.
1 С этого периода увеличилось количество инспекционных визитов в Натанз. Начиная с 2010 года, инспекции увеличились до одного раза в неделю, а после нового соглашения с Ираном в конце 2013 года инспекторы теперь находятся на месте в Натанзе каждый день.
2 Инспекторам МАГАТЭ не разрешается удалять записанные изображения из Натанза, и они могут просматривать их только на месте, где они хранятся.
3 Инспекторы, посещающие Натанз и другие ядерные объекты по всему миру, регулярно сменяются, поэтому одни и те же инспекторы МАГАТЭ посещают их не каждый раз. Вот почему большое количество выведенных из эксплуатации центрифуг не было замечено до тех пор, пока в Вену не поступило несколько сообщений об изменении цифр, которые были просмотрены в совокупности аналитиками и официальными лицами.
OceanofPDF.com
ГЛАВА 1
РАННЕЕ ПРЕДУПРЕЖДЕНИЕ
Сергей Уласен - не тот человек, которого вы ожидаете увидеть в центре международного инцидента. У тридцатиоднолетнего белоруса коротко подстриженные светлые волосы, худощавое мальчишеское телосложение, открытое лицо и приветливые манеры человека, который идет по жизни, привлекая мало врагов и еще меньше противоречий. Одно из его любимых занятий - провести выходные в загородном доме своей бабушки под Минском, где он отдыхает от будничных стрессов, вдали от сотовых телефонов и Интернета. Но в июне 2010 года Уласен столкнулся с чем-то необычным, что вскоре привело его в центр внимания международного сообщества и в мир нового стресса.1
Был теплый день четверга, и Уласен, возглавлявший антивирусное подразделение небольшой белорусской фирмы по компьютерной безопасности Virus-BlokAda, сидел со своим коллегой Олегом Купреевым в их лаборатории в центре Минска в унылом здании советской эпохи примерно в квартале от реки Свислочь. Они методично просматривали подозрительные компьютерные файлы, которые они недавно обнаружили на машине в Иране, когда что-то поразительное выпрыгнуло на Купреева. Он откинулся на спинку стула и подозвал Уласена, чтобы тот взглянул. Уласен прокрутил код один раз, затем еще раз, чтобы убедиться, что он видит то, что, как ему казалось, он видит. Крошечный вздох вырвался из его горла. Код, который они проверяли последние несколько дней, то, что они до сих пор считали умеренно интересным, но, тем не менее, заурядным вирусом, только что показал себя как работа тихого и дьявольского гения.
Он не только использовал умелый руткит, чтобы замаскироваться и стать невидимым для антивирусных систем, он использовал хитрый эксплойт нулевого дня для распространения с компьютера на компьютер — эксплойт, который атаковал функцию, столь фундаментальную для операционной системы Windows, что подвергал риску заражения миллионы компьютеров.
Эксплойты - это код атаки, который хакеры используют для установки вирусов и других вредоносных инструментов на компьютеры. Они используют уязвимости в системе безопасности в таких браузерах, как Internet Explorer, или приложениях, таких как Adobe PDF Reader, чтобы внедрить в систему вирус или троянского коня, подобно взломщику, использующему лом, чтобы взломать окно и проникнуть в дом. Если жертва посещает вредоносный веб-сайт, на котором скрывается эксплойт, или нажимает на вредоносное вложение электронной почты, содержащее эксплойт, эксплойт использует дыру в безопасности программного обеспечения, чтобы сбросить вредоносный файл в свою систему. Когда производители программного обеспечения узнают о таких дырах в своих продуктах, они обычно выпускают “заплатки”, чтобы закрыть их и изолировать злоумышленников, в то время как антивирусные фирмы, такие как Ulasen's, добавляют подписи к своим сканерам для обнаружения любых эксплойтов, которые пытаются атаковать уязвимости.
Эксплойты нулевого дня, однако, не являются обычными эксплойтами, а являются самым ценным достоянием хакерского мира, потому что они атакуют дыры, которые все еще неизвестны производителю программного обеспечения и поставщикам антивирусов, что означает, что пока нет антивирусных сигнатур для обнаружения эксплойтов и нет доступных патчей для исправления дыр, которые они атакуют.
Но эксплойты нулевого дня редко встречаются в дикой природе. Хакерам требуется время и навыки, чтобы обнаружить новые бреши и написать работоспособные эксплойты для их атаки, поэтому подавляющее большинство хакеров просто полагаются на старые уязвимости и эксплойты для распространения своего вредоносного ПО, рассчитывая на тот факт, что большинство пользователей компьютеров не часто исправляют свои компьютеры или устанавливают современное антивирусное программное обеспечение, и что поставщикам могут потребоваться недели или месяцы, чтобы произвести исправление для известной бреши. Хотя каждый год фиксируется более 12 миллионов вирусов и других вредоносных файлов , среди них обнаруживается только около дюжины нулевых дней. Однако здесь злоумышленники использовали чрезвычайно ценный эксплойт нулевого дня и умелый руткит для вируса, который, насколько могли судить Уласен и Купреев, пока был обнаружен только на компьютерах в Иране. Что-то не сходится.
ТАИНСТВЕННЫЕ ФАЙЛЫ привлекли их внимание неделей ранее, когда реселлер программного обеспечения безопасности VirusBlokAda в Иране сообщил о постоянной проблеме с компьютером клиента в этой стране. Компьютер попал в цикл перезагрузки, неоднократно выходил из строя и перезагружался, игнорируя усилия технических специалистов по его контролю.2 Команда технической поддержки VirusBlokAda провела удаленное сканирование системы из Минска в поисках вредоносного ПО, которое могло пропустить их антивирусное программное обеспечение, но ничего не обнаружила. Именно тогда они позвонили в Уласен.
Уласен был нанят антивирусной фирмой еще во время учебы в колледже. Его наняли программистом, но штат VirusBlokAda был настолько мал, а навыки Уласена настолько велики, что через три года, в возрасте двадцати шести лет, он оказался во главе команды, которая разрабатывала и поддерживала его антивирусный движок. Он также время от времени работал с исследовательской группой, которая разбирала вредоносные угрозы. Это была его любимая часть работы, хотя ему редко приходилось это делать. Поэтому, когда команда технической поддержки попросила его разобраться в их загадке из Ирана, он был рад помочь.3
Уласен предположил, что проблема, должно быть, в неправильной конфигурации программного обеспечения или несовместимости между приложением, установленным на компьютере, и операционной системой. Но затем он узнал, что сбой произошел не на одной машине в Иране, а на нескольких машинах, включая те, которые администраторы стерли и восстановили с помощью новой установки операционной системы. Поэтому он подозревал, что виновником может быть червь, скрывающийся в сети жертвы, повторно заражающий очищенные машины при каждой их очистке. Он также подозревал, что руткит скрывал злоумышленника от их антивирусного движка. В прошлом Уласен писал инструменты для борьбы с руткитами для своей компании, поэтому он был уверен, что сможет выследить этот, если он там был.
После получения разрешения подключиться к одной из машин в Иране и удаленно исследовать ее, Уласен и Купреев нацелились на шесть подозрительных файлов — два модуля и четыре других файла, которые, по их мнению, были источником проблемы.4 Затем с помощью нескольких коллег из их лаборатории они провели следующие несколько дней, урывками копаясь в файлах, время от времени изрыгая проклятия, пытаясь расшифровать то, что оказалось удивительно сложным кодом. Будучи сотрудниками небольшой фирмы, которая в основном разрабатывала антивирусные продукты для государственных заказчиков, они не привыкли решать такие сложные задачи: большую часть своих дней они проводили, предоставляя клиентам обычную техническую поддержку, а не анализируя вредоносные угрозы. Но, тем не менее, они продвигались вперед и в конечном итоге определили, что один из модулей, драйвер, на самом деле был руткитом “уровня ядра”, как и подозревал Уласен.5
Руткиты бывают нескольких разновидностей, но наиболее трудными для обнаружения являются руткиты на уровне ядра, которые глубоко проникают в ядро компьютера, чтобы создать магазин на том же привилегированном уровне, где работают антивирусные сканеры. Если представить структуру компьютера как концентрические круги мишени лучника, ядро - это "яблочко", часть операционной системы, которая заставляет все работать. Большинство хакеров создают руткиты, которые работают на внешних уровнях компьютера — уровне пользователя, где запускаются приложения, — потому что это проще сделать. Но антивирусные сканеры могут их обнаружить — поэтому по-настоящему опытный хакер размещает свой руткит на уровне ядра компьютера, где он может подорвать работу сканера. Там он служит своего рода ведомым для вредоносных файлов, создавая помехи для сканеров, чтобы вредоносное ПО могло беспрепятственно выполнять свою грязную работу и не было обнаружено. Руткиты на уровне ядра не редкость, но для создания хорошо работающего руткита требуются сложные знания и умелый подход. И это сработало очень хорошо.6
Купреев определил, что руткит был разработан для сокрытия четырех вредоносных программ.Файлы LNK — четыре других подозрительных файла, которые они обнаружили в системе в Иране. Вредоносная программа, по-видимому, использовала эксплойт, состоящий из этих вредоносных файлов, для распространения через зараженные флэш-накопители USB, и руткит предотвратил.Файлы LNK были обнаружены на флэш-накопителе. Именно тогда Купреев позвал Уласена посмотреть.
Эксплойты, распространяющие вредоносное ПО через флэш-накопители USB, не так распространены, как те, которые распространяют их через Интернет через веб-сайты и вложения электронной почты, но и они не являются чем-то неслыханным. Однако все USB-эксплойты, которые два исследователя видели ранее, использовали функцию автозапуска операционной системы Windows, которая позволяла вредоносным программам на флэш-накопителе USB запускаться, как только диск был вставлен в компьютер. Но этот эксплойт был более умным.7
Windows.Файлы LNK отвечают за отображение значков содержимого флэш-накопителя USB или другого портативного мультимедийного устройства, когда оно подключено к ПК. Вставьте флэш-накопитель USB в ПК, и проводник Windows или аналогичный инструмент автоматически просканирует его на .LNK files для отображения значка музыкального файла, документа Word или программы, хранящихся на флэш-накопителе.8 Но в этом случае злоумышленники внедрили эксплойт в специально созданный .Файл LNK, так что, как только проводник Windows отсканировал файл, он запустил эксплойт, который привел в действие, чтобы тайно поместить вредоносный груз USB на машину, подобно военно-транспортному самолету, сбрасывающему замаскированных десантников на вражескую территорию.
The .Эксплойт LNK атаковал такую фундаментальную особенность системы Windows, что Уласен удивился, почему никто не подумал об этом раньше. Это было намного хуже, чем эксплойты автозапуска, потому что их можно было легко предотвратить, отключив функцию автозапуска на компьютерах — шаг, который многие сетевые администраторы принимают как само собой разумеющееся из-за известной угрозы безопасности автозапуска. Но нет способа легко отключить .Функция LNK не создает других проблем для пользователей.
Уласен проверил реестр эксплойтов на предмет любых других, которые использовали файлы .LNK в прошлом, но ничего не нашел. Именно тогда он заподозрил, что перед ним нулевой день.
Он взял флэш-накопитель USB, зараженный вредоносными файлами, и подключил его к тестовой машине под управлением Windows 7, новейшей версии операционной системы Microsoft. Машина была полностью исправлена со всеми последними обновлениями безопасности. Если .Microsoft уже знала об эксплойте LNK, исправления в системе предотвратили бы попадание вредоносных файлов на компьютер. Но если .Эксплойт LNK был нулевым днем, ничто не могло его остановить. Он подождал несколько минут, чтобы изучить компьютер, и, конечно же, вредоносные файлы были там.
Он не мог в это поверить. VirusBlokAda, крошечная охранная фирма, о которой мало кто в мире когда-либо слышал, только что обнаружила этот редчайший трофей для охотника за вирусами. Но это был не просто эксплойт нулевого дня; это был тот, который работал против всех версий операционной системы Windows, выпущенных с Windows 2000: злоумышленники объединили четыре версии своего эксплойта вместе — в четырех разных.Файлы LNK — чтобы убедиться, что их атака сработала против каждой версии Windows, с которой она могла столкнуться.9
Уласен попытался осмыслить количество машин, которые подвергались риску заражения из-за этого. Но затем его поразило нечто не менее тревожное. Вредоносный модуль драйвера и другой модуль драйвера, которые попали на целевые компьютеры в составе вредоносного груза, беспрепятственно установились на их тестовую машину без какого-либо предупреждения, появляющегося на экране, чтобы указать, что они это делают. В Windows 7 была функция безопасности, которая должна была сообщать пользователям, пытается установить себя на их компьютер неподписанный драйвер или драйвер, подписанный ненадежным сертификатом. Но эти два драйвера загрузились без проблем. Это было потому, что, как с тревогой понял Уласен, они были подписаны тем, что казалось законным цифровым сертификатом от компании под названием RealTek Semiconductor.10
Цифровые сертификаты - это надежные документы безопасности, подобные цифровым паспортам, которые производители программного обеспечения используют для подписи своих программ, чтобы удостоверить их подлинность как законных продуктов своей компании. Microsoft подписывает свои программы и обновления программного обеспечения цифровой подписью, как и антивирусные фирмы. Компьютеры предполагают, что файл, подписанный законным цифровым сертификатом, заслуживает доверия. Но если злоумышленники украдут сертификат Microsoft и закрытый криптографический "ключ”, который Microsoft использует вместе с сертификатом для подписи своих файлов, они могут обмануть компьютер, заставив его думать, что их вредоносный код является кодом Microsoft.
Злоумышленники и раньше использовали цифровые сертификаты для подписи вредоносных файлов. Но они использовали поддельные самоподписанные сертификаты, выдаваемые за законные, или получили настоящие сертификаты мошенническим путем, например, создав подставную компанию, чтобы обманом заставить центр сертификации выдать им сертификат на имя подставной компании.11 В обоих сценариях злоумышленники рисковали тем, что машины сочтут их сертификат подозрительным и отклонят их файл. В этом случае злоумышленники использовали действительный сертификат от RealTek — надежного производителя оборудования на Тайване — чтобы обмануть компьютеры, заставив их думать, что драйверы являются законными драйверами RealTek.
Это была тактика, которую Уласен никогда раньше не видел, и она вызвала много вопросов о том, как злоумышленникам это удалось. Одна из возможностей заключалась в том, что они захватили компьютер разработчика программного обеспечения RealTek и использовали его машину и учетные данные, чтобы тайно подписать свой код.12
Но также было возможно, что злоумышленники просто украли ключ подписи и сертификат, или cert. По соображениям безопасности интеллектуальные компании хранят свои сертификаты и ключи на автономных серверах или в аппаратных модулях безопасности, которые обеспечивают дополнительную защиту. Но не все сделали это, и были возможные подсказки, позволяющие предположить, что сертификат RealTek действительно был захвачен. Временная метка на сертификатах показала, что оба драйвера были подписаны 25 января 2010 года. Хотя один из драйверов был составлен годом ранее, 1 января 2009 года, другой был составлен всего за шесть минут до его подписания. Быстрое подписание указывало на то, что злоумышленники могли иметь в своем распоряжении ключ RealTek и сертификат.
Последствия были тревожными. Использование законного цифрового сертификата для аутентификации вредоносных файлов подорвало надежность архитектуры подписи в компьютерном мире и поставило под сомнение законность любого файла, подписанного цифровыми сертификатами впоследствии. Это был только вопрос времени, когда другие злоумышленники скопировали тактику и начали красть сертификаты.13 Уласену нужно было сообщить об этом.
Ответственное раскрытие информации требовало, чтобы исследователи, обнаруживающие уязвимости в программном обеспечении, уведомляли соответствующих поставщиков, прежде чем публиковать новости, чтобы дать поставщикам время залатать дыры, поэтому Уласен отправил электронные письма как RealTek, так и Microsoft, уведомив их о том, что обнаружила его команда.
Но после того, как прошло две недели без ответа ни от одной из компаний, Уласен и Купреев решили, что не могут молчать.14 Остальная часть сообщества безопасности должна была знать о .Эксплойт LNK. Они уже добавили подписи к антивирусному движку VirusBlokAda для обнаружения вредоносных файлов и наблюдали, как заражения появляются на компьютерах по всему Ближнему Востоку и за его пределами. Червь / вирус был в бегах и быстро распространялся. Они должны были обнародовать эту новость.15
Итак, 12 июля Уласен разместил краткое объявление о нулевом дне на веб-сайте своей компании и на онлайн-форуме по безопасности на английском языке, предупредив, что вот-вот разразится эпидемия инфекций.16 Он раскрыл несколько подробностей о дыре, которую он атаковал, чтобы не давать хакерам-подражателям информацию, которая помогла бы им ее использовать. Но участники форума быстро поняли последствия, отметив, что это может стать “смертельным для многих”.
Три дня спустя технический журналист Брайан Кребс подхватил объявление и написал об этом сообщение в блоге, обобщив то немногое, что было известно об уязвимости и эксплойте в то время.17 Новость облетела сообщество безопасности, заставив всех приготовиться к волне атак, которые, как ожидается, будут вызваны червем и подражателями, использующими один и тот же эксплойт.18 Тем временем глава института в Германии, который исследовал и тестировал антивирусные продукты, выступил посредником между Уласеном и его контактами в Microsoft, что побудило компанию-разработчика программного обеспечения начать работу над исправлением.19 Но поскольку новости об уязвимости уже просочились, Microsoft решила немедленно сообщить пользователям о критическом недостатке, а также дать им несколько советов о том, как снизить риск заражения в то же время. Однако в отсутствие патча, который выйдет только через две недели, это было далеко не лекарство.20
Индустрия компьютерной безопасности также приступила к действиям по борьбе с червем, у которого теперь было имя — “Stuxnet”, псевдоним, созданный Microsoft из букв в названии одного из файлов драйверов (mrxnet.sys ) и другая часть кода. По мере того, как охранные компании добавляли сигнатуры в свои движки для обнаружения червя и его эксплойтов, тысячи вредоносных файлов начали появляться на компьютерах зараженных клиентов.21
Почти сразу же появился еще один сюрприз. 17 июля антивирусная фирма ESET из Словакии обнаружила еще один вредоносный драйвер, который, по-видимому, был связан со Stuxnet. Это оружие также было подписано цифровым сертификатом от тайваньской компании, хотя и не от RealTek. Вместо этого оно поступило от компании под названием JMicron Technology, производителя микросхем.
Драйвер был обнаружен на компьютере сам по себе, без каких-либо других файлов Stuxnet, но все предположили, что он должен быть связан со Stuxnet, поскольку он имеет сходство с другими драйверами, найденными VirusBlokAda.22 Однако было кое-что примечательное в дате компиляции этого драйвера. Когда хакеры прогоняли свой исходный код через компилятор, чтобы перевести его в двоичный код, который могла прочитать машина, компилятор часто помещал временную метку в двоичный файл. Хотя злоумышленники могли манипулировать временной меткой, чтобы сбить исследователей с толку, этот оказался законным. В нем указывалось, что драйвер был скомпилирован 14 июля, через два дня после того, как VirusBlokAda опубликовала новости о Stuxnet. Неужели хакеры Stuxnet запустили драйвер в новой атаке, совершенно не обращая внимания на тот факт, что малоизвестная антивирусная фирма в Беларуси только что раскрыла их прикрытие? Или они знали, что их стелс-миссия вот-вот будет раскрыта, и стремились установить Stuxnet на большее количество компьютеров, прежде чем он будет заблокирован? Были признаки того, что злоумышленники пропустили несколько шагов при подписании драйвера сертификатом JMicron, что наводило на мысль, что они, возможно, действительно спешили вывести свой код атаки за дверь и на компьютеры.23 Однако было ясно одно: злоумышленникам понадобился этот новый сертификат для подписи своего драйвера, потому что срок действия сертификата RealTek истек месяцем ранее, 12 июня. Цифровые сертификаты имеют ограниченный срок службы, и как только срок действия RealTek истек, злоумышленники больше не могли использовать его для подписи новых файлов. Сертификат также был отозван центрами сертификации, как только Stuxnet был раскрыт, что означало, что компьютеры с Windows теперь будут отклонять или помечать любые файлы, которые уже были подписаны с ним.24
Обнаружение второго сертификата привело к появлению новых предположений о том, как хакеры получили эти документы безопасности. Штаб-квартиры RealTek и JMicron находились всего в двух кварталах друг от друга в научно-промышленном парке Синьчжу в городе Синьчжу, Тайвань. Учитывая их географическую близость, некоторые предположили, что злоумышленники могли физически проникнуть в два офиса, чтобы украсть ключи цифровой подписи и сертификаты. Другие предположили, что Китайская Народная Республика стояла за атакой Stuxnet и взломала две тайваньские компании, чтобы получить их ключи цифровой подписи и сертификаты.
Каким бы ни был сценарий, это означало, что злоумышленники, вероятно, имели в своем арсенале другие украденные цифровые сертификаты. И если они приложили столько усилий, чтобы убедиться, что их атака сработает, это, вероятно, означало, что в их распоряжении была серьезная цель и значительные средства. Многие в сообществе безопасности чувствовали себя очень неловко и озадаченно. “Мы редко видим такие профессиональные операции”, - отметил в Сети исследователь ESET Пьер-Марк Бюро.25
Когда антивирусные фирмы изучали файлы Stuxnet, поступающие от клиентов, их ждал еще один сюрприз. Судя по датам в некоторых файлах, оказалось, что Stuxnet был запущен в дикой природе еще в июне 2009 года, что означало, что он скрывался на компьютерах по крайней мере год, прежде чем VirusBlokAda обнаружил его. Также оказалось, что злоумышленники начали свою атаку тремя разными волнами — в июне 2009 года и в марте и апреле 2010 года, слегка изменяя код в каждой из этих волн.
Одна вещь, которая все еще оставалась загадкой, была намерением Stuxnet. Исследователи не смогли найти ни в одном из файлов никаких признаков того, что Stuxnet крал пароли банковских счетов или другие учетные данные, для чего было разработано множество других вредоносных программ. Они также не смогли найти признаков какого-либо другого очевидного мотива в коде. Так было до тех пор, пока исследователь из Германии не нашел одну возможную подсказку, указывающую на цель Stuxnet.
“Привет, ребята”, - написал Фрэнк Болдевин на онлайн-форуме, где Уласен впервые опубликовал свое уведомление о Stuxnet, “кто-нибудь ... более подробно изучил вредоносное ПО?” Болдевин развернул первый слой покрытия на одном из файлов Stuxnet и обнаружил внутри необычные ссылки на программное обеспечение немецкой фирмы Siemens. Злоумышленники, по-видимому, искали компьютеры, на которых была установлена одна из двух фирменных программ Siemens — либо программное обеспечение Siemens SIMATIC Step 7, либо его программа SIMATIC WinCC. Обе программы являются частью промышленной системы управления (ICS), разработанной для работы с программируемыми логическими контроллерами (ПЛК) Siemens — небольшими компьютерами, обычно размером с тостер, которые используются на заводах по всему миру для управления такими вещами, как манипуляторы роботов и конвейерные ленты на сборочных линиях.
Болдевин никогда раньше не видел вредоносного ПО, нацеленного на промышленную систему управления. Не было никакой очевидной финансовой выгоды от взлома заводского оборудования, такого как ПЛК, по крайней мере, не такой быстрой наличности, которую можно было бы получить, взломав банковские счета и системы кредитных карт. Для него это могло означать только одно. “Похоже, что эта вредоносная программа была создана для шпионажа”, - написал он.26 Злоумышленники, должно быть, хотели украсть заводской дизайн конкурента или чертежи его продукции.
Это была оценка, которую многие в техническом сообществе были слишком рады принять. Оказалось, что Stuxnet нацелен только на системы с установленным программным обеспечением Siemens, что означало, что любой компьютер, не использующий программы Siemens, предположительно безопасен, и их владельцы могут расслабиться. Уласен обнаружил, что на системах в Иране, которые попали в цикл перезагрузки, не было установлено программное обеспечение Siemens, и, кроме системных сбоев, которые они испытали, оказалось, что Stuxnet не причинил им длительного вреда.
Итак, примерно через неделю после того, как таинственный червь ненадолго обрел известность, оказалось, что Stuxnet находится на пути к длительной неизвестности. Microsoft все еще работала над исправлением дыры в системе безопасности.Эксплойт LNK был взломан, но, насколько было известно большинству компаний, занимающихся безопасностью, как только они добавили подписи к своим сканерам для обнаружения вредоносных файлов червя, Stuxnet больше не интересовался.
На этом история первого в мире цифрового оружия вполне могла закончиться, за исключением того, что несколько исследователей в области безопасности были не совсем готовы отпустить ее.
1 Уласен и его команда столкнулись с вредоносным ПО на неделе 24 июня 2010 года.
2 Ulasen никогда не раскрывал имя реселлера, но ссылка на веб-сайте VirusBlokAda для его дистрибьютора в Иране указывает на vba32-ir.com сайт, принадлежащий Deep Golden Recovery Corporation, иранской фирме по восстановлению данных.
3 Информация о столкновении VirusBlokAda с вредоносным ПО взята из интервью с Сергеем Уласеном и Олегом Купреевым, а также из учетной записи, опубликованной "Лабораторией Касперского" в 2011 году, после того как российская антивирусная фирма уволила Уласена из VirusBlokAda. Это интервью “Человек, который нашел Stuxnet — Сергей Уласен в центре внимания” было опубликовано 2 ноября 2011 года на eugene.kaspersky.com/2011/11/02/the-man-who-found-stuxnet-sergey-ulasen-in-the-spotlight.
4 Модуль - это автономный компонент. Оно часто взаимозаменяемо и может использоваться с различными программами.
5 Драйверы - это программные программы, которые используются в качестве интерфейсов между устройством и компьютером, чтобы заставить устройство работать с машиной. Например, требуется драйвер, позволяющий компьютеру взаимодействовать с подключенным к нему принтером или цифровой камерой — для разных операционных систем доступны разные драйверы, так что одно и то же устройство будет работать с любым компьютером. В этом случае драйверы на самом деле были руткитами, предназначенными для установки и сокрытия вредоносных файлов на компьютере.
6 Проблема с перезагрузкой не возникла на других компьютерах, которые, как позже выяснилось, были заражены вредоносным ПО. Поэтому некоторые исследователи подозревают, что проблема могла заключаться в несовместимости одного из драйверов вредоносного ПО и антивирусного программного обеспечения VirusBlokAda. Вредоносная программа использовала драйвер для установки самой себя, и исследователи из Лаборатории Касперского в России подозревали, что когда драйвер внедрил основной файл вредоносной программы в память компьютеров в Иране, это привело к сбою некоторых компьютеров. Позже исследователи из "Лаборатории Касперского" попытались воспроизвести проблему, но получили противоречивые результаты — иногда машина выходила из строя, иногда нет. Ирония заключается в том, что злоумышленники приложили немало усилий для тестирования своего вредоносного ПО на антивирусных сканерах от Kaspersky, Symantec, McAfee и других, именно для того, чтобы убедиться, что их код не будет обнаружен сканерами или аварийными машинами. Но они, по-видимому, не протестировали его против программного обеспечения для сканирования VirusBlokAda. Так что, если сканер VBA был проблемой, это означало, что эта крошечная белорусская фирма уничтожила их не одним способом.
7 Автозапуск - это удобная функция в Windows, которая позволяет программам на флэш-накопителе USB, CD-ROM или DVD автоматически запускаться при установке устройств в компьютер. Однако это известная угроза безопасности, поскольку любая вредоносная программа на устройстве также автоматически запустится.
8 Если автозапуск отключен по соображениям безопасности, то вредоносный код на флэш-накопителе, который использует эту функцию, не сможет запускаться автоматически, а запустится только в том случае, если пользователи специально нажмут на файл, чтобы открыть его.
9 Эксплойт работал против семи версий Windows: Windows 2000, WinXP, Windows 2003, Vista, Windows Server 2008, Windows 7 и Windows Server 2008 R2.
10 В Windows Vista и Windows 7 драйвер, не подписанный доверенным цифровым сертификатом, который распознает Microsoft, будет иметь проблемы с установкой на компьютер. На 32-разрядных компьютерах с Windows, на которых установлена Vista или Windows 7, отобразится предупреждение, сообщающее пользователю, что файл не подписан или не подписан доверенным сертификатом, что вынуждает пользователя принять решение о том, разрешить ли его установку. На 64-разрядных компьютерах с Windows, использующих любую операционную систему, файл, не подписанный доверенным сертификатом, просто не будет установлен вообще. Вредоносная программа VirusBlokAda, обнаруженная только , работала на 32-разрядных компьютерах с Windows.
11 Центры сертификации выдают сертификаты подписи, которые компании используют для подписи своего кода и веб-сайтов. Предполагается, что центры сертификации должны проверять, что организация, запрашивающая сертификат, имеет на это полномочия — например, чтобы помешать кому-либо, кроме Microsoft, получить сертификат подписи кода на имя Microsoft, и гарантировать, что если кто-то подает заявку на сертификат подписи для компании, которую они утверждают, что это их компания, это реальная компания, производящая реальный код. Однако некоторые центры сертификации не проводят должной проверки, и сертификаты иногда выдаются злоумышленникам. Есть также компании, которые за определенную плату будут использовать свой ключ и сертификат для подписи кода для других. Хакеры использовали эти компании в прошлом для подписи своих вредоносных программ.
12 В сентябре 2012 года именно это произошло с Adobe. Софтверный гигант, распространяющий популярные программы Adobe Reader и Flash Player, объявил, что злоумышленники взломали его сервер подписи кода, чтобы подписать два вредоносных файла сертификатом Adobe. Компания Adobe хранила свои секретные ключи подписи в устройстве, называемом аппаратным модулем безопасности, которое должно было помешать злоумышленникам получить доступ к ключам для подписи своих вредоносных файлов. Но они скомпрометировали сервер сборки — сервер, используемый для разработки программного обеспечения, — который имел возможность взаимодействовать с системой подписи кода и заставлять ее подписывать свои файлы.
13 По иронии судьбы, 12 июля 2010 года, в день, когда Уласен обнародовал новости о вредоносном ПО, исследователь финской охранной фирмы F-Secure опубликовал презентацию конференции о цифровых сертификатах, заявив, что на тот момент вредоносное ПО, использующее украденные сертификаты, еще не было обнаружено. Однако он отметил, что это неизбежно произойдет сейчас, когда новые версии Windows с подозрением относятся к неподписанным драйверам, подталкивая хакеров к краже законных сертификатов для подписи своих вредоносных программ. (См. Ярно Нимела, “Оно подписано, следовательно, оно чистое, верно?” представлен на конференции CARO в Хельсинки, Финляндия; доступен по f-secure.com/weblog/archives/Jarno_Niemela_its_signed.pdf.) Действительно, вскоре после того, как VirusBlokAda обнаружила сертификат RealTek, другие хакеры уже пытались использовать ту же тактику. В сентябре 2010 года антивирусные фирмы обнаружили Infostealer. Nimkey, троянский конь, специально разработанный для кражи сертификатов закрытых ключей с компьютеров. В течение следующих двух лет за этим последовал ряд вредоносных программ, подписанных сертификатами, по-видимому, украденными у различных надежных компаний.
14 Уласен связался с Microsoft через общий адрес электронной почты, используемый для его службы безопасности. Но группа реагирования на безопасность Microsoft получает более 100 000 электронных писем в год, поэтому было понятно, что электронное письмо, отправленное на общий почтовый ящик из малоизвестной антивирусной фирмы в Беларуси, затерялось в очереди.
15 Вредоносное ПО, как позже выяснили исследователи, представляло собой комбинацию червя и вируса. Часть червя позволяла ему распространяться автономно, без действий пользователя, но как только он попадал в систему, другие компоненты заражали файлы, подобно вирусу, и требовали действий пользователя для распространения.
16 Уласен опубликовал свою заметку на сайте своей компании по адресу anti-virus.by/en/tempo/shtml и на форуме безопасности Вилдерса в wilderssecurity.com/showthread.php?p=1712146.
17 Кребс, бывший репортер Washington Post, руководит KrebsonSecurity.com блог, посвященный компьютерной безопасности и киберпреступности. Он опубликовал свой пост 15 июля 2010 года на krebsonsecurity.com/2010/07/experts-warn-of-new-windows-shortcut-flaw.
18 Ленни Зельцер, “Упреждая серьезную проблему из-за .Уязвимость LNK—превращение Infocon в желтый”, опубликованный 19 июля 2010 года на isc.sans.edu/diary.html?storyid=9190.
19 Андреас Маркс, глава AV-TEST.org в Германии выступил посредником при внедрении через свои прямые контакты в Microsoft.
20 Рекомендации Microsoft появляются на technet.microsoft.com/en-us/security/advisory/2286198.
21 Большинство антивирусных компаний имеют автоматизированные системы отчетности, которые уведомляют их об обнаружении вредоносного файла на компьютере клиента, если клиент выбрал эту функцию. В большинстве случаев все, что отправляется компании, — это “хэш” файла - криптографическое представление содержимого файла, состоящего из строки букв и цифр, полученных в результате запуска файла с помощью алгоритма — без указания того, кто является жертвой, кроме IP-адреса отправителя. Но в других случаях компании могут получить весь вредоносный файл самостоятельно, если жертва решит отправить его или антивирусная фирма определит по IP-адресу, кто является жертвой, и запросит копию файла.
22 Исследователи предположили, что драйвер, возможно, использовался с новой версией Stuxnet, которую злоумышленники выпустили после настройки кода, чтобы предотвратить его обнаружение антивирусными сигнатурами. Более поздняя версия Stuxnet никогда не обнаруживалась, но смотрите сноска 41 для дальнейшего обсуждения более поздней версии Stuxnet.
23 Смотрите статью Костина Г. Райу и Алекса Гостева “История украденных сертификатов”, опубликованную в SecureView за 2 квартал 2011 года, ежеквартальном информационном бюллетене "Лаборатории Касперского". Ошибки появляются в блоке цифровой подписи на сертификате, где компания предоставляет информацию о себе. В этом случае злоумышленники неправильно ввели URL для JMicron, так что он возвращал ошибку “сервер не найден”, если кто-то пытался посетить веб-сайт. Они также не смогли заполнить несколько полей для названия компании, владения авторскими правами и других данных. В восьми полях вместо информации появились слова “измени меня”.
24 Сертификат RealTek действовал с 15 марта 2007 года по 12 июня 2010 года. Сертификат JMicron был действителен до 26 июля 2012 года, но как только он был отозван центрами сертификации, злоумышленники больше не могли его использовать.
25 Пьер-Марк Бюро, “Двоичные файлы, подписанные Win32 / Stuxnet”, опубликованные 9 августа 2010 года на blog.eset.com/2010/07/19/win32stuxnet-signed-binaries.
26 Болдевин опубликовал свою заметку на wilderssecurity.com/showthread.php?p=1712146.
OceanofPDF.com
ГЛАВА 2
500 КИЛОБАЙТ ТАЙНЫ
За шесть лет, что Лиам О'Мерчу занимался анализом вирусов и червей, он никогда не видел ничего подобного коду, на который он смотрел сейчас. Он использовал методы, которые намного превосходили все, что он когда-либо видел у других вредоносных программ. Это было совсем не то, чего он ожидал, когда сел за свой компьютер в офисе Symantec в Южной Калифорнии и открыл файлы Stuxnet, которые прибыли ночью от его коллег из Европы.
Была пятница, 16 июля, на следующий день после того, как новости о Stuxnet распространились в техническом сообществе, и О'Мерчу был в разгаре того, что, как он думал, будет обычной и поверхностной проверкой кода. Тридцатитрехлетний ирландец был менеджером по операциям группы реагирования на безопасность в офисе Symantec в Калвер-Сити, и в его обязанности входило просматривать новые вредоносные программы, которые поступали, чтобы определить, заслуживают ли они более пристального внимания.
Аналитики в офисе компании в Дублине, Ирландия, получили файлы Stuxnet поздно вечером, но у них было всего пару часов с кодом, прежде чем пришло время передать его команде О'Мерчу в Калифорнии, которая только просыпалась. Группа Symantec по анализу угроз разбросана по нескольким континентам, так что в любое время, когда появляется важная угроза, кто-то где-то бодрствует, чтобы отреагировать на нее. Затем, когда солнце садится в одном офисе и встает в другом, работники в одном часовом поясе передают свои заметки, как борцы в команде тегов, тем, кто находится в следующей зоне.
Не все вредоносные программы получают такое освещение в новостях. Из более чем 1 миллиона вредоносных файлов, которые Symantec и другие охранные фирмы обнаруживают каждый месяц, большинство являются копиями известных инструментов, которые хакеры просто настраивают, чтобы изменить свои отпечатки пальцев и попытаться обойти антивирусные сканеры. Эти стандартные угрозы передаются по каналам с помощью алгоритмов, которые просматривают код в поисках сигнатур или поведения, соответствующего известному вредоносному ПО. Код исключается из очереди, и исследователи могут проверять его вручную только в том случае, если алгоритмы находят что-то, с чем они не могут примириться. Вредоносное ПО, содержащее или подозреваемое в том, что оно содержит эксплойт нулевого дня, всегда проверяется вручную, и это единственная причина, по которой Stuxnet попал на стол О'Мурчу.
О'Мерчу - заядлый сноубордист с лирическим акцентом и коротко подстриженными каштановыми волосами, зачесанными вертикально спереди, как у маленького хаф-пайпа. Недавно переведенный в Соединенные Штаты из Дублина, он работал в калифорнийском офисе Symantec всего за два года до того, как Stuxnet нанесла удар, но он работал в компании с 2004 года. Он возглавлял команду высококвалифицированных аналитиков вредоносных программ и инженеров обратного анализа, которые были вовлечены в постоянную борьбу с натиском цифровых угроз, каждая из которых часто была более продвинутой, чем предыдущая. Однако ни одно из них не подготовило его к тому, что он обнаружил в Stuxnet.
О'Мурчу ожидал, что их проверка кода будет просто рутинной, просто чтобы подтвердить наличие эксплойта нулевого дня, который Уласен и Купреев уже обнаружили. Поэтому он передал код младшему инженеру, думая, что это будет хорошей возможностью обучить его в нулевые дни, и сам проверил код только для того, чтобы поддержать своего коллегу и убедиться, что он ничего не пропустил. Но как только он открыл файлы, сразу стало ясно, что с кодом происходит что-то странное.
Основной файл Stuxnet был невероятно большим — 500 килобайт, в отличие от 10-15 КБ, которые они обычно видели. Даже Conficker, чудовищный червь, заразивший более 6 миллионов компьютеров за предыдущие два года, имел размер всего 35 килобайт. Любое вредоносное ПО большего размера, чем это, обычно просто содержало файл изображения, занимающий много места, что объясняло его раздувание, например, поддельную страницу онлайн-банкинга, которая появлялась в браузере зараженных компьютеров, чтобы обманом заставить жертв отказаться от своих банковских учетных данных. Но в Stuxnet не было файла изображения, и никакого постороннего жира тоже. И, когда О'Мерчу начал разбирать файлы на части, он понял, что код также был намного сложнее, чем он или кто-либо другой ранее полагал.
Когда вы видели столько вредоносных программ, сколько есть у O'Murchu, вы можете взглянуть на вирус или троянского коня и сразу понять, что он делает — это регистратор нажатий клавиш, который записывает все, что вводит жертва; это банковский троянец, который крадет учетные данные для входа в онлайн-банкинг. Счета. Также легко увидеть, был ли фрагмент кода небрежно скомпонован или искусно обработан с осторожностью. Stuxnet, очевидно, был последним. Казалось, что это плотный и хорошо организованный набор данных и команд, который содержал огромное количество функциональных возможностей. Что это были за функции, все еще оставалось загадкой, но интерес О'Мерчу был немедленно вызван.
ПЕРВОЕ СТОЛКНОВЕНИЕ О'Мерчу с вредоносным ПО произошло в 1996 году, когда он изучал информатику в Университетском колледже Дублина, и сокурсник запустил самодельный вирус, который заразил все машины в школьных компьютерных классах. В Мартовские иды вирус захватил контроль над терминалами и заблокировал всех. Пользователи могли войти в систему только после ответа на серию из десяти вопросов, которые появлялись на экранах. Большинство были раздражены прерыванием, но О'Мерчу просто хотел заполучить копию вируса, чтобы разобрать его. Деконструировать вещи было частью его ДНК. Выросший в сельской местности за пределами маленького городка Ати в графстве Килдэр, он был из тех детей, которых меньше интересовали игры с игрушечными машинками, чем их разборка, чтобы посмотреть, как они работают.
О'Мурчу не собирался становиться борцом с вирусами. Он начал свою карьеру в колледже, послушно посещая курсы физики и химии для получения ученой степени, которую он планировал получить, но затем записался на курс информатики и стал одержимым. Он быстро сменил химическую лабораторию на компьютерную. Хакерство было растущей проблемой в университете, но О'Мерчу никогда не рассматривал компьютерную безопасность в качестве возможного пути карьеры, пока злоумышленники не начали взламывать серверы, принадлежащие школьному компьютерному клубу, и команде студентов было поручено исправить серверы, чтобы выгнать их. О'Мерчу был очарован игрой в кошки-мышки, которая последовала за этим, поскольку он наблюдал, как злоумышленники неоднократно переигрывали защитников, чтобы вернуться.
Этот урок преодоления цифровых барьеров пригодился ему, когда он с группой друзей поехал в Соединенные Штаты после окончания колледжа и ненадолго получил работу по тестированию интернет-киосков для стартапа в Сан-Диего. Их наняли, чтобы посмотреть, смогут ли они обойти платную сеть киоска, чтобы украсть доступ в Интернет. Но вместо того, чтобы получить обычных пользователей компьютеров, как компания думала, что получит, она непреднамеренно наняла команду опытных хакеров. После того, как на складе, где собирались системы, было установлено полдюжины киосков, О'Мерчу и его друзьям было приказано заняться ими. Предполагалось, что они будут тестировать систему всего две недели, прежде чем компания планирует отправить киоски клиентам, но О'Мерчу и его друзья продолжали находить новые способы взлома платного доступа. Прошло два месяца, а они все еще находили дыры, компания отменила тестирование и просто отправила киоски.
О'Мерчу провел следующие пару лет, путешествуя по миру и катаясь на сноуборде со смутным желанием заняться безопасностью, но без какого-либо плана для этого. Затем, в 2002 году, он получил работу в компании Brightmail по борьбе со спамом в Дублине. Он воспользовался им только для того, чтобы заработать денег на свои путешествия, но когда Symantec купила фирму в 2004 году, он увидел в этом шанс сделать рывок в сфере безопасности. Во время экскурсии по офису Symantec в Дублине, проведенной для сотрудников Brightmail, О'Мерчу едва мог сдержать свое нетерпение, когда ему показали различные отделы. Все, что он хотел увидеть, это исследовательскую группу по вирусам, к которой он надеялся присоединиться. Но когда он, наконец, встретил Эрика Чиена, американца, который руководил командой, его мечта о приеме на работу была разрушена. О'Мерчу думал, что у Symantec есть сотни аналитиков, размещенных по всему миру, и поэтому будет легко получить работу. Но Чиен сказал ему, что в команде работает всего полдюжины человек, и все они работали годами. “На самом деле никто не уходит”, - сказал Чиен. “Каждый любит свою работу”.
О'Мурчу не испугался. Он самостоятельно освоил инструменты, которые аналитики использовали для расшифровки вредоносного кода и написания подписей, и когда несколько месяцев спустя на сцену вырвался взрыв шпионского и рекламного ПО, он был готов, когда Symantec понадобилось расширить свою команду. Следующие четыре года он работал в офисе Symantec в Дублине, где компания по-прежнему поддерживает свою крупнейшую исследовательскую группу, до перевода в Калвер-Сити в 2008 году.
На протяжении многих лет О'Мерчу и команда Symantec работали над рядом громких и сложных угроз. Но ни один из них не был таким увлекательным или сложным, каким оказался Stuxnet.
КОГДА О'Мурчу ИЗУЧИЛ основной файл Stuxnet, он сразу же наткнулся на несколько уровней шифрования, маскирующих многие его части и внутреннее ядро. К счастью, первый слой был простым “упаковщиком”, который легко взломать.
Упаковщики - это цифровые инструменты, которые сжимают и искажают код, чтобы антивирусным системам было немного сложнее обнаружить сигнатуры внутри, а судебным экспертам - быстро определить, что делает код. Вредоносное ПО, запускаемое через упаковщик, при каждой упаковке изменяется немного по-разному на его поверхности, поэтому один и тот же код, запускаемый через упаковщик тысячу раз, создаст тысячу разных версий кода, хотя под слоем упаковщика все они будут одинаковыми по своей сути. Антивирусные системы могут определить, когда был запущен вредоносный файл известный упаковщик, который затем может распаковывать его на лету, чтобы искать подписи под ним. Чтобы помешать этому, умные злоумышленники разрабатывают пользовательские упаковщики, которые нелегко распознать или удалить. Но создатели Stuxnet не потрудились сделать это. Вместо этого они использовали готовое упаковочное устройство под названием UPX — сокращение от “Ultimate Packer для исполняемых файлов”, — которое было легко идентифицировать и устранить. Учитывая сложный характер остальной части угрозы — эксплойта нулевого дня и украденных цифровых сертификатов — это казалось странным выбором для создателей Stuxnet. Итак, О'Мерчу предположил, что их основной причиной использования упаковщика, должно быть, было простое сжатие файлов и уменьшение площади Stuxnet. После распаковки размер основного модуля увеличился до 1,18 мегабайта.
Теперь, когда упаковщик был снят, О'Мерчу смог легко определить струны Siemens, которые видел Фрэнк Болдевин. Но что более важно, он также обнаружил зашифрованный блок кода, который оказался основным источником Stuxnet — большим .Файл DLL (библиотека динамических ссылок), который содержал около трех десятков других .DLL и компонентов внутри, все они были завернуты в слои шифрования, как русские матрешки. Он также обнаружил массивный конфигурационный файл, содержащий меню из более чем четырехсот настроек, которые злоумышленники могли настроить, чтобы изменить все от URL-адреса командно-контрольных серверов, с которыми Stuxnet связался, до количества машин, которые Stuxnet заразит через USB-накопитель, прежде чем USB-эксплойт отключится.1 Любопытно, что О'Мерчу также обнаружил в файле дату прекращения заражения — 24 июня 2012 года. Каждый раз, когда Stuxnet сталкивался с новой машиной, он проверял календарь компьютера, прошла ли июньская дата. Если бы это было так, Stuxnet остановил бы и не заразил его. Любая полезная нагрузка, уже установленная на других машинах, будет продолжать работать, но Stuxnet не заразит новые машины. Дата остановки была установлена на три года после того, как Stuxnet заразил свои первые машины в Иране, и предположительно была датой, к которой злоумышленники рассчитывали достичь своей цели.2
Однако больше всего О'Мерчу бросился в глаза сложный способ, которым Stuxnet скрывал свои файлы на зараженных машинах и перехватывал обычные функции для выполнения своих гнусных дел. О'Мерчу потребовался почти день, чтобы проработать детали, и когда он наконец это сделал, он был поражен.
Обычно код для выполнения обычных задач на компьютере с Windows, таких как открытие и чтение файла или сохранение его содержимого на диск, хранится в .DLL в операционной системе. Когда операционной системе или другому приложению необходимо выполнить одну из этих задач, они вызывают соответствующий код из .DLL — как посетитель библиотеки, просматривающий книгу — и запускает ее в памяти машины. Обычные хакеры попытались бы сохранить код для своих вредоносных действий в Windows.Библиотеки DLL тоже есть, но антивирусные сканеры могут обнаружить код в библиотеке, которого там быть не должно, поэтому Stuxnet поместил свой вредоносный код в память компьютера, где антивирусные программы с меньшей вероятностью его обнаружат. Само по себе это не было чем-то примечательным, поскольку многие умные хакеры хранили свой вредоносный код в памяти. Но способ, которым Stuxnet получил свой код для запуска, был.
Обычно вредоносному коду, который скрывается в памяти, все равно нужно будет попросить систему загрузить дополнительный код из файлов, которые она хранит на диске компьютера. Но антивирусные системы также заметят это поведение, поэтому Stuxnet сделал это лучше. Stuxnet хранил весь код, необходимый для работы внутри себя, в виде виртуальных файлов со специально созданными именами. Обычно это не сработает, потому что, когда Stuxnet попытается вызвать этот код, операционная система не распознает имена или будет искать файлы со странными именами на диске и не сможет их найти. Но Stuxnet “подключил” или перепрограммировал часть Windows API - интерфейса между операционной системой и программами, которые выполняются поверх нее, — так что в любое время, когда он вызывал эти файлы со странными именами, операционная система просто переходила к Stuxnet, находящемуся в памяти, чтобы получить код вместо этого. Если антивирусное ядро с подозрением относилось к файлам в памяти и пыталось их проверить, Stuxnet также был готов к этому. Поскольку он контролировал части Windows API, отвечающие за отображение атрибутов файлов, он просто обманул сканер, заставив его думать, что файлы пусты, по сути говоря, “Здесь нечего смотреть, двигайтесь дальше”.3
Но это был не конец. Обычная вредоносная программа выполняет свой код простым способом, просто вызывая код и запуская его. Но для Stuxnet это было слишком просто. Вместо этого Stuxnet был построен как машина Руба Голдберга, так что вместо прямого вызова и выполнения своего кода он поместил код в другой блок кода, который уже выполнялся в процессе на машине, затем взял код, который выполнялся в этом процессе, и вставил его в блок кода, выполняемый в другом процессе, чтобы еще больше скрыть его.
О'Мерчу был поражен объемом работы, которую злоумышленники вложили в свое ограбление. Даже самые сложные угрозы, с которыми он сталкивался за последние годы, не доходили до такой степени. Среднестатистический автор вредоносных программ сделал лишь минимум из того, что ему нужно было сделать, чтобы его атака сработала и избежать обнаружения; мало что можно было получить, вкладывая много времени в код, который был предназначен только для быстрого взлома паролей или других данных. Даже продвинутые инструменты шпионажа, которые, казалось, поступали из Китая, не беспокоили тех трюков, которые он видел в Stuxnet. Красные флажки появлялись по всему коду, а О'Мерчу изучил только первые 5 КБ из 1 МБ угрозы.
Было ясно, что это не стандартная атака, и ее нужно было изучить более внимательно. Но размер и сложность кода означали, что потребуется команда людей, чтобы перепроектировать и расшифровать его. Итак, в голове О'Мерчу возник вопрос: должны ли они вообще беспокоиться об этом? Никто не обвинил бы Symantec, если бы исследователи отказались от кода и перешли к другим вещам. В конце концов, основной задачей любой антивирусной фирмы было остановить заражение до того, как оно началось, или избавить зараженные системы от вредоносного ПО, которое уже было на них. То, что вредоносный код делал с компьютерами, как только оказывался на них, было вторичным.
Но даже если их основная работа остановилась в момент обнаружения, любой клиент, зараженный Stuxnet, все равно захочет знать, что вредоносное ПО сделало с их системой, даже если Symantec уже обнаружила и удалила свои вредоносные файлы. Были ли украдены учетные данные или важные документы? Изменены или удалены важные данные? О'Мурчу посчитал своим долгом выяснить это.
Но это была не единственная причина, по которой он хотел продолжить копаться в коде. Правда заключалась в том, что Stuxnet понравился ему, потому что это был огромный выброс адреналина от головоломки — вирус, слишком сложный, чтобы быть просто инструментом для шпионажа, и слишком изощренный, чтобы быть работой простых киберпреступников. Ему просто нужно было это выяснить.
ПО МЕРЕ приближения КОНЦА этого первого дня О'Мурчу напечатал свои заметки с описанием того, что он обнаружил на данный момент, и отправил их команде Symantec в Токио, сожалея, что у него не было больше времени, чтобы провести с кодом.
Часть выходных токийская команда работала над составлением карт компонентов Stuxnet и высокоуровневым анализом кода, чтобы каждый мог разобраться, с чем он имеет дело. Вернувшись в Калифорнию, где О'Мерчу жил со своей британской подругой недалеко от пляжа в Марина-дель-Рей, он попытался выбросить код из головы, но не смог. Воспоминания о сложном способе взлома системы вторглись в его разум, пока он не начал сомневаться, был ли он прав в том, что видел. Чтобы заглушить свои сомнения, он вернулся в офис, чтобы еще раз просмотреть код, пока не убедится, что он был правильным.
К тому времени, когда наступило утро понедельника, ему не терпелось добраться до офиса, чтобы встретиться со своим коллегой Эриком Чиеном и сообщить о том, что он обнаружил. Как и О'Мерчу, Чиен перевелся из дублинского офиса Symantec в Калвер-Сити и теперь был техническим директором группы реагирования на безопасность компании. Чиен решил, что им следует позвонить Николасу Фаллиеру, молодому старшему инженеру-программисту и аналитику в парижском офисе Symantec, который был мастером по расшифровке сложного кода. Они втроем разработали план по реализации проекта.
Stuxnet был таким большим, с таким количеством различных частей, но очевидным местом для начала были серверы командования и контроля. Итак, пока Фаллиер знакомился с частями Stuxnet, которые О'Мерчу уже видел, Чиен и О'Мерчу сосредоточились на серверах.
Каждый раз, когда Stuxnet заражал систему, он “звонил домой” на один из двух интернет-доменов, выдавая себя за футбольного фаната sites-mypremierfutbol.com и todaysfutbol.com . Доменные имена, зарегистрированные кем-то, кто использовал поддельные имена и мошеннические кредитные карты, указывали на серверы в Дании и Малайзии, которые служили командными пунктами для атаки. Каждый раз, когда Stuxnet заражал компьютер, он связывался с серверами, чтобы объявить о своем захвате и сообщить разведданные о последней жертве. Сообщение было зашифровано, чтобы никто не смог случайно прочитать его, но шифрование, которое использовали злоумышленники, было на удивление слабым и его легко взломать. Как только Чиен и О'Мурчу разблокировали его, они смогли увидеть, что Stuxnet сообщает злоумышленникам имена компьютеров и доменов машины, а также внутренний IP-адрес, версию Windows, на которой она была запущена, и установлено ли на ней целевое программное обеспечение Siemens.4
Предположительно, каждая часть данных помогла злоумышленникам определить, приближается ли Stuxnet к своей цели. Это было важно, потому что они, по сути, летели вслепую в своей атаке. После запуска самораспространяющийся червь, подобный Stuxnet, живет своей собственной жизнью, и злоумышленники не имели бы реального контроля над тем, куда перемещается их вредоносный код. Данные, возвращающиеся на серверы, помогли бы им в некоторой степени отследить его путь, когда он полз по сетям в поисках своей добычи.
Но из всей информации, которую Stuxnet сообщал своим хозяевам, данные Siemens были самыми важными, потому что, как вскоре узнают исследователи, если Stuxnet оказывался в системе, на которой не было установлено программное обеспечение Siemens, он просто отключался. Он по-прежнему искал другие машины для заражения, но не запускал свою полезную нагрузку ни на одной машине, на которой не было установлено программное обеспечение Siemens. Любая система без программного обеспечения была просто средством для достижения цели Stuxnet.5
О'Мурчу связался с поставщиками услуг DNS (domain name system) для двух доменов командования и контроля и попросил их остановить трафик, идущий злоумышленникам, и перенаправить его на sinkhole — компьютер, предназначенный для приема враждебного трафика, — который вместо этого контролировался Symantec. Поставщики DNS - это регулировщики интернет-трафика, которые следят за тем, чтобы электронная почта и браузеры доходили до адресатов, так что в любое время кто-то вводит “nytimes.com ” зайдя в свой браузер или перейдя по ссылке на веб-сайт, они попадут на нужный IP-адрес.6 Перенаправив трафик в свою воронку, исследователи теперь могли собирать данные в режиме реального времени, которые Stuxnet, как хороший солдат, должен был сообщать атакующим. К утру вторника, 20 июля, поток трафика приближался к их провалу.
По мере поступления звонков с каждой зараженной машины О'Мурчу и Чиен сопоставляли домены и страны, из которых поступали сообщения, и изучали данные, отправленные Stuxnet, в поисках общих характеристик, включая количество жертв, использующих программное обеспечение Siemens. К концу недели более 38 000 зараженных машин из десятков стран связались с воронкой, и со скоростью 9 000 новых случаев заражения в день это число быстро росло. В конечном итоге они будут отслеживать более 100 000 случаев заражения в более чем 100 странах.7 Stuxnet продолжал распространяться, несмотря на подписи, распространяемые антивирусными фирмами, чтобы остановить его, указывающие на то, что у многих жертв не было установлено новейшее антивирусное программное обеспечение. Среди зараженных машин, обращающихся к их провалу, было случайное попадание от антивирусной фирмы — признак того, что исследователи из некоторых конкурирующих фирм все еще запускали Stuxnet на своих испытательных стендах.
Когда О'Мурчу и Чиен нанесли на карту географическое расположение каждой инфекции, начала вырисовываться необычная картина. Из первоначальных 38 000 машин, которые они отслеживали, более 22 000 базировались в Иране. Индонезия была на втором месте с примерно 6700 машинами, за ней следовала Индия с 3700 заражениями. В Соединенных Штатах было зарегистрировано менее 400 случаев заражения, а в других странах показатели оттуда резко упали. Только на небольшом количестве всех зараженных машин было установлено программное обеспечение Siemens, и большинство из них также находились в Иране — 217, в отличие от всего лишь 16 машин в Соединенных Штатах.8
Цифры заражения сильно отличались от предыдущих моделей вспышек во всем мире, в которых Иран никогда не занимал высоких мест, если вообще занимал, в статистике заражения. Даже во время вспышек, которые начались на Ближнем Востоке или в Центральной Азии, Иран никогда не занимал высоких позиций в чартах. Казалось очевидным, что они смотрели на целенаправленную атаку, нацеленную на Исламскую Республику. Но если злоумышленников в первую очередь интересовали станки Siemens, установленные в Иране, то Stuxnet распространился далеко за пределы своей цели. И почему оно распространилось дальше в Индии и Индонезии, чем в Соединенных Штатах и Европе? Что общего у этих трех стран, из-за чего инфекции сконцентрировались там? Учитывая время и деньги, которые, очевидно, были потрачены на создание кода, они знали, что перед ними не кто-то, кто хотел украсть фармацевтические рецепты или секреты производства автомобильного завода, как предположил Болдевин. Злоумышленники должны были стремиться украсть разведданные о критически важных системах, возможно, имеющих стратегическое политическое значение для региона. Программное обеспечение Siemens, которое искал Stuxnet, использовалось не только на промышленных предприятиях, но и в системах критической инфраструктуры. Чиен быстро поискал в Google по Ирану и Индии, чтобы узнать, что общего у этих двух стран, и нашел недавние истории о трубопроводе природного газа, который строился для соединения двух стран. Так называемый трубопровод мира включал в себя трубопровод протяженностью 1700 миль, идущий от иранского газового месторождения Южный Парс на юге страны через Пакистан в Индию, план, против которого Соединенные Штаты решительно выступали. За эти годы проект пережил ряд взлетов и падений из-за меняющихся геополитических ветров и проблем с финансированием, из-за чего Индия вышла из него в 2009 году под давлением Соединенных Штатов. Но в мае 2010 года, всего за два месяца до открытия Stuxnet, Индия присоединилась к проекту. Также в этом месяце Иран должен был начать проектирование и строительство последней части трубопровода, которая будет проложена внутри его границ.
Но было и кое-что еще, доминирующее в заголовках об Иране — его быстро расширяющаяся ядерная программа. Иран собирался открыть ядерный реактор в Бушере, на юге страны, который был источником большой напряженности в отношениях с Израилем и Западом в течение ряда лет. Но еще более спорным, чем реактор, был завод по обогащению урана в местечке под названием Натанз, который был построен для снабжения реактора ядерным топливом. ООН проголосовала за санкции против Ирана из-за завода, и также были разговоры о возможном авиаударе по заводу.
Начала вырисовываться тревожная геополитическая картина. Сложный характер вредоносного кода, а также украденные сертификаты и место Ирана в центре вспышки наводили на мысль, что Stuxnet может быть результатом тайной правительственной шпионской миссии, хотя и явно вышедшей из—под контроля. Учитывая, что целью, по-видимому, было что-то в Иране, список вероятных подозреваемых был небольшим — Израиль, Китай, Россия или Соединенные Штаты.