В конце восьмидесятых, когда весь Арпанет, предок Интернета, состоял из менее чем семидесяти тысяч компьютеров, червь Морриса застопорил работу около шести тысяч, но и эти несколько процентов привели к сотне миллионов долларов убытков.
Спустя тридцать с лишним лет червь Морриса 2.0 заражает сотни тысяч узлов всемирной Сети, нанеся ущерб миллионам пользователей компьютеров и смартфонов.
Кто стоит за реинкарнацией программы «великого червя»?
Часы на запястье настырно вибрировали, вынудив бросить взгляд на циферблат. С работы. Просто так не позвонили бы, все уже привыкли переписываться в чатах, а звонок, да ещё и в выходной день, стал считаться вторжением в личную жизнь.
– Ми-иша, притормози! – крикнул я сыну. Сам остановился, встал на одну ногу, отпустил руль велосипеда и ответил на звонок.
– Атака уровня 3 или даже 2, – раздался в наушнике голос асссистента.
– Открываю ленту, – я быстренько вытащил из плотно прилегающего кармашка велосипедных шорт смартфон и принялся пролистывать заголовки сообщений. Если верить им, началась большая заваруха. Давно уже не было таких дерзких масштабных нападений на Интернет!
– Собирай всех в офисе! Буду примерно через час… Да, и подключи группу быстрого реагирования на телеконф минут через десять.
Я дал отбой и посмотрел на сына. Ожидал увидеть нетерпение в его глазах, однако он спокойно наблюдал за мной, сложив руки на руле.
– Вызову такси, вернёшься к маме. Извини, дружище, сам слышал – срочное дело.
– Пап, мама не в Москве, так что я у тебя до вечера воскресенья.
– Тогда держи мои ключи, посидишь дома один․ – Я потянулся было к другому кармашку, но сын отмахнулся.
– А может, возьмёшь к себе на работу? Помнишь, ты всё обещал.
Я задумался, а действительно, почему бы и нет. Миша же принял паузу за мой отказ.
–Ты сам рассказывал мне, как играл с перфокартами у своего отца на работе, про машинные залы с магнитными лентами, телетайпами…
– Ну ты вспомнил нафталиновые времена! Сейчас везде обычные компьютеры и принтеры, какие у каждого дома…
– А ещё ты описывал, как играл в пакмена на первых персоналках…
– Миш, там всё горит, – перебил я, – критична каждая минута, все антивирусники уже кинулись в борьбу, мне нужно спешить.
– Пап, могу я посмотреть, как ты работаешь начальником?! – И он сморщил нос. Когда Мишка был маленьким, он не только смешно морщил нос, но и начинал часто моргать, и, глядя на эту мультяшную мордочку, невозможно было ему отказать. А сейчас… уже не Мишка, а Михаил. Вымахал пацан! Столько лет прошло после развода, а меня всё не покидает чувство вины, что уделяю ему мало времени.
– Так и быть, увидишь отца в боевых условиях! Хотя… что там боевого, всё будет тихо-мирно. Это пожарные и скорая спасают планету с мигалками и движухой, а мы – без ажиотажа.
Вдвоём мы легко установили велосипеды в крепления на крыше машины. Только я сел за руль, как на приборной панели отобразился вызов на телеконференцию. Голос дежурного менеджера заполнил салон:
– Ребята, пока вы все мчитесь сюда, введу в курс дела. Атаковано несколько сот тысяч узлов Сети, то есть речь уже идёт о миллионах заражённых компьютеров.
– В чём вредоносность этого вируса? – спросил один из аналитиков.
– Нет инфы. Известно, что это не вирус, а червь. Американцы установили, что он попал в Сеть из Массачусетского университета, но туда его подбросили либо китайцы, либо мы, русские.
– Они подкрепили чем-то свои подозрения? – поинтересовалась ведущая тестировщица.
– Пока нет.
– С какой скоростью распространяется?
– С момента первого сообщения о его появлении прошло три с небольшим часа. И он цепляет не только компьютеры, но и смартфоны с планшетами.
– Отслеживайте выставленные наружу компьютеры, начинаем охоту! – На самом деле всем было понятно, что делать, но такое эмоциональное напутствие от меня было нужно, чтобы показать, как нам важно первыми поймать в ловушку нового нарушителя спокойствия, первыми декодировать его и первыми на рынке выдать антивирус к нему.
В здание фирмы мы с сыном вошли в велосипедных шортах и майках. Охранник посмотрел на постороннего со мной, но не стал даже спрашивать, увидев, что я положил руку на плечо подростка.
В другое время я бы показал сыну размах нашей фирмы, проведя экскурсию по учебному центру, фитнес-зоне, столовой и даже игровой комнате с приставками и шлемами виртуальной реальности. Потом бы повёл на производственные этажи, где в модных открытых пространствах, креативно оформленных лучшими дизайнерами, трудились наши аналитики, эксперты, программисты, тестировщики, инженеры и все, кто обеспечивал исследования, разработку, выпуск, сопровождение и техподдержку нашего продукта: антивирусного программного обеспечения.
Но сегодня в выходной наши шаги гулко отдавались в пустоте общего холла. Мы миновали стойку приёмной, смотревшуюся сиротливо без приветливых улыбок секретарей. Вместо них услужливость проявил лифт, обычно находящийся в постоянном движении: с нажатием кнопки сразу же раздвинул свои двери. Шумопоглащающий ковролин на втором этаже в такой тишине не оправдывал своё название.
Оживлённо было только в большой стеклянной переговорке и у рабочих столов около неё. Вразнобой одетые сотрудники эмоционально обсуждали новости, один из них не без восторга сообщил мне:
– Оба наших терминала, подключённых к нью-йорскому сегменту сети, заразились!
– Отловили, как червь проник?
– Отрабатываем версию, которую обсуждают на форумах, что маскируется под обычный скрипт веб-страницы. Этот гад воспользовался мало кому известной брешью в популярных веб-браузерах. Помнишь, мы ещё обсуждали пару недель тому назад?
– Да, помню, но ведь все производители браузеров сразу выпустили заплатки?
– Ну ты знаешь, – улыбнулся мне один из программистов, – они-то выкатили, но пока сисадмины и безопасники корпоратов одобрят исправления…
– Знаю-знаю. – А ещё я представил армию домашних компьютеров, на которых беспечные пользователи редко обновляют софт, и посетовал в голос: – Кто-то вовремя подсуетился, узнав про уязвимость защиты, воспользовался люком.
– Люк-лазейка, – Миша выдал фразу как скороговорку, – Когда-то ты мне объяснял «на пальцах», что вредоносный код – это груз, который хакеру надо доставить на компьютер, а компьютер – это крепость. Груз можно подкинуть в телегу, которую стражники знают и спокойно пропускают через открытые ворота. Надо только прикрыть какой-нибудь соломой, чтобы не заметили. Или сделать так, чтобы они сами втащили к себе «троянский конь». Или найти подземный лаз, который строители крепости тайно прорыли.
– Надо же! Ты помнишь! – я был доволен тем, что сын не забыл мои рассказы. – Да, червь забрался через люк, который криворукие программисты забыли закрыть после отладки системы.
– Кто этот молодой человек? – кокетливо спросила незнакомая мне девушка, из новеньких, наверное. Она сидела рядом и прислушивалась к нашему диалогу.
– Сын! – не без гордости сообщил я. Несколько коллег, по большей части прекрасной половины, обернулись и обратили изучающие взгляды на Мишу и на меня, наверняка сравнивая и, уверен, отмечая сходство.
Вообще, если бы не срочное дело, мы бы ещё долго глазели друг на друга, потому что большинство коллег было одето не по-будничному, не все дамы были накрашены или, наоборот, были непривычно причёсаны. Несмотря на отсутствие дресскода, в рабочие дни коллектив придерживался негласных правил, а сегодня…
Но тут прозвучало объявление, и все вернулись к проблеме։
– Эвристический сканер обнаружил, что червь смело обращается к веб-сервисам… не поверите – нашим же. К программным интерфейсам, которые органы обязали нас, антивирусные компании, открыть им, органам, для доступа извне.
– То есть авторы червя либо из нашего брата, переметнувшиеся на тёмную сторону, либо имеют отношение к спецслужбам…
– Зачем червяку стучаться в эти АПИ, там же ничего нет, кроме базы сигнатур? – мыслил вслух разработчик нашего такого интерфейса.
– Может, чтобы самомодифицироваться, если вдруг выявит, что сигнатура его кода уже в базе? – предположил другой разработчик.
– Крутая идея! – похвалили его, – Полиморф, который на лету определяет… Ёшкин кот, это как преследуемому прослушивать эфир полицейского канала.
Мозговой штурм продолжался. Я вдруг поймал себя на том, что смотрю на Мишу. Он как в кинотеатре, открыв рот, следил за происходящим. Пусть и не было в нашем офисе пультов управления с многочисленными моргающими разноцветными лампочками, которые завораживали меня, когда школьником пропадал у отца в вычислительном центре, зато я погрузил своего сына в остросюжетный фильм. Вообще, глядя на то, как прозаично действуют наши ребята, я был уверен, что Мише будет скучно с нами.
– Пока непонятно, каким образом червь внедрил свой код в операционку. – Руководитель отдела анализа угроз тотчас же отчитался о превентивных мерах: – Мы подсунули в ту же подсетку виртуальную машину с эмулятором, чтобы в песочнице проследить за работой его кода.
– Ещё удивляет, что он не оставляет следов на диске, пока что замечен только в оперпамяти.
– Не перегружайте машины, чтобы не потерять его, – на всякий предупредил я, хотя был уверен, что ребята сообразят сами.
– Так и делаем, запускаем поведенческий анализ в заражённой среде.
Я решил не мешать команде, взял сына под локоть и повёл из «стекляшки» на кухню.
– Секретарей сегодня нет, надо бы самим позаботиться о кофе с плюшками, – объяснил я Мише, – а позже закажем пиццу на всех. Наш брат, программист, без пиццы и кофе не соображает.
Мы облазили с ним все ящики офисной кухни, набрали коробок с печеньями и батончиками, вернулись в комнату и разложили трофеи на столе.
К тому времени сисадмин принёс запрошенный мной временный ноутбук. Свой-то я забрал на выходные домой. С выданным устройством я занял место за общим столом. Как бы я ни считал, что продолжаю быть экспертом, но годы на руководящих позициях вымывают знания и умения, остаются только опыт и понимание ситуации в целом. На данном этапе я ничем не мог помочь команде, поэтому принялся как рядовой системный аналитик проглядывать декомпиляцию бинарников.
– А что ты сейчас делаешь? – спросил меня Миша. Первым порывом было сказать ему «погоди, потом», но я сдержался.
– Ребята сделали дамп памяти. Это как бы слепок сняли или снимок сделали…
– Я знаю это слово, пап, мы проходим информатику в школе.
– Ещё один экземпляр червя нам передал сингапурский партнёр, поймал в капкан виртуальной машины, так что мы теперь смело можем экспериментировать с заражёнными виртуалками. В этом смысле крупным компаниям легче, у них огромная клиентская и партнёрская сеть… Шут с ними, зато мы проворней и нам не в лом перебрать дамп байт за байтом, чтобы отловить и тело червя – его код, и его отростки – данные.
– Вы глазками будете всё смотреть? – удивился сын.
– Нет, конечно, есть утилиты для сверки памяти с эталонными образцами, чтобы увидеть разницу до вторжения червя и после.
– А ты сам что делаешь?
– Проглядываю декомпилированный, то есть приблизительно восстановленый, код червя, пытаюсь в меру своего разумения понять алгоритм его действий.
Я оглянулся, вдруг наш разговор отвлекал ребят, но в штабе и без нас стоял гомон. То и дело возникали очаги обсуждений у одних или других, постоянно кто-то звонил специалистам, которые не смогли приехать и подключились удалённо.
Разработчик в майке с надписью «In code we trust» («Мы верим в код»), пристроившийся рядом со мной, хрустел вафлями. Доев очередную, он выдал характеристику:
– Прикинь, скромный экземплярчик попался, червь не тронул ни один файл на диске. Да и в памяти не особо шуршит.
– Думаешь, червь безобидный? – спросил я.
– Не берусь утверждать, – сразу же стушевался любитель вафель, – пока что могу предположить, что разработчиком был кто-то из старой гвардии, потому что исходный код написан на чистом ассемблере, а не на каком-нибудь языке типа Джавы или Си++.
– Папа писал на ассембелере, – хвастливо заметил Миша.
– Респект! Сейчас таких профи осталось мало, – отозвался парень, дожевал кусок и, отряхнув руки о штаны, продолжил стучать на клавиатуре.
Миша уткнулся в свой смартфон, а я вернулся за свой ноутбук, проскролил переписку, и снова попытался читать реверсом добытый код. И тут увидел нечто, что походило на внутренний словарик программы.
– Кто-то пытался расшифровать этот кусок? – и я озвучил адреса байтов.
– Да, это подбор паролей, – не отрываясь от своего экрана, ответила ведущая аналитик, – там массив из 432 слов.
– 432?! – удивился я.
– Да, а что?
– Червь Морриса! – воскликнул я. – Он использовал ровно столько наиболее употребительных слов, чтобы вскрывать пароли аккаунтов.
Все взоры обратились ко мне.
– Возвращение великого интернет-червя? – задал кто-то с пафосом вопрос.
– Ха! Вот что имелось в виду под «Моррис 2.0»! – усмехнулся другой. – Я тут в форуме увидел, не понял, к чему они так назвали.
– То есть кто-то из конкурентов уже прошёл этот путь, – констатировал вполголоса я. – Мы отстаём в своём расследовании. Кстати, Моррис, будучи студентом Корнельского университета, для сокрытия следов запустил свою программу с вычислительной машины Массачусетского технологического института. Ещё одно совпадение!
– Юзеры в постах жалуются, что время от времени эта зараза как бы выключает дисплей и пишет зелёными символами на чёрном фоне: «I’M THE CREEPER… THERE IS MY REAPER?» Даже не знаю, как перевести эту ерунду на русский.
– Первым известным вирусом был The Creeper, – поделился я вслух своими знаниями, – в переводе с английского «проныра» или «ползучее растение». Он печатал сообщение: «Я – ПРОНЫРА… ПОЙМАЙ МЕНЯ, ЕСЛИ СМОЖЕШЬ». Его обезвредила другая программа, первый антивирус под названием The Reaper, то есть «Жнец» или «Смерть с косой».
– Этот наглец бросил вызов! – не будь Миши рядом, я бы не стал столь театрально продолжать, но момент оправдывал очевидную патетику: – мы должны первыми выпустить алгоритм обнаружения и обезвреживания!
Миша вполголоса спросил меня:
– А почему бы всем фирмам не объединить усилия? Быстрее же добьётесь результата.
– С одной стороны, так оно и есть, а с другой – это гонка, кто первый – о том все будут говорить, к тому побегут пользователи покупать его антивирусный продукт.
– Меркантильненько, – оскалился Миша.
– И да, и нет. Я бы хотел, чтобы наша команда была первой не только потому, что успех принесёт нам новый бизнес, но и потому что каждый почувствует себя героем дня.
– А ты был героем дня?
– Да, бывало.
– Расскажи.
– Давай потом, сейчас не время…
– Расскажи сейчас, пожалуйста, – Миша заглянул мне в глаза. Что с ним сегодня такое? Ладно, пока команде от меня ничего не требуется, поведаю о былых временах.
Мы покинули переговорку и отошли в пустующую половину зала, присели на столы напротив друг друга, и я начал:
– Тебе было лет пять…
– То есть до вашего с мамой развода.
– Верно.
– И?
– Тогда стали внедрять первые каналы электронного обмена документами. Нет, началось всё с того, что в одном из банков заметили аномальную активность на некоторых счетах – множество мелких переводов. Я тогда работал в большой конторе по инфобезу. Вскоре выяснилось, что и в других банках происходили подобные транзакции. Все конкуренты пошли копать в сторону АБС.
– Чего? Антиблокировочной…
– Нет, автоматизированных банковских систем. Парни взяли за рабочую гипотезу, что проблема только у тех банков, которые сидят на этой АБС. А я принялся ковырять в сторону связей банков друг с другом, чтобы понять механизм распространения.
– И ты нашёл первопричину!
– А то! Прошерстил трафик между банками и выцарапал трояна, который путешествовал внутри документов. Стоило любому клерку открыть такой файл, как вирус заражал компьютер и садился на прерывания от клавиатуры.
– То есть отлавливал все нажатия клавиш?
– Да, и это проходят в школе? – пошутил я.
– Факультативно, в кружке по программированию.
– Продвинутый кружок! Дальше внедрённая программа шпионила за тем, какие логины и пароли вносятся в эту АБС. Ну и всё, вирус вместо пользователя начинал «нажимать клавиши», смахивало на невидимое механическое пианино, сигналы генерировались без нажатий настоящих клавиш.
– И после этого ты стал известным?
– Ну да, назовём это признанием профессионального сообщества.
– Мама говорила, что тебе снесло крышу после того, как ты пошёл в гору. – Миша зашипел на словах «крышу» и «пошёл». – Ты возомнил о себе и всё такое.
– Когда кто-то продвигается по карьерной лестнице, про него начинают говорить, что…
– Кто-то взбирается и сбрасывает кого-то как баласт. – С шёпота он перешёл на сиплый голос.
Наступила пауза.
– Говори прямо, – потребовал я.
– Тебя окружили поклонницы, которых потянуло на твой успех, и поэтому ты нас бросил.
– Никого я не бросал. Какие поклонницы?! Это мама наговорила тебе…
– Да я и сам вижу, вон какими глазами эти дамочки на тебя смотрят. Раз – и сразу же опознал Морриса – супергерой! И они все млеют от тебя…
– Миша, что с тобой? Ты чего вдруг?
Мой мальчик, который с радостными криками бежал мне навстречу, когда я приезжал забирать его на выходные, и вдруг говорит такое…
– Ничего, тебе пора возвращаться к своей команде, а то конкуренты расколят этот орех раньше вас. – Сын смотрел на меня с вызовом, мол, давай, ухватись за возможность замять болезненную тему.
– Орех подождёт, – я попытался улыбкой сбросить градус разговора, – мы никогда с тобой не говорили о разводе, я понял это только сейчас. Думаю, что обсуждение назрело. Ты мне важнее «орехов». – Я даже использовал модный жест, показывающий кавычки, хотя он меня раздражал.
– Единственный плюс вашего развода был в том, что ты стал чаще со мной проводить время. По графику дважды в неделю. – Миша отвёл глаза. – Каждый раз, когда у тебя вибрировало на руке или в кармане, я видел, как ты напрягаешься, делаешь выбор: взять трубку и отнять время свидания, или пропустить звонок, но вдруг он срочный… как сегодня.
Я не знал, что на это сказать.
– Знаешь, пап, я перерыл все статьи про червя Морриса, но так и не понял, действительно ли Моррисом двигало любопытство, или он всё-таки хотел досадить своему отцу?
В далёком 88-м году студент Роберт Моррис-младший скомбинировал несколько приёмов, основанных на уязвимостях сетевых сервисов, чтобы автоматически распространять свой код по сети. Всё это оказалось возможным, потому что Роберт Моррис-старший был директором по исследованиям Национального центра компьютерной безопасности. В том или ином виде сын имел доступ к материалам, с которыми работал отец.
– Миша, ты имеешь какое-либо отношение к этому… делу? – Я большим пальцем показал назад, в сторону переговорной комнаты.
– Если верить статьям, то Моррис-старший уговорил младшего сдаться властям. – Сын смотрел на меня исподлобья.
В конце восьмидесятых весь Арпанет, предок Интернета, состоял из менее чем семидесяти тысяч компьютеров, червь Морриса застопорил работу около шести тысяч, но и эти несколько процентов привели к сотне миллионов долларов убытков. К первому осуждённому за первый случай массового заражения как за компьютерное преступление отнеслись снисходительно: Моррис получил три года условно, сколько-то там тысяч долларов штрафа и, если не ошибаюсь, сколько-то дней исправительных работ.
– Миша, ты что натворил? – Ужасающая догадка зрела во мне, сжимая сердце.
– Я не такой гений, как Моррис, но тоже сообразительный. Ты можешь гордиться мной, пап, я буду антигероем дня. Мне достаточно было найти правильного хакера в Даркнете и скинуть ему описание дыр в браузерах и файрволах.
Я стоял перед сыном и не верил своим ушам.
– Только попросил его включить крипера-рипера и 432 слова, – с усмешкой продолжил Миша. – Ты мне рассказывал эти истории вместо сказок. А ещё ты шутил, что лучше использовать сложные комбинации букв и цифр для паролей, чтобы не быть таким, как слово номер 92 в таблице Морриса.
– Да, была такая поговорка «не веди себя как 92-ое слово», – медленно произнёс я. Это было слово «кретин». Я сам оказался кретином, оставляя рабочий ноутбук дома включённым. Кто бы подумал, что родной сын злоупотребит доверием отца…
– У тебя есть код червя, который кто-то там написал по твоему заказу? Я так понимаю, наёмника ты не выдашь, но поделись хотя бы исходниками.
– Ты всё ещё хочешь стать героем дня? – Миша попытался едко ухмыльнуться, по-киношному, но вышло по-детски наигранно. В другое время я бы умилился, но не сейчас.
– Это не игрушки, это финансовые потери, нервы, время и куча неудобств для миллионов людей. Нам надо остановить распространение червя и предотвратить… Кстати, надеюсь, ваш червь такой же безвредный, как у Морриса?
– Не знаю. Я этому анонимному хакеру поставил условием запустить через Массачусетский, вставить словарь из 432 слов и стишок крипера-рипера.
– Зачем?
– Чтобы ты заметил, – мой мальчишка громко засмеялся, – и ведь сработало же!