Основные способы защиты операционных систем от несанкционированного доступа
Условия возникновения ресурсных взаимоблокировок. Вирус как фрагмент самостоятельно размножающегося программного кода, который наносит какой-нибудь вред. Основные способы криптографической защиты информации. Характеристика принципа работы домена.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 20.06.2015 |
Размер файла | 280,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
1. Понятие взаимоблокировки
- аппаратная взаимоблокировка
- программная взаимоблокировка
Объекты, к которым предоставляется доступ, называются ресурсами.
Типы ресурсов:
Выгружаемые: могут быть безболезненно отобраны у процесса, который ими обладает.
Невыгружаемые: нельзя отобрать у его текущего владельца, не вызвав сбоя в вычислениях.
Последовательность событий при запросе ресурса
- Запрос ресурса.
- Использование ресурса.
- Высвобождение ресурса.
Поведение процесса при недоступности ресурса.
Варианты поведения процесса:
- запрашивающий процесс переходит к ожиданию;
- в некоторых ОС процесс автоматически блокируется до получения ресурса;
- иногда отказ в выделении запрашиваемого ресурса сопровождается кодом ошибки, и принятие решения о том, что следует делать, возлагается на вызывающий процесс.
Далее считаем, что процесс при отказе в выделении ресурса впадает в спячку.
Определение взаимоблокировки
Взаимоблокировка в группе процессов возникает в том случае, если каждый процесс из этой группы ожидает события, наступление которого зависит исключительно от другого процесса из этой же группы.
Условия возникновения ресурсных взаимоблокировок.
- Условие взаимного исключения. Каждый ресурс либо выделен в данный момент только одному процессу, либо доступен.
- Условие удержания и ожидания. Процессы, удерживающие в данный момент ранее выделенные им ресурсы, могут запрашивать новые ресурсы.
- Условие невыгружаемости. Ранее выделенные ресурсы не могут быть принудительно отобраны у процесса. Они должны быть явным образом высвобождены тем процессом, который их удерживает.
- Условие циклического ожидания. Должна существовать кольцевая последовательность из двух и более процессов, каждый из которых ожидает высвобождения ресурса, удерживаемого следующим членом последовательности.
Моделирование взаимоблокировок по Холту
Процессы - окружностями;
Ресурсы - квадратами;
Направленное ребро, которое следует от узла ресурса к узлу процесса, означает, что этот ресурс был ранее запрошен, получен и на данный момент удерживается этим процессом;
Направленное ребро, идущее от процесса к ресурсу, означает, что процесс в данное время заблокирован в ожидании высвобождения этого ресурса.
Рис. 1. Примеры моделей по Холту: (а) ресурс занят; (б) запрос ресурса; (в) взаимоблокировка
2. Стратегии борьбы с взаимоблокировками
- Игнорирование проблемы. Может быть, если вы проигнорируете ее, она проигнорирует вас.
- Обнаружение и восстановление. Дайте взаимоблокировкам проявить себя, обнаружьте их и предпримите необходимые действия.
- Динамическое уклонение от них за счет тщательного распределения ресурсов.
- Предотвращение за счет структурного подавления одного из четырех необходимых условий для их возникновения.
• Суть алгоритма:
Алгоритм берет поочередно каждый узел в качестве корневого, в надежде, что из этого получится дерево, и выполняет в дереве поиск в глубину. Если в процессе обхода алгоритм возвращается к уже встречавшемуся узлу, значит, он нашел цикл. Если алгоритм обходит все ребра из какого-нибудь заданного узла, то он возвращается к предыдущему узлу. Если он возвращается к корневому узлу и не может идти дальше, то подграф, доступный из текущего узла, не содержит циклов. Если данное свойство сохраняется для всех узлов, значит, полный граф не содержит циклов, а система не находится в состоянии взаимоблокировки.
Способы выхода из взаимоблокировки
- Восстановление за счет приоритетного овладения ресурсом;
- Восстановление путем отката;
- Восстановление путем уничтожения процессов.
3. Безопасное состояние
Состояние считается безопасным, если существует какой-то порядок планирования, при котором каждый процесс может доработать до конца, даже если все процессы внезапно и срочно запросят максимальное количество ресурсов.
Небезопасное состояние само по себе не является состоянием взаимоблокировки. Разница между безопасным и небезопасным состоянием заключается в том, что в безопасном состоянии система может гарантировать, что все процессы закончат свою работу.
Алгоритм банкира: Модель алгоритма основана на примере банкира маленького городка, имеющего дело с группой клиентов, которым он выдал ряд кредитов. Алгоритм проверяет, ведет ли выполнение каждого запроса к небезопасному состоянию. Если да, то запрос отклоняется. Если удовлетворение запроса к ресурсу приводит к безопасному состоянию, ресурс предоставляется процессу.
Рис. 2. Траектории ресурсов двух процессов
В точке t процесс В запрашивает ресурс. Система должна принять решение: предоставлять его или нет. Если ресурс предоставляется, система попадает в небезопасную область и со временем входит в состояние взаимоблокировки. Чтобы предупредить взаимоблокировку, нужно приостановить процесс В до тех пор, пока процесс А не запросит и не высвободит плоттер.
4. Атака условия взаимного исключения
Если в системе нет ресурсов, отданных в единоличное пользование одному процессу, мы никогда не попадем в ситуацию взаимоблокировки.
Следствие: следует избегать выделения ресурса, если в нем нет насущной потребности, и постараться, чтобы как можно меньше процессов могло фактически требовать получения этого ресурса.
Атака условия удержания и ожидания.
Идея: помешать процессам, удерживающим ресурсы, войти в фазу ожидания дополнительных ресурсов.
Метод: заставить все процессы запрашивать все свои ресурсы до начала выполнения своей работы. Если все доступно, то процессу будет выделено все, что ему требуется, и он сможет доработать до завершения. Если один или несколько ресурсов заняты, ничего не будет выделяться и процесс будет просто ждать.
Проблемы такого метода: - многие процессы не знают, сколько ресурсов им понадобится, пока не начнут работу (если бы они об этом знали, то можно было бы использовать и алгоритм банкира);
- при таком подходе ресурсы не будут использоваться оптимально.
Атака условия невыгружаемости.
Один из способов: виртуализация ресурсов.
Недостаток: не всегда возможно.
Атака условия циклического ожидания
Способ 1: выполнении правила, которое гласит, что процессу в любой момент времени дано право только на один ресурс.
Недостаток: не всегда можно применить.
Способ 2: поддержка общей нумерации всех ресурсов и соблюдение правила, что процессы могут запрашивать ресурс, когда только пожелают, но все запросы должны быть сделаны в порядке нумерации ресурсов.
Недостаток: может не представиться возможности подобрать порядок, удовлетворяющий абсолютно всех - если количество потенциальных ресурсов и различных применений очень велико, то упорядочение может не сработать.
5. Безопасность в ОС
Безопасность (security) - это проблемы общего плана.
Защитные механизмы (protection mechanisms) - специфические механизмы ОС, используемые для защиты информации, имеющейся на компьютере.
Составляющие безопасности: Угрозы; Вторжения; Случайная потеря данных.
Задачи и угрозы безопасности:
1) Конфиденциальность данных. Направлена на сохранение секретности соответствующих данных. Если владелец неких данных решил, что эти данные могут быть доступны строго определенному кругу лиц, система должна гарантировать невозможность допуска к данным лиц, не имеющих на это права.
2) Целостность данных (data integrity). Пользователи, не обладающие соответствующими правами, не должны иметь возможности изменять какие-либо данные без разрешения их владельцев. Изменение данных включает в себя не только внесение в них изменений, но и их удаление или добавление ложных данных.
3) Работоспособность системы (system availability).
Никто не должен нарушить работу системы и вывести ее из строя.
4) Исключение постороннего доступа. Посторонние лица могут иногда взять на себя управление компьютерами (используя вирусы и другие средства) и превратить их в зомби (zombies), моментально выполняющих приказания посторонних лиц. Часто зомби используются для рассылки спама, поэтому истинный инициатор спам-атаки не может быть отслежен.
Злоумышленники.
Пассивные: нужно лишь прочитать файлы, к которым у них нет прав доступа.
Активные: хотят внести в данные несанкционированные изменения.
Категории злоумышленников.
- Праздное любопытство пользователей, не имеющих специального технического оснащения
- Шпионаж внутри коллектива.
- Вполне определенные попытки обогатиться.
- Коммерческий или военный шпионаж.
Злоумышленники: дополнительная категория.
- Вирус - фрагмент самостоятельно размножающегося программного кода, который (обычно) наносит какой-нибудь вред. В некотором смысле создатель вируса - это тот же злоумышленник, зачастую обладающий достаточно высоким техническим мастерством.
Случайная утрата данных
- Форс-мажорные обстоятельства: пожары, наводнения, землетрясения, войны, массовые беспорядки или крысы, прогрызшие ленты с резервными копиями.
- Ошибки в аппаратном или программном обеспечении: сбои центрального процессора, нечитаемые диски или ленты, ошибки передачи данных, ошибки в программах.
- Человеческие ошибки: ввод неправильных данных, неправильная установка ленты или компакт-диска, запуск не той программы, утрата диска или ленты и некоторые другие ошибки.
6. Криптография
Замысел: кодирование открытого текста (plaintext) -- сообщения или файла, превращая его в зашифрованный текст (ciphertext), чтобы о том, как его снова превратить в открытый текст, знали только те, кто имеет на это право.
Основной принцип: алгоритмы (функции), используемые для шифрования и дешифрования, должны всегда быть открытыми; секретность содержится лишь в ключах.
Шифрование с секретным ключом: Свойство: при наличии ключа шифрования легко определять ключ дешифрования, и наоборот. Достоинство: высокая скорость работы. Недостаток: и отправитель, и получатель должны владеть общим секретным ключом; для передачи ключа им, возможно, даже потребуется физический контакт.
Шифрование с открытым ключом: Свойство: для шифрования и дешифрования используются различные ключи; при наличии удачно подобранного ключа шифрования практически невозможно вскрыть соответствующий ключ дешифрования - это позволяет ключ шифрования сделать открытым, а в секрете держать только ключ дешифрования.
Достоинство: оба польз. не обязаны владеть общим секретным ключом. Недостаток: низкая скорость работы.
Односторонние функции: ф-я f, обладающей свойством, без труда вычислить у = f(x), но не позволяющим путем вычислений найти значение x, когда задана лишь f(x).
Такая функция, как правило, неким сложным образом искажает последовательность битов. Вначале она может присвоить у значение х. Такие функции называются криптографическими хэш-функциями.
Цифровые подписи. Суть идеи: подпись электронных сообщений и других цифровых документов таким образом, чтобы позже отправитель не смог от них отказаться.
Механизм цифровой подписи (первый шаг). Сначала документ пропускается через односторонний криптографический алгоритм хэширования, который очень трудно инвертировать; хэш-функция обычно выдает результат фиксированной длины, независимый от размера исходного документа. (второй шаг) использование описанного выше шифрования с открытым ключом. Владелец документа применяет свой закрытый ключ к хэшу чтобы получить D(hash). Это значение, получившее название сигнатурного блока (signature block), прикрепляется к документу и отправляется получателю.
Рис. 3. (а) вычисление сигнатурного блока; (б) то, что приходит получателю
Механизм цифровой подписи (второй шаг).
При получении документа и хэша получатель сначала вычисляет хэш документа. Затем получатель применяет к сигнатурному блоку открытый ключ отправителя, чтобы получить E(D(hash)). В результате этого он путем взаимоуничтожения «зашифровывает» расшифрованный хэш и получает его в прежнем виде.
Замечание к механизму цифровой подписи:
E(D(x))=x; - D(Е(х)) = х,
где Е -- функция шифрования, a D -- функция дешифрования, D и Е должны быть коммутативными функциями. Пример: алгоритм RSA.
Преимущество цифровой подписи: Довольно медленное шифрование с открытым ключом применяется только в отношении хэша, представляющего собой сравнительно небольшую часть данных.
Сертификаты: Одним из распространенных методов для отправителей сообщений является прикрепление к сообщению сертификата (certificate), в котором содержится имя пользователя и открытый ключ и который имеет цифровую подпись вызывающей доверие третьей стороны.
7. Домен
Домен представляет собой множество пар (объект, права доступа). Каждая пара определяет объект и некоторое подмножество операций, которые могут быть выполнены в отношении этого объекта.Права доступа означают разрешение на выполнение той или иной операции.
Принцип минимальных полномочий -- POLA или принцип необходимого знания - одно из фундаментальных понятий безопасности. Смысл: безопасность проще соблюсти, когда у каждого домена имеется минимум объектов и привилегий для работы с ними и нет ничего лишнего.
Рис. 4. Матрица защиты
Методы хранения матрицы защиты: хранение матрицы по столбцам: ACL-листы; хранение матрицы по строкам (хранение только заполненных элементов): перечни возможностей.
Хранение матрицы защиты по столбцам: С каждым объектом ассоциируется упорядоченный список, содержащий все домены, которым разрешен доступ к данному объекту, а также тип доступа. Такой список называется ACL -- список управления доступом.
ACL выглядит как список объектов и соотнесенных с каждым объектом пользователей и того набора операций, который эти пользователи могут осуществлять в отношении объекта.
Замечание: в ACL права предоставляются не процессу, а пользователю. В результате работы системы защиты любой процесс, которым владеет этот пользователь, может осуществлять разрешенные операции.
Использование списков управления доступом для управления доступом к файлам.
Рис. 5
Возможные дополнительные права.
- Права общего характера - они могут принадлежать любому объекту, независимо от его типа.
- Права, имеющие специфическое отношение к объекту.
Группы (Пользователи разделяются на группы) у групп есть имена и они также могут включаться в ACL-списки.
Семантика групп имеет два варианта.
Семантика групп: вариант 1:У каждого процесса есть идентификатор пользователя UID и идентификатор группы GID.В варианте 1 системы содержат ACL-списки с записями вида:UID1, GID1: права1; UID2, GID2: права2; ...
В этом случае, когда поступает запрос на доступ к объекту, выполняется проверка UID и GID того, кто выдал этот запрос. Если эти идентификаторы присутствуют в ACL-списке, то предоставляются права, перечисленные в списке. Если комбинации (UID, GID) в списке нет, доступ не разрешается.
Семантика групп: вариант 2 Записи ACL-списка состоят не из пар (UID, GID), а просто содержат либо UID, либо GID.
8. Хранение матрицы защиты по строкам
С каждым процессом связывается список объектов, к которым может быть получен доступ, а также информация о том, какие операции разрешены с каждым объектом. Иными словами, с объектом будет связан его домен защиты.Такой список называется перечнем возможностей, а его элементы называются возможностями. Обычно элемент перечня возможностей состоит из идентификатора объекта и битового массива для различных прав. Перечни возможностей сами являются объектами, и на них могут указывать другие перечни возможностей, таким образом облегчая совместное использование субдоменов.
Рис. 6. Набор из трех процессов и перечней их возможностей
Способы защиты перечня возможностей:
1 способ: аппаратная конструкция, в которой каждое слово памяти имеет дополнительный (теговый) бит, сообщающий, содержит ли данное слово памяти элемент перечня возможностей или нет. Теговый бит не используется в обычных командах и может быть изменен только программами, работающими в режиме ядра (то есть ОС).
2 способ: хранение перечня возможностей внутри ОС. При этом к элементам перечня возможностей можно обращаться по их позиции в перечне.
3 способ: хранение перечня возможностей в пространстве пользователя, но в зашифрованном виде, чтобы пользователь не смог подделать эту информацию.
Общие права (generic rights), которые содержат элементы перечня возможностей.
- Копирование элемента возможностей: создание нового элемента для того же самого объекта.
- Копирование объекта: создание дубликата объекта с новым элементом возможностей.
- Удаление эл-та возможностей: удаление записи из перечня возможностей без оказания какого-либо влияния на объект.
Удаление объекта: полное удаление объекта и связанных с ним возможностей.
Сравнение ACL-листов и перечней возможностей:
1. ПВ-высокая эффективность.
2. ПВ позволяют процессу легко инкапсулироваться.
3. ACL-списки, в отличие от ПВ, позволяют выборочно отзывать права.
4. Если объект удаляется, а ПВ нет, или удаляется ПВ, а объект остается, возникают проблемы. При использовании ACL-списков эти проблемы отсутствуют.
9. Способы аутентификации
Основываются на трех основных принципах:
- на чем-нибудь, что известно пользователю;
- на чем-нибудь, что есть у пользователя;
- на чем-нибудь, чем является пользователь..
Аутентификация с использованием паролей
Заключается в поддержке главного реестра пар (регистрационное имя, пароль).
Введенное регистрационное имя ищется в реестре, и введенный пароль сравнивается с хранящимся паролем. Если они совпадают, вход в систему разрешается, если нет, он отклоняется.
Примеры аутентификации(а) успешный вход в систему;
(б) отказ во входе после ввода имени; (в) отказ во входе после ввода имени и пароля
Обход аутентификации по паролю с использованием BIOS.
Любой, получивший доступ к компьютеру, может включить питание и тут же войти в программу настройки BIOS, удерживая клавишу DEL, связанную с вызовом настроек BIOS (информация о которой обычно выводится на экран) до запуска операционной системы. В программе настройки он может изменить последовательность используемых устройств запуска, предписав компьютеру запускаться с флэш-накопителя USB перед запуском с жесткого диска.
Затем вставляется флэш-накопитель USB, содержащий полноценную ОС, и запускается компьютер с этого накопителя. После запуска ОС жесткий диск может быть смонтирован (в UNIX) или доступен как устройство D: (в Windows).Замечание: чтобы предотвратить возникновение подобной ситуации, многие системы BIOS позволяют пользователю защитить паролем программу настройки BIOS, чтобы только пользователь мог изменить последовательность опроса устройств при загрузке.
-Подбор логина.
- Подбор пароля.
- Взлом пароля через Интернет: Нетрудно написать программу, систематически требующую отклика большого количества IP-адресов.Если попытка подключения будет принята взломщик может приступить к подбору регистрационных имен и паролей из своих списков. Сначала он будет действовать методом проб и ошибок. Но со временем, после ряда проб, взломщик может войти в систему и захватить файл.
- Сканирование компьютера через Интернет.
- Взлом компьютеров через Интернет: Как только взломщик проникает в систему и перед ним открывается возможность установки анализатора пакетов-- программы, которая изучает все сетевые пакеты, выискивая определенные послед-ти данных. Последовательность, с помощью которой пользователи взломанной машины подключаются к удаленным машинам, особенно с правами привилегированных пользователей. Эта информация может накапливаться в файле, который взломщик впоследствии может свободно забрать.
Атака на схему хранения паролей в UNIX.
Сначала взломщик составляет словарь возможных паролей.
Они заранее зашифровываются. Теперь, вооружившись списком пар паролей и зашифрованных паролей, взломщик наносит удар. Он считывает публично доступный файл паролей и извлекает из него все зашифрованные пароли.
Эти пароли сравниваются с зашифрованными паролями в его списке. При каждом совпадении становятся известны регистрационное имя и незашифрованный пароль.
Защита схемы хранения паролей в UNIX.
С каждым паролем связывается n-разрядное случайное число, называемое солью. Случайное число изменяется с каждым изменением пароля. Оно хранится в файле паролей в незашифрованном виде, и каждый может его прочитать.
Вместо того чтобы просто хранить зашифрованный пароль в файле паролей, пароль и случайное число сначала объединяются, а затем вместе зашифровываются.
Получившийся зашифрованный результат сохраняется в файле паролей. Замечание: Сочетание добавления соли к файлу паролей и превращения его в нечитаемый, может в целом противостоять многим атакам, предпринимаемым в отношении этого файла.
10. Инсайдерские атаки
Под этими атаками понимается «внутренняя подрывная работа», выполняемая программистами и другими сотрудниками компании, работающими за компьютером, который должен быть защищен, или создающими важные компоненты ПО. Эти атаки отличаются от внешних, поскольку свои специалисты (инсайдеры) обладают специализированными знаниями и доступом, которых нет у посторонних лиц (аутсайдеров).
Типы инсайдерских атак: логические бомбы; лазейки; фальсификация входа в систему.
- Логические бомбы: фрагмент программного кода, созданный одним из работающих в компании программистов и тайно внедренный в производственную систему. Пока программист ежедневно вводит в нее свой пароль, ничего не происходит. Но если программист будет внезапно уволен и физически изгнан из производственного помещения, то на следующий день (или на следующей неделе) логическая бомба останется без своего ежедневно вводимого пароля и «взорвется».Возможный вред от логических бомб:«Взрыв» может заключаться в очистке диска, стирании файлов в случайном порядке, внесении малозаметных изменений в ключевые программы или в зашифровке важных файлов.
- Лазейки: Создаются системным программистом путем внедрения в систему такого кода, который позволяет обойти какую-нибудь обычную проверку.
- Фальсификация входа в систему: Здесь злоумышленником является законный пользователь, пытающийся собрать пароли, принадлежащие другим людям, пользуясь технологией под названием фальсификация входа в систему (login spoofing).
Защита от фальсификации входа в систему: Единственный способом предотвратить фальсификацию входа в систему является начало последовательности входа в систему с комбинации клавиш, которая не перехватывается пользовательскими программами. В Windows для этого используется комбинация CTRL-ALT-DEL.
11. Использование дефектов программного кода
Типичный сценарий: кто-то обнаруживает дефект в коде операционной системы, а затем выискивает способ его использования, чтобы угрожать компьютерам, на которых работает этот дефектный код.
Далее будут рассматриваться дефекты, нарушающие работу ОС.
Сценарий использования дефектов программного кода.
1. Запускаем вирус.
2. После попадания на машину запускаем дефектную программу с входными данными, инициирующими код с дефектом.
3. Если дефектная программа имеет установленный бит SETUID, владельцем которого является пользователь root, создаем оболочку с SETUID, принадлежащим root.
4. Выбираем и запускает зомби-программу, отслеживающую IP-порт на наличие команд.
5. Устраиваем так, что зомби-программа запускается при каждом перезапуске системы.
Атаки, использующие переполнение буфера
Используют две вещи:- практически все операционные системы написаны на языке программирования C;
- ни один компилятор языка C не выполняет проверки границ массива.
Дефектный код.
Предположим, что задача процедуры А требует получения полного имени файла (возможно, получаемого объединением пути к текущему каталогу и имени файла), а затем открытия этого файла или проведения с ним каких-нибудь действий.
У процедуры A, как показано на следующем рисунке (пункт б), имеется буфер фиксированного размера (то есть массив) B, предназначенный для хранения имени файла.
Если буфер имеет объем 1024 байта, то он не сможет справиться со всеми именами файлов. Особенно, если ОС ограничивает длину имен файлов (или, что еще лучше, длину их полных имен) максимум 255 символами.
Обнаружение переполнения буфера и защита от этого
Обнаружить в программе отсутствие проверки переполнения буфера можно следующим образом: достаточно предоставить программе имя файла, состоящее из 10 000 символов, денежную сумму в 100 цифр или что-нибудь столь же неожиданное и посмотреть, не будет ли выведен на экран фрагмент кода ядра.
Затем нужно проанализировать распечатку кода ядра и определить, где располагается данная длинная строка. После этого определить, какими символами переписан адрес возврата, не составит особого труда.
Если доступен исходный код программы, как это бывает у большинства программ в системе UNIX, осуществление такой атаки становится еще проще, поскольку планировка стека известна заранее.
Защититься от такой атаки можно за счет устранения дефекта кода путем организации обязательной проверки длины всех строк, получаемых от пользователя, перед их помещением в буферы фиксированной длины.
Атаки, использующие форматирующую строку: Некоторые программисты не любят набирать текст, даже если они являются мастерами этого дела. Зачем набирать имя переменной reference_count, когда понятно, что rc означает то же самое и экономит 13 нажатий на клавиши при каждом своем появлении? Такая нелюбовь к набору текста временами может привести к появлению уязвимостей в системе.
Борьба с атаками по переполнению буфера и использованию форматирующей строки: Как атака за счет переполнения буфера, так и атака, использующая строку формата, требует получения данных, предоставляемых атакующей стороной, а затем создания условий для того, чтобы при возвращении из текущей функции управление передавалось этим данным, а не программе, осуществлявшей вызов функции. Один из способов борьбы с этими атаками - маркировка страниц стека как используемых для чтения и записи, но не для выполнения.
Некоторые современные ЦП способны на это, хотя большинство ОС не пользуются этой возможностью.
12. Атаки, использующие возвращение управления в libc
Почти все программы на языке C скомпонованы с библиотекой libc (которая обычно используется совместно), содержащей ключевые функции, в которых нуждается большинство программ на языке C. Одна из таких функций --strcpy, копирующая произвольную последовательность байтов с любого адреса на любой другой адрес.
Суть атаки в том, чтобы попытаться использовать strcpy для копирования программы атакующего, которую часто называют кодом оболочки, или шелл-кодом (shellcode), в сегмент данных и дать ей возможность выполниться в этом сегменте.
Рис. 7
в стек, но и переписать четыре закрашенных слова, показанных на рисунке в пункте (б).Самое нижнее из них ранее содержало адрес возврата в основную программу main, но теперь это адрес функции strcpy, поэтому, когда происходит возврат из функции f, управление «возвращается»
(а) стек перед атакой;(б) переписанный стек после атаки.
На рисунке выше в пункте (а) показан стек сразу же после того, как основная программа вызвала функцию f. Предположим, что эта программа работает с правами привилегированного пользователя (то есть установлен бит SETUID и ее владельцем является пользователь root) и имеет используемый дефект, позволяющий атакующему поместить его шелл-код в память, как показано на рисунке в пункте (б).
Здесь он показан на вершине стека, где он не может быть выполнен.Атака должна также не только поместить шелл-код.
к strcpy. В этот момент указатель стека будет указывать на поддельный адрес возврата, который будет использован самой функцией strcpy, когда она завершит свою работу. Это адрес того места, куда будет помещен шелл-код. Два слова выше этого адреса являются адресами источника и приемника для операции копирования. Когда функция strcpy завершит свою работу, шелл-код окажется на своем новом месте в выполняемом сегменте данных, и strcpy «вернет» ему управление.
Атаки, использующие переполнение целочисленных значений
Компьютеры осуществляют целочисленные арифметические вычисления с числами фиксированной длины, составляющей обычно 8, 16, 32 или 64 разряда.
Если сумма двух складываемых или перемножаемых чисел превышает максимальное отображаемое целое число, происходит переполнение.
Программы на языке C не отлавливают эту ошибку, они просто сохраняют и используют неправильное значение.
В частности, если переменные являются целыми числами со знаком, то результат сложения или перемножения двух положительных целых чисел может быть сохранен в виде отрицательного целого числа.
Если переменные не имеют знака, результат будет положительным числом, но высшие разряды могут перейти в низшие.
13. Атаки, использующие внедрение программного кода
программный домен криптографический
Эта атака заставляет целевую программу выполнить код, не имея представления о том, что именно она делает. Рассмотрим программу, которой в какой-то момент требуется продублировать некий предоставленный пользователем файл, присвоив ему другое имя (возможно, с целью создания резервной копии).Если программист ленится набирать программный код, он может воспользоваться системной функцией, которая запускает процесс оболочки и выполняет свои аргументы как команду оболочки.
Пример (Код на языке C):
system("ls >file-list") запускает процесс оболочки, который выполняет команду
ls >file-list составляя список всех файлов в текущем каталоге и записывая его в файл, названный file-list.
Код для дублирования файла и который может привести к атаке:
int main(int argc, char * argv[])
{
char src[100], dst[100], cmd[205] = “cp “; /* объявление трех строк */
printf(«Введите имя файла-источника: "); /* запрос файла-источника */
gets(src); /* получение ввода с клавиатуры */
strcat(cmd, src); /* присоединение src после cp */
strcat(cmd, " "); /* добавление пробела в конец cmd */
printf(«Введите имя файла назначения: "); /*запрос имени выходного файла*/
gets(dst); /* получение ввода с клавиатуры */
strcat(cmd, dst); /* завершение командной строки */
system(cmd); /* выполнение команды cp */}
Программа запрашивает имена файла-источника и файла назначения, создает командную строку, использующую команду cp, а затем осуществляет вызов system для ее выполнения. Если пользователь соответственно наберет «abc» и «xyz», то выполнится следующая команда: cp abc xyz которая копирует файл.
Внедрение кода (code injection)
Предположим, что пользователь набрал
«abc» и «xyz; rm -rf /». Теперь конструируется и выполняется следующая команда:
cp abc xyz; rm -rf / которая сначала копирует файл, а затем пытается рекурсивно удалить каждый файл и каждый каталог во всей файловой системе. Если программа запущена с правами привилегированного пользователя, она может иметь успех. Проблема в том, что все следующее за точкой с запятой выполняется как команда оболочки.
Атаки, связанные с эскалацией привилегий
При проведении таких атак атакующий обманывает систему, чтобы получить больше прав доступа, чем ему положено. Как правило, он обманывает систему, чтобы сделать что-нибудь, что доступно только привилегированному пользователю.
Осуществление атаки: Программа атакующего делает своим рабочим каталогом каталог демона. Разумеется, она не может вести в него запись, но это ей и не нужно. Затем программа устраивает аварийное завершение работы, при котором осуществляется принудительный вывод дампа ядра, или позволяет уничтожить себя таким образом, чтобы также произошел принудительный вывод дампа ядра.Выводы дампа ядра осуществляются в рабочий каталог, которым в данном случае является каталог демона. Поскольку вывод дампа осуществляется системой, то защита не запрещает запись в этот каталог.Образ памяти атакующей программы структурирован таким образом, чтобы представлять собой допустимую команду для cron-демона, который затем ее выполнит с полномочиями пользователя root. Первая команда внесет изменения в какую-нибудь программу, указанную атакующим, установив для нее бит SETUID, определяющий принадлежность пользователю root, а вторая запустит программу. Теперь у атакующего есть произвольная программа, запущенная с правами привилегированного пользователя.
Размещено на Allbest.ru
...Подобные документы
Классификация угроз информационной безопасности. Ошибки при разработке компьютерных систем, программного, аппаратного обеспечения. Основные способы получения несанкционированного доступа (НСД) к информации. Способы защиты от НСД. Виртуальные частные сети.
курсовая работа [955,3 K], добавлен 26.11.2013Исторические аспекты возникновения и развития информационной безопасности. Средства обеспечения защиты информации и их классификация. Виды и принцип действия компьютерных вирусов. Правовые основы защиты информации от несанкционированного доступа.
презентация [525,3 K], добавлен 09.12.2015Способы и средства защиты информации от несанкционированного доступа. Особенности защиты информации в компьютерных сетях. Криптографическая защита и электронная цифровая подпись. Методы защиты информации от компьютерных вирусов и от хакерских атак.
реферат [30,8 K], добавлен 23.10.2011Основные источники угроз безопасности информационных систем. Особенности криптографической защиты информации. Понятие электронной цифровой подписи. Признаки заражения компьютера вирусом. Уровни доступа к информации с точки зрения законодательства.
реферат [795,8 K], добавлен 03.10.2014Характеристика основных способов защиты от несанкционированного доступа. Разработка политики безопасности системы. Проектирование программного обеспечения применения некоторых средств защиты информации в ОС. Содержание основных разделов реестра.
лабораторная работа [1,9 M], добавлен 17.03.2017Анализ программных средств несанкционированного доступа к информации в сетях ЭВМ и способов защиты. Возможности операционных систем по защите и разграничению доступа к информации и выбор самой защищенной. Планирование сети штаба объединения ВВС и ПВО.
дипломная работа [1,0 M], добавлен 14.09.2010Технические средства защиты информации. Основные угрозы безопасности компьютерной системы. Средства защиты от несанкционированного доступа. Системы предотвращения утечек конфиденциальной информации. Инструментальные средства анализа систем защиты.
презентация [3,8 M], добавлен 18.11.2014Математические модели характеристик компьютеров возможных нарушителей и угроз безопасности информации в условиях априорной неопределённости. Методика построения комплексной системы защиты информационной сети военного ВУЗа от несанкционированного доступа.
контрольная работа [401,8 K], добавлен 03.12.2012Использование средств статического и динамического анализа программ. Принципы работы компилятора при генерации кода на примере MS Visual Studio 2003 (C++). Взлом защиты от несанкционированного доступа предоставленной программы разными способами.
контрольная работа [4,2 M], добавлен 29.06.2010Необходимость и потребность в защите информации. Виды угроз безопасности информационных технологий и информации. Каналы утечки и несанкционированного доступа к информации. Принципы проектирования системы защиты. Внутренние и внешние нарушители АИТУ.
контрольная работа [107,3 K], добавлен 09.04.2011Пути несанкционированного доступа, классификация способов и средств защиты информации. Каналы утечки информации. Основные направления защиты информации в СУП. Меры непосредственной защиты ПЭВМ. Анализ защищенности узлов локальной сети "Стройпроект".
дипломная работа [1,4 M], добавлен 05.06.2011Определение в процессе исследования эффективного способа защиты информации, передающейся по Wi-Fi сети. Принципы работы Wi-Fi сети. Способы несанкционированного доступа к сети. Алгоритмы безопасности беспроводных сетей. Нефиксированная природа связи.
курсовая работа [2,3 M], добавлен 18.04.2014Исследование понятия и классификации видов и методов несанкционированного доступа. Определение и модель злоумышленника. Организация защиты информации. Классификация способов защиты информации в компьютерных системах от случайных и преднамеренных угроз.
реферат [115,1 K], добавлен 16.03.2014Пути несанкционированного доступа, классификация способов и средств защиты информации. Анализ методов защиты информации в ЛВС. Идентификация и аутентификация, протоколирование и аудит, управление доступом. Понятия безопасности компьютерных систем.
дипломная работа [575,2 K], добавлен 19.04.2011Применение программного обеспечения и технических средств контроля и управления доступом для предупреждения угроз несанкционированного доступа к защищаемой информации. Построение интегрированной системы безопасности "FortNet" и ее составных элементов.
лабораторная работа [1,3 M], добавлен 14.11.2014Программно-аппаратные средства защиты компьютера от несанкционированного доступа. Электронный замок "Соболь". Система защиты информации SecretNet. Дактилоскопические устройства защиты информации. Управление открытыми ключами, удостоверяющие центры.
курсовая работа [3,1 M], добавлен 23.08.2016Основы биометрической идентификации. Возможность использования нейросетей для построения системы распознавания речи. Разработка программного обеспечения для защиты от несанкционированного доступа на основе спектрального анализа голоса пользователя.
дипломная работа [2,8 M], добавлен 10.11.2013Ценность и проблемы защиты банковской информации. Способы обеспечения безопасности автоматизированных систем обработки информации банка. Достоинства и методы криптографической защиты электронных платежей. Средства идентификации личности в банковском деле.
реферат [468,4 K], добавлен 08.06.2013Обоснование актуальности проблемы защиты информации. Концепция защиты информации в адвокатской фирме "Юстина". Каналы и методы несанкционированного доступа к защищаемой информации. Организация комплексной системы защиты информации в адвокатской конторе.
курсовая работа [92,4 K], добавлен 21.10.2008Анализ возможностей утечки информации, неавторизованного и несанкционированного доступа к ресурсам ЛВС сельскохозяйственного комплекса. Ознакомление с антивирусными программы и брандмауэрами. Разработка программного комплекса для защиты информации.
дипломная работа [3,6 M], добавлен 17.04.2010