Защита корпоративных вычислительных сетей

Название работы: Защита корпоративных вычислительных сетей

Скачать демоверсию

Тип работы:

Дипломная

Предмет:

Телекоммуникации

Страниц:

88 стр.

Год сдачи:

2002 г.

Содержание:

Введение

1. Появление вредного программного обеспечения

2. Разнообразие РПС

3. Экспоненциальный рост РПС

Глава 1. Сравнительный анализ существующих

программных средств борьбы с РПС, их недостатки и

постановка задачи работы

1.1. Классы существующих антивирусных средств

1.1.1. Детекторы и фаги

1.1.2. Сторожа

1.1.3. Ревизоры

1.1.4. Вакцины

1.1.5. Перспективные средства защиты

1.1.6. Сравнительный анализ существующих средств

защиты от вирусов

1.2. Недостатки существующих антивирусных средств

применительно к современной ситуации.

1.3. Постановка задачи работы

Глава 2. Определение, модели и классификация РПС

2.1. Отсутствие строгого определения компьютерного

вируса

2.1.1. Классическое определение компьютерного вируса

2.1.2. Невозможность создания универсального

антивируса с точки зрения классического определения

2.1.3. Рекурсивные определения вируса.

2.2. Функциональное представление и определение РПС

2.3. Классификация РПС на базе их функциональной

модели

2.4. Резюме

Глава 3. Поэтапный подход к анализу исполняемого кода

программ и общая структура системы анализа.

3.1. Поэтапная схема анализа исполняемого кода

3.1.1. Выделение чистого кода

3.1.2. Лексический анализ

3.1.3. Дизассемблирование

3.1.4. Синтаксический анализ

3.1.5. Выделение структуры программы и перевод на ЯБВУ

3.1.6. Семантический анализ

3.2. Взаимодействие синтаксического и семантического

анализа

3.3. Общая структура системы анализа

3.4. Резюме

Глава 4. Реализация интеллектуальной системы анализа

исполняемого кода программ

4.1. Построение дерева свертки РПС и набора

характерных признаков.

4.2. Подходы к построению системы анализа без

использования динамических методов исследования.

4.2.1. Подход 1: метод поиска характерных признаков

4.2.2. Подход 2: метод полного дизассемблирования

4.3. Принципы работы системы SubLVA

4.4. Обзор алгоритмов, необходимых для реализации

системы

4.4.1. Этапы лексического и синтаксического анализа

4.4.2. Этап семантического анализа.

4.4.2.1. Машина логического вывода

4.4.2.2. Форма представления знаний

4.5. Резюме

Список литературы.

Выдержка:

Введение:

Все прогрессивные открытия человечества рано или поздно начинали служить ему во вред. И если с момента открытия радиоактивности до создания атомной бомбы прошло ровно 50 лет, то с момента изобретения компьютера до того, казалось бы, невероятного события, что он стал применяться во зло, прошел в два раза меньший срок. Этим событием стало появление программ, направленных на нарушение функционирования отдельных компьютеров или их сети, порчу или уничтожение информации. Такие программы впоследствии получили название "вредное программное обеспечение" (badware).

Их история начинается еще с работ теоретика современных компьютеров фон Неймана. Он разрабатывал модели автоматов, способных к самовоспроизведению и математически доказал возможность существования таких машин. После этого идея саморазмножающихся программ "витала в воздухе" и время от времени находила свою более или менее адекватную реализацию.

Так, в 60-х и 70-х годах, когда в основном использовались большие ЭВМ (mainframe) типа UNIVAC, среди обслуживающего персонала существовал термин "программа-кролик" (rabbit). Так называли программу на интерпретируемом командном языке, которая запускала сама себя на выполнение, что обычно приводило систему к полному краху. Однако обычно такие программы возникали непреднамеренно, в результате ошибок программистов.

Приблизительно в 1970 г. была создана саморазмножающаяся программа для одной из первых компьютерных сетей — APRAnet. Она называлась Creeper (вьюнок) и распространялась по сети от одного компьютера к другому. Интересно, что для уничтожения этой вредной программы была написана другая, названная Reaper (жнец), которая также распространялась по сети и уничтожала копии Creeper.

Много новых идей в развитие вредящих программ внесли писатели фантасты в 70-х годах. Например, 1975 году Джоном Брунером (John Brunner) был опубликован роман "The Shockwave Rider". В нем была достаточно детально описана программа, называемая червем (worm), которая распространялась по компьютерной сети, подбирала имена и пароли пользователей, и была распределена по всей сети — если одни ее фрагменты уничтожались, их заменяли аналогичные, находящиеся в других компьютерах. Примерно по этой схеме был построен самый знаменитый на сегодняшний день представитель вредного ПО — червь Роберта Морриса.

В конце 70-х годов, параллельно с появлением первых персональных компьютеров "Эпл" (Apple), стали бурно развиваться компьютерные сети, основанные на обычных телефонных каналах. Появляются первые банки свободно распространяемых программ — BBS (Bulletin Board System, электронная доска объявлений), в которые каждый мог загрузить любую программу и считать любую из имеющихся там. Это привело к появлению первых троянских коней (Trojan Horses), которые загружались на BBS под видом полезных, а при запуске уничтожали информацию на компьютере пользователя.

Глава 4:

Применяемые на этапе лексического анализа алгоритмы поиска регулярных выражений хотя и являются достаточно сложными, но широко описаны. Для поиска регулярных ассемблерных выражений, как отмечалось в п. 3.1.2, их необходимо перевести в соответствующие регулярные битовые. Для этого необходим алгоритм ассемблирования, реализация которого также не вызывает трудностей.

Применяемое на этапе 3 дизассемблирование в том виде, как оно необходимо для данной системы, будет являться однопроходным, без составления таблиц процедур и переменных и тем самым также относительно несложно. Более того, на этом этапе может вызываться внешняя процедура с параметрами — адресами начала и конца дизассемблируемого участка (что и сделано в системе).

Этап синтаксического анализа является самым сложным для программирования. Как было подчеркнуто, выражения уровня 3 на макроассемблере могут приводить к бесконечному числу выражений уровня 4. Очевидно и обратное — свертка сигнатур уровня 4 в сигнатуры уровня 3 может иметь бесконечное число решений. К счастью, мы знаем обе сигнатуры — найденную и ту, в которую пытаемся свернуть. Поэтому остается только доказать, что фактически найденная сигнатура может получаться из макроассемблерного выражения.

Нет ли здесь противоречия с тем, что это вроде бы должно следовать из смысла самого дерева свертки? К сожалению, нет. Здесь и проявляются нечеткость получаемой информации. Приведем пример.

Рассмотрим макроассемблерное выражение уровня 3:

MOV ax, 0С

MOV es, 00

Это выражение приводит к вполне естественному представлению на уровне 4:

mov ax, 0C

mov x1, 00

mov es, x1

И в качестве конкретной сигнатуры могла бы быть найдена такая:

mov ax, 0C

mov ax, 00

mov es, ax

Которая, очевидно, не является представлением искомого макровыражения.

Для решения подобной задачи обычно применяют динамические методы: ставится точка останова после последней проверяемой команды, управление передается на найденную последовательность и при останове проверяются значения регистров. Поскольку мы отказались от динамических методов, приходится в некоторой степени моделировать этот процесс.

Похожий алгоритм реализован в программе Sourcer, которая довольно точно определяет, какая и с какими параметрами была вызвана функция DOS, даже если явного присваивания в регистры сделано не было.

Похожие работы на данную тему