Хабрахабр

[Перевод] Самая сложная программа

От переводчика: я нашел на Quora вопрос: Какую программу или код можно назвать самыми сложными из когда-либо написанных? Ответ одного из учасников был настолько хорош, что вполне тянет на статью.

Пристегни ремни.

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

Червь был написан, судя по всему, между 2005 и 2010 годами. Это программа – компьютерный червь. Кто-то мог найти диск, лежащий на земле, получить его по почте и заинтересоваться его содержанием. Поскольку этот червь является таким сложным, я могу дать лишь общее описание того, что он делает.
Сначала червь появляется на USB диске. Существовало как минимум три способа, с помощью которых он мог себя запустить. Как только диск вставлялся в компьютер c Windows PC, без ведома пользователя, червь автоматически запускал себя и копировал на этот компьютер. Как минимум два из этих методов запуска были абсолютно новыми и оба использовали две независимых, секретных ошибки в Windows о которых никто не знал до того момента, как появился этот червь. Если не работал один, он пробовал другой.

Его не сильно беспокоит установленное антивирусное ПО – он может игнорировать большинство таких программ. Как только червь запускается на компьютере, он пытается получить права администратора. Как и ранее, до появления этого червя никто не знал об этих скрытых уязвимостях. Затем, в зависимости от того, на какой версии Windows он работает, червь попробует один из двух ранее неизвестных методов получения прав администратора на компьютере.

Он прячется так хорошо, что даже если будете искать на диске в то место, где этот червь должен быть, вы ничего не увидите. После этого червь способен скрыть следы своего присутствия в глубинах ОС, так что ни одна антивирусная программа не сможет его обнаружить. Этот червь прятался так хорошо, что ему удалось перемещаться по Интернету в течение года и ни одна компания, связанная с безопасностью не признала даже факта его существования.

Если может, он пытается посетить сайты www.mypremierfutbol.com или www.todaysfutbol.com. Затем червь проверяет, может ли он выйти в Интернет. Он открывает зашифрованный канал связи и сообщает этим серверам, что новый компьютер успешно захвачен. В то время эти серверы были Малайзии и Дании. Зачем червь автоматически обновляет себя до самой новой версии.

Он делает это с помощью установки аккуратно разработанного ложного драйвера диска. После этого червь копирует себя на любое другое USB устройство, которое вам пришлось вставить. Это означает, что авторы червя каким-то образом смогли пробиться в наиболее защищённое место крупной тайваньской компании и украсть самый секретный ключ компании так, что сама компания об этом не узнала. Этот драйвер содержал цифровую подпись Realtek.

И снова, авторы смогли прорваться в самое защищённое место в этой компании и украсть самый секретный ключ, которым владеет эта компания так, что они ничего об этом не узнали. Позже, авторы этого драйвера начали подписывать его секретным ключом от JMicron, другой крупной тайваньской компании.

И мы ещё даже не начали. Червь, о котором мы говорим очень сложный.

Один баг связан с сетевыми принтерами, а другой – с сетевыми файлами. После этого червь начинает использовать два недавно обнаруженных бага в Windows. Червь использует эти баги, чтобы установить себя по локальной сети на все другие компьютеры в офисе.

Как только он находит его, он (как вы уже догадались) использует ещё один ранее неизвестный баг, чтобы скопировать себя программируемую логику промышленного контроллера. Затем червь начинает искать конкретное ПО, разработанное Siemens для автоматизации крупных промышленных машин. Никакое количество замен или «дезинфекции» компьютера не поможет избавиться от него. Как только червь поселился в этом компьютере, он остаётся там навсегда.

Одна из этих компаний в Иране, а другая в Финляндии. Червь ищет прикреплённые промышленные электрические моторы от двух конкретных компаний. Они используются для управления промышленными центрифугами. Моторы, которые он ищет, называются «частотно-регулируемые приводы». С помощью центрифуг можно очистить множество химических элементов.

Например, уран.

Он может их всех отключить. Теперь, поскольку червь получил полный контроль над центрифугами, он может сделать с ними всё, что захочет. Он может немедленно все их уничтожить – достаточно крутить их на максимальной скорости до тех пор, пока они не разлетятся как бомбы, убив всех, кто по случайности оказался рядом.

Это сложный червь. Но нет. И у червя есть другие планы.

Как только он захватил все центрифуга в твоем заводе… червь просто засыпает.

Или недели. Проходят дни. Или секунды.

Он случайно выбирает несколько центрифуг, когда они очищают уран. Когда червь решает, что время пришло, то быстро просыпается. Червь блокирует их так, что если кто-то заметит, что что-то странное, он не сможет отключить эти центрифуги.

Совсем не намного. И затем, потихоньку, червь начинает крутить эти центрифуги… немножко неправильно. Или самую малость слишком медленно. Просто, знаете, чуть-чуть слишком быстро. Лишь немного за пределами безопасных параметров.

Этот газ называется UF6. В то же время, он увеличивает давление газа в этих центрифугах. Червь изменяет давление этого газа чуть-чуть за пределами безопасных значений. Очень вредная штука. Ровно для того, чтобы при попадании газа в центрифуги во время работы появлялся небольшой шанс того, что он превратится в камни.

И камни им тоже не нравятся. Центрифуги не любят работать слишком быстро или слишком медленно.

И он гениален. Но у червя остался последний трюк.

В дополнение ко всем своим действиям, червь начинал проигрывать запись данных за последние 21 секунду работы, которые он записал, когда центрифуги работали нормально.
Червь проигрывал запись снова и снова, в цикле.

Но это были только ложные записи, созданные червем. В результате, данные о всех центрифугах для людей выглядели вполне нормальными.

И вроде бы всё работает хорошо. А теперь представьте, что вы ответственны за очистку урана с помощью этого крупного промышленного завода. Может двигатели звучат немного странно, но цифры на компьютере показывают, что моторы центрифуг работают так, как и положено.

В случайном порядке, одна за другой. Затем центрифуги начинают ломаться. Впрочем, в некоторых случаях, они устраивают настоящее представление. Обычно они умирают тихо. Уран должен быть чистым. А производство урана начинает резко падать. Ваш уран не достаточно чистый, чтобы с ним можно было сделать что-то полезное.

Вы бы проверяли всё снова и снова и снова, не понимая в чем проблема. Что бы вы делали, если бы управляли этим заводом по обогащению урана? Вы могли бы при желании поменять все компьютеры в заводе.

И у вас даже не было возможности узнать почему. Но центрифуги бы всё равно ломались.

Вы сходите с ума в попытках выяснить, почему всё работает не так, как планировалось. Со временем, под вашим надзором, около 1000 центрифуг ломаются или отключаются.

Именно это и произошло на самом деле

Червь был разработан только с одной целью: пройти через все известные способы цифровой защиты и уничтожить ядерную программу вашей страны так, чтобы его не поймали.
Создать программу, которая могла бы сделать ОДНУ из этих вещей само по себе маленькое чудо. Вы никогда не будет ожидать, что все эти проблемы были созданы компьютерным червем, самым хитрым и умным компьютерным червем в истории, написанным какой-то невероятно секретной командой с неограниченным количеством денег и времени. Создать программу, которая может делать ВСЁ это и много другое…

… для этого червю Stuxnet пришлось стать самой сложной программой из когда-либо написанных.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть