Универсальный распаковщик для анализа вредоносных программ

Научная новизна работы заключается в том, что:

- предложены критерии оценивания однородности популяции и эволюционной адаптации, позволяющие оценивать разнообразие хромосом в текущем поколении и определять спосо бность метода эволюционного поиска улучшать средние значения целевой функции и не попадать в локальные оптимумы;

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

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

Работа выполнена в рамках госбюджетной темы “Научно-методические основы и математическое обеспечение для автоматизации и моделирования процессов управления и поддержки принятия решений на основе процедур распознавания и эволюционной оптимизации в нейросетевом и нечеткологическом базисах” (Номер гос. регистрации 0106U008621).

Литература: 1. Химмельблау Д. Прикладное нелинейное программирование. М.: Мир, 1974. 534 с. 2. The Practical Handbook of Genetic Algorithms. Volume II. New Frontiers / Ed. by L.D. Chambers. Florida: CRC Press, 2000. 421 p.

3. Олейник Ан.А. Выбор системы информативных признаков для классификации транспортных средств на основе эволюционного поиска // Комп’ютерне моделювання та інтелектуальні системи: Збірник наукових праць / За ред. Д.М. Пізи, С.О. Субботіна. Запоріжжя: ЗНТУ, 2007. С. 134-146. 4. Eiben A.E., Hintering R.., Michalewicz Z. Parameter Control in Evolutionary Algorithms // IEEE Transactions on Evolutionary Computation. 1999. № 3. P. 124-141. 5. Grefenstette J.J. Optimization of control parameters for genetic algorithms // IEEE Transactions on Systems, Man, and Cybernetics. 1986. № 16. P. 122-128.

6. Gremling J.T., Passino K.M. Genetic Adaptive Parameter Estimation // International Journal of Intelligent Control and Systems. 1999. № 3. P. 465-503. 7. Биргер И.А. Техническая диагностика. М.: Машиностроение, 1978. 240 с.

Поступила в редколлегию 08.11.2007

Рецензент: д-р техн. наук, проф. Бодянский Е.В.

Субботин Сергей Александрович, канд. техн. наук, лауреат премии Президента Украины, доцент кафедры программных средств Запорожского национального технического университета. Научные интересы: интеллектуальные системы поддержки принятия решений. Адрес: Украина, 69063, Запорожье, ул. Жуковского, 64, тел.: (061) 769-82-67.

Олейник Андрей Александрович, аспирант кафедры программных средств Запорожского национального технического университета. Научные интересы: интеллектуальные системы поддержки принятия решений. Адрес: Украина, 69063, Запорожье, ул. Жуковского, 64.

УДК004.056.57

УНИВЕРСАЛЬНЫЙ РАСПАКОВЩИК ДЛЯ АНАЛИЗА ВРЕДОНОСНЫХ ПРОГРАММ

АЙРАПЕТЯН Р.А.___________________________

Рассматривается новый универсальный метод распаковки вредоносных программ в памяти для сигнатурного поиска антивирусным сканером. В процессе распаковки происходит эвристический анализ программы. Такой подход позволяет увеличить количество обнаружения вредоносных программ и скорость работы антивируса.

1. Введение

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

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

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

Так, компания Eset разработала технологию ThreatSense [1]. Эта технология - сложная, сбалансированная система продвинутой эвристики и сигнатур -ного анализа. Данная система позволяет обеспечить одну из лучших возможностей по обнаружению не только известных, но и новых угроз, не снижая при этом скорости работы используемой системы.

Архитектурно эвристик состоит из следующих модулей: набор статических распаковщиков, эмулятор ЦП (а в некоторых случаях и операционной системы), реконструктор структур данных и поток управления (data and control flows). Поверх них «натянут» сам эвристический анализатор, представляющий собой совокупность детекторов правил. В чистом виде система правил совершенно бесполезна, и чтобы эвристический анализатор работал, как полагается, ему необходимы данные, собираемые остальными компонентами антивируса [2].

В отличие от эвристических анализаторов первого поколения, новые эвристики более требовательны к ресурсам компьютера, однако и уровень обнаружения у них значительно выше. Эвристические анализаторы в большинстве современных антивирусов являются эвристиками второго поколения. Казалось бы,

92

РИ, 2007, № 4

эвристики второго поколения могут обнаружить все вредоносные программы, если бы удалось создать 100% эмулятор, но эта задача не реализуема (особенно, если учесть сложность современных операционных систем) и поэтому эвристик не может достичь результата в 100% [3].

2. Принципы реализации

Большинство вредоносных программ запакованы (защищены) для затруднения анализа сигнатурными сканерами антивирусов. Для успешного обнаружения вредоносного кода антивирус должен уметь распаковать сканируемый файл до поиска сигнатуры. Поэтому еще самые первые версии антивирусов содержали специальные процедуры распаковки наиболее часто используемых упаковщиков. Большинство современных антивирусов содержат эмуляторы и эвристические анализаторы кода.

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

Программа до Программа после

распаковки распаковки

Процедура распаковки __1 Процедура распаковки

_г_

♦ Запакованный образ программы Распакованные код/данные программы

Рис. 1. Распаковка программы в памяти

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

Была собрана статистика по упаковщикам вредоносных программ (всего было проанализировано 36494 вредоносных файла). Для сбора статистики использовалась свободно распространяемая библиотека PeId [4]. При этом наличие упаковщика определялось как по сигнатурам, так и по энтропии. Под сигнатурным поиском упаковщика понимается поиск определенной последовательности байт (сигнатуры) в теле программы.

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

Как видно из графиков на рис. 2 и 3, результаты упакованности по сигнатурам и по энтропии практически совпадают.

упакованные

4681

Рис. 2. Статистика использования упаковщиков по сигнатурам

упакованные 1981

Рис. 3. Статистика использования упаковщиков по энтропии

Также из табл. 1 видно, что для упаковки 90% вредоносного ПО использовано всего 26 упаковщиков.

Предлагаемый универсальный распаковщик позволяет упакованной программе распаковать себя и создать «слепок» памяти, содержащий распакованный образ. Однако при этом распаковщик не дает причинить какой-либо вред системе во время распаковки программы.

Это достигается путем выполнения программы в изолированном окружении, в котором допустим строго ограниченный набор функций для выполнения. Допустимыми являются только те функции, которые используются для распаковки (табл. 2), остальные -запрещены.

Были собраны данные по использованию системных функций самыми популярными упаковщиками в процессе распаковки (табл. 2). Как только программа

РИ, 2007, № 4

93

Таблица 1 Использование упаковщиков

Упаковщик/ Количество Количество

компиллятор файлов

Microsoft 9309 25,51

UPX 5904 16,18

Borland 4806 13,17

Nothing 4681 12,83

ASPack 1992 5,46

FSG 1638 4,49

PECompact 934 2,56

Morphine 767 2,10

ASProtect 652 1,79

yoda's 645 1,77

PEtite 416 1,14

LCC 406 1,11

Dev-C++ 369 1,01

Armadillo 330 0,90

MEW 301 0,82

Upack 261 0,72

tElock 207 0,57

SVKP 203 0,56

UPX-Scrambler 196 0,54

Obsidium 178 0,49

NSPack 164 0,45

Nullsoft 122 0,33

PE 116 0,32

PESpin 112 0,31

nSPack 107 0,29

пытается вызывать запрещенную функцию - выполнение прекращается и снимается «слепок» памяти, после чего происходит его анализ сигнатурными сканерами. При этом программа оказывается полностью р аспакованной.

Как известно, все вызовы Win32 API в конечном итоге направляются к модулю ntdll.dll, который передает их ntoskemel.exe. Именно на этом этапе драйвер универсального распаковщика перехватывает и обрабатывает вызовы.

Основная задача модуля ntdll.dll - предоставить приложениям режима пользователя, в том числе и библиотекам DLL подсистемы Win32, определенное подмножество функций ядра [5]. Таким образом, запретив определенный набор функций, можно гарантировать безопасное выполнение приложения, а остановив выполнение на некотором этапе - получить распакованный образ приложения.

Так, запущенный процесс не может создавать никакие файлы или модифицировать ключи в реестре, потому что все соответствующие функции (ZwCreateFile и т.п.) запрещены (рис. 4).

Полный список разрешенных универсальным распаковщиком функций приведен в табл. 2.

Таблица 2. Разрешенные функции

Виртуальная память Zw Allocate VirtualMemory ZwQueryVirtualMemory ZwFreeVirtualMemory ZwLockVirtualMemory ZwProtectVirtualMemory

Объекты ZwClose ZwDuplicateObj ect ZwOpenDirectoryObject ZwSetlnformationObject ZwQueryInformationProcess ZwQuerylnformationT oken ZwW aitForSingleObj ect

Время ZwDelayExecution

Реестр ZwCreateKey ZwNotifyChangeKey ZwOpenKey ZwQueryValueKey

Синхронизация ZwCreateEvent ZwCreateMutant ZwOpenEvent

Токены ZwOpenProcessToken ZwOpenProcessTokenEx ZwOpenThreadT oken ZwOpenThreadT okenEx

Секции ZwCreate Section ZwMapViewOfSection ZwOpenSection ZwQuerySection ZwUnmapViewOfSection

Файлы ZwQueryAttributesFile ZwQueryInformationFile ZwSetInformationFile ZwCreateFile ZwDeviceIoControlFile ZwFsControlFile ZwOpenFile ZwQueryFullAttributesFile ZwReadFile ZwQueryDirectoryFile ZwQueryVolumelnformationFile

Процессы ZwSetInformationProcess ZwSetlnformationThread

Другие ZwFlushInstructionCache ZwContinue ZwRaiseException ZwQueryDebugFilterState ZwQueryDefaultLocale ZwQueryDefaultUILanguage ZwQueryInstallUILanguage ZwQueryPerformanceCounter ZwQuerySystemInformation

Описанный универс альный метод позволяет р аспако -вать более 97% всех упакованных программ. Остальные упаковщики (например, последние версии Armadillo) не могут быть распакованы, так как ис-

94

РИ, 2007, № 4

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

Режим ядра

Рис. 4. Схема перехвата и обработки системных вызовов универсальным распаковщиком

3. Заключение

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

Литература: 1. Технология ThreatSense http://

www.esetnod32.ru/products/threatsense.php. 2. Крис Кас-перски. Обманчивый антивирус. http://www.interface.ru/ home.asp?artId=5389. 3. Вирусов становится все больше. Эвристический анализатор http://www.cnews.ru/reviews/ free/security2006/articles/evolution3/ 4. Peid - http:// peid.has.it/ 5. Шрайбер С. Недокументированные возможности Windows 2000. Библиотека программиста (+CD). СПб.: Питер, 2002. 544 с.

Поступила в редколлегию 18.10.2007

Рецензент: д-р техн. наук, проф. Дрозд А.В.

Айрапетян Роберт Артемович, аспирант кафедры системного программного обеспечения. Научные интересы: защита программного обеспечения. Адрес: Украина, 65010, Одесса, пр. Адмиральский, 35\3, кв. 32, тел. 80506484838. Robert.Ayrapetyan@comodo.com

УДК 681.3.07

ВЕРИФИКАЦИЯ ПОДПИСИ НА ОСНОВЕ ИНВАРИАНТОВ ПРЕОБРАЗОВАНИЯ РАДОНА

ГОРОХОВАТСКИЙ А.В._______________________

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

1. Введение

Распознавание или идентификация объектов - одна из наиболее актуальных задач в современных интеллектуальных системах компьютерного зрения [1]. Качественное компьютерное решение проблемы распознавания таких практически важных изображений, как отпечатки пальцев, иероглифы, человеческие лица, подписи и т.п. не получено до сих пор.

Задача верификации сводится к отнесению изображения анализируемой подписи к одному из двух классов: истинной или поддельной [4,7]. Более общая задача распознавания состоит в различении подписей разных авторов между собой с учетом анализа их истинности.

Преобразование Радона (ПР) наряду с преобразованиями Фурье, Хафа и другими является эффективным инструментом построения информативных признаков изображения, пригодных для распознавания [2-4]. Радоновский образ описывает изображение с помощью множества функций одномерных проекций, использование лишь отдельных из них позволяет обеспечить функционирование разрабатываемых систем в реальном времени [2,3]. В то же время интегральные свойства ПР делают его устойчивым к действию различного рода помех.

В работе [4] для построения системы признаков при верификации подписей применены моментные инварианты непосредственно к двумерному сигналу, полученному после осуществления ПР. Анализ влияния геометрических преобразований исходного изображения на сформированный сигнал при этом не осуществляется. Кроме того, не задействованы важные возможности представления ПР в виде одномерных функций, что можно использовать для реализации эффективных вычислительных процедур.

Цель работы - построение, моделирование и исследование метода верификации подписей с использованием признаков ПР, построенных на одномерном представлении.

Задачи исследования - изучение особенностей и оценка свойств построенных инвариантных признаков в условиях геометрических искажений изображения, применение этих признаков для разных способов принятия решения об истинности подписи.

РИ, 2007, № 4

95