Илья Медведовский - Атака на Internet
- Название:Атака на Internet
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Илья Медведовский - Атака на Internet краткое содержание
Эта книга является одним из первых специализированных изданий, написанных отечественными авторами, которое посвящено обстоятельному анализу безопасности сети Internet. В книге предлагаются и подробно описываются механизмы реализации основных видов удаленных атак как на протоколы TCP/IP и инфраструктуру Сети, так и на многие популярные сетевые операционные системы и приложения.
Особое внимание авторы уделили причинам возникновения и успеха удаленных атак, а также их классификации. Были также рассмотрены основные способы и методы защиты от удаленных атак.
Издание предназначено для сетевых администраторов и пользователей Internet, администраторов безопасности, разработчиков систем защит, системных сетевых программистов, студентов и аспирантов вузов, а также для всех интересующихся вопросами нарушения и обеспечения информационной безопасности компьютерных сетей.
Атака на Internet - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Процедура l1.c – «абордажный крюк»
Все процедуры атаки использовали эту короткую процедуру для пересылки основной части вируса.
Первое, что она делает, – удаляет свой образ на диске. Затем она проверяет наличие трех аргументов (если их нет, то завершается), после чего закрывает все файловые дескрипторы и разветвляется на два процесса (если это не удается, она также завершается). Процесс-родитель завершается, не оставляя никаких связей с порожденным процессом.
Далее процедура (процесс-потомок) создает TCP-соединение с заражаемой машиной по адресу, заданному в качестве первого аргумента, через порт, заданный вторым аргументом. Затем она пересылает на зараженную машину «магическое число», заданное третьим аргументом. Каждый аргумент стирается сразу после его использования. Далее стандартный ввод-вывод переназначается на канал связи с зараженной машиной.
Следующий этап – считывается длина и имя каждого файла, составляющего вирус. Каждый файл пересылается с зараженной машины на текущую. При возникновении сбоев все файлы удаляются.
По окончании цикла пересылки файлов запускается Bourne Shell (sh), замещающий программу 11 и получающий команды с зараженной машины.
Может быть, после такого детального рассмотрения алгоритмы, применяемые червем Морриса, кажутся неуклюжими и запутанными, вероятно, что-то можно было сделать проще и эффективнее. Тем не менее они реализовывали все процедуры, необходимые настоящему сетевому вирусу, чего за 10 лет никому повторить не удалось – ни в рамках UNIX-архитектуры, ни в какой другой. Сегодня «троянские» программы, попадающие к незадачливому пользователю с электронной почтой и т. п., который сам их запускает и инициирует таким образом дальнейшее размножение, иногда называют «новыми сетевыми червями» (особенно в ОС семейства Windows). Но «троянцы» не могут размножаться без участия человека и не являются сетевыми червями по определению.После червя
Подбор пароля
Вирус Морриса заставил по-новому взглянуть на вопросы компьютерной безопасности. Были предприняты шаги не только по закрытию тех брешей, которые он использовал, но и по поиску и классификации причин их появления в UNIX-системах. Также была выявлена необходимость создания некоторого координационного органа, в котором бы накапливалась и систематизировалась информация о различных компьютерных инцидентах, применяемых методах атак и способах защиты от них. Вскоре такой центр CERT (Computer Emergency Response Team) был создан, и первым появившимся в декабре 1988 года бюллетенем стало сообщение об уязвимостях, использованных червем.
Однако и компьютерные взломщики совершенствовали свои методы. Одной из наиболее популярных стала атака с подбором пароля другого пользователя. Ей активно пользовался и вирус Морриса, но, либо развив его идеи, либо создаваясь независимо, вскоре появилось множество программ, занимавшихся подбором пароля к UNIX-машине. И долгое время слова «взломать UNIX» означали запустить взломщик (cracker) паролей.
Как известно, в файле /etc/passwd лежит ключевая информация обо всех пользователях системы, включая входное имя, пароль, полное имя и т. п. Даже в 70-х годах, когда создавались первые версии UNIX, разработчикам было понятно, что пароль пользователя нельзя хранить в открытом виде. Они придумали схему, благодаря которой целенаправленные атаки на то, к чему всегда стремится не очень добропорядочный пользователь – завладеть паролем другого, смогли реализоваться лишь спустя 15 лет. Создатели не шифровали пароль по какому-то секретному алгоритму, так как рано или поздно он стал бы известен очередному не в меру любопытному, но в меру грамотному программисту, который смог бы расшифровать все пароли. Они выбрали путь необратимого преобразования пароля, когда из исходного пароля путем применения к нему специальной однонаправленной функции, называемой хэшированием, получалось значение, из которого никак нельзя получить исходный пароль. Более того, разработчики взяли математически криптостойкий алгоритм DES и на основе его создали функцию crypt(), преобразующую пароль в строку, расположенную в файле /etc/passwd. Эту функцию написал, кстати, Роберт Моррис-старший.
Итак, рассмотрим немного подробнее алгоритм, применяемый UNIX для преобразования пароля пользователя. Кстати, этот алгоритм до сих пор используется в большинстве *IX.
Из исходного пароля берутся первые восемь байт. Также выбирается 12-битная случайная привязка (salt), используемая при операции хэширования. Она нужна для того, чтобы одинаковые пароли (возможно, у разных людей) не выглядели одинаково после хэширования. Затем к этим двум параметрам применяется специальная функция шифрования, состоящая из 25 повторений чуть измененного алгоритма DES (чтобы исключить использование аппаратных плат, реализующих классический DES; однако такие изменения могли стоить разработчикам ослабления криптостойкости их функции, но, к счастью, этого не случилось), которая дает на выходе 64-битное значение.
Наконец, сама привязка преобразуется в два читабельных ASCII-символа, а хэш – в 11 символов. Итак, функция char* crypt (char* passwd, char* salt) выдает 13-символьную строчку, которая и записывается в файл /etc/ passwd.
При входе пользователя в систему вызывается та же функция crypt() с введенным паролем и привязкой, полученной из /etc/passwd. Если результат оказывается равным значению, хранящемуся в файле, то аутентификация считается состоявшейся.
После анализа этой схемы первое, что приходит в голову потенциальному взломщику (если он верит в невозможность обратного преобразования хэша в пароль), – перебор. Берется некоторый набор символов (например, прописные и строчные буквы, цифры и специальные символы типа знаков препинания – всего получается 94 символа), а затем из них по очереди составляются все комбинации вплоть до 8-символьной длины. К каждой из них применяется crypt(), и результат сравнивается с имеющимся. Естественно, что в эти комбинации рано или поздно попадет любой пароль пользователя.
Обрезание пароля до 8 значимых символов, конечно, резко ограничивает множество для перебора, но для тех времен это было вполне допустимо, так как функция crypt() была реализована заведомо неэффективно и время одного ее выполнения доходило до одной секунды на машине класса PDP. Таким образом, в среднем злоумышленник потратил бы на поиск пароля
или около 100 миллионов лет. Если же в качестве множества символов взять прописные латинские буквы (наиболее часто используемое множество), то время перебора составило бы в среднем
или «всего» 3 440 лет. Заметим, однако, что на сегодняшний день скорость оптимизированной функции crypt() на средней машине класса Pentium/166 MMX составляет примерно 15 000 crypt/с, то есть она за 20 лет повысилась в 15 000 раз.
Читать дальшеИнтервал:
Закладка: