- •Безопасность
- •Аппаратное обеспечение
- •Программное обеспечение
- •Линии связи и сети
- •15.2. Защита
- •Защита памяти
- •Контроль доступа, ориентированный на пользователя
- •Контроль доступа, ориентированный на данные
- •15.3. Взломщики
- •Методы вторжения
- •Защита паролей
- •Уязвимость паролей
- •Контроль доступа
- •Стратегии выбора паролей
- •Выявление вторжений
- •15.4. Зловредное программное обеспечение
- •Зловредные программы
- •Логические бомбы
- •Троянские кони
- •Природа вирусов
- •Виды вирусов
- •Макровирусы
- •Подходы к борьбе с вирусами
- •Обобщенное дешифрование
- •Цифровая иммунная система
- •15.5. Системы с доверительными отношениями
- •Защита от троянских коней
- •15.6. Безопасность операционной системы windows 2000
- •15.7. Резюме, ключевые термины и контрольные вопросы
- •Контрольные вопросы
- •15.8. Рекомендуемая литература
- •Приложение. Шифрование
- •Стандартное шифрование
- •Стандарт шифрования данных
- •Тройной алгоритм шифрования данных
- •Улучшенный стандарт шифрования
- •Шифрование с открытым ключом
- •А.2. Архитектура протоколов tcp/ip
- •Уровни протокола tcp/ip
- •Приложения tcp/ip
- •Б.1. Мотивация
- •Б.З. Преимущества объектно-ориентированного подхода
- •Б.2. Объектно-ориентированные концепции
- •Структура объектов
- •Классы объектов
- •Наследование
- •Полиморфизм
- •Включение
- •Список литературы
15.4. Зловредное программное обеспечение
Вероятно, наиболее изощренные угрозы для компьютерных систем представляют программы, исследующие их уязвимые места. Общее название угроз такого вида — зловредные программы (malicious software или malware). Зловредные программы — это программы, которые предназначены для того, чтобы причинить вред или использовать ресурсы компьютера, выбранного в качестве мишени. Они часто маскируются в легальных программах или выдаются за них. В некоторых случаях они распространяются сами по себе, переходя на другие компьютеры по электронной почте или через зараженные файлы или дискеты.
В начале этого раздела представлен обзор таких программных угроз; остальная часть раздела посвящена вирусам. Сначала мы познакомимся с их природой, а затем — с возможными контрмерами.
Зловредные программы
На рис. 15.7 представлена общая систематизирующая схема зловредных программ. Угрозы этого вида можно разделить на две категории: те, которые используют программу-носитель, и те, которые являются независимыми. К первой категории в основном относятся фрагменты программ, которые не могут существовать независимо от программы-носителя, в роли которой может выступать приложение, утилита или системная программа. Ко второй категории относятся отдельные независимые программы, которые могут планироваться и запускаться операционной системой.
Опасные программы разделяются на такие, которые не воспроизводят себя, и такие, которые делают это. К программному обеспечению первого вида относятся фрагменты программ, которые должны активизироваться во время определенных действий главной программы. В программное обеспечение второго вида входят либо фрагменты программ (вирусы), либо независимые программы (черви), способные при запуске создавать одну или несколько копий самих себя; эти копии позже активизируются в этой же или в какой-то другой системе.
Хотя представленная на рис. 15.7 систематика полезна для усвоения обсуждаемой информации, она не дает полной картины. В частности, логические бомбы или троянские кони также могут быть составной частью вирусов или червей.
Люки
Люк — это скрытая точка входа в программу, которая позволяет каждому, кто о ней знает, получать доступ к программе в обход обычных процедур, предназначенных для обеспечения безопасности. Многие годы люки использовались программистами для отладки и тестирования программ. Обычно это происходит тогда, когда программист разрабатывает приложение, в которое входит процедура регистрации, или которое нужно долго настраивать, вводя при запуске много различных значений. Разработчик может захотеть предоставить программе, предназначенной для отладки, особые привилегии или иметь возможность избегать процесса настройки и аутентификации. Программисту также может понадобиться иметь в своем распоряжении надежный метод, позволяющий активизировать программу в случае возможных сбоев в работе встроенной в приложение процедуры регистрации. Люк — это код, распознающий некую особую последовательность входных данных или включающийся при запуске с определенным идентификатором пользователя, либо в результате маловероятной последовательности событий.
Если люки используются недобросовестными программистами для получения несанкционированного доступа, они становятся угрозой. Именно ловушка послужила основной идеей уязвимости, изображенной в фильме "Военные игры" (War Games) [COOP89]. В качестве другого примера можно привести случай, произошедший при разработке системы Multics, испытание на проникновение в которую проводилось группой "tiger team" (команда тигров) военно-воздушных сил США, изображавшей противника. Один из тактических ходов заключался в том, чтобы отправить на узел, работающий под управлением Multics, подложную обновленную версию операционной системы. Версия содержала в себе троянского коня (эти программы описаны далее), которого можно было активизировать с помощью люка, и который позволил команде получить доступ к системе. Угроза была реализована так хорошо, что разработчики системы Multics не смогли найти ее даже тогда, когда их проинформировали об ее наличии [ENGE80].
Очень трудно выявлять люки в операционной системе. Меры безопасности должны предприниматься в основном на этапах разработки и обновления программ.