Невозможно отобразить презентацию
Similar presentations:
Эвристический анализ вирусных программ
Эвристический анализ вирусных программ Выполнил: Шипулин К.В.
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 строк.
Результат : Индекс вредоносности «плохих» программ был посчитан выше, чем безопасных.
Вывод
• Создание эвристического анализатора, способного выявлять большинство вредоносных программ и иметь малый процент ложных срабатываний – очень
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 строк.
Результат : Индекс вредоносности «плохих» программ был посчитан выше, чем безопасных.
Вывод
• Создание эвристического анализатора, способного выявлять большинство вредоносных программ и иметь малый процент ложных срабатываний – очень
programming