Разработка подсистемы сканирования корпоративной сети на наличие запрещенных к использованию программ

Автор работы: Пользователь скрыл имя, 22 Февраля 2013 в 11:47, дипломная работа

Описание

Проблема с вредоносным программным обеспечением (далее ВПО) не является новой, точно также она не исчезнет в ближайшем будущем. Слишком много денег вложено теми людьми, которые используют трояны, вирусы и армии ботов, чтобы просто отказаться от их использования. Целью атак этого вредоносного программного обеспечения являются не только обычные пользователя домашних компьютеров, но и также пользователи корпоративных компьютеров.
Актуальность выполнения дипломного проекта по данной теме обусловлена фактом использования вредоносных программ для решения задач промышленного шпионажа.

Содержание

ВВЕДЕНИЕ 3
1 АНАЛИЗ УГРОЗ ВЫЧИСЛИТЕЛЬНОМУ ПРОЦЕССУ ПРЕДПРИЯТИЯ ОТ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 5
1.1 КЛАССИФИКАЦИЯ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 5
1.2 КАНАЛЫ РАСПРОСТРАНЕНИЯ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 6
1.3 ОПИСАНИЕ ПОПУЛЯРНЫХ ВИДОВ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 7
1.4 ОБЗОР ВПО НА ПРИМЕРЕ ВИРУСА WIN32.MANIAC.B 9
1.5 ПОСТАНОВКА ЗАДАЧИ НА ДИПЛОМНОЕ ПРОЕКТИРОВАНИЕ 12
2 МЕТОДЫ БОРЬБЫ С ВРЕДОНОСНЫМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ 13
2.1 КОНТРОЛЬ ПРИЛОЖЕНИЙ 13
2.2 ОРГАНИЗАЦИЯ КОНТРОЛЯ ПРИЛОЖЕНИЙ В СРЕДЕ WINDOWS 14
2.3 ОРГАНИЗАЦИЯ КОНТРОЛЯ ПРИЛОЖЕНИЙ В СРЕДЕ UNIX 16
2.4 ПРОАКТИВНЫЕ ТЕХНОЛОГИИ 16
2.5 АНТИВИРУСНАЯ ЗАЩИТА 18
2.6 ОРГАНИЗАЦИОННЫЕ МЕРЫ 20
3 РАЗРАБОТКА СИСТЕМЫ ПО ОБНАРУЖЕНИЮ ЗАПРЕЩЕННОГО И ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 22
3.1 ПРОЦЕСС РАЗРАБОТКИ 22
3.2 ИСПОЛЬЗУЕМЫЕ ТЕХНОЛОГИИ В ХОДЕ РАЗРАБОТКИ 23
3.2.1 ТРАНСПОРТНЫЙ ПРОТОКОЛ UDP 23
3.2.2 СИГНАТУРНОЕ ОБНАРУЖЕНИЕ 24
3.2.3 ПРОЦЕССЫ В СРЕДЕ ОС UNIX 26
3.3 ПОИСК И СОЗДАНИЕ СИГНАТУРЫ 29
3.4 ПРИНЦИП РАБОТЫ РАЗРАБОТАННОЙ СИСТЕМЫ ПО ОБНАРУЖЕНИЮ ВПО LA_SERVER.PL И LA_CONSOLE.PL 30
РИСУНОК 17 – ДЕМОНСТРАЦИЯ РАБОТЫ LA_SERVER.PL И LA_CONSOLE.PL ПО ШИРОКОВЕЩАТЕЛЬНОМУ КАНАЛУ. 32
3.5 РАЗБОР РАБОТЫ СЕРВЕРНОЙ ЧАСТИ LA_SERVER.PL 33
3.5 РАЗБОР РАБОТЫ КЛИЕНТСКОЙ ЧАСТИ LA_CONSOLE.PL 40
ЗАКЛЮЧЕНИЕ 46
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 47
ПРИЛОЖЕНИЯ 48

Работа состоит из  1 файл

мой_диплом_se.doc

— 1.87 Мб (Скачать документ)

На рисунке 8 приведен пример инкапсуляции UDP

Рисунок 8 –  Инкапсуляция UDP.


В нашем случае, программа  будет работать используя широковещательный  канал, отправляя UDP датаграмму с заданным портом.

Широковещательный канал (broadcast) - метод передачи данных в компьютерных и социальных сетях, при котором поток данных (каждый переданный пакет в случае пакетной передачи) предназначен для приёма всеми участниками сети.

В TCP/IP широковещание возможно только в пределах одного сегмента сети (L2 или L3). Однако пакеты данных могут быть посланы из-за пределов сегмента, в которой будет осуществлено широковещание (например, передача пакета на широковещательный IP-адрес через маршрутизатор из-за пределов сети). Нагрузка на сеть в случае широковещания не отличается от обычной передачи данных одному адресату, поскольку пакеты данных не размножаются (в отличие от групповой передачи, multicast), но в нашем случаи нагрузка на сеть будет минимальна.

Примером широковещания  является определение MAC-адреса, соответствующего определенному IP-адресу (например, с помощью протокола ARP). В этом случае отправляется широковещательный пакет с запросом, который достигает все подключенные к данному L3-сегменту сети устройства. Устройство с искомым IP-адресом отправляет в ответ пакет, содержащий требуемый MAC-адрес.

Пример использования  широковещательного канала приведен на рисунке 9.

Рисунок 9 – Отправка данных по широковещательному каналу.

3.2.2 Сигнатурное обнаружение

Обнаружение, основанное на сигнатурах — метод работы антивирусов  и систем обнаружения вторжений, при котором программа, просматривая файл или пакет, обращается к словарю с известными вирусами, составленному авторами программы. В случае соответствия какого-либо участка кода просматриваемой программы известной сигнатуре, антивирус может заняться выполнением одного из следующих действий:

- удалить инфицированный файл;

- отправить файл в «карантин» (то есть сделать его недоступным  для выполнения, с целью недопущения  дальнейшего распространения вируса);

- попытаться восстановить файл, удалив сам вирус из тела файла.

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

Антивирусные программы, созданные  на основе метода соответствия определению  вирусов в словаре, обычно просматривают файлы тогда, когда компьютерная система создаёт, открывает, закрывает или посылает файлы по электронной почте. Таким образом, вирусы можно обнаружить сразу же после занесения их на РС и до того, как они смогут причинить какой-либо вред. Надо отметить, что системный администратор может составить график для антивирусной программы, согласно которому могут просматриваться (сканироваться) все файлы на жёстком диске, хотя антивирусные программы, созданные на основе поиска соответствия определению вируса в словаре, при обычных обстоятельствах, могут достаточно эффективно препятствовать вспышкам заражения компьютеров, авторы вирусов стараются держаться на полшага впереди таких антивирусов, создавая полиморфические, метаморфические вирусы, в которых некоторые части участки кода перезаписываются, модифицируются, шифруются или искажаются так, чтобы невозможно было обнаружить совпадение с определением в словаре вирусов.

 

Создание и  распределение сигнатур. Сигнатуры антивирусов создаются в результате кропотливого анализа нескольких копий файла, принадлежащего одному вирусу. Сигнатура должна содержать только уникальные строки из этого файла, настолько характерные, чтобы гарантировать минимальную возможность ложного срабатывания (это главный приоритет любой антивирусной компании).

Разработка сигнатур - ручной процесс, тяжело поддающийся автоматизации. Несмотря на массу исследований, посвящённых автоматической генерации сигнатур, нарастающий полиморфизм (и «метаморфизм») вирусов и атак делают синтаксические сигнатуры бессмысленными. Антивирусные компании вынуждены выпускать большое количество сигнатур для всех вариантов одного и того же вируса

В нынешнем виде, базы сигнатур должны пополняться регулярно, так как  большинство антивирусов не в  состоянии обнаруживать новые вирусы самостоятельно. Любой владелец ПО, основанного на сигнатурах, обречён на регулярную зависимость от обновления сигнатур, что составляет основу бизнес-модели производителей антивирусов.

Своевременная доставка новых сигнатур до пользователей также является серьёзной проблемой для производителей ПО. Современные вирусы и черви распространяются с такой скоростью, что к моменту выпуска сигнатуры и доставки её на компьютер пользователей, эпидемия уже может достигнуть своей высшей точки. По опубликованным данным, доставка сигнатуры занимает от 11 до 97 часов в зависимости от производителя, в то время как теоретически, вирус может захватить весь интернет меньше, чем за 30 секунд.

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

Проблемы разработки сигнатур и слабого распределения некоторых представителей вредоносного ПО приводят к тому, что разработанные в разных антивирусных компаниях сигнатуры содержат определения для разных подмножеств вирусов. Эту проблему можно устранить, разработав международный стандарт на описание антивирусных сигнатур, который будет содержать необходимую информацию для обнаружения, идентификации и устранения вредоносного ПО. Максимальный эффект от такого стандарта можно получить при реализации централизованной базы знаний по вредоносному ПО, в которую все антивирусные компании будут иметь право записи новых сигнатур (или изменение существующих). Но в таком централизованном хранилище (базе данных) каждая запись должна иметь цифровую подпись автора (конкретной компании), которая будет защищать конечных пользователей от атаки на локальную базу сигнатур путем отравления её содержимого. Так же при добавлении новых записей в центральное хранилище сигнатур должен изменяться рейтинг фирм производителей, этот рейтинг сделает фирмы заинтересованными, так как их работу пользователь может напрямую оценивать.

 

Недостатки. Позволяют определять конкретную атаку с высокой точностью и малой долей ложных вызовов. Неспособны выявить какие-либо новые атаки. Беззащитны перед полиморфными вирусами и изменёнными версиями того же вируса. Требуют регулярного и крайне оперативного обновления. Требуют кропотливого ручного анализа вирусов.

Достоинства. Метод эвристического сканирования призван улучшить способность сканеров применять сигнатуры и распознавать модифицированные вирусы в тех случаях, когда сигнатура совпадает с телом неизвестной программы не на 100%. Данная технология, однако, применяется в современных программах очень осторожно, так как может повысить количество ложных срабатываний.

3.2.3 Процессы в среде ОС  UNIX

Общее понятие о процессах  в Unix-системах. Процесс - это нечто вроде контейнера, объединяющего выполняемое приложение, его переменные среды, состояние потоков ввода/вывода приложения и параметры процесса, включающие в себя его приоритет и степень использования ресурсов системы. Рисунок 10 иллюстрирует понятие процесса.

 

 

Рисунок 10 - Концептуальная модель процесса в UNIX.

Можно представлять процесс  как независимое государство  со своими границами, ресурсами и  валовым национальным продуктом.

Каждый процесс имеет  своего владельца. Задачи, инициализируемые пользователем, например, его shell и командами, обычно принадлежат этому пользователю. Системные процессы могут принадлежать пользователям с особыми правами  или системному администратору root. Например, для повышения безопасности Apache HTTP Server обычно принадлежит выделенному пользователю с именем www, который предоставляет Web-серверу только доступ к файлам, которые ему необходимы для работы.

Владелец процесса может  меняться. У одного процесса не может быть одновременно двух владельцев.

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

Unix-системы имеют достаточно большой пул процессов. Каждая новая задача, например, запуск vi или xclock, немедленно получает процесс из пула. На Unix-системах можно получить информацию о процессах при помощи команды ps, либо заглянуть в каталог /procfs.

Создание процессов  в Unix-системах. Каждый новый процесс в UNIX является перевоплощением существующего процесса, этот существующий процесс называется init и имеет всегда постоянный идентификатор 1.

Системный вызов fork() (как показано на рисунке 11) используется для создания нового процесса. Когда процесс A выполнит вызов fork() в 13-й инструкции, система немедленно создаст точный клон процесса A - процесс Z. Процесс Z имеет те же переменные среды, что и A, то же содержимое памяти, то же состояние выполнения программы и те же самые открытые файлы. Состояние процессов A и Z сразу после того, как процесс А породил процесс Z, показано на рисунке 3.

В самом начале своего существования процесс Z начинает выполняться  с того самого места, где прекратил  свое выполнение процесс A. После этого  процесс Z начинает выполнение инструкции 14. Процесс A продолжает выполнение той же самой инструкции.

Обычно программная  логика инструкции 14 проверяет, является ли текущий процесс дочерним или  родительским, таким образом, инструкция 14 для каждого из процессов A и Z выяснит, является ли он дочерним или родительским. Системный вызов fork() вернет 0 дочернему процессу и вернет идентификатор процесса (pid) процесса Z родительскому процессу. После предыдущего теста процесс A и процесс Z расходятся, и каждый начинает выполнять свою собственную задачу.

 

 

Рисунок 11 – Клонирование самого себя процессом А.

 

После разветвления процесс A может продолжить выполнять все  то же приложение. Однако процесс Z может  немедленно приступить к выполнению другого приложения. Последняя операция по изменению процесса программой называется исполнением (execution), но более подходит к ней название перевоплощение. Хотя pid процесса остается тем же, инструкции внутри процесса целиком заменяются на новую программу. Рисунок 12 показывает состояние процесса Z на этом этапе.

 

 

Рисунок 12 - Процесс Z теперь полностью  независим от своего предка, процесса A

 

Управление  процессами. Некоторые процессы работают с момента включения компьютера до его выключения (init, к примеру), а некоторые процессы перевоплощают себя в новую форму (оболочка, к примеру). Но большинство процессов заканчивают свое выполнение, как только выполнят соответствующую им задачу.

Кроме того, можно временно приостановить деятельность процесса или принудительно завершить процесс командой kill. Если процесс высокоприоритетный и выполняется, так сказать, на переднем плане, можно приостановить его нажав Control-Z.

Для удобства управления процессами, разработчики часто добавляют функцию по сохранению идентификатора процесса в файл, как правило создается текстовый файл с цифрой (pid) внутри (/var/run/clamav). Эта удобно например для перезапуска процесса, либо его завершения. Например ниже приведенная команда перезапустить http сервер nginx:

 

kill –HUP `cat /var/run/nginx.pid`

3.3 Поиск и создание сигнатуры

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

Для поиска сигнатуры  в нашем случаи понадобится ВМ (VirtualBox), hex-редактор (the), утилита strace и исследуемый экземпляр. Исследования будут проводиться под ОС Linux.

Необходимо запустить  ИЭ через strace под ВМ, тогда strace покажет  какие вызовы делает ИЭ. На рисунке 13 видно, что ИЭ в своей работе подразумевает удаление файла /etc/passwd командой rm через вызова функции execve(), поэтому будем искать эту сигнатуру. Так же можно открыть файл в режиме ASCII, если файл не сжат (например UPX-ом, http://ru.wikipedia.org/wiki/UPX), то наверняка строку аргументов rm –fr /etc/passwd удаться обнаружить, что  информацию о скрытом функционале ИЭ.

На рисунке 14 показано открытие ИЭ средствами hte в режиме ASCII.

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