А.Р. ХАНОВ Научный руководитель – М.В. БАКЛАНОВСКИЙ Санкт-Петербургский государственный университет АЛГОРИТМ РАСПОЗНАВАНИЯ ПРОГРАММ ПО ИХ ПОВЕДЕНИЮ В СИСТЕМЕ Проблема идентификации программ остро стоит в сфере информационных технологий, особенно в задачах информационной безопасности. Для обнаружения вредоносных кодов важно иметь возможность распознавать программы в процессе их работы. Нами был предложен алгоритм идентификации процессов по последовательностям системных вызовов, совершаемых их потоками. Проведенные тесты показали высокую точность разработанного алгоритма при сравнении различных программ, работающих в операционной системе. Нами решалась задача идентификации запущенных в системе программ на основе информации о том, как они взаимодействуют с операционной системой. В качестве такой информации были использованы последовательности системных вызовов, которые совершают эти программы. Драйвер, описанный в [1] позволяет осуществлять логирование номеров системных вызовов сразу у всех потоков процессов операционной системы Windows с достаточно высокой скоростью. Наш алгоритм идентификации потоков основан на особых цепочках вызовов, которые повторяются во всей последовательности за некоторый промежуток времени работы более одного раза. Такие цепочки были названы нами термами. На первом этапе работы алгоритма мы проводим извлечение всех дубликатов из последовательности, используя такую структуру данных как суффиксный массив. На втором этапе из всего множества дубликатов мы должны выбрать некоторое количество наиболее характерных термов. Для этого мы пользуемся следующими эвристическими правилами: 1) Наиболее длинные термы несут больше информации. 2) Наиболее частые термы более характерны для своего потока. Второй этап алгоритма состоит в фильтрации последовательностей, полученных на первом этапе. Перебирая все дубликаты, начиная с самых длинных, мы выбираем те из них, которые встретились не менее фиксированного числа раз. Также мы фиксируем количество извлекаемых термов и их минимальную длину. Сам алгоритм идентификации состоит в нахождении в последовательностях вызовов одного потока термов другого потока. При этом получаем две характеристики: число встретившихся термов и максимальная длина встретившегося терма. В случае если оба этих потока принадлежат одной и той же программе или исполняют один код, эти характеристики должны быть максимальными среди всех тестируемых потоков. В таблице приведена часть результатов. Для каждого исходного и тестируемого процесса указано число встретившихся термов и их максимальная длина. В данных тестах брались самые длинные потоки соответствующих процессов. Всего было протестировано 12 процессов. Для выделения термов использовались последовательности вызовов порядка миллиона. Для распознавания потока достаточно было получить последовательность порядка 50 тысяч вызовов. Тест, Термы Calc Devenv Explorer IE Mines Notepad calc 964/360 103/93 devenv 3/62 explorer ie mines 37/11 77/32 61/134 86 /103 145/585 2/45 3/47 6 /71 23/98 105/55 192/49 85/28 176/45 62/23 87/41 3/29 8/34 1/27 322/110 1/23 1/71 0/0 0/0 0/0 0/0 400/722 0/0 notepad 105/80 148/65 14/47 50/39 45/60 224 /165 По таблице видно, что данные характеристики позволяют успешно распознавать потоки процессов. В дальнейшем планируется построение распределенной системы, которая будет собирать информацию о работающих на машинах потоках, что позволит обнаруживать вредоносные программы. Данная работа связана с идентификацией программ по потокам событий, что изначально использовалось для поиска ошибок в программах [2-3]. Список литературы 1. Одеров Р.С., Тенсин Е.Д., «Способы размещения своего кода в ядре ОС Microsoft Windows Server 2008». // Сборник трудов межвузовской научно-практической конференции «Актуальные проблемы организации и технологии защиты информации», СПб, 2011 год. Стр.100-102 2. David Lo, Hong Cheng,, Jiawei Han, SiauCheng Khoo, Chengnian Sun «Classification of Software Behaviors for Failure Detection: A Discriminative Pattern Mining Approach» // KDD’09, June 28–July 1, 2009, Paris, France. 3. M. Ahmadi, A. Sami, H. Rahimi, B. Yadegari, «Iterative System Call Patterns Blow the Malware Cover»// Security for The Next Generation 2011.