Разработка и исследование метода защиты от удаленных атак на основе диверсификации программного обеспечения

Разработка и исследование метода защиты от удаленных атак на основе диверсификации программного обеспечения

Автор: Терешкин, Александр Васильевич

Шифр специальности: 05.13.19

Научная степень: Кандидатская

Год защиты: 2007

Место защиты: Таганрог

Количество страниц: 157 с. ил.

Артикул: 3341883

Автор: Терешкин, Александр Васильевич

Стоимость: 250 руб.

Разработка и исследование метода защиты от удаленных атак на основе диверсификации программного обеспечения  Разработка и исследование метода защиты от удаленных атак на основе диверсификации программного обеспечения 

Введение
Глава 1. Обзор средств защиты от удаленной эксплуатации уязвимостей
1.1. Системы, внедряемые во время компиляции.
1.2. Системы, внедряемые на этапе компоновки программы
1.3. Рандомизация расположения адресного пространства
1.4. Иные проекты.
1.5. Технологии защиты от эксплуатации ошибок в i.
1.5.1. Защита стека
1.5.2. Защита кучи.
1.5.3. Безопасность
1.5.4. Рандомизация РЕВ
1.5.5. Определение относительного виртуального адреса I функции
1.5.6. Переписывание критичных указателей
1.5.7. Запуск шелкода в РЕВ
1.5.8. Безопасность указателей.
1.5.9. X память и аппаратный
1.6. Выводы.
Глава 2. Теоретическое обоснование возможности диверсификации ПО
2.1. Формальное определение нефункционального преобразования
2.1.1. Базовые определения.
2.1.2. Эквивалентность программ
2.1.3. Нефункциональные преобразования.
2.1.4. Свойства НФП
2.2. Оценки НФП.
2.2.1. Мощность НФП
2.2.2. Устойчивость преобразования.
2.2.3 Цена преобразования
2.2.4 Главная мера.
2.3. Реализация нефункциональных преобразований на процессорах х
2.3.1. Замена регистров уровень 1
2.3.2. Перестановка множеств инструкций местами уровень 2
2.3.3. Процедурный подход уровень 3
2.3.4. Изменение прототипа функций уровень 4.
2.3.5. Выделение случайных подфункций уровень 5
2.4. Выводы.
Глава 3. Разработка метода диверсификации программного обеспечения
3.1. Общая архитектура генератора кода
3.2. Язык .
3.3. Используемость переменных
3.4. Определение каркаса функции
3.5. Внедрение мусорного кода.
3.6. Генерация кода.
3.7. Сборка кода
3.8. Выводы.
Глава 4. Разработка алгоритмов декомпиляции и рекомпиляции исполнимого кода
4.1. Декомпиляция
4.1.1. Этапы декомпиляции
4.1.2. Анализ структуры РЕ.
4.1.3. Предварительный анализ кода
4.1.4. Дизассемблирование.
4.1.5. Построение связного списка блоков.
4.2. Рекомпиляция
4.2.1. Пересчет относительных виртуальных и физических адресов.
4.2.2. Пересчет таблицы элементов релокации
4.2.3. Перелинковка указателей.
4.2.4. Ассемблирование результатов в файл
4.3. Выводы
Глава 5. Экспериментальное исследование алгоритмов диверсифицирующих преобразований.
5.1. Измерение характеристик программ, оценка НФП
5.2. Выводы
Заключение.
Список использованных источников


РаХ [7] позволяет провести рандомизацию практически каждой части адресного пространства процесса. Это нацелено на усложнение эксплойта, связанного с «угадыванием» хода программы. В обычных атаках переполнения буфера атакующий преследует две цели: сперва инъекция кода (создание нового узла на графе исполнения), а затем передача управления в код злоумышленника (создание нового ребра графа). Стоит отметить, что выбор правильной точки возврата - довольно сложный и важный момент. Для упрощения этого было предложено множество подходов. Простейшим из них является «батут» (trampoline). Атаки trampoline используют хранение адреса полезной нагрузки эксплойта в регистре, даже если абсолютный адрес заранее не известен. ESP+]. Преимущество trampoline атак в том, что атакующий может использовать относительные адреса вместо абсолютных адресов. Другие техники эксплуатации используют изменение указателей на функции в предугадываемых местах, таких как фильтр необработанных исключений (Unhandled Exception Filter) в Windows или записи в сегменте деструкторов (. В данном случае функции злоумышленника не исполняются сразу после эксплойта. Приложение, вероятно, находится в аварийном состоянии закрытия - например, в результате порчи стека или кучи либо изменения «канарейки» злоумышленником. Рандомизация расположения адресного пространства (ASLR) усложняет обе описанные выше техники. После того, как адресное пространство было обфусцировано ASLR, атакующий уже не знает никаких адресов, а значит, он не может использовать известные адреса или смещения для передачи управления. ASLR применяется к общему расположению процесса, производя рандомизацию расположение сегментов, библиотек, стека и кучи. Атака на ASLR возможна, но для ее проведения необходима фаза сбора информации. Демонстрацию этого на примере использования ошибки форматирования строки приводится в работе Т. Durden [8]. Другой вид атаки на ASLR основывается на угадывании адреса libc. Атакующий пробует вызвать функцию usleep() [9]. Если адрес базы был не угадан, поток аварийно завершается и восстанавливается; однако, если адрес базы был угадан, поток «засыпает». Таким образом, производится удаленное определение адреса базы libc, после чего возможна стандартная атака retum-into-Iibc. Некоторая форма рандомизации была использована для адреса базы РЕВ (Process Environment Block) в Windows ХР Service Pack 2. ASLR в Windows, однако программы в Windows более чувствительны к перемещениям в памяти (некоторые из них не могут быть перемещены вовсе). Таким образом, данные попытки провалились из-за проблем с совместимостью. Другая особенность РаХ заключается в предоставлении неисполнимых страниц памяти. Для IA-, РаХ использует один из двух подходов. В одном из них РаХ эмулирует NX bit (бит неисполнения) с использованием PAGEEXEC, что вызовет некоторое ухудшение производительности. В другом, с использованием SEGMEXEC, ухудшение производительности пренебрежительно мало, однако это вызывает уменьшение пользовательской части адресного пространства в два раза [7]. Перед описанием особенностей реализации следует отметить цель использования неисполнимых страниц памяти. Простейшие атаки основываются на инъекции кода с последующей передачей управления. Инжектированный код всегда будет находиться в записываемой памяти, так как попытки инжектировать код напрямую в секцию «только для чтения» приведут к ошибке нарушения доступа и, зачастую, к аварийному завершению программы. После инъекции кода следующей целью атакующего является передача ему управления. Однако, смысл NX заключается в том, чтобы не позволить исполнять код из записываемой памяти. Другими словами, данные, находящиеся в записываемой памяти, не должны быть интерпретируемы как код и исполнены. В OpenBSD есть похожая технология WAX (W XOR X) - можно либо записывать, либо исполнять. Данный подход не нов. В году Каспером Диком (Casper Dik) были созданы патчи для применения NX стеков в большинстве операционных систем семейства UNIX [Ю][]. РаХ применил этот подход не только к стеку, но и к куче.

Рекомендуемые диссертации данного раздела

28.06.2016

+ 100 бесплатных диссертаций

Дорогие друзья, в раздел "Бесплатные диссертации" добавлено 100 новых диссертаций. Желаем новых научных ...

15.02.2015

Добавлено 41611 диссертаций РГБ

В каталог сайта http://new-disser.ru добавлено новые диссертации РГБ 2013-2014 года. Желаем новых научных ...


Все новости

Время генерации: 0.188, запросов: 244