25 лет назад червь Морриса заполонил Интернет

Моррис - создатель первого червя

Воскресным утром 3 Ноября 1988 года, 25 лет назад, люди проснулись и поняли, что Интернет изменился навсегда. Чуть ранее, где-то ночью кто-то впустил вредоносную компьютерную программу в пока что совсем юную компьютерную сеть. Уже утром тысячи компьютеров были заполнены многочисленными копиями компьютерного "червя", программы, которая словно биологическая болезнь распространяется с одного компьютера на другой.

Потребовалось несколько дней усилий сотен системных администраторов, чтобы исправить все, а Интернет сообществу понадобились недели анализа того, что произошло и может-ли это произойти снова. Аспирант по имени Роберт Моррис был разоблачен как создатель этого червя. Одиночка с блестящими знаниями, казалось, более был мотивирован интеллектуальным любопытством, нежели причинением ущерба. Хотя это не спасло его от становления первым человеком в истории, осужденного по антихакерскому закону, который был принят несколькими годами ранее.

Но самый значительный эффект этого червя в том, как он навсегда изменил интернет-культуру. До того, как Моррис выпустил своего червя, Интернет был как маленький город, где люди не задумываясь оставляли свои двери открытыми. Интернет-безопасность многие рассматривали скорее с теоретической части, а производители программного обеспечения относились к безопасности как к чему-то с более низким приоритетом.

Червь Морриса уничтожил эту беспечность. Оно заставило производителей относиться к безопасности программного обеспечения с подобающей серьезностью. Это создало новую область компьютерной безопасности и потребность в специалистах этого уровня. Сегодня Интернет кишит вредоносными программами, которые во многом работают также, как планировалось в программе Морриса. А сообщество профессионалов в области безопасности Интернета, которые борются с этими инфекциями, могут проследить корни своей профессии с ноябрьских событий 1988 года.

Сейчас у Морриса блестящая карьера антрепренера, компьютерного ученого и инвестора. А человек, который судил его, Марк Раш, сейчас признается, что поддерживает решение о его помиловании.

Среда: Поздний ночной звонок

Эндрю Садуф (Andrew Sudduth) был известен как гребец мирового класса. В 1984 году он состоял в американской команде, выигравшей серебряную медаль на летних Олимпийских играх. Но он также был талантливым компьютерным хакером. Осенью 1988 года он работал в качестве технического персонала в Гарвардском Университете Вычислительной технологии.

Садуф был знаком с Робертом Моррисом в то время как Моррис был студентом Гарварда. Моррис окончил учебу в Гарварде и поступил в аспирантуру исследований Корнельского университета осенью 1988 года. Около 11 часов, в Среду, 2-го Ноября, пока Садуф разговаривал с Полом Грэмом, позвонил Моррис.

Грэм ответил на телефонный звонок. После звонка, Грэм сообщил Садуфу, что Моррис подтвердил запуск червя, который затем заполонил весь Интернет. Полчаса спустя Моррис позвонил снова. В этот раз ответил Садуф и, Морис предложил предпринять ряд мер, чтобы гарвардские администраторы могли защитить свои компьютеры от червя.

Крайне испуганный Моррис звонит в третий раз уже в районе 2:30. По словам Садуфа, Моррис был крайне озабоченным и, казалось, что совершил колоссальную ошибку. Моррис попросил Садуфа опубликовать анонимное сообщение от его имени и извиниться за инцидент, также объяснить как обновлять компьютеры, чтобы иммунизировать их против дальнейшего размножения червя.

Садуф выполнил просьбу Морриса через час, разместив анонимное сообщение на доске объявлений Usenet системы 3-го Ноября, в Четверг, в 3:34. "There may be a virus loose on the Internet," говорится в сообщений. "Here is the gist of message I got: I'm sorry." Дальше сообщение объясняет как предотвратить дальнейшее распространение червя.

К несчастью, сообщение Садуфа было замечено только в Субботу, когда было уже слишком поздно.

Eugen Spafford

Четверг: чистка беспорядка

Юджин Спаффорд (Eugene Spafford) проснулся рано утром, сделал себе чашку кофе и сел за свой компьютер, чтобы проверить свою электронную почту. В 1988-ом многие люди еще даже не знали и не слышали об Интернете или об электронной почте. Но Спаффорд, доцент кафедры компьютерных наук в Пердью, привык получать поток писем от своих друзей и коллег с научных учреждений по всей стране.

Поэтому он был очень удивлен, когда, подключился к рабочей станции на территории кампуса Пердью и, обнаружил, что не получил никаких электронных писем. Он попытался войти на почтовый сервер, чтобы выяснить в чем кроется проблема, но сервер был слишком перегружен и не отвечал.

Спаффорд оделся и поехал в кампус, чтобы исследовать проблему. Он обнаружил, что "здесь очень много процессов запущенных в фоновом режиме, которых вообще не должно быть" на почтовом сервере. Вскоре он узнает, что та же загадочная напасть настигла машины не только по всему кампусу Пердью, но по всей стране.

Профессор быстро собрал команду из восьми человек, которые начали анализ червя, чтобы выяснить как остановить его. К конце рабочего дня большая часть работы по анализу программы была закончена и была идея как остановить ее распространение.

В других университетах тоже была сформирована аналогичная задача. Одними из первых, кто заметил атаку, были студенты с Калифорнийского университета в Беркли. Так-как они были на Западном побережье, атака червя произошла рано вечером в среду. Группа студентов, вернувшись с ужина, обнаружила, что запрограммированная программа каждый раз пытается войти в компьютер Беркли. Они предупредили IT-специалистов Беркли, некоторые из которых уже с поздней ночи пытались диагностировать проблему.

И так уж совпало, что ежегодный Unix Семинар Беркли был запланирован именно на четверг. Червь был нацелен именно на операционную систему Unix, поэтому некоторые люди пропустили заседание конференции и присоединились к анализу червя. К концу дня, команде Беркли тоже удалось понять алгоритм программы и составить рекомендацию о том, как остановить его.

После этого они заказали кальцоне на ужин и просидели еще одну ночь. Хакеры с Беркли хотели понять как червь работает, чтобы они могли убедиться, что никаких постоянных повреждений не осталось на уже поврежденных компьютерах и что больше нет никаких неприятных сюрпризов для тех компьютеров, которые еще не были очищены от него. Ко второй половине дня пятницы, исследователи закончили анализировать червя и они представили результаты своей работы на заключительном заседаний семинара Unix.

Спаффорд стал связующим звеном информации между своей группой, командой Беркли, Массачусетским Институтом Технологии, Университетом штата Юты и затравленными администраторами по всей стране. К концу дня он создал рассылку, посвященной червю. Он также был одним из тех немногих людей, кто подробно написал о черве в следующие недели.

Пятница: "У нас нет медицинской школы"

Червь начал привлекать внимание предсказуемо-невежественных СМИ. Для многих журналистов, инцидент стал именно тем моментом, когда они впервые услышали слова Интернет и malware.

"Были некоторые выходы с заголовками типа National Enquirer о вторжении хакеров или чего-то в этом роде," говорит Спаффорд.

К пятничному утру уже было столько репортеров спрашивающих MIT о черве, что им пришлось дать пресс-конференцию в школе. "СМИ были в равной степени разочарованы тем, что вирус не делал ничего даже отдаленно визуального," вспоминает Mark Eichin и Jon Rochlis, оба являются исследователями Массачусетского технологического института, участвовавших в препарировании червя. "Некоторым похоже стало плохо, когда выяснилось, что мы не в нескольких шагах от Третьей Мировой войны."

"У меня был один телефонный звонок от одной газеты с Южной Индианы," говорит Спаффорд. "Репортер спросил меня, со всей серьезностью, 'Надо ли нашим читателям беспокоиться о том, чтобы не схватить этого вируса?'"

"Боже, я не знаю," невозмутимо ответил Спаффорд. "У нас нет медицинской школы. Вы должны позвонить людям в Университете Индианы."

Но пресса начала заполнять важные части головоломки. Субботним утром, Нью-Йорк Таймс опубликовал новость о том, что Роберт Моррис Младший, 23-летний компьютерный инженер аспирант с Корнелл, создал червя.

Репортер Times Джон Марков описывает Морриса как "блестящего" сына Роберта Морриса Старшего, одного из самых уважаемых компьютерных экспертов правительства в области безопасности. Старший Моррис сказал Маркову, что червь был "результатом работы скучающего аспиранта."

Отчет Cornell-а действительно показал-бы, что в Гарварде "Моррис был таким студентом, кто был ярким, но уставшим от рутинной домашней работы и часто тратившим свою энергию на что-то другое. Видимо он продолжал двигаться по этой модели в Корнельском," где он "казалось предпочитал работать в одиночку" и "тратил большое количество времени за программированием на компьютере." Сверстники Морриса по Корнеллу говорили, что он вообще не нажил себе друзей за два месяца с прибытия на кампус и запуска червя. Конечно, такое поведение трудно назвать необычным среди студентов компьютерной науки.

Флоппи дискета с музея Компьютерной истории в Силиконовой долине, содержащая копию исходного кода червя Морриса. (Фото от Intel Free Press)

Флоппи дискета с музея компьютерной истории в Силиконовой долине, содержащая копию исходного кода червя Морриса. (Фотография от Intel Free Press).

Анатомия червя

Червь - это компьютерная программа, которая распространяется с одного компьютера на другой, используя уязвимости в системе безопасности в машинах. После запуска он начинает действовать без человека, сканирует Интернет на признак наличия новых хостов для заражения, атакует их и запускает новую копию программы на новом хосте. В прошлом уже разрабатывались экспериментальные черви, но червь Морриса распространялся гораздо быстрее.

Судебное расследование показало, что Моррис начал разрабатывать червя, используя Корнуэлские компьютеры, примерно с 15-го Октября 1988 года. Червь использовал несколько типов атак, чтобы распространяться с одного компьютера на другой. Одна из атак эксплуатировала одну из служб, известной как "finger", которая была установлена на многих Unix машинах.

Другая атака пользовалась тем, что многие пользователи выбирали себе легко отгадываемые пароли, например свои имена пользователей, написанные в обратном порядке или какой-нибудь распространенный термин из словаря. Червь получал файл с паролями на компьютере, в котором содержались зашифрованные копий паролей всех пользователей. Затем он систематически начинал отгадывать пароль, используя словарь распространенных слов. Если пароль удавалось отгадать, он пытался получить доступ к другим серверам, где был пользователь с таким же именем.

20 Октября Моррис совершил путь длиной в 300 миль, чтобы навестить своих друзей в Гарварде и пробыл там два дня. После возвращения, Моррис добавил кое-что в код, чтобы использовать третью уязвимость в безопасности. Код был нацелен на уязвимость в "sendmail", распространенной утилите, которая, как подсказывает само название, использовалось для отправки электронной почты. Очень похоже на то, что Моррис узнал об этой уязвимости в течении своего путешествия в Гарвард. Грэм, гарвардский друг Морриса, отправил электронную почту Моррису 26 октября с вопросом "есть новости насчет блестящего проекта?"

Ранние версии червя, восстановленные с автоматических бекапов Корнела, содержали комментарии, описывающие видение Морриса этого проекта. Эти комментарии наталкивают на мысль, что у Морриса были более амбициозны планы, чем-те которые он смог достичь. Моррис хотел не просто создать червя, который бы тихо копировал себя по всему Интернету. Он хотел создать то, что сейчас мы бы назвали ботнетом: сеть, объединяющая тысячи компьютеров, координирующих друг с другом и ждущих команды от своего создателя.

Червь, как пишет он в комментариях с ранним видением червя, должен был "решить куда пробиться в следующий раз" и нуждался в "методах взлома в другие системы." Он также хотел получить "возможность для МЕНЯ отправлять команды, защищенные зашифрованным паролем."

Моррис хотел предотвратить заражение одной и той же машины так как это привело-бы к замедлению инфицированных машин, а также привлекло бы ненужное внимание. Но самый очевидный путь сделать что-то подобное - это сделать так чтобы инфицированные машины публично отображали свой статус инфицированности другим червям, а это помогло-бы выявить и отказать в доступе червю. Для решения этой дилеммы, Моррис думал, что ему надо собрать "глобальную базу данных" инфицированных компьютеров. Однако он признал, что сделать это очень трудно.

Через две недели он запустил червя. Однако были реализованы лишь некоторые идей. Ему не удалось создать командную систему управления, которая позволила бы ему передавать команды инфицированным машинам. В коде была заложена возможность маяка к определенному компьютеру в Беркли, которая была частью запланированной командной системы управления. Но, благодаря программной ошибке, даже эта подпрограмма не работала.

Моррис внедрил в код механизм, предотвращающий запуск нескольких копий червя на одной и той же машине. Если два червя находили друг друга на одной же машине, они могли бросить виртуальную монету и, потом проигравшая копия червя могла совершить электронный сэппуку.

Но Моррис модифицировал эту схему таким образом, что она стала неэффективной. В каждом случае из семи, рандомно выбранный проигравший червь мог сделать себя бессмертным, вместо совершения суицида. "Видимо это было сделано для того, чтобы предотвратить любую попытку запустить поддельного червя на TCP порту, чтобы убить существующего червя," пишет Спаффорд. Но это подорвало первоначальную цель самоуничтожающей схемы: предотвращение заражения одной и той же машины несколькими червями. В результате, утром 3 ноября популяция червей росла в геометрической прогрессии на компьютерах, исчерпавших свои ресурсы от запуска стольких копий.

Также Моррис предпринял ряд мер для того, чтобы усложнить выявление и удаление копий червей. Например, как только червь заражал новую машину, он мог зашифровать файлы, которые были использованы для инфицирования, а также удалить следы с файловой системы. Также червь мог периодически убивать свой же процесс и возрождать его вновь, так что он не показывался в списке длительных процессов (long-running processes).

Моррис, заключает Спаффорд, "возможно и был умеренно опытным Unix программистом, но никак не 'волшебником Unix', как многие утверждали." Для создания червя требуются значительные усилия, а также нетривиальные знания. Хотя Моррис совершил ряд ошибок, присущих новичку. "Червь мог-бы стать более опасным если бы у автора было больше опыта или он меньше торопился в кодинге," пишет Спаффорд.

Фотография сделана Терри Росс

Интернет потерял свою невинность

Червь Морриса потряс молодой Интернет, где в те времена было меньше чем 100 000 компьютеров. "Это было больше Северо-Американской сетью," пишет Спаффорд. "Большинство людей имели некоторую связь с вычислениями по работе. Я не могу сказать, что мы доверяли друг другу, но у многих из сообщества было чувство заботы о стабильности и соответствующем использовании компьютерной системы."

Сетевые администраторы в 1988 году предприняли ряд мер против онлайн атак. "Но тогда не было такого понятия как файервол," говорит Спаффорд. "Тогда не было людей, относящихся к вандалам или анархистам или криминалу. Было много публичных серверов потому что университеты обменивались большим количеством информации и ресурсами."

Моррис предстает пред судом

Насколько нам известно, Моррис никогда не разговаривал с прессой насчет инцидента, сделавшего его знаменитым. Верный себе, он не отвечает нашей просьбе касательно интервью. Но многие согласны в том, что у него не было никаких злых намерений, подобных тем, которые бывают у современных создателей червей. Главный его мотив - интеллектуальное любопытство, но не желание сделать из этого себе выгоду. Моррис мог сделать так, чтобы черви уничтожали файлы или крали секреты на инфицированных машинах, но ничего подобного он не делал.

Но очевидное отсутствие злого умысла не спасло Морриса от судебного преследования по обвинению в компьютерном мошенничестве, этот закон был принят Конгрессом в 1986 году. Адвокат, который занимался этим случаем, Марк Раш, говорит, что он и его коллеги из министерства юстиции тщательно обговорили стоит-ли рассматривать этот случай в качестве проступка или же наоборот в качестве уголовного преступления.

"Мы не считаем, что Моррис хотел причинить вред или ущерб," говорит Раш. С его точки зрения, Моррис был "мотивирован больше любопытством нежели желанием показать, что он мог сделать это."

С другой стороны, Министерство Юстиции было обеспокоено тем, что "если правительство отнесется к этому как к проступку или малозначительному преступлению, то другие тоже могут сделать это," говорит Раш. "Это точно было спланированным, преднамеренным поступком, причинившее большие разрушения и расходы большому количеству индивидуалов." Правительство считало, что за это кто-то должен был ответить.

Таким образом Моррис был обвинен в уголовном преступлении по одному показателю.

(original - Как аспирант, пытаясь создать ботнета, опустил Интернет на колени.)