Современная электронная библиотека ModernLib.Net

Хакеры (takedown)

ModernLib.Net / Биографии и мемуары / Маркоф Джон / Хакеры (takedown) - Чтение (стр. 24)
Автор: Маркоф Джон
Жанр: Биографии и мемуары

 

 


Помимо этого он писал программу «Генератор кроссвордов» со словарем в 50 тысяч слов. Программа сама заполняла тело кроссворда, и оставалось только вписать ключи к словам. Это было идеальное применение способности Connection Machine очень быстро прогонять миллионы комбинаций слов. К концу лета «Генератор кроссвордов» был готов. Роберт был так доволен результатами своей работы, что послал один из кроссвордов в New York Times. К разочарованию Роберта, кроссворд забраковали.
      В последнюю неделю августа Роберт прибыл в Корнелл. Из всех ведущих университетов США Корнелл – самый обособленный. Университетский городок находится в Итаке, городке с населением 2? тысяч человек, расположенном к югу от озера Кайога в сельском районе штата Нью-Йорк. В первую же неделю Роберт пропустил большую часть вводных лекций, которые читал Дин Крафт, управляющий отделом вычислительной техники университета, решив, что слушать, как подключаться к системе и отправлять электронную почту, совсем не обязательно. Крафт вручал каждому по экземпляру правил пользования компьютерами, где запрещалось «использование… вычислительной техники для просматривания личных компьютерных файлов, расшифровывание закодированных материалов и получение несанкционированных пользовательских привилегий». Пока Крафт проводил вводное занятие, Роберт уже подключился к компьютеру.
      В Корнелле Роберт ни с кем не сблизился. Он поселился в старом доме в миле от университетского городка вместе с двумя другими аспирантами. Но те держались особняком. Ничего не напоминало легкую атмосферу кембриджского общежития. Аспон-Холл тоже ничем не напоминал тесный и дружелюбный Эйкен. Корнеллский ВЦ был больше и безличнее. Роберт делил с семью аспирантами комнату на 4 этаже. В комнате было два терминала. Роберт сидел у окна, и мог видеть ущелье Каскадилья-Крик и здание Итакского колледжа. Вокруг происходили всякие интересные вещи. Этажом выше в лаборатории физики плазмы факультета электротехники работали с плазмой, используя данные, полученные в рамках программы Space Shuttle. На факультете компьютерных наук занимались моделированием физических процессов, робототехникой, машинным зрением, а также надежно распределенной обработкой данных и способами создания системы, которая продолжала бы функционировать, даже когда отдельные ее элементы выйдут из строя.
      Роберт начал с базовых аспирантских предметов. Профессор, читавший архитектуру микропроцессоров, обратил внимание на необыкновенный интерес Роберта к проблеме в целом. Разработка микросхем интересовала его больше, чем заданный ему участок работы над проектом. Если Роберта что-то не захватывало сразу, он говорил об этом прямо. Когда другой профессор дал ему прочесть статью, Роберт вернул ее, сказав, что она его не заинтересовала. Он уже провел достаточно времени, отворачиваясь к окну, когда что-нибудь ему надоедало, теперь он высказывался откровенно.
      Роберт чувствовал себя одиноким, и немного не в своей тарелке. Он поздно сдал одну из первых работ по математике и получил только «Удовлетворительно». Он проводил много времени за компьютером, но не мог должны образом сосредоточиться на учебной работе. С одним из соседей по офису, Даусоном Дином, у Роберта завязались дружеские отношения. Даусон окончил МГГ и был как раз из тех узколобых компьютерных торчков, на которых Пол Грехем так часто жаловался, но Роберт привык видеть в людях только хорошее и думал, что Даусон нормальный парень. Даусон, как и Роберт, обожал всяческие технические дискуссии. Как-то оба допоздна засиделись в Апсон-Холле, и разговор зашел о защите сетей. Роберт сказал, что вычислил несколько способов обходить защиту в локальных сетях.
      – Ты что, из тех, кто вламывается в компьютеры ради развлечения? – спросил Даусон.
      Роберт усмехнулся и кивнул. Он рассказал Даусону, что прочел лекции по компьютерной защите в АНБ и исследовательской лаборатории ВМФ. «Но, – добавил он, – я пока не собираюсь делать карьеру в компьютерной защите. Это слишком скучно».
      Роберт получал массу электронной почты от старых друзей по Кембриджу, большинство из которых раскидало по всей Америке. Много писем приходило от Дэвида Хэндлера и Джанет Аббот, с которой прошлым летом у Роберта завязался трогательный роман. Аспирантка Пенсильванского университета, Джанет собиралась возвращаться домой в Филадельфию. Они периодически созванивались с Робертом, она посылала ему теплые веселые письма по сети и всякие вкусные печенья по почте. Элианор Сакс, эйкеновский администратор, прислала письмо, где выражала надежду, что он вернет себе любимый пароль rtm. Сам Роберт до сих пор не побеспокоился поменять пароль morris, присвоенный ему в Корнелле. Ник Хортон, уехавший в Орегон, прислал Роберту полдюжины тайских блюд из поваренной книги USENET.
      Роберт быстро заработал репутацию талантливого и нелюдимого программиста. На самым деле он не был нелюдимым, он просто был тихим. На лекциях он сидел в сторонке и уклонялся от предложений посетить местный паб в пятницу вечером. Однако он не преминул воспользоваться многими другими вещами, который мог предложить Корнелл, записавшись в секцию скалолазания, факультетскую хоккейную команду и церковный хор.
      Хотя появление первого вируса в компьютерах Apple II относится, вероятно, к началу восьмидесятых, общество о них не задумывалось вплоть до 1987 года, когда внимание всей Америки привлек компьютерный вирус, ударивший по университету Лехай в Пенсильвании. Год спустя вирусы вышли на обложки журналов Time и Business Week и вызвали припадок общественного любопытства потому, что были такими таинственными и так походили на своих биологических тезок. Они «заражали» компьютеры, можно было сделать «прививку», некоторые проводили аналогии между компьютерными вирусами и чумой СПИДа.
      Американские обыватели усвоили, что все вирусы – зловредные, и все обязательно стирают информацию. Но те, кто разбирались в компьютерах, понимали, что вирусы вовсе не обязаны наносить вред. Собственно, гораздо интереснее написать программу – маленькую, безобидную и способную распространяться. Написать вирус, который смог бы захватить как можно больше компьютеров, – эта идея уже приходила Роберту в голову, и недавние прецеденты только придавали ему смелости. Ему нравилась идея программы-невидимки, которая сможет продрейфовать через электронную вселенную тысяч компьютеров, распространяясь медленно и незаметно, и добьется бессмертия. А в Беркли-UNIX были бреши, о существовании которых он знал еще два года назад, не без того, возможно, коллекционируя их, чтобы когда-нибудь использовать. В начале октября Роберт уже всерьез подумывал о том, чтобы написать такую программу – просто посмотреть, до скольких компьютеров он сможет добраться. 15 октября Роберт набросал список требований к программе: «Цель – заразить 3 машины через EtherNet. – Сработает только если все пользователи – подари. – Стараться избегать медленных машин. – Поискать в таблице главной вычислительной машины другие интерфейсы известных шлюзов, затем найти главные машины в этой сети. – Стащить файл паролей, взломать пароль.»
      По мнению Роберта, это был абсолютно безобидный способ испытать защиту сети. Что-нибудь в этом духе мог бы в свое время выдумать его отец, чтобы заслужить уважение коллег. Роберту явно не пришло в голову, что компьютерный террорист с помощью подобной программы может подорвать всю международную компьютерную сеть.
      В занятиях наступил перерыв, и Роберт вместе с Даусоном Дином поехал в Кембридж. Дэвид Хендлер был в Европе, и большую часть времени Роберт провел с Полом Грехемом. Энди Саддат присоединился к ним после того, как закончились соревнования по гребле, в которых он принимал участие. Все было как в старые добрые времена. Роберт прилип к одной из рабочих станций. Пол сидел этажом ниже в кабинете Дэвида Мумфорда, видного гарвардского математика, чьим кабинетом Пол частенько пользовался в отсутствие хозяина. Рано вечером в субботу Роберт ворвался в кабинет Мумфорда, и по его фирменной ухмылочке Пол понял – что-то наклевывается. Роберт забегал по кабинету как одержимый. Он объявил, что, читая исходный код UNIX, он обнаружил, здоровую дыру в ftp, программе передачи файлов, позволяющих пользователям копировать файлы с машины на машину по компьютерной сети. Дыра дает возможность прочесть или написать файл на сервере. По степени возбуждения Роберта Пол понял, что тот только что обнаружил эту дыру и его распирает от желания поделиться с кем-нибудь. Робертова беготня по тесному офису достигла апогея. Наткнувшись на стол. Мумфорда, Роберт, вместо того чтобы развернуться, вскочил прямо на стол.
      – rtm! Ты на мумфордовском столе! – заорал Пол, увидев, как его друг своими кроссовками топчет лежащие на столе бумаги.
      – Ox, – ответил Роберт и спустился на пол.
      Сперва Пол не мог понять в чем дело. Еще один способ взломать UNIX?
      – Ну, славная дырочка, но из-за чего столько шума? – спросил он.
      – Я смогу ее использовать и написать вирус, – и Роберт рассказал, что почти все каникулы только и думал о создании вируса, который мог бы медленно распространяться по Internet. Вирус, как его описал Роберт, должен был не принести никакого вреда и, конечно же, не уничтожать информацию. Собственно говоря, он вообще ничего не должен был делать, только попасть на как можно большее количество машин.
      Пол моментально загорелся. Весь семестр он шпынял Роберта, чтобы тот обзавелся друзьями в Корнелле и побольше вращался в обществе, но услышав, что подобные начинания были отложены ради чего-то настолько интригующего, как этот компьютерный вирус, пришел в восторг.
      – Это действительно великолепно! – Пол загорелся так же быстро, как и Роберт. – Ты сможешь это использовать в своей диссертации!
      Пол был, на свой манер, идеальным другом. Если чья-то идея его захватывала, он своим энтузиазмом не давал автору идеи никаких шансов забросить ее. Тем более если этим человеком был его друг и образец для подражания Роберт Моррис. Пол один стоил целой группы поддержки.
      Когда Роберт начал рассказывать о вирусе, который он задумал, энтузиазм Пола заработал на третьей скорости, что не могло не повлиять даже на такого обычно спокойного и тихого человека, как Роберт. Расскажи он об этом кому-нибудь еще, например Нику, Энди или Дэвиду, реакция могла бы оказаться менее восторженной. Они наверняка убедили бы его сначала протестировать вирус, возможно, запустив его в локальной сети, отключенной от Internet. Если вирус содержит ошибку, подобные меры предосторожности воспрепятствуют его воздействию на всю сеть. Но «эксперимент в пробирке» был бы неинтересным и менее продуктивным в научном смысле. Роберт хотел большего доказательного пространства.
      Пол и Роберт отправились на встречу с Энди, чтобы вместе поужинать в ресторане напротив MIT. Поджидая Энди на улице, они опять вернулись к теме вируса. Ни тот, ни другой до сих пор не слышали о чем-либо подобном, так что подойти к этому делу следовало творчески. Обоим казалось, что это тот самый «великий хак», о котором часто мечтали в компьютерном мире. Роберт начал размышлять вслух, описывая кое-какие наиболее существенные качества, что потребуются такой программе. Конечно, во-первых, она должна распространиться по сети, тайно заселив множество машин, и тут главное– сделать вирус как можно неприметнее, чтобы он не вызывал подозрения у системных администраторов. Как только вирус заселится, ему потребуются средства для определения наличия другой копии в машине. И он должен быть саморегулирующимся, чтобы ограничить число копий в каждом компьютере. Но все еще оставался неразрешенным трудный вопрос: как ограничить рост, не остановив его при этом полностью?
      Роберт вкратце набросал свой план. Этот вирус проникает в компьютер через обнаруженные в UNIX дыры и просматривает систему на предмет других своих копий. Если таковая отыщется, то они «беседуют» друг с другом и решают, что делать. В идеале одна должна автоматически уничтожиться, чтобы ограничить рост вируса. Но что, если кто-то обнаружит вирус и постарается обмануть его, заставив поверить, что копия уже имеется? Программист может создать имитатор, который одурачит пришельца. Такая программа, очень легкая в написании, может воспрепятствовать распространению вируса, сыграв роль биологической вакцины. Продумывая ходы как шахматисты, Роберт и Пол решили, что необходимы контрмеры против потенциальных защитных программ. Как им провести системщиков? Рандомизацией, конечно! Оба прослушали курс лекций по эффективным алгоритмам, который читал Майкл Рабин, блестящий математик и криптолог. Теория случайных чисел была коньком Рабина, и он не уставал повторять студентам, что если задача кажется неразрешимой, надо свести ее к более простой и применить рандомизацию (эта идеология лежала в основе вероятностной программы поиска опечаток, придуманной Бобом Моррисом). Рабин говорил о рандомизации в применении к абстрактным задачам, таким, как поиск простых чисел, но Роберт и Под решили, что смогут использовать этот принцип в программе-вирусе. Когда вирус встретится со своей копией, они бросят электронную монетку, чтобы решить, кому из них прекратить прогон. Еще один способ гарантировать выживание вируса пришел в голову Роберту. В одном случае из N вирус, проникнув в компьютер, должен забыть про электронный жребий и просто скомандовать себе никогда не останавливаться. Но тут возникал новый вопрос: чему должно равняться N – 5? 1000? 10000? Только они начали это обдумывать, как появился Энди. Энди был близким другом, но то, что он работал системным администратором, поставило бы его в неловкое, если не сказать больше, положение, окажись он внезапно участником обсуждения громадных дыр в защите UNIX. Энди решил, что с его появлением беседа оборвалась, потому что друзья говорили о женщине, интересовавшей и Энди, и Роберта.
      Обнаруженный в ftp изъян не давал Роберту покоя. На следующий день он зашел к Энди в офис и нечаянно проболтался. Не тратя времени даром, Энди попытался проверить ftp. Когда он не обнаружил там дыры, Роберту пришлось дать более подробное объяснение.
      Роберт вернулся в Корнелл. В среду Пол послал ему сообщение по e-mail: «Что слышно о блестящем проекте?» Роберт ответил спустя два дня: «Ничего нового. Я весь в законнорожденной работе» (речь шла о занятиях). Но проект жил. За те четыре дня, что Роберт провел в Гарварде, он декодировал коллекцию шифрованных паролей, собранных с разных машин по всей стране.
      Поскольку не всегда возможна непосредственная расшифровка, часто срабатывает догадка. Невозможно декодировать пароль, запустив процесс, обратный кодировке. Однако ничто не мешает дешифровщику проверить предположения, закодировав, скажем, словарь и сравнив результаты с имеющимся паролем. Поскольку многие пароли – это обычные английские слова, словарный метод бывает поразительно результативным. Чем быстрее компьютер, чем больше компьютеров используется, тем меньше времени займет такая операция.
      В пятницу вечером Даусон Дин зашел в комнату, где стояли терминалы Апсон-Холла. За рабочей станций Sun сидел Роберт. Даусон поинтересовался, что это Роберт затеял. Когда Роберт показал, что у него на экране, у Даусона глаза на лоб полезли: это был длинный список паролей открытым текстом. Роберт пролистал список, чтобы показать пароли корнеллских студентов и профессоров. Был в списке и Декстер Козен, курировавший аспирантов. Его пароль? Пожалуйста: tomato. Кешав Пенгали, читавший архитектуру микропроцессоров, выбрал пароль snoopy («шпик»).
      – Блеск! – воскликнул Даусон. – А мой есть?
      Пароля Даусона не оказалось, ибо такого слова в словаре не нашлось.
      – А как насчет Айткина? Бил Айгкин был аспирантом, которого Даусон считал «ужасным вонючкой». Роберт пробежал по списку и нашел пароль Айткина: subway.
      – А… гм… не опасно ли держать список расшифрованных паролей в своем каталоге? – спросил Даусон. Сам тон разговора – возбужденные вопросы Даусона, которого, казалось, самого лихорадило от незаконности того, чем занимался Роберт, и осторожные ответы Роберта, – подразумевал, что нарушены какие-то табу.
      – Ну, – Ответил Роберт, – ты зашифровываешь, как сможешь, а что до остального – почему бы мне не попытать счастья?
      Даусона обуревало любопытство.
      – А можешь ты сделать базу данных паролей всей страны?
      – А зачем, – сказал Роберт, – если есть способы добираться до машин, не прибегая к словарному методу.
      Даусон насел на Роберта с расспросами об этих других способах. Роберт колебался, но Даусон не отставал. Наконец Роберт сказал, что, читая исходный код UNIX, обнаружил несколько дырок. Одна – «черный ход» в программе sendmail, другая – ошибка в finger, которая позволяет запускать программу на другой машине не регистрируясь. Он знает о них уже год, и похоже, что знает только он один.
      Даусон Дин хотел побольше услышать о конкретных компьютерах, в которые Роберт мог бы забраться. Он спросил об одной частной фирме. Роберт покачал головой: «Ну, можно и туда, но на самом деле проще навестить машины, принадлежащие университетам. В университетах, как правило, меньше заботятся о защите. Кроме того, нехорошо вылазить за границы государства». Тогда Даусон спросил об одной машине в Media Lab, исследовательском центре МГГ, где изучали технологию коммуникаций. Через несколько минут Роберт подключился к этому компьютеру. Даусон был поражен: «Чей пароль ты использовал?» «Сейчас узнаем», – Роберт набрал запрос. Машина ответила: «nobody» (пользователь не зарегистрирован). Это впечатлило Даусона. Роберт явно перехитрил машину и подсоединился незаконно.
      Роберт ничего не рассказал Даусону Дину о своих планах использования дыр в защите. И Даусон о них не спрашивал. Кроме Пола, Роберт никому не рассказывал о программе, которую он обдумывал весь семестр, и над которой начал упорно работать незадолго до поездки в Кембридж. К этому моменту Роберт работал над вирусом в общей сложности чуть больше двух недель.
      Неделю спустя, 2 ноября, Роберт пришел в смятение, увидев объявление в сети: Кейт Бостик, разработчик берклийской версии UNIX, отладил дефект в ftp. Поскольку только неделю назад Роберт рассказал Энди об этом дефекте, совпадение исключалось. Роберт немедленно заподозрил, что Энди предупредил кого-то из Беркли. Он тут же по e-mail запрашивает Энди, не он ли разболтал секрет. Нет ответа. Значит, Роберт не сможет использовать дырку в ftp для своего вируса. Но еще остаются дырки в sendmail и finger.
      Весь день Роберт провел, доводя вирус до ума. Он закончил работу в 18.30 по восточному поясному времени. Спустя час он подсоединился к компьютеру Лаборатории искусственного интеллекта в MIT, набрал несколько команд и запустил программу. Он решил пойти перекусить. За время, которое у Роберта ушло на то, чтобы нажать на клавишу return и одеть куртку, программа начала распространяться. Через несколько минут она уже веером расходилась по всей сети. Компьютеры заражали друг друга словно малыши в детском саду. Каждый VAX или Sun, соединенный с другим VAX или Sun, оказывался беззащитным. Пока Роберт обедал, десятки вирусов уже кишели в компьютерах и пожирали машинное время. Машины начали зависать и отказывать. После обеда Роберт собирался идти домой, но не смог удержаться и вернулся в Апсон-Холл посмотреть, как движутся дела. Когда он попытался зарегистрироваться, компьютер не ответил. Что-то пошло не так. Вирус размножался неограниченно.
      Поздно вечером, в 23 00, Пол и Энди вернулись в Эйкен после ужина. Когда Пол вынимал ключи из двери, зазвонил телефон. К телефону подошел Энди. Звонил Роберт. Он попросил позвать Пола. Энди передал трубку и пошел в свой офис. Роберт казался совершенно убитым: «По-моему, я по уши в дерьме». Пол впервые слышал, чтобы rtm использовал сильные выражения. По тому, как Роберт еле ворочал языком, Пол понял, что его друг в полном отчаянии. Первая мысль была, что это как-то связано с женщиной.
      – Что такое? Что ты натворил? – спросил Пол
      – Я запустил вирус, и он работает совсем не так, как должен. Я ввел не то N
      – Какое число ты использовал? – Подразумевалось, как часто будет вирус заражать машину, даже если там имеется его копия.
      – Семь – Семь?! rtm, ты кретин! Почему семь?! – Пол мгновенно понял, что это число должно было быть больше как минимум в 1000 раз.
      Но Роберт не собирался тратить время на разбор полетов. Он сообщил Полу, что все компьютеры VAX и Sun в Корнелле полетели, зависая каждые несколько минут. Соответственно, то же самое происходит по всей Америке. Роберт рассказал, что вечером запустил вирус с компьютера Массачусетской лаборатории искусственного интеллекта, пошел пообедать, а когда вернулся, обнаружил, что вирус заселяет машины везде, где Роберт мог проверить. Они начали обсуждать способы остановки вируса. Пол предложил запустить по следам вируса программу, которая бы уничтожила его – программу типа Рас-Мап, что догонит вирус и сожрет его. Чем больше Пол радовался своей «пакмэновской» идее, тем больше мрачнел Роберт. Он уже запорол одну программу, и где гарантия, что не изгадит вторую?
      Следующее, что пришло в голову, – подключить Энди. Пол пошел в кабинет Энди. Энди припозднился, устанавливая на лабораторных компьютерах новое оборудование.
      – По-моему, тебе стоит связаться с rtm. Происходит что-то действительно серьезное, но я не могу сказать тебе. что именно. – Пол нервно расхаживал перед Энди.
      Энди всегда скептически относился к любым вещам, которые Пол называл «действительно серьезными».
      – Что происходит-то? – спросил он.
      – Поговори лучше с ним сам, он просил не рассказывать тебе.
      – Почему ты мне просто не объяснишь, в чем дело? – Энди начал терять терпение. Полу только это и надо было
      – Ну, только пусть он не знает, что я тебе рассказал, но он написал эту программу, и она разошлась по всей стране. Она вышла из-под контроля! Это невероятно!
      Энди по– прежнему был настроен скептически, но тут он припомнил, что днем получил непривычно таинственный e-mail от Роберта, в котором тот спрашивал, не рассказал ли Энди кому-нибудь о дыре в ftp. Энди действительно говорил о ней нескольким людям и даже продемонстрировал ее. И он воспользовался этой дырой, чтобы получить полные привилегии на машине Ника Хортона в Портленде, о чем позднее сообщил Нику. Можно было предположить, что информация дошла до людей из Беркли. Пока Роберт не заволновался, Энди и не вспоминал, что тот просил его не болтать. На запрос Роберта Энди не ответил, но сейчас отправил ему e-mail «Сожалею, что не оправдал доверия. Сообщи мне, что происходит». Энди прежде всего беспокоила судьба гарвардских машин. Через час или около того позвонил Роберт и рассказал, что в сети ходит вирус и, похоже, валит машины штабелями. Он не сказал, что сам написал этот вирус, но это и так было понятно. Энди хотел знать, пострадают ли компьютеры в Гарварде. Нет, ответил Роберт, потому что в Гарварде уже залатали дыры, через которые проникает вирус. Час спустя Роберт позвонил снова и попросил Энди отправить по сети анонимное письмо с указаниями, как остановить вирус. Под диктовку Роберта Энди составил следующее сообщение:
       "Информация о возможности действия вируса в сети.
       В Internet, может быть, попал вирус. Главные пункты сообщения, которые я только что получил:
       "Извините. Вот некоторые шаги для предотвращения дальнейшего распространения.
       1 Не запускайте finger, либо исправьте ее так, чтобы она не переполняла стек при чтении аргументов.
       2 Перекомпилируйте sendmail, не включая отладочную информацию.
       3 Не запускайте rexecd.
       Надеюсь, что это поможет, но еще больше надеюсь, что тревога ложная".
      После того как Роберт продиктовал свое лаконичное покаяние и меры предосторожности, Энди сказал, что отправит сообщение с удаленной машины, чтобы следы не вывели на Роберта или Энди. Про себя Энди решил, что будет молчать о роли Роберта в этой истории. Он полагал, что только сам Роберт должен решать, признаться ли, и когда именно. Энди велел Роберту быть готовым к тому, что придется врать. Если кто-нибудь спросит его о вирусе, сказал он, пусть Роберт постарается обойтись без этих своих ухмылочек.
      Повесив трубку, Энди стал думать, как лучше отправить сообщение. Он знал, что существует возможность отправить анонимное сообщение по e-mail или, по крайней мере, сделать так, чтобы создать видимость, что оно пришло с другого компьютера. Сообщение должно выглядеть так, будто оно отправлено из Гарварда и, конечно же, не из Корнелла. Он решил отправить его на электронную доску объявлений в телеконференции SRI. Энди понимал, что если пошлет сообщение непосредственно на сервер, то следы приведут прямо в Гарвард. Поэтому он создал вымышленный адрес foo@bar.darpa и определил маршрут сообщения через компьютер Брауновского университета, рассчитывая, что через пару часов оно попадет в SRI.
      Как оказалось, сообщение Энди застряло на первом же этапе своего путешествия. В Брауне хозяйничал вирус. Хуже того, Энди не заполнил subject в заголовке сообщения, из-за чего письмо, попав наконец в SM, получило низкий приоритет. Энди попытался сделать несколько звонков в Беркли, чтобы сообщить о вирусе людям, имевшим отношение к UNIX, но не знал, кому именно звонить и где найти их номера телефонов. Справочная в Беркли не отвечала, и Энди решил, что вся история, вероятно, не стоит того, чтобы вытаскивать из постели людей в Калифорнии, где была уже полночь. Энди знал, что любой программист, даже такой одаренный, как Роберт, может ошибиться. Однажды Энди сам нечаянно вывел из строя 200 гарвардских компьютеров из-за маленькой ошибки в команде адресации в компьютерной сети. Несмотря на то что были нарушены университетские правила пользования компьютерами, администрация признала действия Энди «добросовестным заблуждением» и не наказала его. Вирус казался не таким грозным, как твердили Роберт и Пол. Если из-за Роберта на самом деле накрылись корнеллские компьютеры, то, пожалуй, некоторым будет не до смеха. Однако не такой уж это ужас. И наконец, удовлетворенный тем, что сделал для друга все, что мог, Энди в 4.00 отправился домой.
      То что Роберт совершил серьезное правонарушение, не пришло в голову ни Роберту, ни Энди, ни Полу. Роберт больше всего боялся. что компьютерщики будут вне себя от гнева. Он надеялся, что у него не будет неприятностей в Корнелле. Очень угнетало то, что он уже натворил в Internet, а его маленькая программа все еще рикошетила. Оставалось только надеяться, что сообщение Энди поможет справиться с проблемой.
      Однако к тому моменту, когда в четверг утром Энди пришел на работу, вирус, слопавший Internet, стал главной темой для разговоров во всем Эйкене, и похоже, имя Роберта Морриса у многих вертелось на кончике языка. Ведь Роберт в Гарварде пользовался репутацией специалиста по защите, завсегдатая Internet и любителя время от времени отколоть номер. Единственное, что не вязалось с Робертом – несомненный злой умысел. Энди не мог понять, дошло ли его сообщение. Из Беркли и MIT просачивались бюллетени с информацией о том, как избавиться от вируса. Никто не упоминал анонимное сообщение, но инструкции были в точности те, что Роберт диктовал Энди. Энди не без внутреннего затруднения отвечал эйкеновским профессорам, что ничего не знает о случившемся. Полу покривить душой особого труда не составляло. Когда один аспирант спросил его, не имеет ли Роберт какое-нибудь отношение к вирусу, о котором только и слышно вокруг, Пол честно посмотрел тому в глаза и ответил «нет». Днем деморализованный Роберт позвонил Энди узнать, послал ли тот сообщение. Энди заверил его, что послал.
      В 6 часов утра, когда Кейт Бостик, поспав 3 часа, пришел на работу, телефон уже разрывался. Звонили разгневанные администраторы сети со всей страны, спрашивая, что делать с программой, которая заразила их системы. Бостик уже ожидал чего-то в этом духе. Знал ли он об этих дырах в берклийской версии UNIX? Нет, отвечал Бостик, не знал. Особо злобствовал Пентагон, один из крупнейших пользователей этой версии UNIX. Знает ли Бостик, кто учинил эту мерзость? Было ли ему известно о дефектах UNIX? Может ли он гарантировать, что в этой программе нет «троянских коней»? Собираются ли в Беркли дизассемблировать код вируса?
      Первым делом Бостик разослал «Vims Posting #2», поправку к его первой заплате на дырку в sendmail, обеспечивающую более совершенную защиту от вируса. Это сообщение было отправлено в 8:00. Вопрос дизассемблирования вируса уже обсуждался. Предстояла долгая и тяжелая работа, но это был единственный способ окончательно определить, не скрывается ли где-нибудь в программе разрушительный код. Работу Беркли дублировала в Кембридже группа программистов из МГГ, которые также всю ночь не смыкали глаз. В середине дня в Беркли поступило сообщение из МГГ, что у вируса есть еще один способ атаки. Используя дыру в маленькой программе finger, входившей в пакет UNIX, вирус получил возможность выводить finger из строя, посылая больше символов, чем она могла обработать. Как только происходило переполнение буфера ввода, захватчик получал возможность стартовать небольшую программу, переносившую все тело вируса целиком на атакуемый компьютер.
      Бостик скептически отнесся к информации из МГГ, ведь finger была такой мелкой, банальней утилитой. Он представить не мог, что в программе всего в 15 строк длиной могут содержаться серьезные дыры. Чтобы доказать свою правоту, команда из МГГ прислала ему образец программы, демонстрировавший дефект в finger. В тот же день Бостик разослал «Virus Posting #3» – заплату на finger. Это стало последней каплей, убедившей Бостика, что единственный способ узнать, остается ли еще опасность, это разобрать вирус строка за строкой. Программу нужно декомпилировать.
      Декомпиляция программы чем-то сродни искусству алхимика. Это преобразование программы, состоящей из единиц и нулей, которые компьютер читает как команды «да» – «нет» в нечто, что человек-программист мог бы прочесть и понять. Декомпилировать программу – все равно, что взять книгу, уже переведенную с английского на, скажем, французский, и перевести снова на английский, не заглядывая при этом в оригинал. В новой английской версии слова могут оказаться другими, но хорошие переводчики умеют сохранить суть книги. Когда программа декомпилирована, сам язык может слегка отличаться, но программа действует аналогично оргиналу. Обычно программу компилируют, а не наоборот, ибо после того как программу из исходного текста переводят в выполняемый код, редко возникает необходимость обратного перевода.

  • Страницы:
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27