Научная статья на тему 'Применение сигнатурного анализа при оценке пакетных файлов'

Применение сигнатурного анализа при оценке пакетных файлов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
325
26
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИГНАТУРНЫЙ АНАЛИЗ / SIGNATURE ANALYSIS / ПАКЕТНЫЙ ФАЙЛ / BATCH FILE / ОШИБКА ПРОГРАММЫ / PROGRAM ERROR

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Соловьев В.А., Тарасов С.В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SIGNATURE ANALYSIS APPLYING FOR BATCH FILES EVALUATION

This paper considers the scheme of signature analysis. Pros and cons are shown. The main features that should be considered when implementing the search for signatures are listed.

Текст научной работы на тему «Применение сигнатурного анализа при оценке пакетных файлов»

УДК 004.492.3

B.А. Соловьев, V.A. Solovev, e-mail: v.a.solovev@gmail.com

C.В. Тарасов, S.V. Tarasov, e-mail: shizoid325@gmail.com

Омский государственный технический университет, г. Омск, Россия Omsk State Technical University, Omsk, Russia

ПРИМЕНЕНИЕ СИГНАТУРНОГО АНАЛИЗА ПРИ ОЦЕНКЕ ПАКЕТНЫХ ФАЙЛОВ

SIGNATURE ANALYSIS APPLYING FOR BATCH FILES EVALUATION

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

This paper considers the scheme of signature analysis. Pros and cons are shown. The main features that should be considered when implementing the search for signatures are listed.

98

Динамика систем, механизмов и машин, № 4, 2014

Ключевые слова: сигнатурный анализ, пакетный файл, ошибка программы

Key words: signature analysis, batch file, program error

Сигнатурный поиск один из самых важных алгоритмов анализа файлов на предмет установления факта заражения их вредоносным ПО, определения типа, восстановления и т.д. Сигнатурный поиск самый старый способ анализа файлов и является одним из основных методов, применяемых в антивирусном ПО и анализаторах файлов. В общем случае сигнатура - это некоторый форматизированный признак, присущий только данному типу файлов, или программе, он должен быть максимально уникальным чтобы исключить возможность ложного срабатывания. Он может быть представлен как набор байтов, некоторая байтовая маска типа «E2 E3 BA C2 ?? ?? FF ??», или некоторый признак, например, «концом тестового файла считать первый байт, не входящий в таблицу ASCII кодов». Кроме того, типы файлов можно определять по структуре их заголовков, например, исполняемые PE файлы, или JFIF для JPEG и т.д. Составление сигнатур - это трудоемкая задача, которую необходимо уметь решать быстро, поскольку от этого зависит защищенность пользователей.

В работе предлагается применять методы сигнатурного поиска для определения дефектов кода скриптов и бинарных исполняемых файлов, с целью снижения возможности проникновения злоумышленника в систему, нарушения свойств информации, хранящихся в системе. Для классификации дефектов, приводящих к возникновению тех или иных уязвимо-стей используется Common Weakness Enumeration (CWE). На сегодняшний день последняя версия стандарта 2.6 и он доступен он по адресу http://cwe.mitre.org/.

Согласно рейтингу TIOBE [1] наиболее популярными языками программирования являются: С, JAVA, Objective-C, C++, Visual Basic, C#, PHP, Python, JavaScript, Perl.

Одним из часто встречаемых дефектов является неверная валидация входных данных, в частности, доверие приложения к пользователю. Такое поведения ведет к возникновению множества уязвимостей таких как переполнение буфера, манипулирование процессами, исполнение вредоносного кода на атакуемой машине, к множеству специфических уязвимо-стей, присущих веб-приложениям, например, XSS (Cross site scripting), CSRF и прочим. В листинге 1 рассмотрен пример полного доверия к пользователю на примере языка программирования PHP, входящего в десятку популярных языков программирования.

<?php

$user_data = $_POST['user_data'];

//далее идет работа, например, с базой данных,

//используя эту переменную без какой-либо проверки данных

?>

Листинг 1. Использование входных данных без их проверки

В данном примере приложение получает данные по HTTP от пользователя, и это приводят к выше описанным уязвимостям.

Для выявления подобных дефектов в рамках нашей задачи необходимо согласно стандарту CWE осуществить:

1) поиск вызовов получения пользовательских данных,

2) поиск вызовов потенциально опасных функций с использованием пользовательских данных.

Во время анализа необходимо учитывать вероятность злоупотребления возможностями интерфейса программирования приложений (Application programming interface (API)), библиотечными функциями, возможность использования функций не по тому назначению,

99

Динамика систем, механизмов и машин, № 4, 2014

что были заложены разработчиком, использование устаревших версии библиотек с ошибками.

Например, ошибку в стандартной функции glob() из стандартной библиотеки C (libc). Функция предназначена для получения списка файлов чьи имена удовлетворяют заданному шаблону. Ошибка заключается в том, что ограничение на выдачу функции, задаваемое переменной GLOB_LIMIT, не действует в случае задания некорректных путей в шаблоне (например, */../*/../*foo). Другой пример: функция open() языка Perl, помимо открытия файлов, может выполнять произвольные команды. Одним из возможных способов предотвращения исполнения команд является дополнение в начало строки символа "<".

Чтобы определять такие дефекты, необходимо уметь делать:

1) определить строки, где есть вызов потенциально опасного API (для этого необходимо иметь список сигнатур этих API);

2) определить корректные и неприемлемые параметры функций.

Обработка ошибок или их неправильная обработка, или же отсутствие их обработки в принципе, может привести систему в неопределенное состояние, или же вызвать аварийное завершение. Однако вывод слишком подробной информации об ошибке может упростить злоумышленнику анализ системы.

Для поиска таких дефектов не обходимо:

1) определить все блоки Try и Catch;

2) определить все возможные исключения, возникающие в блоке try и сопоставить их с обрабатываемыми;

3) сопоставить список обрабатываемых исключений со списком нежелательных исключений.

В общем случае для выявления дефектов нам необходимо проделать следующие операции:

1) определить имя информационного объекта переменной, в которой хранится пользовательская информация;

2) определить используемые в приложении библиотеки, сопоставить их со списком разрешенных;

3) определить функции, используемые в приложении, сопоставить их со списком нежелательных для данного языка программирования;

4) определить функции, в которых используется пользовательская информация, в форме именованных переменных;

5) определить все блочные конструкции языка (например, перехват исключений);

6) определить все блочные конструкции языка, в которых используется пользовательская информация в виде именованной переменной, или объекта.

Преимуществами сигнатурного поиска являются легкая реализация, быстрое выполнение и легкость составления самих сигнатур (для их составления подойдут регулярные вы-

ражения).

Для выполнения описанных выше операций необходимо:

1) разбить код приложения на строки с операциями;

2) выделить в строке операций функциональные литералы, объекты, создать список исключений для таких, как for, if, while, foreach и т.д.;

3) выделить в строке передачу значения;

4) выделить имена объектов.

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

100

Динамика систем, механизмов и машин, № 4, 2014

Библиографический список

1. TIOBE Index for May 2014 [Электронный ресурс] // TIOBE Software: TIOBE Index, 2014. - Режим доступа: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (дата обращения: 15.05.2014)

i Надоели баннеры? Вы всегда можете отключить рекламу.