Способ обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины
METHOD OF MALICIOUS FILES DETECTING, EXECUTED BY MEANS OF THE STACK-BASED VIRTUAL MACHINE

Область техники
Изобретение относится к антивирусным технологиям, а более конкретно к системам и способам обнаружения вредоносных файлов.
Уровень техники
Введем ряд определений и понятий, которые будут использованы при описании вариантов осуществления изобретения.
Антивирусная программа - специализированная программа для обнаружения вредоносных программ и восстановления зараженных (модифицированных) такими программами файлов, а также для профилактики - предотвращения заражения (модификации) файлов или операционной системы вредоносной программой.
Безопасная программа - программа, не предназначенная для несанкционированного пользователем уничтожения, блокирования, модификации или копирования информации, нарушения работы компьютеров или компьютерных сетей.
Безопасный файл - файл, представляющий собой компонент безопасной программы.
Вредоносная программа - программа, предназначенная специально для несанкционированного пользователем уничтожения, блокирования, модификации или копирования информации, нарушения работы компьютеров или компьютерных сетей.
Вредоносный файл - файл, представляющий собой компонент вредоносной программы.
Виртуальная машина - программная или аппаратная система, эмулирующая аппаратное обеспечение некоторой целевой платформы (англ. target) и исполняющая программы для целевой платформы на хост-платформе (англ. host) или необходимая для обеспечения виртуализации аппаратной части платформы и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы.
Стековая виртуальная машина - виртуальная машина, в которой все операнды выполняемых функций размещаются лишь в одной структуре данных, в качестве которой выступает стек виртуальной машины. Примерами стековых виртуальных машин могут служить виртуальная машина Java, виртуальная машина Adobe Flash или общеязыковая исполняющая среда. NET.
Кластер - объединение нескольких однородных элементов (например, названий секций файлов), которое может рассматриваться как самостоятельная единица, обладающая определенными свойствами.
Кластеризация - процедура сбора данных, содержащих информацию о выборке объектов, и последующего упорядочивания объектов в сравнительно однородные группы.
Контрольная сумма (англ. hash) - значение, рассчитанное по набору данных путем применения определенного алгоритма (например, циклический избыточный код CRC32 или криптостойкий алгоритм MD5) и используемое для проверки целостности данных при их передаче или хранении.
Нечеткая контрольная сумма (англ. fuzzy hash) - значение, рассчитанное по набору данных, и представляющее собой совокупность контрольных сумм (например, MD5 или SHA256), рассчитанных по некоторым выбранным частям этого набора данных.
Бурное развитие компьютерных технологий в последнее десятилетие, а также широкое распространение разнообразных вычислительных устройств (персональных компьютеров, ноутбуков, планшетов, смартфонов и т.д.) стали мощным стимулом для использования этих устройств в разнообразных сферах деятельности и для огромного количества задач (от интернет-серфинга до банковских переводов и ведения электронного документооборота). Параллельно с ростом количества вычислительных устройств и программного обеспечения, работающего на этих устройствах, быстрыми темпами росло и количество вредоносных программ.
В настоящий момент существует огромное количество разновидностей вредоносных программ. Одни крадут с устройств пользователей их персональные и конфиденциальные данные (например, логины и пароли, банковские реквизиты, электронные документы). Другие формируют из устройств пользователей так называемые бот-сети (англ. botnet) для атак таких как отказ в обслуживании (англ. DDOS) или для перебора паролей методом грубой силы (англ. bruteforce) на другие компьютеры или компьютерные сети. Третьи предлагают пользователям платный контент через навязчивую рекламу, платные подписки, отправку CMC на платные номера и т.д.
Для борьбы с вредоносными программами (то есть для обнаружения вредоносных программ, предотвращения заражения и восстановления компьютерных систем, зараженных вредоносными программами) применяются специализированные программы - антивирусы. Для обнаружения всего многообразия вредоносных программ антивирусные программы используют разнообразные технологии, такие как:
- сигнатурный анализ - поиск соответствий какого-либо участка кода анализируемой программы известному коду (сигнатуре) из базы данных сигнатур вредоносных программ;
- эвристический анализ - эмуляция работы анализируемой программы, создание журналов эмуляции (содержащих данные по вызовам API-функций, переданным параметрам, участкам кода анализируемой программы и т.д.) и поиск соответствий данных из созданных журналов с данными из базы данных эмуляций вредоносных программ
- белые и черные списки - поиск вычисленной контрольной суммы от анализируемой программы (или ее частей) в базе данных контрольных сумм вредоносных программ (черные списки) или базе данных контрольных сумм легальных программ (белые списки);
- проактивную защиту - перехват вызовов API-функций запущенной в системе анализируемой программы, создания журналов работы анализируемой программы (содержащих данные по вызовам API-функций, переданным параметрам, участкам кода анализируемой программы и т.д.) и поиск соответствий данных из созданных журналов с данными из базы данных вызовов вредоносных программ.
В свою очередь, вредоносные программы все чаще и чаще используют методы противодействия обнаружению антивирусными программами своего присутствия на зараженных компьютерных системах, такие как:
- усложнение поведения для борьбы с эвристическим анализом -использование большого количества операций или вызовов API-функций, применение которых не влияет на результаты работы ввода-вывода программы, но мешающее ее эмуляции антивирусными программами;
- отслеживание поведения сторонних программ для борьбы с проактивной защитой - постоянное отслеживание поведения сторонних программ в операционной системе, поиск антивирусных программ и противодействие им (например, сокрытие или подмена своего кода для анализа).
Используя разнообразные средства, такие как генераторы кода (программы-конструкторы, позволяющие автоматически создавать вредоносные программы, обладающие заданным функционалом), обфускаторы (программы, позволяющие изменять исполнимый код программ, тем самым усложняя их анализ, без изменения их функциональности), упаковщики (программные модули, внедряемые в программы, шифрующие исполнимый код программ и расшифровывающие его при запуске) и так далее, злоумышленники получают возможность быстро и без лишних усилий создавать и распространять большое количество новых, не обнаруживаемых антивирусами, версий своих вредоносных программ.
Для эффективного обнаружения вредоносных программ, полученных описанными выше методами, применяется технология, по которой:
- собирается группа вредоносных программ (кластер) с определенными характеристиками (например, файлы вредоносных программ, упакованные одной версией упаковщика, вредоносные программы, имеющие схожее поведение и так далее);
- в файлах собранного кластера ищутся схожие участки кода, данные из журналов эмуляции или поведения (например, последовательность вызовов API-функций);
- создаются правила обнаружения, которые позволяют, зная данные одной вредоносной программы (например, участки кода) из кластера, обнаруживать и другие вредоносные программы этого кластера.
Основной недостаток такого подхода заключается в том, что отсутствует универсальное решение для обнаружения вредоносных файлов вне зависимости от платформы, на которой работает вредоносная программа (например, мобильная архитектура ARM) или типа данных, который представляет собой вредоносная программа (например, сценарий JavaScipt, байт-код JavaScipt или скомпилированный код С++). В связи с этим часто приходится применять индивидуальные для платформы и типа данных алгоритмы кластеризации и создания правил обнаружения вредоносных программ.
Существует большое количество вредоносных программ, активно использующих для своего распространения и деструктивной деятельности на компьютерах пользователей виртуальные машины (и их уязвимости), и особенно стековые виртуальные машины (например, виртуальную машину Adobe Flash или Java). Обнаружение таких вредоносных программ сопряжено с дополнительными трудностями по сравнению с обнаружением обычных вредоносных программ, работающих на ПК, поскольку стандартные методы обнаружения или неприменимы (из-за архитектурных особенностей виртуальных машин) или медленны или неэффективны (обеспечивают слишком низкий уровень обнаружения).
Например, в публикации US 8881286 B2 описана технология автоматической кластеризации вредоносных файлов по внутренней структуре файлов. Для кластеризации производится анализ структуры файлов, определяются характеристики структур (например, названия и размеры секций файлов, размеры и позиции блоков исполнимого кода). После успешного создания кластеров анализируемых файлов, то есть определения тех характеристик, которые дают возможность создать кластер с заданными параметрами (например, кластер должен содержать количество файлов больше заданного предела), по используемым для кластеризации характеристикам вычисляют их контрольные суммы, которые впоследствии будут служить для обнаружения вредоносных файлов, обладающих идентичными характеристиками. Таким образом, изначально создав кластер вредоносных файлов и вычислив его характеристики, можно обнаруживать новые вредоносные файлы. Недостатком данной технологии является то, что она плохо работает с обфусцированными файлами - обладающими схожим функционалом, но имеющими совершенно отличные характеристики внутренней структуры.
В другой публикации US 20150096023 А1 описана технология вычисления нечетких контрольных сумм (англ. fuzzy hashes) от анализируемых программ и использования их для обнаружения вредоносных программ. Нечеткие контрольные суммы используются в качестве идентификаторов вредоносных программ и, в отличие от обычных контрольных сумм (таких как MD5 или SHA256), позволяют описывать не только содержимое вредоносной программы, но и ее поведение (например, нечеткая контрольная сумма включает в себя части, отвечающие за исполнимый код вредоносной программы, ресурсы, журналы системных вызовов). Таким образом, появляется возможность обнаруживать вредоносные программы, у которых лишь часть ресурсов используется для вредоносной деятельности (например, зараженные вирусами файлы). Недостатком данной технологии является то, что использование контрольных сумм или нечетких контрольных сумм применимо лишь на узком, уже известном диапазоне вредоносных программ. Новые версии вредоносных программ с измененными ресурсами описанная выше технология обнаруживать не будет или эффективность обнаружения будет низкая (т.е. большое количество ложных срабатываний или низкое количество обнаруженных вредоносных файлов).
Хотя описанные выше способы работы хорошо справляются с задачами кластеризации и обнаружения вредоносных программ, исполняемых на персональных компьютерах, они зачастую не помогают при обнаружении вредоносных программ, исполняемых с помощью стековой виртуальной машины (такой как виртуальная машина Adobe Flash или виртуальная машина Java).
Настоящее изобретение позволяет решать задачу обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины.
Раскрытие изобретения
Изобретение предназначено для обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины.
Технический результат настоящего изобретения заключается в обеспечении безопасности компьютерной системы посредством обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины, работающей на этой компьютерной системе, за счет создания и использования кластеров данных анализируемых файлов с использованием данных из кластеров, найденных в базе кластеров безопасных файлов.
Данный результат достигается с помощью использования способа обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины, в которой все операнды выполняемых функций размещаются лишь в одной структуре данных, в качестве которой выступает стек виртуальной машины, в котором выделяют данные по меньшей мере из одного файла, исполняемого с помощью стековой виртуальной машины; осуществляют поиск по меньшей мере одного кластера в базе кластеров безопасных файлов по данным, выделенным на предыдущем этапе; выделяют данные по меньшей мере из одного найденного на предыдущем этапе кластера; создают по меньшей мере один кластер из выделенных на предыдущих этапах данных при помощи правил кластеризации; вычисляют контрольную сумму по меньшей мере одного созданного кластера; осуществляют поиск вычисленной контрольной суммы в базе контрольных сумм кластеров вредоносных файлов; выносят вердикт об обнаружении по меньшей мере одного вредоносного файла в случае обнаружения в результате поиска, осуществленного на предыдущем этапе, в базе контрольных сумм кластеров вредоносных файлов вычисленной контрольной суммы.
В другом частном случае реализации способа в качестве данных, выделяемых из файла, исполняемого с помощью стековой виртуальной машины, выступает по меньшей мере: параметры секции файла, такие как: код секции, название секции, тип заголовка секции, смещение на данные в секции, размер данных секции; параметры функции, выполняемой с помощью стековой виртуальной машины, такие как: индекс тела функции, позиция и длина кода функции в секции, индекс описателя функции, максимальная глубина стека при исполнении функции, количество используемых функцией локальных переменных, название функции, количество операндов, возвращаемый тип данных.
Еще в одном частном случае реализации способа в качестве данных, выделяемых из кластера, найденного в базе кластеров безопасных файлов, выступает по меньшей мере: параметры секции файла, такие как: код секции, название секции, тип заголовка секции, смещение на данные в секции, размер данных секции; параметры функции, выполняемой с помощью стековой виртуальной машины, такие как: индекс тела функции, позиция и длина кода функции в секции, индекс описателя функции, максимальная глубина стека при исполнении функции, количество используемых функцией локальных переменных, название функции, количество операндов, возвращаемый тип данных.
В другом частном случае реализации способа осуществляется поиск в базе кластеров безопасных файлов по данным, выделенным из файла, исполняемого с помощью стековой виртуальной машины, кластера, содержащего по меньшей мере значение одного из параметров секций файла, превышающего заданный порог; значение одного из параметра функций, выполняемых с помощью стековой виртуальной машины, превышающего заданный порог.
Еще в одном частном случае реализации способа в качестве правил кластеризации, при помощи которых создают кластер из данных, собранных из файла, исполняемого с помощью стековой виртуальной машины, выступает по меньшей мере правило по которому: собранные данные размещаются в кластере последовательно в порядке их выделения из файла; параметры секции файла не участвуют в формировании кластера в случае, когда размер данных секции файла равен нулю; параметры функции, выполняемой с помощью стековой виртуальной машины, не участвуют в формировании кластера в случае, когда количество используемых функцией локальных переменных равно нулю; данные, выделенные из кластера, найденного в базе кластеров безопасных файлов, не участвуют в формировании кластера.
В другом частном случае реализации способа в качестве контрольной суммы, вычисленной по созданному кластеру, выступает нечеткая контрольная сумма от созданного кластера.
Краткое описание чертежей
Фиг. 1 представляет структурную схему системы обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины.
Фиг. 2 представляет структурную схему способа обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины.
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено приложенной формуле.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Фиг. 1 представляет структурную схему системы обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины.
Структурная схема системы обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины, состоит из средства анализа структуры файла 110, средства кластеризации 120, средства вычисления контрольных сумм 130, средства проверки 140, базы данных кластеров безопасных файлов 150 и базы данных контрольных сумм кластеров вредоносных файлов 160.
Средство анализа структуры файла 110 предназначено для:
- выделения данных из файла, исполняемого с помощью стековой виртуальной машины;
- осуществления поиска кластеров в базе кластеров безопасных файлов 150 по выделенным из файла, исполняемого с помощью стековой виртуальной машины, данным;
- выделения данных из найденных в базе кластеров безопасных файлов 150 кластеров;
- передачи выделенных из файла, исполняемого с помощью стековой виртуальной машины, и кластеров, найденных в базе кластеров безопасных файлов, данных средству кластеризации 120.
В качестве данных, выделяемых из файла, исполняемого с помощью стековой виртуальной машины, выступают:
- параметры секции файла, такие как:
- код,
- название,
- тип заголовка,
- смещение на данные в секции,
- размер данных секции;
- параметры функции, выполняемой с помощью стековой виртуальной машины, такие как:
- индекс тела функции,
- позиция и длина кода функции в секции,
- индекс описателя функции,
- максимальная глубина стека при исполнении функции,
- количество используемых функцией локальных
переменных,
- название функции,
- количество операндов,
- возвращаемый тип данных.
В качестве данных, выделяемых из кластеров, найденных в базе кластеров безопасных файлов 150, выступают:
- параметры секции файла, такие как:
- код секции,
- название секции,
- тип заголовка секции,
- смещение на данные в секции,
- размер данных секции;
- параметры функции, выполняемой с помощью стековой виртуальной машины, такие как:
- индекс тела функции,
- позиция и длина кода функции в секции,
- индекс описателя функции,
- максимальная глубина стека при исполнении функции,
- количество используемых функцией локальных переменных,
- название функции,
- количество операндов,
- возвращаемый тип данных.
Средством анализа структуры файла 110 выполняется поиск в базе кластеров безопасных файлов 150 по данным, выделенным из исполняемого с помощью стековой виртуальной машины файла, кластера, содержащего:
- значение одного из параметров секций файла, превышающее заданный порог (например, количество типов секций файла);
- значение одного из параметров функций, выполняемых с помощью стековой виртуальной машины, превышающее заданный порог (например, количество используемых функцией локальных переменных).
Средство кластеризации 120 предназначено для:
- создания кластеров из полученных от средства анализа 110 данных при помощи правил кластеризации;
- передачи созданных кластеров средству вычисления контрольных сумм 130.
В качестве правил кластеризации, при помощи которых создают кластеры из данных, собранных из исполняемого с помощью стековой виртуальной машины файла, выступают правила, по которым:
- собранные данные размещаются в кластерах последовательно в порядке их выделения из файла;
- параметры секции файла не участвуют в формировании кластеров в случае, когда размер данных секции файла равен нулю;
- параметры функции, выполняемой с помощью стековой виртуальной машины, не участвуют в формировании кластеров в случае, когда количество используемых функцией локальных переменных равно нулю;
- данные, выделенные из кластеров, найденных в базе кластеров безопасных файлов, не участвуют в формировании кластера.
Средство вычисления контрольных сумм 130 предназначено для:
- вычисления контрольных сумм, полученных от средства кластеризации 120 кластеров;
- передачи вычисленных контрольных сумм средству проверки 140.
В качестве контрольных сумм, вычисленных по созданным кластерам, выступают нечеткие контрольные суммы от созданных кластеров.
В качестве нечетких контрольных сумм, вычисленных по созданным кластерам, выступают контрольные суммы (например, MD5 или SHA256) от данных разного типа (например, набор MD5 от названий секций файла и от названий функции, выполняемых с помощью стековой виртуальной машины), полученных от средства анализа 110.
Средство проверки 140 предназначено для:
- осуществления поиска контрольных сумм, полученных от средства вычисления контрольных сумм 130, в базе контрольных сумм кластеров вредоносных файлов 160;
- вынесения вердикта об обнаружении вредоносного файла в случае обнаружения в результате поиска в базе контрольных сумм кластеров вредоносных файлов 160 полученных от средства вычисления контрольных сумм 130 контрольных сумм.
В качестве условия обнаружения нечеткой контрольной суммы, полученной от средства вычисления контрольных сумм 130 в базе контрольных сумм кластеров вредоносных файлов 160, выступает условие, при котором количество совпадающих контрольных сумм, составляющих нечеткую контрольную сумму, полученную от средства вычисления контрольных сумм 130, и составляющих нечеткую контрольную сумму, хранящуюся в базе контрольных сумм кластеров вредоносных файлов 160, превышает заданный порог.
Рассмотрим работу системы обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины, на примере обнаружения вредоносного файла Adobe Flash.
Для анализа с целью обнаружения вредоносного файла, поступил файл launchme.swf, содержащий кроме мультимедиа ресурсов (таких как изображения, аудио и видео ролики) еще и код на языке ActionScript3.
Средство анализа структуры файла 110 выделяет из полученного для анализа файла данные:
- параметры секций (код, название и тип заголовка секции, смещение на данные и размер данных секции);
- параметры функций содержащегося в flash-файле кода на языке ActionScript3, выполняемых с помощью стековой виртуальной машины (индекс тела функции, позиция и длина кода функции в секции, индекс описателя функции, максимальная глубина стека при исполнении функции, количество используемых функцией локальных переменных, название функции);
После этого средство анализа структуры файла 110 осуществляет поиск в базе кластеров безопасных файлов 150 кластеров, у которых ряд параметров секций файлов (например, code=69, type=short) и функций, исполняемых с помощью стековой виртуальной машины, (например, script0$init()) совпадает с параметрами секций и функций, выделенных из анализируемого файла launchme.swf.
У найденных кластеров безопасных файлов средство анализа структуры файла 110 выделяет:
- параметры секций (код, название и тип заголовка секции, смещение на данные и размер данных секции);
- параметры функций, выполняемых с помощью стековой виртуальной машины (индекс тела функции, позиция и длина кода функции в секции, индекс описателя функции, максимальная глубина стека при исполнении функции, количество используемых функцией локальных переменных, название функции);
После чего выделенные данные передаются средству кластеризации 120.
Средство кластеризации 120 создает из полученных от средства анализа 110 данных три кластера:
- кластер, содержащий типы заголовков секций и размеры данных секции;
- кластер, содержащий количество локальных переменных, используемых функциями, выполняемыми с помощью стековой виртуальной машины;
- кластер, содержащий имена функций, выполняемых с помощью стековой виртуальной машины;
Созданные кластеры содержат данные (параметры секций и функций, выполняемых с помощью стековой виртуальной машины) в порядке их выделения из анализируемого файла, за исключением данных, выделенных из кластеров, найденных в базе кластеров безопасных файлов 150, которые в создаваемые кластера не включались. После чего передают созданные кластера средству вычисления контрольных сумм 130.
Средство вычисления контрольных сумм 130 вычисляет нечеткую контрольную сумму для полученных от средства кластеризации 120 кластеров, то есть вычисляет набор MD5, состоящий из MD5 от кластера, содержащий типы заголовков секций и размеры данных секции, кластера, содержащий количества используемых функцией локальных переменных, и кластера, содержащего имена функций, выполняемых с помощью стековой виртуальной машины.
После чего передает вычисленную нечеткую контрольную сумму средству проверки 140.
Средство проверки 140 осуществляет поиск в базе контрольных сумм кластеров вредоносных файлов 160 такой нечеткой контрольной суммы, которая представляла бы собой набор из минимум трех MD5 контрольных сумм, минимум две из которых совпадали бы с MD5 контрольных сумм от полученной от средства вычисления контрольных сумм 130 нечеткой контрольной суммы. В случае, если такая нечеткая сумма была найдена, выносится вердикт о том, что анализируемый файл launchme.swf является вредоносным.
Фиг. 2 представляет структурную схему способа обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины.
Структурная схема способа обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины, состоит из следующих этапов: этап 210, на котором с помощью средства анализа структуры файла 110 выделяют данные из анализируемого файла; этап 220, на котором с помощью средства анализа структуры файла 110 осуществляют поиск кластеров в базе данных кластеров безопасных файлов 150; этап 230, на котором с помощью средства кластеризации 120 собирают кластеры анализируемого файла; этап 240, на котором с помощью средства вычисления контрольных сумм 130 вычисляют контрольную сумму по собранным кластерам; этап 250, на котором с помощью средства проверки 140 проверяют контрольную сумму в базе данных контрольных сумм вредоносных файлов 150; и этап 260, на котором с помощью средства проверки 140 выносят вердикт о том, является ли файл вредоносным.
На этапе 210 выделяют данные из анализируемого файла, исполняемого с помощью стековой виртуальной машины.
В качестве данных, выделяемых на этапе 210 из анализируемого файла, исполняемого с помощью стековой виртуальной машины, выступают:
- параметры секции файла;
- параметры функции, выполняемой с помощью стековой виртуальной машины.
На этапе 220 выполняется поиск в базе кластеров безопасных файлов 150 по данным, выделенным на этапе 210 из анализируемого файла, исполняемого с помощью стековой виртуальной машины, кластеров, содержащих:
- значение одного из параметров секций файла, превышающего заданный порог (например, количество типов секций файла);
- значение одного из параметра функций, выполняемых с помощью стековой виртуальной машины, превышающего заданный порог (например, количество используемых функцией локальных переменных).
и выделение данных из найденных кластеров.
В качестве данных, выделяемых из кластера, найденного в базе кластеров безопасных файлов 150, выступают:
- параметры секции файла;
- параметры функции, выполняемой с помощью стековой виртуальной машины.
На этапе 230 при помощи правил кластеризации создают кластеры анализируемого файла. В качестве правил кластеризации, при помощи которых создают кластер из данных, собранных из анализируемого файла, исполняемого с помощью стековой виртуальной машины, выступает правило, по которому:
- собранные данные размещаются в кластере последовательно в порядке их выделения из файла;
- параметры секции файла не участвуют в формировании кластера в случае, когда размер данных секции файла равен нулю;
- параметры функции, выполняемой с помощью стековой виртуальной машины, не участвуют в формировании кластера в случае, когда количество используемых функцией локальных переменных равно нулю;
- данные, выделенные из кластера, найденного в базе кластеров безопасных файлов, не участвуют в формировании кластера.
На этапе 240 вычисляют контрольную сумму по созданным на этапе 230 кластерам. В качестве контрольной суммы, вычисленной по созданному на этапе 230 кластеру, выступает нечеткая контрольная сумма от созданного кластера. В качестве нечеткой контрольной суммы, вычисленной по созданному на этапе 230 кластеру, выступает набор контрольных сумм (например, MD5 или SHA256) от выделенных на этапе 210 данных разного типа (например, набор MD5 от названий секций файла и от названий функции, выполняемых с помощью стековой виртуальной машины).
На этапе 250 проверяют контрольную сумму в базе данных контрольных сумм вредоносных файлов 160. В качестве условия обнаружения нечеткой контрольной суммы, полученной на этапе 240, в базе контрольных сумм кластеров вредоносных файлов 160 выступает условие, при котором количество совпадающих контрольных сумм, составляющих нечеткую контрольную сумму, полученную на этапе 240, и составляющих нечеткую контрольную сумму, хранящуюся в базе контрольных сумм кластеров вредоносных файлов 160, превышает заданный порог.
На этапе 260 выносят вердикт о том, является ли анализируемый файл вредоносным. В случае обнаружения на этапе 250 нечеткой контрольной суммы, полученной на этапе 240, в базе контрольных сумм кластеров вредоносных файлов 160 выносится вердикт о том, что анализируемый файл является вредоносным.
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, то есть в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.