Невозможно отобразить презентацию
Категория: ПрограммированиеПрограммирование

Эвристический анализ вирусных программ

Эвристический анализ вирусных программ Выполнил: Шипулин К.В.

443 группа Научный руководитель: Мокляков Виталий Александрович 2 подхода к обнаружению вирусов 1)Сигнатуры – небольшие фрагменты кода вируса, по которым можно однозначно его идентифицировать 2)Эвристика – алгоритмы анализа, которые выявляют потенциально опасные действия и которые не основываются на заранее известной информации Задача и Алгоритм Задача : На основе скомпилированной копии программы установить, является ли она вредоносной или нет.

Изучить способы решения этой задачи, трудности её решения и реализовать алгоритм.

Алгоритм : Внутри себя программа вызывает системные функции, проведя и анализ можно выяснить степень их потенциальной опасности Допущения

• Процессорная платформа IA-32

• Операционные системы семейства Windows (начиная от Windows XP SP3) Теория (1).

PE файл

• Любая программа для windows – PE файл с PE заголовком и машинными инструкциями

• Любой код в системе windows – арифметические, логические, условные инструкции и вызовы Windows API

• Вызовы API функций формируют логику работы программы

• Каждой API функции передаются параметры Теория (2).

Поиск API функций

• Скомпилированные API функции хранятся в системных dll библиотеках (user32.dll, etc)

• В пользовательскую программу API добавляется через таблицы импорта

• 3 вида таблиц импорта – Import table, Bound import, Delay import.

Самый популярный – Import table

• В Import table хранятся имена библиотек и функций Теория (3).

Вызов API функций

• В коде программы есть инструкции вызова (call), прямо или косвенно указывающих на таблицу импорта

• Несколько вызовов вместе имеют больший смысл, чем несколько отдельных вызовов Теория(4).

Передача параметров

• 99% API функций принимают параметры

• Параметры передаются через стек

• Не все параметры помогут при анализе

• Параметры могут передаваться крайне неочевидно Теория(5) Статический и динамический анализ Призван решить проблемы нахождения передаваемых параметров

• Статический анализ смотрит окрестность вызова и пытается выяснить параметры сам

• Динамический анализ запускает код и позволяет программе самой собрать параметры и положить их в стек.

Практика(1) В рамках курсовой работы я реализовал просто анализирующий метод.

Алгоритм его работы таков: 1)Определить таблицу импорта и импортируемые функции 2)Составить карту вызовов API функций в коде.

3)Следуя заранее составленной таблице за каждую потенциально опасную функцию увеличить счётчик общей вредоносности Практика(2) Тестирование : Были составлены 4 программы: 2 позиционируются как вредоносные, 2 – как безопасные.

Размеры кода – не более 100 строк.

Результат : Индекс вредоносности «плохих» программ был посчитан выше, чем безопасных.

Вывод

• Создание эвристического анализатора, способного выявлять большинство вредоносных программ и иметь малый процент ложных срабатываний – очень
English     Русский Правила