Высокопараллельная система выявления сетевых уязвимостей на основе генетических алгоритмов тема диссертации и автореферата по ВАК РФ 05.13.19, кандидат наук Печенкин, Александр Игоревич
- Специальность ВАК РФ05.13.19
- Количество страниц 144
Оглавление диссертации кандидат наук Печенкин, Александр Игоревич
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
1 ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ ПОИСКА СЕТЕВЫХ УЯЗВИМОСТЕЙ
1.1 Исследование современных методов и средств поиска сетевых уязвимостей
1.1.1 Статические методы поиска сетевых уязвимостей
1.1.2 Динамические методы поиска сетевых уязвимостей
1.1.3 Средства поиска сетевых уязвимостей
1.2 Уязвимости в реализациях сетевых протоколов
1.3 Формальная модель сетевых уязвимостей
1.4 Условие наличия уязвимости в реализации сетевого протокола
1.5 Формальная постановки задачи динамического поиска сетевых уязвимостей
1.6 Выводы
2 МЕТОД ПОИСКА СЕТЕВЫХ УЯЗВИМОСТЕЙ НА ОСНОВЕ МАКСИМИЗАЦИИ ПОКРЫТИЯ ГРАФА ПЕРЕДАЧИ УПРАВЛЕНИЯ С ПОМОЩЬЮ ГЕНЕТИЧЕСКОГО АЛГОРИТМА
2.1 Генетический алгоритм
2.1.1 Алгоритм работы генетического алгоритма
2.1.2 Операторы генетического алгоритма
2.1.3 Генетические алгоритмы с хромосомами переменной длины
2.2 Применение генетического алгоритма для повышения эффективности поиска уязвимостей
2.2.1 Общая схема поиска уязвимостей сетевых сервисов с применением генетического алгоритма
2.2.2 Целевые функции генетического алгоритма для фаззинга сетевых протоколов
2.3 Оценка оптимальных значений параметров генетического алгоритма
2.4 Выводы
3 МАСШТАБИРОВАНИЕ ДИНАМИЧЕСКОГО ПОИСКА СЕТЕВЫХ УЯЗВИМОСТЕЙ НА МНОГОПРОЦЕССОРНОМ КЛАСТЕРЕ
3.1 Использование многопроцессорных кластеров для параллельной обработки сетевого трафика
3.1.1 Параллельный анализ сетевого трафика
3.1.2 Анализ безопасности сетевого трафика на многопроцессорном кластере
3.2 Модель масштабирования динамического поиска сетевых уязвимостейПО
3.3 Алгоритм масштабирования задачи динамического поиска сетевых уязвимостей
3.4 Алгоритм балансировки нагрузки
3.5 Выводы
4 ВЫСКОКОИАРАЛЛЕЛЬНАЯ СИСТЕМА ВЫЯВЛЕНИЯ СЕТЕВЫХ УЯЗВИМОСТЕЙ
4.1 Состав высокопараллельной системы выявления сетевых уязвимостей!
4.2 Масштабируемая архитектура системы
4.3 Алгоритмы функционирования системы поиска уязвимостей
4.3.1 Общий алгоритм динамического поиска сетевых уязвимостей
4.3.2 Получение трассы обработки
4.4 Экспериментальные исследования эффективности функционирования системы
4.4.1 Сравнительные исследования эффективности покрытия кода
4.4.2 Исследования эффективности масштабирования и балансировки нагрузки
4.4.3 Оценка эффективности выявления сетевых уязвимостей
4.5 Выводы
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Рекомендованный список диссертаций по специальности «Методы и системы защиты информации, информационная безопасность», 05.13.19 шифр ВАК
Восстановление форматов сетевых сообщений и файлов по бинарным трассам программ2013 год, кандидат физико-математических наук Гетьман, Александр Игоревич
Разработка сетевой кластерной системы с динамическим распределением ресурсов для SPMD-задач и ее исследование при моделировании точечных вихрей2002 год, кандидат технических наук Троценко, Роман Владимирович
Разработка методов, алгоритмов и программ моделирования сетей с дозированной балансировкой нагрузки2013 год, кандидат наук Сапрыкин, Алексей Николаевич
Разработка метода, алгоритмов и программ для автоматического поиска уязвимостей программного обеспечения в условиях отсутствия исходного кода2011 год, кандидат технических наук Благодаренко, Артем Васильевич
Разработка и исследование системы интеллектуально-адаптивного управления трафиком вычислительной сети2014 год, кандидат наук Басыня, Евгений Александрович
Введение диссертации (часть автореферата) на тему «Высокопараллельная система выявления сетевых уязвимостей на основе генетических алгоритмов»
ВВЕДЕНИЕ
Использование уязвимостей - один из основных способов распространения вредоносного программного обеспечения, поэтому их поиск является одной из важнейших задач информационной безопасности. Уязвимостью называется ошибка в программе, которая может быть использована для реализации угроз безопасности. Согласно стандартам ISO 15408 и ГОСТ 15408 поиск уязвимостей является одним из обязательных этапов оценки безопасности программного обеспечения (ПО). В работе исследуется задача поиска сетевых уязвимостей (уязвимостей в реализациях сетевых протоколов), позволяющих злоумышленнику удаленно выполнить произвольный код на компьютере, подключенном к сети, в том числе Интернет, что делает их одними из наиболее критичных. На данный момент в мире более 10 млрд. устройств используют сетевые протоколы для подключения к сети Интернет, а значит, их безопасность напрямую зависит от своевременного выявления подобных уязвимостей.
Методы обнаружения уязвимостей делятся на два класса: статические, проводящие анализ кода без его исполнения, и динамические, основанные на контроле различных параметров в ходе работы ПО. Одним из основных показателей эффективности динамических методов является покрытие кода программы за минимальное время. Необходимость улучшения данного показателя привела к формированию двух направлений совершенствования методов динамического анализа:
- увеличению полноты покрытия программного кода при фиксированном времени проведения анализа;
- сокращению времени анализа для достижения заданного уровня покрытия программного кода.
В работе предложены решения по совершенствованию динамического поиска сетевых уязвимостей в обоих направлениях, основанные на применении генетических алгоритмов для максимизации покрытия программного кода и масштабировании задачи поиска на многопроцессорных кластерах для
сокращения времени. Предложенные решения позволяют повысить эффективность поиска уязвимостей в реализациях сетевых протоколов и, следовательно, безопасность локальных и глобальный сетей.
Степень разработанности темы исследования. Исследованию поиска уязвимостей в реализациях сетевых протоколов динамическими методами посвящено множество работ российских и иностранных ученых, таких как В.А. Падарян, А.Ю. Тихонов, С. Горбунов, А. Розенблум, Р. Кеммерер, Г Бенкс, Е. Монте де Ока, М. Бишоп, С. Вален, Ж. Ву. Предложенные в данных работах методы требуют предварительно представленных оператором знаний о сетевых протоколах (исходных кодов, спецификаций протоколов в специальном формате и т.д.), что существенно сокращает возможности по их практическому применению. Также следует отметить, что при реализации на современных высокопроизводительных системах (например, многопроцессорных кластерах) существующие методы не позволяют эффективно использовать имеющиеся вычислительные мощности, в связи с тем, что их работа описывается последовательным алгоритмом выполнения задачи. Таким образом, имеющиеся подходы к динамическому поиску сетевых уязвимостей и алгоритмы их реализации должны быть более универсальными по отношению к исследуемым протоколам и нуждаются в адаптации для обеспечения возможности работы высокопараллельной системы выявления сетевых уязвимостей на многопроцессорных кластерах.
Целью работы является разработка методов и средств поиска сетевых уязвимостей, обеспечивающих высокую степень покрытия кода за счет применения генетических алгоритмов и масштабирования задачи поиска на многопроцессорных кластерах. Для достижения поставленной цели в работе решались следующие задачи:
1. Исследование современных методов поиска сетевых уязвимостей.
2. Построение формальной модели сетевых уязвимостей, позволяющей сформулировать необходимое и достаточное условие наличия сетевой уязвимости.
3. Формализация постановки задачи динамического поиска сетевых уязвимостей в виде задачи максимизации покрытия графа передачи управления.
4. Разработка метода поиска сетевых уязвимостей на основе генетической максимизации покрытия графа передачи управления.
5. Построение модели масштабирования динамического поиска сетевых уязвимостей, обеспечивающей эффективное использование вычислительных ресурсов многопроцессорного кластера.
6. Разработка архитектуры и экспериментального макета высокопараллельной системы выявления сетевых уязвимостей на основе генетических алгоритмов и оценка эффективности его работы.
Научная новизна диссертационной работы состоит в следующем:
- разработана формальная модель сетевых уязвимостей, позволившая доказать необходимое и достаточное условие наличия сетевой уязвимости;
- формализована задача динамического поиска сетевых уязвимостей в виде задачи максимизации покрытия графа передачи управления;
- разработан метод поиска сетевых уязвимостей на основе генетической максимизации покрытия программного кода и определены оптимальные значения параметров генетического алгоритма;
- создана модель масштабирования динамического поиска сетевых уязвимостей, основанного на использовании генетических алгоритмов, позволившая разработать алгоритмы масштабирования задачи и балансировки нагрузки.
Теоретическая и практическая значимость работы. Полученные теоретические и экспериментальные результаты могут быть использованы при анализе безопасности программного обеспечения как в процессе его сертификации и аттестации автоматизированных информационных систем, так и при разработке сетевых сервисов. Теоретические и экспериментальные результаты работы используются для подготовки специалистов в области защиты вычислительных систем по дисциплине "Разработка Интернет-приложений" в ФГБОУ ВПО "СПбГПУ", а также использованы в НИР "Исследование и
разработка макета программного комплекса высокоскоростного процессинга (обработки) сетевого трафика в режиме реального времени" (шифр 2012-1.4-07514-0011-007) по государственному контракту от 23 мая 2012 г. № 07.514.11.4122, при разработке метода высокоскоростного анализа сетевого трафика на многопроцессорном кластере в СПБГУТ им. М.А. Бонч-Бруевича, при проведении работ по анализу безопасности и последующей доработке телекоммуникационных систем в ЗАО "Голлард", что подтверждается соответствующими актами об использовании.
Методология и методы исследования. Для решения поставленных задач использовались системный анализ, теория алгоритмов, теория распределенных вычислений, методы математического и эволюционного моделирования, решения задач оптимизации.
Положения, выносимые на защиту:
1. Формальная модель сетевых уязвимостей, необходимое и достаточное условие наличия сетевой уязвимости.
2. Формальная постановка задачи динамического поиска сетевых уязвимостей как задачи максимизации покрытия графа передачи управления.
3. Метод поиска сетевых уязвимостей на основе генетической максимизации покрытия графа передачи управления.
4. Полученные в результате исследований оптимальные значения параметров генетического алгоритма для поиска сетевых уязвимостей.
5. Модель масштабирования динамического поиска сетевых уязвимостей, основанного на использовании генетического алгоритма.
Степень достоверности научных положений диссертации определяется строгим теоретическим обоснованием предлагаемого аналитического аппарата, эффективностью его использования при практическом воплощении и результатами экспериментальных исследований.
Апробация результатов работы. Основные теоретические и практические результаты диссертационной работы доложены и обсуждены: на Санкт-Петербургской межрегиональной конференции "Информационная безопасность
регионов России" (Институт информатики и автоматизации РАН, 2011 г.), на всероссийской конференции "Проведение научных исследований в области обработки, хранения, передачи и защиты информации" ("МСП ИТТ", 2011 г.), на 20-ой и 21-ой научно-технической конференции "Методы и технические средства обеспечения безопасности информации" (СПбГПУ, 2011 г., 2012 г.), на 15-ой международной научно-практической конференции "РусКрипто" (Ассоциация "РусКрипто" и Академия Информационных Систем, 2013 г.), на 12-ой всероссийской конференции "Информационная безопасность. Региональные аспекты. ИнфоБЕРЕГ-2013" (Академия Информационных Систем, 2013 г.). Работа представлена к присуждению премии правительства Санкт-Петербурга победителям конкурса грантов для студентов вузов, расположенных на территории Санкт-Петербурга, аспирантов вузов, отраслевых и академических институтов, расположенных на территории Санкт-Петербурга.
Публикации. По теме диссертации опубликовано 13 научных работ.
Объем и структура. Диссертация состоит из введения, четырех глав, заключения и списка литературы из 73 наименований.
Во введении сформулирована и обоснована задача работы, дано определение понятия сетевой уязвимости.
В первой главе представлены результаты анализа современных методов поиска сетевых уязвимостей, описана разработанная формальная модель сетевых уязвимостей, сформулировано и доказано необходимое и достаточное условие наличия сетевой уязвимости, формализована задача динамического поиска сетевых уязвимостей в виде задачи максимизации покрытия графа передачи управления.
Во второй главе предложен метод поиска сетевых уязвимостей на основе генетической максимизации покрытия графа передачи управления и представлены полученные оценки оптимальных значений параметров генетического алгоритма для поиска сетевых уязвимостей.
В третьей главе построена модель масштабирования динамического поиска сетевых уязвимостей, основанного на использовании генетического алгоритма,
предложены алгоритмы масштабирования задачи и балансировки нагрузки при поиске уязвимостей на многопроцессорном кластере.
В четвертой главе представлены описание архитектуры и макета высокопараллельной системы выявления сетевых уязвимостей и результаты экспериментальных исследований работы системы.
В заключении приведены результаты и выводы, полученные автором в ходе выполнения работы.
1 ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ ПОИСКА СЕТЕВЫХ
УЯЗВИМОСТЕЙ
1.1 Исследование современных методов и средств поиска сетевых уязвимостей
Программы для поиска уязвимостей могут быть представлены двоичными файлами, либо исходными текстами. Двоичный анализ обладает некоторым сходством с анализом исходных текстов: оба вида анализа направлены на выявление одних и тех же классов дефектов в программном обеспечении. Тем не менее, методы поиска значительно различаются. Если исследователь знаком с анализом исходных текстов, то вероятно, не придется особенно сильно менять свой стиль поиска, однако методология основательно изменится. Прежде всего, потребуется знание ассемблера той платформы, на которой будет работать двоичный файл. Недостаточно четкое понимание важных команд обычно приводит к неверной интерпретации кода и путанице, поэтому необходимо отметить, что в дальнейшем приводимый в качестве примеров дизассемблерный код будет относиться к архитектуре Intel х86. При изучении вопроса о наличии уязвимостей в исполняемом коде выделяют два направления [ 1 ]:
- статический анализ кода;
- динамический анализ выполнения кода;
Рассмотрим каждый из них в отдельности.
1.1.1 Статические методы поиска сетевых уязвимостей
Статический анализ кода - это анализ программного обеспечения, который производится над кодом программ (исходным или бинарным) и реализуется без их реального исполнения [2]. Основами поиска уязвимостей бинарного кода являются дизассемблирование и отладка программ.
В начале важно отметить тот факт, что с точки зрения статического анализа кода нет разницы между типами исследуемого объекта. Все методы, касающиеся анализа просто программного обеспечения относятся и к анализу сетевого ПО, и
наоборот. Поэтому рассматриваемые ниже методы поиска уязвимостей в ПО автоматически применимы и для сетевого программного обеспечения (чего, однако, нельзя сказать при применении динамических методов, о которым будет говориться ниже).
1,1.1Л Дизассемблирование двоичных файлов
Дизассемблирование - транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера. К поиску уязвимостей с помощью дизассемблеров относятся:
- поиск потенциально опасных функций;
- поиск функций, которые могут вызвать переполнение буфера;
- поиск опасных спецификаторов.
Дизассемблирование очень плохо справляется с самомодифицирующимся и самогенерируемым кодом. Также понятно, что дизассемблировать зашифрованный код бессмысленно. Дизассемблер легко выявляет адреса статических буферов, расположенных в секции данных, что позволяет обнаружить уязвимость переполнения буфера. В настоящее время при поиске уязвимостей дизассемблер часто применяется вместе с отладчиком.
Некоторые программы противостоят дизассемблированию, для того чтобы усложнить поиск уязвимостей злоумышленникам, например программа Бкуре. Для этого используются следующие подходы [3]:
- использование свойств процессорной архитектуры фон Неймана, в которой исполняемый код и данные без наличия специальной информации не различимы (и, соответственно, задача их различения в таком случае является алгоритмически неразрешимой);
- использование необходимости знания состояния и предыстории возникновения этого состояния вычислительной среды;
- использование «размазывания» кода алгоритма по всему исполняемому модулю или даже нескольким модулям.
- затруднение статического анализа (например, переходы по вычисляемым адресам, смешанное кодирование инструкций, когда в одной инструкции может быть закодирована другая, которая может выполниться вместо основной при получении управления);
- упаковка исполняемого кода;
- обфускация (запутывающие преобразования);
- использование виртуальных машин.
Все перечисленные методы и особенно их комбинации при качественной реализации делают статический анализ совершенно неэффективным вследствие значительной трудоемкости, в результате чего исследователь вынужден применять динамические средства анализа.
1.1.1.2 Метод сигнатурного поиска
Поиск уязвимости по шаблону (сигнатуре) - автоматизированный метод, основанный на сравнении некоторых характеристик исследуемого ПО с заранее подготовленными описаниями (сигнатурами) уязвимых мест. Данный метод эффективен при поиске несложных уязвимостей и немаскируемых закладок, таких как переполнение буфера, парольные константы и т.д. [4]
Поиск уязвимостей по шаблонам проводится статически. Код программного обеспечения сравнивается с сигнатурами из базы методом побайтового сравнения или по более сложному алгоритму. При обнаружении сходств, сообщается о найденной уязвимости. Иногда сигнатура дополняется некоторым набором эвристических правил. [4]
Современные сканеры кода позволяют хорошо справляться с автоматизацией шаблонного поиска следующих типов уязвимостей [4]:
- внедрение произвольных команд;
- БС)Ь-инъекции;
- ХЗЭ-запросы (межсайтовый скриптинг);
- ошибки входных и выходных значений;
- уязвимости переполнения буфера.
1.1.1.3 Метод поиска потенциально опасных функций
Статический поиск вызовов потенциально опасных функций - это одно из самых популярных действий, производимых при анализе безопасности возможного поведения программы [5]. К потенциально опасным могут быть отнесены различные функции, в зависимости от спецификации и поведения программы, а также от принятой политики безопасности. Кроме того, дополнительный модуль, экспортирующий опасные функции, может быть загружен явным образом. Соответственно, при поиске потенциально опасных функций необходимо уделить особое внимание поиску функций загрузки программных модулей и получения указателей на функции.
Статический поиск вызовов потенциально опасных функций включает в себя поиск неявного и отложенного импорта таких функций программой, а также поиск идентифицирующих такие функции и содержащие их модули строковых данных в секциях программы. В тоже время возможен вызов функций, который нельзя будет идентифицировать путем поиска ссылок на них в таблицах импорта, и явный импорт которых осуществляется без использования хранимых в секциях программы идентифицирующих строковых констант. Действительно, путем применения обфускации возможно добиться того, что статическими методами обнаружить вызовы потенциально опасных функций будет достаточно трудно или невозможно. Однако целью автоматизации статического анализа в данном случае является существенное упрощение рутинной работы по поиску наиболее распространенных случаев использования таких функций.
1.1.1.4 Taint-анализ
Известно, что существует немало типов уязвимостей: уязвимости, связанные с некорректной обработкой пользовательских данных, использование нестойкой криптографии, некорректное освобождение ресурсов и т.д. Taint-анализ адресует только уязвимости, связанные с некорректной обработкой пользовательских данных. Задача автоматического определения возможности влияния пользовательскими данными на данные, приводящие к сбою, решается с
помощью этого вида анализа [6]. Суть метода заключается в изучении параметров инструкций и оценке их влияния друг на друга. В качестве параметров инструкции могут выступать следующие контейнеры [6]:
- регистры процессора общего назначения;
- специальные регистры, такие как EFLAGS;
- ячейки памяти.
Все параметры можно разделить на входные и выходные. Значение контейнеров входных параметров получается либо на предыдущих шагах программы, либо являются константами. Любые данные получаемые от пользователя (через поля ввода, из файлов, из сети) в терминах taint-анализа считаются не доверительными, контейнеры в которые они располагаются, помечаются особым образом. Далее, если помеченные контейнеры участвуют в операции и влияют на результат, то контейнер результата так же получает метку. Метка может быть отменена, если в контейнер будут помещены данные из непомеченного контейнера. Рассмотрим пример [6]: mov ebx, еах add есх, ebx хог еах, еах mov [ecx],9090h
Будем считать, что регистр еах получил свое значение из пользовательского ввода (например, через параметр функции), а значит он автоматически помечается. Оператор mov ebx, еах копирует значение регистра еах в ebx. После этой операции ebx так же следует пометить. Оператор хог еах, еах действует так же как mov еах, 0. В еах помещается значение, на которое априори не может повлиять пользовательский ввод. С этого момента регистр еах теряет метку. Однако есх все еще отмечен, и по этой причине команда mov [есх], 9090h является уязвимым местом, она позволяет записать 9090h (две операции пор) в область памяти, которую можно задать через пользовательский ввод.
Taint-анализ может быть также использован для повышения достоверности результатов использования других методов поиска уязвимостей [7].
1.1.2 Динамические методы поиска сетевых уязвимостей
Динамический анализ (англ. Dynamic program analysis) — анализ программного обеспечения, производимый при выполнении программы [8]. Основным средством, используемым при динамическом анализе, является отладчик. Процесс отладки более сложен и требует большей квалификации от исследователя, однако позволяет преодолевать некоторые проблемы, не решаемые в статике. Например, аналитик может посмотреть в отладчике, где в интересующий его момент функционирования системы находится код, а где данные, куда и в какой-то момент осуществляется переход по вычисляемому адресу. Ситуацию усугубляет применение активных защит от динамического анализа, когда код содержит средства обнаружения работы под отладчиком и реагирования в виде неправильного функционирования, обфускация кода, использование виртуальных машин и многое другое. При правильной реализации такие методы защиты сводят к минимуму вероятность успеха исследования [3]. Ручной поиск уязвимостей сам по себе является крайне сложным и малоэффективным. Поэтому необходима разработка автоматизированных методов и средств. Сигнатурный анализ бинарных файлов, в отличие от исходных, осложнен рядом причин. Использование различных компиляторов и упаковщиков для сборки приложения может привести к абсолютно различному коду с одной функциональностью. В одном из наиболее популярных дизассемблеров IDA PRO реализована технология FLIRT, позволяющая провести поиск стандартных функций по их сигнатурам. Но при этом с точки зрения поиска уязвимостей такое использование приводит к большому числу ошибок 2-го рода. Одним из методов, ориентированных именно на поиск уязвимостей по без исходных текстов, является фаззинг (fuzzing) [9]. Принцип его действия основан на передаче произвольных (или почти произвольных) аргументов на точки входа в процесс в ожидании возникновения исключительной ситуации или некорректного поведения ПО. Вычислительная мощь компьютеров растёт с каждым днём, и это позволяет реализовывать всё более сложные, комплексные и
ресурсоёмкие алгоритмы усложнения и запутывания кода. Поэтому для большей эффективности динамического анализа требуется подача тестируемой программе достаточного количества входных данных. Использование суперкомпьютеров для проведения фаззинга описано в работе [10].
1.1.2.1 Поиск уязвимостей методом фаззинга
Fuzz-тестированием или фаззингом называется метод тестирования программного обеспечения, который заключается в передаче случайных или намеренно искаженных данных на вход программы с целью достижения её аварийного завершения или зависания. Данный факт будет говорить о наличии дефекта, а, следовательно, и о вероятности наличия уязвимости в коде
программы. При этом фаззинг является одним из обязательных этапов
)
методологии SDL (Security Development Lifecycle, безопасной разработки) [11]. Фаззинг может использован для поиска уязвимостей в реализациях протоколов не только классических пользовательских систем, но и промышленных [12]. При тестировании программного обеспечения выделяют три основных подхода [13]:
- метод «белого ящика» (метод тестирования, который изучает не только внешнее поведение программы, но и ее внутреннее устройство - исходные тексты. При тестировании как «белый ящик» происходит проверка логики работы программы);
- метод «черного ящика» (под «чёрным ящиком» понимается объект исследования, внутреннее устройство которого неизвестно. Данный метод позволяет изучать поведение систем, то есть их реакций на разнообразные внешние воздействия и в то же время абстрагироваться от их внутреннего устройства);
- метод «серого ящика» (при использовании данного метода исследователь не имеет полной спецификации программы и исходных кодов, как это бывает при тестировании методом «белого ящика», однако знаний о системе больше, чем при тестировании «черного ящика»).
Среди рассмотренных методов к фаззингу относится тестирование «черного» и «серого» ящиков, в зависимости от вида исследуемого ПО. Первым этапом фаззинга является генерация входных данных для их последующей передачи. В зависимости от метода генерации рассматривают два основных подхода [14]:
- мутация данных. Новые данные получаются за счет незначительных изменений существующих данных;
- генерирование случайных данных. Данные подготавливаются «с нуля», то есть на вход передается случайным образом полученный набор байтов.
Если в случае с файловым фаззингом, когда исследуемым объектом является файл, еще можно использовать генерацию случайных данных, то при тестировании сетевых протоколов,, имеет смысл применять исключительно подход мутации. Более того, крайне желательно иметь представление, за что отвечает то или иное поле пакета и намеренно манипулировать с теми данными, которые могут быть некорректно обработаны.
Для наглядности поверхностно рассмотрим пример фаззинга сетевого протокола передачи файлов TFTP. Форматы сообщений согласно RFC 1350 [15] выглядят следующим образом (см. рисунок 1).
Возьмем для примера запрос на запись файла. Видно, что начало первого поля пакета начинается с НЕХ-символов "\x00\x01", после которых следует название файла и флаги режима передачи файла. Обладая данной информацией, можно выделить те поля пакета, содержимое которых будет подвержено принудительному изменению, хотя нет ограничений и для эксперимента с абсолютно всеми полями. В тоже время можно заметить, что с первым из них нет особого смысла работать, так как код субкоманды строго определен и в случае отсутствия одного из пяти кодов, пакет скорей всего будет отброшен, хотя нет никаких гарантий, что при обработке такого пакета не произойдет какая-либо ошибка. Однако очевидно, что поле с именем файла больше подходит для эксперимента, так как не имеет никаких ограничений кроме размера. Именно в
эту часть пакета можно записывать различные данные и передавать по протоколу ТБТР. И тот и другой случаи отражены на рисунке (см. рисунок 2).
Код ссбкоманды
2*свтета п октетов 1 скгет п октетов 1 октет
Запрос «текня (1^0=1) Код субкоманды
п октетов 1 октет п октетов 1 октет
Запрос записи
Код субкоманды
2 окгета 2 октега
Пакет данных (код операции=3)
Похожие диссертационные работы по специальности «Методы и системы защиты информации, информационная безопасность», 05.13.19 шифр ВАК
Методы и алгоритмы оценки защищенности встроенного программного обеспечения на основе нечеткой логики2020 год, кандидат наук Югансон Андрей Николаевич
Поиск ошибок в бинарном коде методами динамической символьной интерпретации2022 год, кандидат наук Вишняков Алексей Вадимович
Разработка алгоритмических и программных средств, повышающих эффективность обнаружения вторжений на основе использования скрытых марковских моделей2008 год, кандидат технических наук Аникеев, Максим Владимирович
Метод и средства защиты исполняемого программного кода от динамического и статического анализа2014 год, кандидат наук Аранов, Владислав Юрьевич
Методы организации процесса фаззинг-тестирования и анализа веб-приложений на основе моделей динамических байесовских сетей2024 год, доктор наук Полухин Павел Валерьевич
Список литературы диссертационного исследования кандидат наук Печенкин, Александр Игоревич, 2013 год
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Тихонов, А.Ю. Комбинированный (статический и динамический) анализ бинарного кода. [Текст] / А.Ю. Тихонов, А.И. Аветисян // Труды Института системного программирования РАН. — М.: Изд-во РАН, 2012. — т. 22. — С.131-
л г л
1Э1.
2. Миноженко, Ф.А. Поиск уязвимостей с помощью автоматизированного статистического анализа исходного кода [Электронный ресурс] / Ф.А. Миноженко // URL http://iscs-expo.primexpo.ru/media/52/present2013/minozhenko.pdf, режим доступа: свободный.
3. Падарян, В.А. Программная среда для динамического анализа бинарного кода. [Текст] / В.А. Падарян, А.И. Гетьман, М.А. Соловьев // Труды Института системного программирования РАН. — М.: Изд-во РАН, 2009. — т. 16. — С.51-72.
4. Марков, А.С. Аудит программного кода по требованиям безопасности. [Текст] / А.С. Марков, B.JI. Цирлов // Information Security. — 2008. — №2. — С.56-57.
5. Марков, А.С. Проблемы автоматизации выявления программных закладок и дефектов [Электронный ресурс] / А.С. Марков, А.А. Фадин // URL http://www.npo-echelon.ru/doc/0717.pdf, режим доступа: свободный.
6. Branco, R.R. Dynamic Program Analysis and Software Exploitation [Электронный ресурс] / R.R. Branco / URL https://www.troopers.de/wp-content/uploads/2011/04/TR1 l_Branco_Dynamic_program_analysis.pdf, режим доступа: свободный.
7. Печенкин, А. И. Анализ достоверности результатов поиска уязвимостей в программных продуктах [Текст] / А. И. Печенкин // Сб. материалов 19-й научно-технической конференции "Методы и технические средства обеспечения безопасности информации". — СПб.: Изд-во Политехи, ун-та, 2010. — С. 123-124.
8. Исаев И.К. Применение динамического анализа для генерации входных данных, демонстрирующих критические ошибки и уязвимости в программах.
[Текст] / И.К. Исаев, Д.В. Сидоров // Программирование. — М.: Изд-во РАН.— 2010, —№4, —С.1-16.
9. Sutton, М. Fuzzing: brute force vulnerability discovery [Текст] / M. Sutton, A. Greene, P. Amini // Addison-Wesley Publishing Co. — 2007.
10. Чепик, H.A. Проблемы и перспективы использования суперкомпьютерных технологий в задачах защиты информации [Электронный ресурс] / URL
http://www.nscf.ru/TesisAri/Stand%20section/1820_ChepikNA_Stand.pdf, режим доступа: свободный.
11. Ильин, С. SDL, или безопасность по Microsoft [Текст]/ С. Ильин // Хакер. — 2009, —№ 1, —С. 32-36.
12. Печенкин, А. И. Безопасность АСУ ТП энергосистем, использующих промышленные протоколы передачи данных [Текст] / П. Д. Зегжда, Т. В. Степанова, А. И. Печенкин // Журнал "Известия Российской Академии Наук. Энергетика". — М.: Изд-во Наука, 2013. — №5. — С. 59-64.
13. Коробейник, А.Н. Краткие основы тестирования программного обеспечения. [Текст] / А.Н. Коробейник // Киев: Изд-во Директ-лайн. — 2012. — С.30-35.
14. Благодаренко, А. Методы поиска уязвимостей в ПО без исходных кодов [Электронный ресурс] / URL http://artem.ufoctf.ru/?p=226, режим доступа: свободный.
15. RFC. THE TFTP PROTOCOL [Электронный ресурс] / URL http://tools.ietf.org/html/rfcl350, режим доступа: свободный.
16. Fuzzing - технология поиска уязвимостей [Электронный ресурс] / URL http://fazzing.ru/node/2, режим доступа: свободный.
17. Печенкин, А. И. Обнаружение несанкционированной сетевой активности вредоносного программного обеспечения [Текст] / А. И. Печенкин // Материалы VII межрегиональной конференции "Информационная безопасность регионов России", —СПб.: СПОИСУ, 2011. — С.87-88.
18. Печенкин, А. И. Мониторинг сетевой активности вредоносного программного обеспечения [Текст] / Д. А. Москвин, А. И. Печенкин // Сб. материалов XII Санкт-Петербургской международной конференции "Региональная информатика". — СПб.: Изд-во СПИИРАН, 2010. — С. 125-126.
19. Поляничко М.А. Integrity control of input data during automated software analysis. [Текст] / М.А. Поляничко // Журнал «Программные продукты и системы».— Тверь: Изд-во НИИ «Центрпрограммсистем».— 2012. — №1. — С.42-45.
20. Ильин, С. Фаззинг, фаззить, фаззер: ищем уязвимости в программах, сетевых сервисах, драйверах [Текст] / С. Ильин // Хакер. — 2010. — № 7. — С. 3236.
21. Software Quality Assurance, Fuzzing and the Discovery of Buffer Overflows [Электронный ресурс] / URL http://www.beyondsecurity.com/bestorm_fuzzing_QA_buffer_overflow.html, режим доступа: свободный.
22. Благодаренко, А. Фазили, фазили ... и наконец нафазили. А дальше что? [Электронный ресурс] / Abouchaev Adel, Hasse Damian, Lambert Scott, Wroblewski Greg // URL http://msdn.microsoft.com/en-us/magazine/ccl63311.aspx, режим доступа: свободный.
23. Abouchaev Adel. Software Quality Assurance, Fuzzing and the Discovery of Buffer Overflows [Электронный ресурс] / URL http://www.beyondsecurity.com/bestorm_fuzzing_QA_buffer_overflow.html, режим доступа: свободный.
24. Gorbunov, S. AutoFuzz: Automated Network Protocol Fuzzing Framework [Текст] / S. Gorbunov // International Journal of Computer Science and Network Security — 2010. — vol. 10. — № 8. — C. 239-245.
25. Макаров, A.H. Метод автоматизированного поиска программных ошибок в алгоритмах обработки сложноструктурированных данных [Текст] / А.Н. Макаров // Журнал «Прикладная дискретная математика» — 2009. — №3. — С. 117-127.
26. Печенкин, А. И. Моделирование поиска уязвимостей методом фаззинга с использованием автоматного представления сетевых протоколов. [Текст] / А. И. Печенкин, Д. С. Лаврова // Журнал "Проблемы информационной безопасности. Компьютерные системы". — СПб.: Изд-во Политехи, ун-та. — 2013. — №2. — С. 61-67.
27. Синцов, А. Продвинутый фаззинг: Хитрые трюки поиска уязвимостей [Текст] / А. Синцов // Журнал «Хакер». — 2011. — № 1. — С. 64-70.
28. Seitz, J. Gray Hat Python: Python Programming for Hackers and Reverse Engineers [Текст] / J. Seitz // No Starch Press . — 2009.
29. Sulley: Fuzzing Framework [Электронный ресурс] / URL http://www.fuzzing.org/wp-content/SulleyManual.pdf, режим доступа: свободный.
30. Peach Fuzzer [Электронный ресурс] / URL http://peachfuzzer.com/WhatIsPeach.html, режим доступа: свободный.
31. Уязвимости и угрозы информационной безопасности информационных и телекоммуникационных систем [Электронный ресурс] / URL http://comp-bez.ru/?p=782, режим доступа: свободный.
32. Tsipenyuk, К. Seven Pernicious Kingdoms: A Taxonomy of Software Security Errors [Текст] / К. Tsipenyuk, В. Chess, G. McGraw // IEEE Security & Privacy — 2005. —vol. 3. —№6, —C. 81-84.
33. Pothamsetty, V. A. vulnerability taxonomy for network protocols: Corresponding engineering best practice countermeasures [Текст] / V. Pothamsetty // Communications, Internet, and Information Technology — 2004. — C. 168-175.
34. Whalen, S. Protocol Vulnerability Analysis [Электронный ресурс] / URL http://www.cs.ucdavis.edu/research/tech-reports/2005/CSE-2005-4.pdf, режим доступа: свободный.
35. HotFuzz. User manual [Электронный ресурс] / URL http://hotfuzz.sourceforge.net/files/UserManual.pdf, режим доступа: свободный.
36. Аветисян, А. Использование статического анализа для поиска уязвимостей и критических ошибок в исходном коде программы [Текст] / А.
Аветисян, А. Белеванцев, А. Бородин, В. Несов // Труды Института системного программирования РАН. — 2001. — т. 21. — С.23-38.
37. Марков, A.C. Статический сигнатурный анализ безопасности программ [Текст] / A.C. Марков, A.A. Фадин — Программная инженерия и информационная безопасность — 2013. — № 1. — С. 50-56.
38. Хогланд, Г. Взлом программного обеспечения: анализ и использование кода [Текст] / Г. Хогланд, // М.: «Вильяме» — 2005.
39. Печенкин, А. И. Применение генетических алгоритмов для повышения эффективности поиска уязвимостей в системном и прикладном ПО [Текст] / Д.А.Москвин, А. И. Печенкин, Д.В.Мельницкий // Сб. материалов 21-й конференции "Методы и технические средства обеспечения безопасности информации". — СПб.: Изд-во Политехи, ун-та, 2012. — С. 165-167.
40. Beyer, H.-G. How to analyse Evolutionary Algorithms [Текст] / H.-G. Beyer // Technical Report No.CI-139/02. — Dortmund: University of Dortmund. — 2002.
41. Heitkotter, J. The Hitch-Hiker's Guide to Evolutionary Computation: A List of Frequently Asked Questions (FAQ) [Электронный ресурс] / URL http://aiinfmance.com/gafaq.pdf, режим доступа: свободный.
42. Курейчик, В. М. Поисковая адаптация: теория и практика [Текст] / В.М. Курейчик, Б.К. Лебедев, O.K. Лебедев // М: Физматлит. — 2006. — С. 272.
43. Основные понятия генетических алгоритмов [Электронный ресурс] / URL http://www.aiportal.ru/articles/genetic-algorithms/basic-concepts.html, режим доступа: свободный.
44. Панченко, Т.В. Генетические алгоритмы [Текст] / Т.В. Панченко // Астрахань: Издательский дом «Астраханский университет». — 2007. — С. 13-15.
45. Классический генетический алгоритм. Часть III. Селекция [Электронный ресурс] / URL http://www.aiportal.ru/articles/genetic-algorithms/classic-alg-part3.html, режим доступа: свободный.
46. А С++ Library of Genetic Algorithm Components [Электронный ресурс] / URL http://lancet.mit.edu/ga/, режим доступа: свободный.
47. Рутковская, Д. Нейронные сети, генетические алгоритмы и нечеткие системы [Текст] / Рутковская Д., Пилиньский М., Рутковский JI. // М. : Горячая линия - Телеком. — 2006.
48. Классический генетический алгоритм. Часть IV. Скрещивание, мутация, создание популяции [Электронный ресурс] / URL http://www.aiportal.ru/articles/genetic-algorithms/classic-alg-part4.html, режим доступа: свободный.
49. Goldberg, D.E. Messy genetic algorithms: motivation, analysis, and first results [Текст] / Goldberg D.E., Korb B. // Complex Systems. — 1989. — №3. — C. 493-530.
50. Wu, A.S. A comparison of the fixed and floating building block representation in the genetic algorithm [Текст] / Wu A.S., Lindsay R.K. // Evolutionary Computation. — 1996 r. — 4 (2). — C. 169-193.
51. Burke, D.S. Putting more genetics into genetic algorithms [Текст] / Burke D.S., De Jong K.A., Grefenstette J.J., Ramsey C.L. // Evolutionary Computation. — 1998 г. — 6(4). — С. 387-410.
52. Mayer, H. ptGAs—genetic algorithms evolving noncoding segments by means of promoter/terminator sequences [Текст] / Mayer H. // Evolutionary Computation. — 1998 г. — 6(4). — С. 361-386.
53. Stringer, H. Winnowing wheat from chaff: The Chunking GA [Текст] / Stringer H., Wu A. S. // Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2004). — Berlin : Springer, 2004 г. — C. 198-209.
54. Wu, A.S. The proportional genetic algorithm: Gene expression in a genetic algorithm [Текст] / Wu A.S., Garibay I. // Genetic Programming and Evolvable Hardware. — 2002 r. — 3 (2).
55. Eshelman, L.J. Biases in the crossover landscape [Текст] / Eshelman L.J., Caruana R.A., Schaffer J.D. // Proceedings of the 3rd International Conference on Genetic Algorithms. — 1989 г. — C. 10-19.
56. Wu, A.S. Evolving control for distributed micro air vehicles [Текст] / Wu A.S., Schultz A.S., Agah A. // In Proceedings of IEEE Computational Intelligence in Robotics and Automation Engineers Conference. — 1999 r.
57. Bassett, J.K. Evolving behaviors for cooperating agents [Текст] / Bassett J.K., De Jong K.A. // International Syposium on Methodologies for Intelligent Systems. — 2000 г. — С. 157-165.
58. Wu, A.S. Learning using chunking in evolutionary algorithms [Текст] / WuA.S., Stringer H. // Proceedings of the 11th Conference on Computer-Generated Forces and Behavior Representations. — Orlando, FL. — 2002 г. — C. 243-254.
59. Grefenstette, J.J.. Learning sequential decision rules using simulation models and competition [Текст] / Grefenstette J.J., Ramsey C.L., Schultz A.C. // Machine Learning. — 1990 r. — №5. — C. 355-381.
60. Link Local Multicast Name Resolution (LLMNR) Profile [Электронный ресурс] / URL https://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CF0QFj AE&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F9%2F5%2FE% 2F95EF66 AF-9026-4BB0-A41D-A4F81802D92C%2F%5BMS-LLMNRP%5D.pdf&ei=WimsUpHYI6S05AS4yIHoBA&usg=AFQ)'CNGQ7-RY5WMX2E0ZG_mp, режим доступа: свободный.
61. Печенкин, А. И. Применение генетических алгоритмов для поиска уязвимостей в сетевых протоколах методом фаззинга / А. И. Печенкин // Журнал "Системы высокой доступности". — М.: Изд-во Радиотехника. — 2013. — С. 4653.
62. Администрирование Windows Server 2008. LLMNR в Windows Server [Электронный ресурс] / URL http://logi.cc/llmnr/#.Uqwti_RdU-I, режим доступа: свободный.
63. Рейтинг суперкомпьютеров [Электронный ресурс] / URL http://top50.supercomputers.ru/?page=rating, режим доступа: свободный.
64. Печенкин, А. И. Универсальная платформа распределенных вычислений на базе АРМ пользователей сети Интернет, облако своими руками [Текст] / А. И. Печенкин // Сб. материалов 20-й научно-технической конференции "Методы и технические средства обеспечения безопасности информации". — СПб.: Изд-во Политехи, ун-та, 2011. — С. 148-149.
65. Печенкин, А. И. Построение облачных вычислений на базе АРМ пользователей сети Интернет [Текст] / А. И. Печенкин // Материалы VII межрегиональной конференции "Информационная безопасность регионов России". — СПб.: СПОИСУ, 2011. — 87 с.
66. Потапов, A.A. Секционное представление интерактивных прикладных задач корпоративных информационных систем [Текст] / A.A. Потапов, В.Б. Механов // Телематика'2009: Труды XVI Всероссийской научно-методической конференции. — 2008. — С. 244-246.
67. Печенкин, А. И. Анализ сетевого трафика с помощью высокопроизводительных кластерных платформ [Текст] / А. И. Печенкин,
B. А. Мацуев // Сб. материалов 21-й научно-технической конференции "Методы и технические средства обеспечения безопасности информации". — СПб.: Изд-во Политехи, ун-та. — 2012. — С. 71-73.
68. Печенкин, А. И. Параллельный анализ безопасности сетевого трафика на многопроцессорном кластере [Текст] / А. И. Печенкин, Д. С. Лаврова // Журнал "Проблемы информационной безопасности. Компьютерные системы". — СПб.: Изд-во Политехи, ун-та. — 2013. — №1. — С. 36-41.
69. Печенкин, А. И. Моделирование высокоскоростной параллельной обработки сетевого трафика на многопроцессорном кластере [Текст] / А. И. Печенкин, Д. С. Лаврова // Журнал "Проблемы информационной безопасности. Компьютерные системы". — СПб.: Изд-во Политехи, ун-та. — 2012. — №4. —
C. 33-39.
70. Потапов A.A. Метод «WAL-FC-M1» динамической балансировки нагрузки серверов обработки корпоративных ИС [Текст] / A.A. Потапов // Пензенский государственный университет.
71. Степанова, Т. В. Конечно-автоматная модель адаптивного поведения многоагентной системы противодействия распределенным угрозам безопасности в сети Интернет [Текст] / Т. В. Степанова // Журнал "Проблемы информационной
безопасности. Компьютерные системы". — СПб.: Изд-во Политехи, ун-та. — 2012 г. —№3, —С. 46-52.
72. Степанова, Т. В. Обеспечение устойчивости распределенной системы защиты с помощью адаптивно изменяющейся управляющей структуры на случайном графе [Текст] / Д. П. Зегжда, Т. В. Степанова // Научно-методический журнал "Информатизация образования и науки". — М.: Изд-во ФГУ ГНИИ ИТТ "Информика". — 2012 г. — № 4 (16). — С. 64-73.
73. Печенкин, А. И. Архитектура масштабируемой системы фаззинга сетевых протоколов на многопроцессорном кластере [Текст] / А. И. Печенкин, А. В. Никольский // Журнал "Проблемы информационной безопасности. Компьютерные системы". — СПб.: Изд-во Политехи, ун-та. — 2013. — №2. — С. 73-80.
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.