— Это вирус, — подтвердил он. — Я могу наблюдать, как он размножается. Задания появляются снова.
— Откуда?
— Я получаю подключения от пяти мест. Стэнфорд, университет Рочестера, Аэрокосмическая компания, университет Беркли и из какого-то БРЛ.
— Это — баллистическая разведывательная лаборатория, — сказал я, помня разговор с Майком Мууссом. — Как вирус мог проникнуть в вашу систему?
— Не могу сказать, Клифф. Все подключения от сети Арпанет, но это не обычный способ вхождения в систему. Похоже, что вирус проник через дыру в системе почты.
Сейчас 4 часа утра. Что делать? Хорошо бы позвонить инспекторам сети Арпанет и предупредить их. Операционный Центр Сети ничего не знал. Возраст вируса составляет всего несколько часов. Страшное дело. К утру он распространится на десятки или даже сотни систем. Мы имеем проблему. Серьезную проблему. Эпидемию.
Все следующие тридцать шесть часов я был в напряжении, стараясь понять и расстроить эту диверсию. В это же время группы в Беркли, МТИ и Пурдьюсском университете уже шли по горячему следу. Здесь я описываю только то, что видел сам, но мои усилия были невелики в сравнении с работой корифеев ЮНИКСа по всей стране. Работали такие «гуру», как Кейт Бостик, Питер Ай, Джен Спаффорд, Джон Рохлис, Марк Эйчин, Дон Сили, Эд Ванг и Майк Муусс. Я был частичкой неорганизованного, но целенаправленного братства бойцов.
Я зарылся в код на моей системе в Кембридже. Сразу же я смог увидеть две версии вируса. Одна приспособлена для компьютеров ВАКС под системой ЮНИКС. Другая — для рабочих станций Сан. Каждый файл был длиной сорок пять тысяч байт. Если бы это был текст на английском языке, он занимал бы около тридцати страниц. Но это был не текст: я распечатал файл, и он выглядел полной тарабарщиной. Не был он похож и на машинный код. Несколько команд, правда, выглядели знакомо. Стараюсь терпеливо понять, что эти несколько команд делают.
Я начал расшифровывать код вируса. Несколько первых команд снимали зашифровку с остального кода. Действительные команды были преднамеренно скрыты. Разбрасывание гвоздей на дороге, чтобы задержать автомашину преследователей.
Дьявольщина. Пора звонить Даррену. Сейчас 5 утра, и мы сравниваем наши заметки; он открыл то же самое и более того: «Я размаскировал часть вируса, и я вижу, что он проникает через систему почты, Затем он использует finger и telnet, чтобы распространить себя на другие компьютеры. Он декодирует пароли простым подбором.»
Вместе, по телефону, мы разбирали программу. Казалось, что ее общей целью было копирование самой себя в другие компьютеры. Она искала подключения к сети: ближние компьютеры, удаленные системы, все, до чего она могла добраться. Когда вирусная программа обнаруживает компьютер в сети, она старается проникнуть в него, используя несколько скрытых дыр в операционной системе ЮНИКС.
Когда вы посылаете почту от одного ЮНИКС-компьютера к другому, программа SendMail (Послать почту) системы ЮНИКС заведует передачей. Почтовое сообщение проходит по сети, и SendMail направляет его адресату. Это электронный почтовый офис, который сортирует почту. SendMail имеет дыру. Если есть проблема, вы можете попросить программу перейти в отладочный режим. В режиме отладки SendMail позволяет вам выдавать обычные команды системы ЮНИКС из внешнего компьютера. Такие команды, как «Выполнить данную программу».
Итак, вот каким образом вирус распространял свои копии. Он посылал по почте свои копии в другие компьютеры и велел им выполнять вирусную программу. После того, как запускалась вирусная программа, она искала, какие другие компьютеры заразить, и посылала почтовые сообщения им.
На некоторых системах программа SendMail была исправлена. Если так, вирус пытался проникнуть через другую дыру: средство опознания finger. Чтобы посмотреть, использую ли я систему ЮНИКС, можно выдать команду finger Cliff (Опознать Клифф). Если я вошел в систему, ЮНИКС выдаст в ответ мое имя, номер телефона и кто я такой. Это хорошо работает через сеть; часто я сам опознавал кого-нибудь перед тем, как звонить по телефону.
Вирус проникал через программу, которая управляла запросами на опознание. Средство опознания имеет место в памяти для 512 символов данных; вирус посылал 536 символов. Что происходило с лишними 24 символами? Они выполнялись как команды системе ЮНИКС. Переполняя буфер системы опознавания, вирус нашел второй способ выполнения команды «Выполнить данную программу» на другом компьютере.
Если этого было недостаточно, вирус располагал встроенным отгадыванием пароля. Он пытался войти в компьютеры, используя несколько сотен общеупотребительных паролей. Если он угадывал действующий пароль, он копировал себя в этот компьютер и стартовал снова.
Оба-на! Любой из этих способов мог бы оплодотворить множество компьютеров. Взятые вместе, они формировали дьявольски эффективный вирус. Как гидра: одну голову отрубишь, сто новых вырастают!
Я сказал, вирус?
— Ты знаешь, Клифф, когда работает вирус, он изменяет другие программы. Эта штука другие программы не меняет; она только копирует себя, — объяснял Даррен. — Фактически, это не вирус, это — сетевой червь.
Вирус копирует себя в другие программы, изменяя сами эти программы. Червь копирует себя из одного компьютера в другой, ничего не меняя. Оба они заразны. Вирусы обычно заражают персональные компьютеры, распространяясь через гибкие диски и скопированные программы. Черви проникают по сетям, распространяясь через любые соединения, используемые для электронной почты и переговорных взаимодействий.