
- •Минобрнауки россии
- •Содержание
- •Раздел 1. Современные методы защиты Тема 1. Криптографические методы защиты данных
- •1.1. Основные типы криптографических протоколов
- •1.2 Симметричная и асимметричная криптография.
- •1.3. Подстановочные и перестановочные шифры
- •Рекомендуемая литература:
- •Тема 2. Симметричные криптографические системы
- •2.1. Стандарт шифрования des
- •Режимы использования шифра des
- •Увеличение криптостойкости алгоритма
- •Применение шифра des
- •2.2. Стандарт шифрования гост 28147-89
- •Рекомендуемая литература:
- •Тема 3. Асимметрические криптографические системы
- •3.1. Алгоритм rsa
- •3.2. Шифр Эль-Гамаля
- •3.3. Основные результаты по анализу стойкости
- •Рекомендуемая литература:
- •Раздел 2. Практические вопросы защиты операционных систем Тема 1. Причины существования уязвимостей в Unix-системах
- •1.1. Краткая история Unix
- •1.2. Уязвимости операционных систем
- •1.3. Технология переполнения буфера
- •Рекомендуемая литература:
- •Тема 2. Проекты безопасности для Linux
- •2.1. Проект openwall
- •2.2. Проект pax
- •2.3. Проект medusa
- •Рекомендуемая литература:
- •Тема 3. Мандатные модели в Linux
- •3.1. Rsbac
- •3.2. Type Enforcement
- •3.3. Сравнение rsbac и seLinux.
- •Рекомендуемая литература:
- •Заключение
- •Список литературы
1.2. Уязвимости операционных систем
Наиболее распространенная в настоящее время на подключенных к интернету компьютерах операционная система Microsoft Windows содержит множественные опасные уязвимости. Чаще всего хакерами используются уязвимости в IIS (Internet information Services по версии 5.1, после – Internet Information Server), MS SQL (система управления реляционными базами данных.SQL – структурированный язык запросов) и Internet Explorer (браузер), а также системах обработки файлов и сервисах сообщений самой операционной системы.
Чаще всего используют уязвимости Windows в IIS. За последнее время было написано большое количество сетевых червей, которые используют эту уязвимость. Самы извесный из них – CoreRed. Впервые был обнаружен 17 июля 2001 года, и, по некоторым источникам, заразил около 300 тысяч компьютеров, помешал работе множества предприятий и нанес колосальный финансовый ущерб организациям по всему миру.
Сетевой червь Spida, обнаруженный спустя почти год после появления CodeRed, использовал для своего распространения открытость в MS SQL. Некоторые стандартные инсталляции MS SQL не защищали паролем системный аккаунт «SA», позволяя любому человеку с доступом к системе через сеть запускать на ней на исполнение произвольные команды. При использовании этой уязвимости, червь открывает аккаунту «Guest» полный доступ к файлам компьютера, после чего производит загрузку самого себя на заражаемый сервер.
Сетевой червь Slammer, обнаруженный в конце января 2003 года, использовал более простой способ заражения компьютеров под управлением Windows с работающим сервером MS SQL, а именно — уязвимость при переполнении буфера в одной из подпроцедур обработки UDP-пакетов. Поскольку червь был достаточно мал — всего 376 байт — и использовал протокол UDP, предназначенный для быстрой пересылки малых объемов данных, Slammer распространялся с невероятной скоростью. По некоторым оценкам, Slammer поразил порядка 75 тысяч компьютеров по всему миру за первые 15 минут эпидемии.
Три этих характерных сетевых червя использовали уязвимости и открытости в программах, работающих на разных версиях Microsoft Windows, в то время как обнаруженный 11 августа 2003 года червь Lovesan использовал для своего распространения гораздо более опасную уязвимость при переполнении буфера в одном из основных компонентов самой Windows.
Sasser, впервые появившийся в мае 2004 года, использовал еще одну уязвимость в компоненте ядра Windows, в службе Local Security Authority Subsystem Service (LSASS). Sasser распространялся молниеносно и заразил миллионы компьютеров, причинив огромный финансовый ущерб.
Разумеется, все операционные системы содержат уязвимости и открытости, которые могут быть использованы хакерами и создателями вирусов в своих целях. Хоть уязвимости Windows и получают наибольшее освещение из-за огромного числа компьютеров, работающих под управлением этой операционной системы, свои слабые места есть и у UNIX.
Одной из наиболее распространенной открытости в мире UNIX была служба finger. Эта служба позволяет пользователям вне какой-либо сети видеть, кто в настоящее время к этой сети подключен, с каких компьютеров и какие сетевые ресурсы используются. Finger полезен, но раскрывает слишком много интересной хакерам информации.
Вот пример того, как выглядит результат работы службы finger:
Login Name Tty Idle Login Time Office xenon pts/7 22:34 May 12 16:00 (chrome.chiba) polly pts/3 4d May 8 14:21 cracker DarkHacker pts/6 2d May 10 11:58
Исходя из данных, представленных в таблице, можно заметить, какая информация доступна всем пользователям, умеющим пользоваться службой finger:
- к сети подключено три пользователя;
- два из них не обращались к ресурсам уже более двух суток;
- последний отошел от компьютера 22 минуты назад.
В дальнейшем все логины можно будет использовать в подборе пароля. Так как зачастую пароль составляется: логин+какие-либо символы в конце.
Служба finger не только открывает важную информацию о сервере, на котором она работает, но является целью множества эксплойтов, одним из которых пользовался самый первый сетевой червь, созданный Робертом Моррисом (Robert Morris) 2 ноября 1988 года. По этой причине большинство современных дистрибутивов UNIX поставляются с отключенным сервисом finger.
В мире UNIX есть множество других часто используемых уязвимостей в программных пакетах вроде SSH, Apache, WU-FTPD, BIND, IMAP/POP3 и в различных частях ядра ОС.
Из вышеперечисленного, можно сделать вывод, что сетевой червь или иная автоматизированная хакерская утилита, распространяющаяся через уязвимости в подключенных к интеренету компьютерах под управлением Windows, число которых невероятно велико, представляет собой серьезную опасность в стабильности и работоспособности всего интернета.
Причины существования уязвимостей в UNIX-системах
Наличие демонов;
Механизм SUID/SGID-процессов;
Излишнее доверие;
Человеческий фактор (ошибки пользователей или администратора).
Рис.1.1. Причины уязвимости UNIX
Самые уязвимые части идеалогии Unix являются 1 и 2 механизмы, так как пользователь в этих случаях взаимодействует с процессами, имеющие большие привилегии, а следовательно любая ошибка автоматически ведет к использованию этих привилегий.
Причины, по которым демоны и SUID/SGID-процессы становятся уязвимыми:
Возможность возникновения непредусмотренных ситуаций, связанных с ошибками или недоработками в программировании.
Наличие скрытых путей взаимодействия с программой, называемых "люками".
Возможность подмены субъектов и объектов различным образом.
К первому пункту можно отнести классическую ситуацию с переполнением буфера или размерности массива. Заметим сразу, что конкретные атаки, несмотря на универсальность способа, всегда будут системозависимыми и ориентированными только на конкретную платформу и версию UNIX.
Люком или "черным входом" (backdoor) часто называют оставленную разработчиком недокументированную возможность взаимодействия с системой (чаще всего - входа в нее), например, известный только разработчику универсальный "пароль". Люки оставляют в конечных программах вследствие ошибки, не убрав отладочный код, или вследствие необходимости продолжения отладки уже в реальной системе из-за ее высокой сложности, или же из корыстных интересов. Люки - это любимый путь в удаленную систему не только у хакеров, но и у журналистов, и режиссеров вместе с подбором "главного" пароля перебором за минуту до взрыва, но, в отличие от последнего способа, люки реально существуют. Классический пример люка - это, конечно, отладочный режим в sendmail*.
*Вирус использовал функцию "debug" программы sendmail, которая устанавливала отладочный режим для текущего сеанса связи. Дополнительная возможность отладочного режима заключается в том, чтобы посылать сообщения, снабженные программой-получателем, которая запускается на удаленной машине и осуществляет прием сообщения. Эта возможность, не предусмотренная протоколом SMTP, использовалась разработчиками для отладки программы и в рабочей версии была оставлена по ошибке. Вследствие чего, была доступна для атаки. Спецификация программы, которая будет выполняться при получении почты, содержится в файле псевдонимов (aliases) программы sendmail или в пользовательском файле .forward. Такая спецификация используется программами, обрабатывающими или сортирующими почту, и не должна применяться самой программой sendmail. В вирусе эта программа-получатель содержала команды, убирающие заголовки почты, после чего посылала остаток сообщения командному интерпретатору, который создавал, компилировал и выполнял программу на языке С, служившую "абордажным крюком", и та, в свою очередь, принимала оставшиеся модули из атакующей машины. Вирус заражал компьютеры двух типов - VAX и Sun, поэтому пересылались двоичные коды для каждой архитектуры, оба запускались, но исполняться мог только один. В компьютерах других архитектур программы не могли функционировать, хотя и поглощали системные ресурсы в момент компиляции.
Многие особенности UNIX, такие как асинхронное выполнение процессов, развитые командный язык и файловая система, позволяют использовать механизмы подмены одного субъекта или объекта другим. В примере с Sendmail применялась замена имени файла или имени получателя на имя программы. Так и тут, может быть выполнена замена специальных переменных.Для некоторых версий Unix существует атака, связанная с подменой IFS (internal field separator - символ разделителя команд или функций) на символ "/". Это приводит к следующему: когда программа вызывает /bin/sh, вместо него вызывается файл bin с параметром sh в текущем каталоге. Весьма популярной подменой в Unix системах является создание ссылки (link)на критичный файл. После этого файл-ссылка некоторым образом получает дополнительные права доступа, и тем самым осуществляется несанкционированный доступ к исходному файлу.
И, конечно же, не стоит забывать о роли человека в обеспечении безопасности системы. Неправильное администрирование – весьма актуальная проблема, а для Unix она особо критична, так как сложность администрирования Unix систем давно уже всем известна, обычно этим и пользуются конкуренты. Но за все надо платить, а это – обратная сторона переносимости и гибкости Unix.
Настройка некоторых приложений давольно сложная процедура. Поэтому для поддержания работоспособности необходим специальный целовек – системный администратор, но даже он не всегда знает обо всех тонкостях тех или иных приложений, правильности их настройки.