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