СПОСОБ И СИСТЕМА СТАТИЧЕСКОГО АНАЛИЗА ИСПОЛНЯЕМЫХ ФАЙЛОВ НА ОСНОВЕ ПРЕДИКТИВНЫХ МОДЕЛЕЙ
METHOD AND SYSTEM FOR STATIC ANALYSIS OF EXECUTABLE FILES BASED ON PREDICTIVE MODELS

ОБЛАСТЬ ТЕХНИКИ
[0001] Настоящее техническое решение относится к области вычислительной техники, в частности, к компьютерно-реализуемому способу и системе статического анализа исполняемых файлов на основе предиктивных моделей.
УРОВЕНЬ ТЕХНИКИ
[0002] Статический анализ кода - это анализ кода программного обеспечения, производимый без запуска и выполнения исследуемых программ. В рамках настоящего описания подразумевается, что задачей анализа является определение принадлежности исследуемого программного обеспечения к вредоносному либо безопасному, «чистому» программному обеспечению.
[0003] Из уровня техники известно решение US 2019/0005239 А1, 03.01.2019, в котором раскрыт способ анализа вредоносного кода, который основан на предварительном анализе поведения исполняемого файла. Так полученные данные о поведении предположительно вредоносного файла нормализуют и далее производят их анализ на основе алгоритма вероятностной модели.
[0004] Из уровня техники известно еще одно решение RU 2654146 С1. В указанном патентном документе раскрыта система признания файла вредоносным, на основе анализа извлеченных из анализируемого файла ресурсов, которые используются для формирования правил, устанавливающих функциональную зависимость между полученными ресурсами. Основой для признания файла вредоносным служит сравнение, то есть вычисление степени схожести между сформированными на этапе пополнения базы знаний правилами и правилами поведения проверяемого ресурса.
[0005] Из уровня техники известен патент RU 2722692 С1, выбранный в качестве наиболее близкого аналога. Указанное решение предполагает использование нейронной сети, анализа графов потоков управления и данных.
[0006] Стоит отметить, что различия описанной в документе технологии с настоящей заключается в том, что данная технология предполагает исключение этапов анализа графов и использования нейронных сетей для ускорения как самого процесса разработки системы, так и процесса вынесения конечного вердикта. Кроме того, не предполагается дизассемблирование, что позволяет исключить ошибки при дизассемблировании и избежать возможность многочисленного ветвления программы, перекрывающимися инструкциями (что делает невозможным построения графа потока управления), а также обфускации кода и т.п.
[0007] Приведенные выше известные из уровня техники решения направлены на решение проблемы определения вредоносных файлов в системе до их запуска. Однако стоит отметить, что разработчики постоянно совершенствуют свое вредоносное программное обеспечение, что уменьшает вероятность его обнаружения в системе и усложняет анализ файлов.
[0008] Предлагаемое техническое решение направлено на устранение недостатков современного уровня техники и отличается от известных ранее тем, что анализ исполняемого файла реализован на основе признаков, полученных в процессе исследования структуры РЕ-файлов, а также на основе индикаторов, описанными специалистами по анализу вредоносного кода с применением алгоритмов обучения.
[0009] Кроме того, в качестве отличий настоящего решения от известного уровня техники можно выделить по меньшей мере следующие: использование только статических параметров бинарного файла, отсутствие преобразований входной информации, усовершенствование классификации статических параметров и вердикта, выносимого ансамблем моделей на основе автоматизации процесса выставления веса каждому классификатору ансамбля классификаторов в отдельности.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0010] Технической проблемой, на решение которой направлено заявленное решение, является создание компьютерно-реализуемого способа и системы статического анализа исполняемых файлов на основе предиктивных моделей, которые охарактеризованы в независимых пунктах формулы. Дополнительные варианты реализации настоящего изобретения представлены в зависимых пунктах изобретения.
[0011] Технический результат заключается в повышение эффективности статического анализа исполняемых файлов на основе предиктивных моделей.
[0012] Заявленный результат достигается за счет осуществления компьютерно-реализуемого способа анализа файлов на основе предиктивных моделей, содержащего:
подготовительный этап, на котором:
формируют выборку файлов, содержащую по меньшей мере один вредоносный исполняемый файл и по меньшей мере один чистый исполняемый файл;
анализируют каждый полученный файл сформированной выборки, при этом извлекают данные, а также производят их преобразование и дообогащение;
производят определение признаков, характерных для чистых файлов или, наоборот, вредоносных файлов посредством построения предиктивных моделей по каждому типу преобразованных данных;
полученные характерные признаки для каждого типа данных объединяются в векторы признаков, на основе которого обучается по меньшей мере один классификатор;
объединяют классификаторы в ансамбль классификаторов, при этом определяют приоритет для каждого классификатора в ансамбле классификаторов;
рабочий этап, на котором:
получают, по меньшей мере один исполняемый файл для анализа;
анализируют полученный файл, при этом извлекают из него данные, а также осуществляют их преобразование;
формируют вектора на основе извлеченных данных, распределенных по типам;
запускают обученный на предварительном этапе ансамбль классификаторов и выводят результат анализа.
[0013] В частном варианте реализации описываемого способа под типом данных понимают: фичи (dense features), которые включают по меньшей мере числовые атрибуты, такие как размеры секций, размеры файла в памяти, количество библиотек, число импортируемых символов, а также индикаторы, описанные специалистами по анализу вредоносного кода; строки (strings); ссылки (URLs); манифесты (manifests), содержащие метаданные исполняемого файла; импорт (imports); экспорт (exports); ресурсы (resources); черный список (blacklisted strings); локальные переменные tls, переадресации (relocations), информацию из таблицы настроек адресов.
[0014] В частном варианте реализации описываемого способа преобразование данных включает в себя по меньшей мере следующие этапы:
очистки данных, причем очистка включает в себя заполнение пропущенных значений, обнаружение и удаление шума данных и выбросов;
преобразования данных, причем преобразование данных включает в себя нормализацию данных для уменьшения размерности пространства признаков и приведению признаков к заданному диапазону значений;
уплотнение данных, причем уплотнение данных включает в себя создание выборки данных или атрибутов;
дискретизацию данных, причем дискретизация данных включает в себя: преобразование непрерывных атрибутов в категориальные;
очистку текста, причем очистка текста включает в себя удаление некоторых символов, которые могут вызвать зашумление данных или изменить стандарт кодирования (кодировку).
[0015] В частном варианте реализации описываемого способа для преобразования числовых данных используются по меньшей мере один из следующих методы обработки числовых значений: удаление, фиктивная подстановка, подстановка среднего значения, подстановка часто используемого значения, подстановка по регрессии, метод максимального правдоподобия (MLE), а также
по меньшей мере следующие методы нормализации данных: Z-масштабирование; линейное масштабирование, анализ главных компонентов (Principal Component Analysis - РСА).
[0016] В частном варианте реализации описываемого способа для преобразования текстовых данных в числа используют по меньшей мере: кодирование категориальных атрибутов (Label encoding) при помощи сопоставления каждой категории уникального целого числа; кодирование с одним активным состоянием или унитарное кодирование (one-hot encoding); векторизация алгоритмом TF-IDF (Term Frequency - Inverse Document Frequency Vectorizer).
[0017] В частном варианте реализации описываемого способа данные дообогащаются по меньшей мере дополнительными признаками, полученными при исследовании РЕ-файлов, а также индикаторами, описанными специалистами по анализу вредоносного кода.
[0018] В частном варианте реализации описываемого способа для оценки качества каждого классификатора используется функция минимизации ошибок вида
где
TN - число верно отфильтрованных чистых файлов,
FP - число ложных сработок (ошибка первого рода),
TP - число верно классифицированных вредоносных файлов,
FN - число пропусков цели (ошибка второго рода).
[0019] В частном варианте реализации описываемого способа вес каждого классификатора в ансамбле классификаторов обратно пропорционален величине функции потерь, достигнутой на этапе оценки качества классификатора, и при этом нормализован таким образом, чтобы сумма весов всех классификаторов была равна 1.
[0020] В частном варианте реализации описываемого способа для классификатора используется алгоритм случайного леса (Random Forest).
[0021] В частном варианте реализации описываемого способа результат анализа может быть по меньшей мере следующим: подробным, то есть показывающим решение каждого классификатора в ансамбле и/или комплексным, показывающим решение всего ансамбля классификаторов.
[0022] В частном варианте реализации описываемого способа подробный результат может быть выражен по меньшей мере: численной характеристикой степени вредоносности, принимающей значения от 0 (чистый) до 1 (вредоносный), либо значение -1, если в файле не были обнаружены данные для анализа,; ответом, выбранным путем сопоставления значения с внутренним порогом принятия решения и принимающим одно из трех значений: вредоносный, чистый, неизвестный.
[0023] В частном варианте реализации описываемого способа комплексный результат всего ансамбля может быть выражен по меньшей мере следующим: численной оценкой степени вредоносности, принимающей значения от 0 до 1, где 0 - легитимный (чистый), 1 - вредоносный, или ответом, принимающим одно из двух возможных значений: вредоносный, если результат работы ансамбля классификаторов больше 0.5, чистый в противоположном случае.
[0024] Заявленный результат также достигается за счет системы статического анализа исполняемых файлов на основе предиктивных моделей, которая по меньшей мере содержит:
модуль извлечения данных, выполненный с возможностью извлечения данных, по меньшей мере из одного исполняемого файла;
вычислительное устройство, выполненное с возможностью осуществления способа статического анализа исполняемых файлов на основе предиктивных моделей по пп. 1-12;
модуль вывода.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0025] Реализация изобретения будет описана в дальнейшем в соответствии с прилагаемыми чертежами, которые представлены для пояснения сути изобретения и никоим образом не ограничивают область изобретения. К заявке прилагаются следующие чертежи:
[0026] Фиг. 1 иллюстрирует систему анализа исполняемых файлов на основе предиктивных моделей.
[0027] Фиг. 2 иллюстрирует подготовительный этап компьютерно-реализуемого способа анализа исполняемых файлов на основе предиктивных моделей.
[0028] Фиг. 3 иллюстрирует создание предиктивных моделей на основе типов извлеченных данных предиктивных моделей.
[0029] Фиг. 4 иллюстрирует рабочий этап компьютерно-реализуемого способа анализа исполняемых файлов на основе предиктивных моделей.
[0030] Фиг. 5 иллюстрирует пример общей схемы вычислительного устройства.
ДЕТАЛЬНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0031] В приведенном ниже подробном описании реализации изобретения приведены многочисленные детали реализации, призванные обеспечить отчетливое понимание настоящего изобретения. Однако, квалифицированному в предметной области специалисту, будет очевидно каким образом можно использовать настоящее изобретение, как с данными деталями реализации, так и без них. В других случаях хорошо известные методы, процедуры и компоненты не были описаны подробно, чтобы не затруднять излишне понимание особенностей настоящего изобретения.
[0032] Кроме того, из приведенного изложения будет ясно, что изобретение не ограничивается приведенной реализацией. Многочисленные возможные модификации, изменения, вариации и замены, сохраняющие суть и форму настоящего изобретения, будут очевидными для квалифицированных в предметной области специалистов.
[0033] В настоящее время существует необходимость определять и блокировать вредоносные файлы еще до их запуска для предотвращения нанесения возможного вреда вычислительным системам. Для решения подобных задач применяют методы статического анализа исполняемых файлов (РЕ), но подобный анализ имеет свои ограничения. Описываемый метод позволяет устранить часть этих ограничений.
[0034] Соответственно в настоящее время перспективным представляется создание технологии анализа и блокировки файлов, основанная на анализе биг дата (Big Data Analysis) и классических алгоритмов машинного обучения.
[0035] Настоящая технология направлена на обеспечение компьютерно-реализуемого способа и системы анализа файлов на основе предиктивных моделей.
[0036] Заявленный компьютерно-реализуемый способ анализа исполняемых файлов на основе предиктивных моделей, осуществляется посредством системы выявления вредоносных файлов в неизолированной среде, представленной на фиг. 1, которая по меньшей мере содержит: модуль извлечения данных, выполненный с возможностью извлечения данных, по меньшей мере из одного исполняемого файла (110), вычислительное устройство, выполненное с возможностью осуществления способа (120) и модуль вывода (130).
[0037] Со ссылкой на фиг. 2 далее будет описан компьютерно-реализуемый способ анализа исполняемых файлов на основе предиктивных моделей 200 выполняемый вычислительным устройством 110.
ШАГ 210 ФОРМИРОВАНИЕ ВЫБОРКИ ФАЙЛОВ, СОДЕРЖАЩЕЙ ПО МЕНЬШЕЙ МЕРЕ ОДИН ВРЕДОНОСНЫЙ ИСПОЛНЯЕМЫЙ ФАЙЛ И ПО МЕНЬШЕЙ МЕРЕ ОДИН ЧИСТЫЙ ИСПОЛНЯЕМЫЙ ФАЙЛ
[0038] Со ссылкой на фиг. 2, способ начинается на подготовительном этапе, где формируют выборку файлов 211, которая содержит по меньшей мере один заведомо вредоносный исполняемый файл и по меньшей мере один чистый исполняемый файл.
[0039] В качестве примера, но не ограничиваясь им, дополнительно может осуществляться подключение по сетям связи к внутреннему или внешнему хранилищу вредоносных файлов, собранных заблаговременно. Также дополнительно может осуществляться подключение по сетям связи к доверенным внешним источникам информации, таким как открытые базы индикаторов компрометации, хранилища вредоносных файлов и т.д.
[0040] В процессе осуществления настоящей технологии для формирования выборки чистых файлов в качестве примера, но не ограничиваясь им, может быть произведена установка различных версий ОС Windows (Win7-32, Win7-64, Win10-64, WinServer 2019) и дополнительного легитимного программного обеспечения из следующих категорий: системы мгновенного обмена сообщениями (Instant messengers), средства удаленной конференц-связи, офисные приложения разных вендоров, ERP и CRM системы, текстовые редакторы, графические редакторы, веб-браузеры, почтовые клиенты, средства безопасности, компьютерные игры, средства антивирусной защиты, средства виртуализации, серверы (например, баз данных, почтовые).
[0041] Стоит отметить, что дополнительно при формировании выборки файлов, состоящей из по меньшей мере одного вредоносного файла и по меньшей мере одного чистого исполняемого файла, дополнительно ее могут очищать от файлов, не пригодных для анализа в рамках описываемого способа, В качестве неограничивающего примера таких файлов могут быть названы файлы, не относящиеся к исполняемым, файлы, имеющие формат NE, а также поврежденные файлы.
[0042] Далее способ 200 переходит к выполнению шага 220.
ШАГ 220 АНАЛИЗИРУЮТ КАЖДЫЙ ПОЛУЧЕННЫЙ ФАЙЛ СФОРМИРОВАННОЙ ВЫБОРКИ, ПРИ ЭТОМ ИЗВЛЕКАЮТ ДАННЫЕ, А ТАКЖЕ ОСУЩЕСТВЛЯЮТ ИХ ПРЕОБРАЗОВАНИЕ И ДООБОГАЩЕНИЕ
[0043] Так, на указанном шаге из каждого файла сформированной на шаге 210 выборки файлов извлекают данные, а также осуществляют их обработку, очистку и дообогащение.
[0044] Стоит отметить, что определение признаков и генерация дополнительных признаков, то есть дообогащение, основаны на извлечении из большой коллекции данных, большая часть которой, как правило, несет в себе избыточное количество информации, набора осмысленных признаков, которые будут качественно отражать структуру данных и вносить положительный вклад в классификацию этих данных.
[0045] Так, для извлечения данных из по меньшей мере одного бинарного файла могут быть реализованы программные модули, которые служат для парсинга бинарного файла и извлечения данных из его структуры. Например, программные модули могут быть написаны на языке Python с использованием библиотек "pefile" и "lief, необходимых для извлечения данных из структуры исполняемого файла. Дополнительно стоит отметить, что от каждого из обрабатываемых файлов могут быть получены наборы различных типов атрибутов.
[0046] Соответственно, из по меньшей мере одного бинарного файла извлекаются различные типы атрибутов (215). В качестве примера, но не ограничиваясь им, к подобным атрибутам могут относиться:
фичи (dense features), которые включают по меньшей мере числовые атрибуты (215), такие как размеры секций, размеры файла в памяти, количество библиотек, число импортируемых символов, а также индикаторы, описанные специалистами по анализу вредоносного кода;
строки (strings) (216) - все ASCII символы, находящиеся в файле;
ссылки (URLs) - отобранные из строк при помощи регулярного выражения для URL;
манифесты (manifests), содержащие метаданные исполняемого файла, в том числе название файла, версии библиотек, области действия сборки, разрешения ссылок на ресурсы и прочего;
импорт (imports) - набор признаков, извлеченный из таблицы импорта, вида: [название библиотеки, группа функций этой библиотеки, название функции]. В дополнительном варианте осуществления данные из таблицы импорта могут быть изменены посредством добавления метки подозрительности следующим образом: [название библиотеки, группа функций этой библиотеки, название функции, метка подозрительности]. Метка подозрительности - это пометка о том, извлеченное название библиотеки часто встречается во вредоносном ПО. Такая метка может извлекаться с помощью программного модуля (парсера) с применением предварительно составленного списка вредоносных функций, в котором производится поиск;;
экспорт (exports) - набор признаков, извлеченных из таблицы экспорта, вида: [название экспортируемой функции];
ресурсы (resources) - набор признаков, извлеченных из каталога ресурсов вида [тип, название, язык];
черный список (blacklisted strings) - набор строк, относящихся к подозрительным по мнению экспертов по анализу вредоносного кода вида [тип, язык];
локальные переменные tls - представляет собой таблицу, содержащую описание статических переменных, относящихся к локальной памяти потоков (TLS, Thread Local Storage) Набор признаков имеет вид: [адреса массивов функций-ловушек (AddressOfCallBacks)]. Стоит отметить, что TLS - это специфический для Windows способ хранения данных, при котором данные выделяются не в стеке, а являются локальными для потоков программы. В итоге каждый поток имеет собственный экземпляр данных, расположенных в TLS.
переадресация (relocations) информация из таблицы настроек адресов вида [начальный относительный виртуальный адрес (RVA), тип настройки, размер блока в байтах].
[0047] Далее все извлеченные данные преобразуются, то есть обрабатываются и подвергаются очистке. Стоит отметить, что это важные этапы, которые необходимо выполнить, прежде чем набор данных можно будет использовать для обучения модели, так как необработанные данные зачастую искажены, ненадежны, и в них могут быть пропущены значения.
[0048] Для полученных на предыдущем этапе данных необходимо выполнить действия по обработке, которые включают в себя по меньшей мере следующие:
очистку данных, причем очистка включает в себя заполнение пропущенных значений, обнаружение и удаление шума данных и выбросов;
преобразование данных, а именно: нормализацию данных для уменьшения размерности пространства признаков и приведению признаков к некоторому заданному диапазону значений;
уплотнение данных: создание выборки данных или атрибутов для упрощения обработки данных.
дискретизацию данных: преобразование непрерывных атрибутов в категориальные, для простоты использования некоторых методов машинного обучения;
очистку текста: удаление некоторых символов, которые могут вызвать зашумление данных или изменить стандарт кодирования.
[0049] Стоит отметить, что для данных каждого конкретного типа используется соответствующий этому типу метод обработки: один для чисел, другой для строк и тд.
[0050] Так, в качестве методов, используемых для обработки пропущенных числовых значений, могут быть использованы по меньшей мере следующие:
удаление - самый простой и ресурсоемкий метод, при котором удаляется целиком запись с пропущенным значением;
фиктивная подстановка - замена пропущенных значений фиктивными, например, подстановка значения «unknown» (неизвестно) вместо категориальных данных или значения 0 вместо чисел;
подстановка среднего значения, то есть пропущенные числовые данные можно заменить средним среди присутствующих данных значением;
подстановка часто используемого значения, что обозначает замену пропущенных категориальных значений на наиболее часто используемые элементы;
подстановка по регрессии - использование регрессионного метода для замены пропущенных значений регрессионными, то есть на базе наблюдений, не содержащих пропущенных данных, вычисляются коэффициенты регрессии, и далее с их помощью восстанавливается пропущенное значение зависимой переменной; и
метод максимального правдоподобия (MLE) - все неизвестные данные, которые необходимо восстановить, подбираются таким образом, чтобы они как можно лучше согласовывались с уже имеющимися в базе данными.
[0051] Далее данные полученной выборки нормализуются, что позволяет масштабировать числовые значения в требуемых диапазонах. Стоит отметить, что уменьшение размерности или нормализация ускоряют обучение модели, и в большинстве случаев отфильтровывают некоторый шум и ненужные детали, обеспечивая тем самым более высокую производительность. При этом нормализация данных осуществляется при помощи по меньшей мере следующих методов:
Z-масштабирование - масштабирование данных на основе среднего значения и стандартного отклонения: деление разницы между данными и их средним значением на стандартное отклонение.
линейное масштабирование - линейное преобразование данных в диапазон, например, от 0 до 1, где минимальное и максимальное масштабируемые значения соответствуют 0 и 1 соответственно.
[0052] Для сокращения размерности признакового пространства данных, в качестве примера, но не ограничиваясь им, может быть использован анализ главных компонентов (Principal Component Analysis - РСА). Данный метод идентифицирует гиперплоскость, которая находится ближе всего к данным, а затем проецирует на нее эти данные. При этом стоит отметить, что прежде чем обучающий набор можно будет спроецировать на гиперплоскость с наименьшим числом измерений, понадобится выбрать правильную гиперплоскость. Таким образом, после идентификации всех главных компонентов представляется возможным осуществить понижение размерности набора данных до d измерений за счет его проецирования на гиперплоскость, определенную первыми d главными компонентами. Стоит дополнительно отметить, что такой подход к выбору гиперплоскости гарантирует, что проекция обеспечит максимально возможную дисперсию и сохранит информативность преобразованных данных.
[0053] В качестве обработки полученных данных дополнительно используют обработку текстовых и категориальных атрибутов, так как большинство алгоритмов машинного обучения работают именно с числами.
[0054] Так для преобразования текстовых данных в числа могут быть использованы в качестве примера следующие методики:
кодирование категориальных атрибутов (Label encoding) посредством сопоставления каждой категории уникального целого числа;
кодирование с одним активным состоянием или унитарное кодирование (one-hot encoding) так, чтобы только один атрибут был равен 1 (активный), в то время как остальные - 0 (пассивный). Например, если строка содержит заданное слово, то ее атрибут будет равен 1. Один атрибут равен единице только когда рассматриваемая строка содержит слово "red", а если этого слова в строке нет, атрибут будет равен 0. Другой атрибут будет равен 1, когда категория строка содержит слово "green" (0 в противном случае) и т.д.
векторизация алгоритмом TF-IDF (Term Frequency - Inverse Document Frequency Vectorizer), используемая в случае, когда производят категоризацию текстовых документов, так как метод позволяет определять важность слова для какого-либо документа относительно других документов. То есть, если какой-то термин часто используется в определенном тексте, но редко в других, то он имеет большую значимость для данного текста и большой вес в результирующем векторе. Если же термин присутствует достаточно часто во всех документах из набора, то после обработки важность такого термина будет незначительной.
[0055] Под дообогащением данных понимается процесс насыщения данных новой информацией, которая позволяет сделать их более ценными и значимыми с точки зрения анализа. Имеющиеся данные обогащаются внешними данными из достоверных источников, например, баз данных индикаторов компрометации, списков имен библиотек функций, часто используемых во вредоносном коде и т.д.
[0056] После преобразования и очистки данных способ переходит к выполнению шага 230.
ШАГ 230 ПРОИЗВОДЯТ ОПРЕДЕЛЕНИЕ ПРИЗНАКОВ, ХАРАКТЕРНЫХ ДЛЯ ЧИСТЫХ ФАЙЛОВ ИЛИ, НАОБОРОТ, ВРЕДОНОСНЫХ ФАЙЛОВ ПОСРЕДСТВОМ ПОСТРОЕНИЯ ПРЕДИКТИВНЫХ МОДЕЛЕЙ ДЛЯ КАЖДОГО ТИПА ПРЕОБРАЗОВАННЫХ ДАННЫХ
[0057] На шаге 230 производят определение признаков, характерных для чистых файлов или, наоборот, вредоносных файлов посредством построения предиктивных моделей для каждого типа данных.
[0058] Стоит отметить, со ссылкой на фиг. 3, в качестве примера, но не ограничиваясь им, что на данном этапе строят предиктивные модели по каждому типу данных, которые могут быть обнаружены в исполняемом файле. То есть на предыдущих этапах 210 отбирается выборка файлов (вредоносные и чистые файлы 211), на подэтапе 215 данные из каждого файла полученной выборки разделяются на определенные типы 215, например, числовые данные (216), строковые данные (217) и любые другие типы данных, извлеченные из файлов выборки (218), и далее 220 анализируются так, что получаются обработанные, очищенные и обогащенные данные, распределенные по типам в формате вектора (221, 222, 223), а на этапе 230 на основе полученных векторов создают предиктивные модели (231, 232, 233) для определения признаков, характерных для чистых или вредоносных файлов.
[0059] На данном этапе каждая предиктивная модель, работающая с определенным типом данных, определяет и маркирует, какие признаки являются характерными для чистых файлов, то есть легитимного ПО или наоборот, вредоносным файлам. Например, классификатор может определить, что у вредоносных и легитимных файлов сильно отличаются такие параметры как средняя энтропия всех секций, доля секций со стандартными именами от общего числа секций, стандартное отклонение энтропии секций определенного типа.
[0060] Таким образом, строим предиктивную модель для определения наиболее информативных признаков числовых атрибутов данных.
[0061] К числовым атрибутам данных, полученных для построения модели могут относиться, не ограничиваясь ими, по меньшей мере следующие, приведенные в табл.1.
[0062] Для повышения точности отбора характерных признаков, кроме указанных выше стандартных признаков, извлекаемых из бинарного файла, могут быть сгенерированы дополнительные признаки, полученные при исследовании РЕ-файлов, причем стоит отметить что исследование РЕ-файлов может проводиться как автоматизированными системами, так и аналитиками. Так, к указанным признакам относят по меньшей мере те признаки, которые представлены в таблице 2.
[0063] Дополнительно для более качественного и полноценного отбора наиболее характерных признаков добавляются индикаторы, описанными специалистами по анализу вредоносного кода.
[0064] К таким индикаторам относятся, в качестве примера, но не ограниваясь им, следующие:
- Используется недействительный цифровой сертификат (Digital certificate is used which is not valid).
- Точка входа находится в разделе<.section_name>, который не является исполняемым (Entrypoint in section<.section_name>which is not executable).
- Точка входа находится в последнем разделе (Entrypoint is in last section).
- Подозрительный возраст файла отладки (The age of the debug file is suspicious).
- Подозрительное количество imports (The count of imports is suspicious).
- Подозрительное расширение файла отладки (The debug file name extension is suspicious).
- Заглушка dos отсутствует (he dos-stub is missing).
- Исполняемый файл содержит пароли по умолчанию (The executable contains some default passwords).
• - В файле слишком много исполняемых разделов (The executable has alot of executable sections),
- Исполняемый файл имеет разделы, которые являются исполняемыми, и в то же время доступны для записи (The executable has section(s) that are both executable and writable).
- Файл был скомпилирован с помощью Delphi (The file has been compiled with Delphi).
- В файле есть имена разделов, присутствующие в заранее подготовленном «черном списке» подозрительных имен (The file has blacklisted section name(s)).
- В файле нет манифеста (The file has no Manifest).
- Файл игнорирует рандомизацию разметки адресного пространства (ASLR) (The file ignores Address Space Layout Randomization (ASLR)).
- Файл игнорирует предотвращение выполнения данных (DEP) (The file ignores Data Execution Prevention (DEP)).
- Файл игнорирует структурированную обработку исключений (SEH) (The file ignores Structured Exception Handling (SEH))
- Файл игнорирует файлы cookie в стеке (GS) (The file ignores cookies on the stack (GS)).
- Файл реализует Control Flow Guard (CFG) (The file implements Control Flow Guard (CFG)).
- Файл импортирует подозрительное количество функций анти-отладки (The file imports suspicious number of anti-debug function(s)).
- Файл является драйвером устройства (The file is a Device Driver).
- Файл не содержит кода (The file is code-less).
- Файл не имеет ресурсов (The file is resource-less).
• - В файле выбрана рандомизация адресного пространства (ASLR) (The file opts for Address Space Layout Randomization (ASLR)).
- В файле выбран режим предотвращения выполнения данных (DEP)
(The file opts for Data Execution Prevention (DEP)).
- Файл выбирает файлы cookie в стеке (GS) (The file opts for cookies on the stack (GS))
- Файл содержит ссылки на файл отладочных символов (The file references a debug symbols file).
- Файл содержит ссылки на функции, обрабатывающие события клавиатуры (The file references keyboard functions).
- Файл содержит ссылки на функции, обрабатывающие клавиатурные события так, как это делают шпионские программы-кейлогтеры (The file references keyboard keys like a Keylogger).
- Подозрительное соотношение файлов ресурсов (The file-ratio of the resources is suspicious).
- Первый раздел доступен для записи (The first section is writable),
- Последний раздел является исполняемым (The last section is executable),
- Общие разделы достигли максимального порога (The shared section(s) reached the max threshold),
- Размер кода больше, чем размер участков кода (The size of code is bigger than the size of code sections),
- Размер инициализированных данных достиг максимального порога (The size of initialized data reached the max threshold),
- Размер необязательного заголовка вызывает подозрение (The size of the optional-header is suspicious)
- Значение SizeOflmage подозрительно (The value of 'SizeOflmage' is suspicious).
[0065] Исходя из описанного выше, предиктивная модель для выявления наиболее ценных признаков, характерных для вредоносных исполняемых файлов или, наоборот, чистых файлов должна быть обучена по меньшей мере на данных, полученных из анализа бинарного файла, а также на сгенерированных дополнительных признаках, полученных при исследовании РЕ-файлов, совместно с индикаторами, описанными специалистами по анализу вредоносного кода.
[0066] Вторая предиктивная модель, выявляющая наиболее информативные строки, характерные для вредоносных или, наоборот, чистых файлов, строится на основе ASCII строк.
[0067] При построении модели на основе ASCII строк:
извлекают из разных областей бинарного файла ASCII строки и собирают их в одном массиве;
конкатенируют все строки из массива через пробел в одну строку;
составляют вектор, то есть набор таких строк для всей обучающей выборки;
строки обрабатывают при помощи алгоритма tf-idf, описанного ранее с применением английского словаря «stopwords» (стоп-слов) и отсечкой. Например, оставляют 5.000 наиболее информативных строк. Это делается с целью удаления шума и ускорения обучения модели, т.к. количество строк в бинарных файлах часто достигает 100.000 и более;
набор признаков с соответствующими весами (выставленными алгоритмом tf-idf) передают классификатору. В качестве примера, но не ограничиваясь им, может быть использован классификатор «Random Forest» из библиотеки «scikit-learn».
[0068] В качестве примера, но не ограничиваясь им: после определения наиболее информативных признаков в строковых данных может быть отмечено, что одной из самых информативных является строка "pdb". Наличие данной строки в исполняемом файле чаще всего означает, что существует также ассоциированный с данным исполняемым файлом файл базы данных, имеющий формат pdb. Файлы такого формата обычно используют для хранения отладочной информации о программе. Факт наличия подобных файлов явно указывает, что соответствующий исполнимый файл с большой вероятностью является чистым, а не вредоносным. PDB-файлы редко встречаются во вредоносном ПО (ВПО), т.к. обычно цель ВПО прямо противоположна: выдавать о себе как можно меньше информации.
[0069] Итак, посредством обучения модели выбирают наиболее информативные строки для каждого вида ПО, которые далее собирают в вектор признаков для дальнейшего обучения строкового классификатора. Примеры выявленных строк представлены в таблице 3.
[0070] Аналогично предыдущему классификатору может быть также построена предиктивная модель, способная детектировать вредоносное ПО, основываясь на атрибуте, содержащем информацию об URL адресах, хранящихйся среди прочих ASCII строк, извлеченных из бинарного файла. Единственным отличием построения этого классификатора от предыдущего будет тот факт, что алгоритм tf-idf анализирует не слова, а 5-граммы символов.
[0071] Для получения 5-грамм символов каждый найденный URL разбивают на фрагменты длиной пять символов каждый. Если конечный фрагмент после разбиения оказывается короче пяти символов, то он дополняется пробелами до пяти. Например, такой URL как microsoft.com/page.html будет преобразован в следующий набор 5 грамм: 'micro', 'soft.', 'com/p', 'age.h', 'tml '.
[0072] Ниже в таблице 4 представлен пример набора 5-грамм, характерных, с одной стороны, для вредоносного, с другой стороны, для легитимного, т.е чистого ПО.
[0073] Дополнительно строится по меньшей мере одна предиктивная модель, основанная на категориальных атрибутах.
[0074] Так, в случае, когда каждый атрибут является характеристикой той или иной категории, необходимо закодировать набор атрибутов каждой категории при помощи техники унитарного кодирования (one-hot encoding). На основе чего будет получен вектор признаков, состоящий из последовательности 0 и 1, причем 1 содержится в векторе, если данный атрибут присутствует в файле и 0 - в противном случае.
[0075] Стоит отметить, что построение модели основанной на категориальных атрибутах, происходит следующим образом:
из таблицы ресурсов извлекают наборы признаков: названия библиотек, группы функций библиотек (если группа неизвестна, ставится значение "undefined"), названия импортируемых функций. На данном этапе извлеченные данные могут быть дополнительно обогащены, например, если название некой импортированной функции присутствует в заранее составленном списке функций, характерных для вредоносного ПО, то для данной функции дополнительно отмечается факт ее принадлежности к подозрительным функциям.;
каждый признак сортируют по множествам типов признаков и заносят в соответствующий вектор;
вектора с наборами признаков кодируют с помощью техники one-hot encoding так, что каждый элемент вектора кодирует в себе какой-либо атрибут, причем данный элемент содержит число, обозначающее количество раз, когда данный атрибут встретился в файле. Это может быть выполнено, например, посредством заранее обученного класса «OneHotEncoder» из библиотеки «scikit-learn»
размерность признакового пространства понижают при помощи алгоритма РСА, оставляя при этом по меньшей мере 99% первоначальной дисперсии для избавления выборки от лишнего шума, увеличения скорости обучения классификатора и уменьшения занимаемого объема памяти.
и далее набор тренировочных данных с сокращенным признаковым пространством передают классификатору, например, классификатору «Random Forest» из библиотеки «scikit-learn».
[0076] Также в дополнительных вариантах реализации настоящей технологии могут быть построены по меньшей мере следующие предиктивные модели: на манифестах, на таблицах импорта и экспорта, на данных из каталогов ресурсов, на информации из локальной памяти потоков, на таблице настроек адресов, а также на подозрительных строках, проверяемых по заранее подготовленному «черному списку».
[0077] Для обучения предиктивной модели на подозрительных строках формируют вектора, составленнные по строкам заранее подготовленного «черного списка» подозрительных строк, и изначально содержащие нулевые значения во всех элементах. Затем, в ходе вышеописанного анализа ASCII-строк, сверяют с данным списком все извлекаемые из файла строки; в случае обнаружения в «черном списке» какой-либо строки, соответствующему ей элементу вектора присваивают значение 1. Таким образом, по окончании анализа, вектора будут содержать информацию о наличии в анализируемом файле каких-либо подозрительных строк из списка.
[0078] После построения каждой из предиктивных моделей по определенному типу данных, извлеченных из бинарного файла, получается список наиболее информативных признаков, с высокой точностью характеризующий принадлежность исследуемого файла к вредоносным или чистым.
[0079] Далее способ переходит к выполнению шага 240.
ШАГ 240 ДЛЯ КАЖДОГО ТИПА ДАННЫХ СТРОЯТСЯ ВЕКТОРЫ ПРИЗНАКОВ, НА КОТОРЫХ ОБУЧАЕТСЯ ПО МЕНЬШЕЙ МЕРЕ ОДИН КЛАССИФИКАТОР
[0080] На шаге 240 для каждого типа данных строится вектор, на котором обучается предиктивная модель (классификатор).
[0081] Все выявленные на предыдущем шаге наиболее информативные признаки, характерные для чистых либо для вредоносных файлов, собирают в по меньшей мере один вектор признаков. Каждый вектор строят на одном определенном типе данных. То есть, например, первый вектор признаков содержит тип числовых атрибутов данных, второй вектор содержит тип строковых данных, третий вектор содержит - информацию об URL адресах, четвертый вектор содержит категориальные атрибуты, пятый вектор основан на манифестах, шестой и седьмой вектора основаны на таблицах импорта и экспорта соответственно, восьмой на данных из каталогов ресурсов, девятый на информации из локальной памяти потоков, десятый на таблице настроек адресов, одиннадцатый на подозрительных строках из «черного списка».
[0082] В качестве примера, но не ограничиваясь им, числовой вектор может быть построен следующим образом: у каждого элемента вектора (ячейки) есть свое назначение, соответствующее заданному атрибуту.
Например:
1 ячейка - known_sections_number =10 (количество известных секций);
2 ячейка - unknown_sections_pr =0.93 (доля неизвестных секций от общего количества);
3 ячейка - some_section_lines_number =505 (количество строк в какой-то секции);
…
n-1 ячейка - lines_number =5623 (количество строк кода в дизассемблированном файле);
n ячейка - file_size =10893 (размер файла в байтах).
[0083] При этом стоит отметить, что общая длина вектора может быть различной; она зависит от количества наиболее информативных признаков, найденных с помощью предиктивной модели на предыдущем этапе.
[0084] На основе по меньшей мере одного вектора определенного типа обучается один классификатор этого же типа данных.
[0085] Далее в процессе реализации настоящей технологии необходимо произвести оценку качества каждого из обученных на предыдущем шаге классификаторов, чтобы определить для него решающий приоритет.
[0085] Так, далее проводится проверка качества по меньшей мере одного обученного классификатора по определенному типу данных методом кросс валидации (K-fold validation) по меньшей мере на пяти блоках.
[0086] Стоит отметить, что кросс-валидация, называемая также перекрестной проверкой, - это техника валидации модели для проверки того, насколько успешно применяемый в модели статистический анализ и набор атрибутов обучения способен работать на независимом наборе данных. Обычно кросс-валидация используется в ситуациях, где целью является предсказание, и хотелось бы оценить, насколько предиктивная модель способна работать на практике. Один цикл кросс-валидации по К блокам включает разбиение набора данных на части, затем построение модели на одной части (называемой тренировочным набором), и валидация модели на другой части (называемой тестовым набором). Чтобы уменьшить разброс результатов, разные циклы кросс-валидации проводятся на разных разбиениях, а результаты валидации усредняются по всем циклам.
[0087] Дополнительно, в качестве примера, посредством реализации описанной выше методики помимо числовых признаков в число информативных признаков могут быть также включены следующие индикаторы:
Файл игнорирует рандомизацию адресного пространства (ASLR), Файл ссылается на файл отладочных символов, В файле выбран режим предотвращения выполнения данных (DEP), В файле выбрана рандомизация адресного пространства (ASLR), Подозрительное расширение имени файла отладки, Файл игнорирует предотвращение выполнения данных (DEP). [0088] Далее способ переходит к выполнению шага 250 заявленного способа
ШАГ 250 ОБЪЕДИНЯЮТ КЛАССИФИКАТОРЫ В АНСАМБЛЬ КЛАССИФИКАТОРОВ, ПРИ ЭТМ ОПРЕДЕЛЯЮТ ПРИОРИТЕТ КАЖДОГО КЛАССИФИКАТОРА В АНСАМБЛЕ КЛАССИФИКАТОРОВ
[0089] Так на этапе 250 со ссылкой на фиг.4 создается ансамбль классификаторов из по меньшей мере двух классификаторов, обученных на по меньшей мере двух векторах признаков, содержащих по меньшей мере два типа данных
[0090] Ансамбль классификаторов объединяет все построенные ранее классификаторы. По сути, специалист в данном виде техники поймет, что данный ансамбль классификаторов агрегирует прогнозы всех классификаторов по отдельности и прогнозирует вредоносность файла с вероятностью, усредненной по всем индивидуальным классификаторам.
[0091] Стоит отметить, что в уровне техники подобный метод известен и называется мягким голосованием (soft voting classifier). Данный ансамблевый подход часто обеспечивает более высокую эффективность, чем «жесткое голосование», при котором выбирается класс, получивший большее число голосов (hard voting classifier), потому что в данном случае придается больший вес голосам от классификаторов с высоким доверием.
[0092] Далее для оценки качества каждого классификатора, входящего в ансамбль классификаторов, учитывается тот факт, что во время работы с реальными данными классификатор будет сталкиваться в основном с чистыми файлами. Таким образом, в первую очередь необходимо устанавливать полноту на классе чистых файлов, то есть избегать ошибок первого рода (ложная сработка). С другой стороны, вторым параметром в конечной метрике будет выбрана ошибка второго рода (пропуск цели). Из вышеописанного вытекает функция (1), представляющая из себя комбинацию ошибок первого и второго рода.
[0093] Так, формула функции минимизации ошибок, коэффициенты в которой подбирались опытным путем, может, в данном неограничивающем примере, иметь следующий вид:
где
TN - число верно отфильтрованных чистых файлов,
FP - число ложных сработок (ошибка первого рода),
TP - число верно классифицированных вредоносных файлов,
FN - число пропусков цели (ошибка второго рода).
[0094] Таким образом, вес каждого классификатора в построенном ансамбле будет обратно пропорционален величине функции потерь, достигнутой на этапе валидации классификатора и при этом нормализован таким образом, чтобы сумма весов всех классификаторов была равна 1.
[0095] В качестве примера, но не ограничиваясь им, веса классификаторов могут быть определены следующим образом:
[0096] Дополнительно стоит отметит, что веса классификаторов, указанные выше в таблице, получены экспериментальным путем при валидации на собранной выборке файлов, не принимающих участия в обучении классификаторов.
[0097] При этом стоит отметить, что в случае отказа от классификации какой-либо модели (например, отказ от классификации модели URL, вызванный тем обстоятельством, что в РЕ-файле не оказалось ни одного URL), ансамбль не будет учитывать данный классификатор при вынесении вердикта.
[0098] На этом подготовительный этап завершается и способ переходит к рабочему этапу 260.
ШАГ 270: ПОЛУЧАЮТ ПО МЕНЬШЕЙ МЕРЕ ОДИН ИСПОЛНЯЕМЫЙ ФАЙЛ ДЛЯ АНАЛИЗА.
[0099] Со ссылкой на фиг. 4 на данном этапе получают по меньшей мере один исполняемый файл для анализа. Стоит отметить, что полученный файл анализируется статическим методом, то есть, его не запускают и не используют его поведенческие характеристики, проявляющиеся при запуске.
[0100] Далее способ переходит к выполнению следующего шага.
ШАГ 280: АНАЛИЗИРУЮТ ПОЛУЧЕННЫЙ ФАЙЛ, ПРИ ЭТОМ ИЗВЛЕКАЮТ ИЗ НЕГО ДАННЫЕ, А ТАКЖЕ ОСУЩЕСТВЛЯЮТ ИХ ПРЕОБРАЗОВАНИЕ
[0101] На шаге 280 анализируют полученный файл, при этом из него извлекают данные и производят их преобразование, как было описано ранее.
[0102] Так, посредством показанного на Фиг. 1 модуля извлечения данных (110), из исполняемого файла извлекают данные.
[0103] При выполнении данного шага получают данные, распределенные по их типу (например, числовые, строковые), очищенные от шума и обработанные в соответствии с алгоритмами, которые были описаны выше применительно к этапу обучения.
[0104] После этого способ переходит к выполнению следующего шага.
ШАГ 290: ФОРМИРУЮТ ПО МЕНЬШЕЙ МЕРЕ ОДИН ВЕКТОР НА ОСНОВЕ ИЗВЛЕЧЕННЫХ, РАСПРЕДЕЛЕННЫХ ПО ТИПАМ ДАННЫХ
[0105] На данном шаге формируют по меньшей мере один вектор на основе извлеченных данных, распределенных по типам данных.
[0106] Дополнительно стоит отметить, что формируется количество векторов, равное количеству разнообразных типов данных, представленных в исследуемом файле.
[0107] Далее способ переходит к выполнению этапа 300.
ШАГ 300: ЗАПУСКАЮТ ОБУЧЕННЫЙ НА ПРЕДВАРИТЕЛЬНОМ ЭТАПЕ АНСАМБЛЬ КЛАССИФИКАТОРОВ И ВЫВОДЯТ РЕЗУЛЬТАТ АНАЛИЗА.
[0108] На последнем шаге запускают обученный на предварительном этапе ансамбль классификаторов и выводят результат анализа.
[0109] При этом результат анализа может быть:
[0110] Подробный, когда показывают решение каждого классификатора в ансамбле. Такой вид отображения необходим для дальнейшего ручного анализа файла аналитиком. При этом возможны различные подходы:
а) каждый классификатор выдает оценку степени вредоносности файла, выраженную числом в диапазоне от 0 до 1 (например, 0.89); при этом если по данному полю в исследуемом файле ничего не обнаружено, то будет выдано значение -1.
б) каждый классификатор выдает конечный вердикт на основе внутреннего решающего порога. То есть, в качестве примера, но не ограничиваясь им, если пороговое значениеустановлено равным 0.8, а результат оценки получился равным 0.9, то классификатор выдаст вердикт «вредоносный», а если результат равен 0.5 - то вердикт «чистый». Если по данному полю в ходе анализа файла ничего не было обнаружено будет выдан вердикт «неизвестно».
[0111] Комплексный, когда вердикт каждого классификатора вносит определенный вклад в общий результат всего ансамбля. При этом общий результат также может быть выражен:
а) численной оценкой степени вредоносности исследованного файла, например, выраженной числом, принимающим значения от 0 до 1, где 0 означает абсолютную уверенность в том, что файл легитимный, а 1 -абсолютную уверенность в том, что файл вредоносный.
б) категориальным вердиктом, который может выглядеть как «вредоносный», если результат работы ансамбля классификаторов окажется больше заданного порога (например, больше 0.5), или как «чистый», если результат меньше или равен пороговому значению. Следует заметить, что в данном случае вердикт «неизвестный» не выводится, если в составе ансамбля присутствует классификатор по фичам («dense features»), который всегда выдает результат. При отсутствии такого классификатора вердикт «неизвестный» может, аналогично предыдущему случаю, выводиться, если в ходе анализа не были обнаружены данные, соответствующие типам используемых в ансамбле классификаторов.
[0112] Кроме того, стоит отметить, что в дополнительных вариантах реализации пользователю может быть выведен отчет об обнаруженных вредоносных файлах.
[0113] На Фиг. 5 далее будет представлена общая схема вычислительного устройства (N500), обеспечивающего обработку данных, необходимую для реализации заявленного решения.
[0114] В общем случае устройство (N500) содержит такие компоненты, как: один или более процессоров (N501), по меньшей мере одну память (N502), средство хранения данных (N503), интерфейсы ввода/вывода (N504), средство В/В (N05505), средства сетевого взаимодействия (N506).
[0115] Процессор (N501) устройства выполняет основные вычислительные операции, необходимые для функционирования устройства (N500) или функциональности одного или более его компонентов. Процессор (N501) исполняет необходимые машиночитаемые команды, содержащиеся в оперативной памяти (N502).
[0116] Память (N502), как правило, выполнена в виде ОЗУ и содержит необходимую программную логику, обеспечивающую требуемую функциональность.
[0117] Средство хранения данных (N503) может выполняться в виде HDD, SSD дисков, рейд массива, сетевого хранилища, флэш-памяти, оптических накопителей информации (CD, DVD, MD, Blue-Ray дисков) и т.п.
[0118] Интерфейсы (N504) представляют собой стандартные средства для подключения и работы с серверной частью, например, USB, RS232, RJ45, LPT, COM, HDMI, PS/2, Lightning, Fire Wire и т.п. Выбор интерфейсов (N504) зависит от конкретного исполнения устройства (N500), которое может представлять собой персональный компьютер, мейнфрейм, серверный кластер, тонкий клиент, смартфон, ноутбук и т.п.
[0119] В качестве средств В/В данных (N505) могут использоваться клавиатура, джойстик, дисплей (сенсорныйдисплей), проектор, тачпад, манипулятор мышь, трекбол, световое перо, динамики, микрофон и т.п.
[0120] Средства сетевого взаимодействия (N506) выбираются из устройств, обеспечивающих прием и передачу данных по сети, например, Ethernet-карта, WLAN/Wi-Fi модуль, Bluetooth модуль, BLE модуль, NFC модуль, IrDa, RFID модуль, GSM модем и т.п.С помощью средств (N505) обеспечивается организация обмена данными по проводному или беспроводному каналу передачи данных, например, WAN, PAN, ЛВС (LAN), Интранет, Интернет, WLAN, WMAN или GSM.
[0121] Компоненты устройства (N500) сопряжены посредством общей шины передачи данных (N510).
[0122] В настоящих материалах заявки было представлено предпочтительное раскрытие осуществление заявленного технического решения, которое не должно использоваться как ограничивающее иные, частные воплощения его реализации, которые не выходят за рамки испрашиваемого объема правовой охраны и являются очевидными для специалистов в соответствующей области техники.