bannerbanner
Червь Морриса 2.0
Червь Морриса 2.0полная версия

Полная версия

Настройки чтения
Размер шрифта
Высота строк
Поля

Артак Оганесян

Червь Морриса 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 слов и стишок крипера-рипера.

– Зачем?

– Чтобы ты заметил, – мой мальчишка громко засмеялся, – и ведь сработало же!