Компьютерные вирусы можно сравнить с какой-нибудь не слишком значительной проблемой — они почти как случайная аллергия, от которой можно не сложно избавиться, но и подхватить легко. Гуляешь по городу, кто-то чихнул — и на тебе, простуда. Примерно так же обстоят дела в интернете: окажешься не в то время не в том месте, и почти наверняка на компьютере заведутся «неправильные килобайты».
Когда-то давно, когда компьютеры уже «шагали по стране» (в экономически развитых регионах), а интернет только начинался (в виде той же NSFNET), возможность подхватить «кремниевую заразу» через сеть особенно не рассматривалась. Конечно, вирусы (сегодня мы будем называть вирусами все вредоносное ПО) давно существовали, но их активность отчасти можно было контролировать, так как способов их распространения было относительно немного.
Все изменилось с появлением червя Морриса в ноябре 1988-го. Он не проектировался как сверхэффективный вирус, но стал таковым из-за ошибки его создателя, а также беспечности админов — они не были готовы к появлению подобного вредоноса. Итог — до $100 млн экономического ущерба. Правда, вокруг этой суммы ходит много споров.
Червь Морриса получил такое название по имени своего создателя — Роберта Морриса. Роберт родился в 1965 году, его отец был специалистом в области криптографии, работал в Bell Labs и помогал в разработке Multics и Unix. То есть будущему программисту было у кого поучиться.
Роберт показывал хорошие успехи в школе, поэтому постигать азы науки парня отправили в Гарвард, после чего он продолжил получать образование в Корнеллском университете. Будучи студентом первого курса этого учебного заведения, Моррис-младший и натворил дел. «Все в познавательных целях», — уверял позже Роберт.
Дополнительной драмы добавляло то, что его отец в то время уже являлся сотрудником Агентства национальной безопасности. Он занимал руководящий пост в подразделении, ответственном за IT-безопасность систем федерального правительства.
Червь Морриса нередко называют первым сетевым червем, однако он может считаться таковым лишь потому, что это первая подобная программа, расползшаяся чуть ли не по всему интернету. Интернет, напомним, тогда был совсем небольшим и имел мало общего с тем, что позже придумал Тим Бернерс-Ли.
Роберт задумывал свое детище якобы как экспериментальный проект. Он должен был измерить тот самый интернет — об этом программист заявил позже. Оригинальный мотив в 1988 году мог быть иным. На это указывает и то, что парень тщательно пытался замести следы, отправляя червя в свободное плавание из кампуса MIT, а не из своей альма-матер.
Код писался для запуска на компьютерах VAX компании Digital Equipment Corporation и SUN под управлением BSD UNIX. Роберт использовал несколько уязвимостей, в том числе в программах sendmail (отвечает за работу с электронной почтой) и fingerd (получение некоторых данных о пользователе). Также эксплуатировались иные дыры, позволявшие узнать пароли локального пользователя.
В sendmail, например, после ряда исправлений имелся баг: в определенных условиях можно было запустить дебаг (внезапно: отправив команду debug). Тогда sendmail позволяла вместо адресов указывать дополнительные инструкции. На деле, конечно, все не так просто, но и особых изысков Роберту придумывать не пришлось.
Парень посчитал, что админы очень скоро заметят вторжение и предпримут шаги для защиты. Например, заставят червя думать, что его копия уже установлена. 23-летний программист учел и это. Его код действительно проверял наличие копии себя на чужом компьютере, однако в 14% случаев устанавливался, невзирая на полученный отклик. Есть фейк? Все равно установлюсь. Есть другая копия? Да кто ж поймет, все равно установлюсь.
Оказавшись на удаленном компьютере (первыми под удар попали знакомые ему скрытые университетские и исследовательские сети), червь сканировал окружение на наличие других компьютеров и копировался на них. Роберт не ожидал прыти, которую продемонстрировал его код. Ведь условие 14%, как несложно догадаться, хоть и выполнялось, но было бессмысленным: программа наматывала бесконечные «круги» по сети.
Серверы тем временем раз за разом выполняли бесконечные команды, подаваемые червем, полностью парализующим работу систем: программа Морриса работала исключительно в оперативной памяти. Данный факт также не позволял изучить файлы червя, которые удалялись в случае отключения. В дампах обнаружить проблему не удавалось, так как червь отключал сбор подобной информации. fork, в свою очередь, решал проблему с поиском вредного процесса, который регулярно менял название.
Заново включенный в сеть компьютер опять становился жертвой, и самым эффективным способом справиться с напастью в тот момент было полное отключение компьютера от сети. Только после этого администраторы могли убрать нагрузку и «вылечить» машину. Если знали, что и где искать.
Роберт Моррис испугался того, что натворил. Как следует из отчета по итогам расследования инцидента, он предпринял попытки остановить эпидемию («рубильник», самой собой, предусмотрен не был), но не слишком активные. Студент не стал во всеуслышание рассказывать о черве и информировать ответственных, однако позвонил приятелю с просьбой опубликовать анонимные извинения и руководство по «лечению».
Инженеры из Беркли активно работали над поиском и препарированием компонентов программы. Через 12 часов им удалось продумать все необходимые алгоритмы и подготовить заплатки, однако их распространению мешал… да, червь Морриса, из-за которого целые сети либо «лежали», либо были отключены от внешнего мира. Потребовалось несколько дней, чтобы успокоить бурю, поднятую начинающим программистом.
Для понимания масштабов «шухера», который натворил червь, перечислим агентства, организации и ведомства, привлеченные к решению проблемы. Это Центр национальной компьютерной безопасности, Национальный институт науки и технологий, Агентство военной связи, DARPA, Министерство энергетики США, Лаборатория баллистических исследований (?), Ливерморская национальная лаборатория имени Лоуренса, ЦРУ, Калифорнийский университет в Беркли, Массачусетский технологический институт, институт SRI International и ФБР.
Считается, что червь Морриса заразил около 6 тыс. компьютеров — примерно 10% от всех, что были подключены в то время к интернету. Ущерб в зависимости от важности владельцев компьютеров оценивали в диапазоне от $200 до $53 тыс. за систему (традиционно речь идет о «предполагаемом», то есть гипотетическом ущербе). Власти называли общую сумму ущерба в диапазоне от $100 тыс. до $10 млн, которая с годами превратилась в $95—100 млн и 60 тыс. зараженных компьютеров. Более вероятными представляются все же первоначально озвученные цифры.
На определение авторства ушло время. Есть версия, согласно которой отец 23-летнего парня рекомендовал ему самому рассказать о себе властям. Походит на правду, учитывая пост Морриса-старшего и его непосредственную связь с правительством и нацбезопасностью.
Как бы то ни было, в 1989 году Роберт предстал перед судом, став первым человеком, обвиненным по новой статье о компьютерных преступлениях — Computer Fraud and Abuse Act. Ему грозило до пяти лет тюрьмы и четверть миллиона долларов штрафа. Он отделался тремя годами условно, $10 тыс. штрафа и 400 часами общественных работ (такое наказание программист посчитал чрезмерным, но апелляцию отклонили).
Почему Моррис избежал реального срока, которого требовала общественность? Потому что у Роберта не было преступного замысла, он ничего не скрывал. Все выглядело так, будто человек, используя набор безобидных компонентов, собрал что-то смертельно опасное, но как бы случайно, не желая того. Примерно так действует бинарное оружие. В защиту парня выступил и разработчик sendmail (а также delivermail) Эрик Оллман. По его словам, «ловушка схлопнулась» из-за комбинации нескольких безобидных функций.
В материале The New York Times говорилось о том, что Моррис действовал под впечатлением от научно-фантастического романа Джона Браннера Shockwave Rider. В нем описывался «червь» — программа, призванная вывести из строя контролируемый авторитарным правительством компьютер, лишив его власти. Кстати, именно благодаря этому произведению и появился термин «компьютерный (сетевой) червь».
Считается, что история с червем Морриса подняла несколько не очевидных тогда моментов развития интернета и распространения компьютеров. Оказалось, что вирусы могут быть разными и очень заразными, а бороться с ними не так уж просто. Пользователи узнали о темной стороне сети, а власти поняли, что существующие системы безопасности могут выйти из строя в мгновение ока и поделать с этим ничего нельзя.
Роберт Моррис, в свою очередь, пережил свалившуюся на него популярность. Спустя шесть лет после инцидента он основал стартап Viaweb, который был продан Yahoo! за $49 млн. Моррис воспользовался случаем, взял перерыв, отучился и получил степень, сразу устроившись на работу в MIT.
В 2005 году он с давним партнером Полом Грэмом основал Y Combinator и продолжил академическую карьеру. Из последних его достижений можно отметить тот факт, что в 2019 году Моррис стал членом Национальной инженерной академии США. Хороший был старт, хотя несколько темных пятен в истории осталось.
Источники: People Pill, Mapcon, Business Insider, The New York Times, SciHi, Sentrian, Ryerson University.
Читайте также:
Библиотека Onliner: лучшие материалы и циклы статей
Наш канал в Telegram. Присоединяйтесь!
Быстрая связь с редакцией: читайте паблик-чат Onliner и пишите нам в Viber!
Перепечатка текста и фотографий Onliner без разрешения редакции запрещена. nak@onliner.by