Система и способ формирования записей для обнаружения программного обеспечения



Система и способ формирования записей для обнаружения программного обеспечения
Система и способ формирования записей для обнаружения программного обеспечения
Система и способ формирования записей для обнаружения программного обеспечения
Система и способ формирования записей для обнаружения программного обеспечения

 


Владельцы патента RU 2491615:

Закрытое акционерное общество "Лаборатория Касперского" (RU)

Группа изобретений относится к системам и способам для формирования записей с целью обнаружения программного обеспечения, такого как неизвестные упаковщики, которые модифицируют вредоносные файлы. Техническим результатом изобретения является улучшение уровня обнаружения неизвестных упаковщиков за счет использования записей для обнаружения, сформированных на основании информации о высокоуровневых операциях, за выполнение которых ответственен данный неизвестный упаковщик. Способ содержит этапы, на которых: I. эмулируют исполнение объекта; II. записывают в журнал выполняемые операции с памятью во время эмуляции исполнения объекта; III. объединяют упомянутые операции с памятью в, по меньшей мере, один последовательный набор; IV. определяют высокоуровневые операции, которые были выполнены во время эмуляции исполнения объекта, по объединенным в, по меньшей мере, один последовательный набор операциям с памятью; V. формируют записи для обнаружения программного обеспечения на основании информации о высокоуровневых операциях. 2 н. и 21 з.п. ф-лы, 4 ил.

 

Область техники

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

Уровень техники

Влияние современных технологий на уклад жизни каждого человека год от года увеличивается. Стремительно развиваются компьютерные технологии, а также сеть Интернет, увеличивая влияние на современное мироустройство. Благодаря этому любая информация стала доступнее, ведь даже с мобильного телефона можно выйти в сеть Интернет и прочитать актуальные на текущий момент мировые новости. В течение нескольких минут человек может найти любую информацию в сети Интернет, а затем по мере необходимости скачать ее на персональный компьютер. Также "всемирная паутина" предоставляет много возможностей для общения. Так электронная почта, средства мгновенного обмена сообщениями и социальные сети стали спутниками современного человека, позволяющими ему при наличии доступа в сеть Интернет иметь возможность связаться с друзьями и коллегами. Но существуют и негативные стороны - по мере развития компьютерных технологий растет количество вредоносного программного обеспечения (ПО), а также уровень профессионализма людей, занимающихся созданием подобных программ. Современная сеть Интернет, несмотря на все свои плюсы, является небезопасной, и при работе в ней можно стать объектом атаки вредоносного ПО.

Злоумышленники с помощью вредоносного ПО могут преследовать разные цели: от банального хулиганства до серьезных киберпреступлений, таких как воровство финансовых средств с банковских счетов. Развиваются и совершенствуются методы проникновения вредоносного ПО на компьютер пользователя. Так злоумышленники активно используют уязвимости - недостатки в ПО, используя которые, можно вызвать неправильную работу данного ПО, а также получить доступ к ПК, на котором данное ПО установлено. Активно используются приемы социальной инженерии, которые благодаря развитию социальных сетей и других инструментов сетевого общения стали особенно популярны среди создателей вредоносного ПО. Также для злоумышленников важно, чтобы вредоносное ПО не было обнаружено при проверке антивирусным приложением.

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

Упаковщик исполняемых файлов - программа для уменьшения размера исполняемых файлов. В упакованный файл записывается сжатая копия оригинального файла и код для распаковки. После запуска упакованного файла код для распаковки используется для извлечения оригинального кода программы из упакованного образа в оперативную память и передает ему управление. Однако в случае, если исполняемый файл является вредоносным, то ПК может быть заражен. Кроме того, у упаковщиков существует ряд методов, направленных на предотвращение обнаружения вредоносного кода антивирусным приложением, например, распаковка кода не полностью, а лишь по мере исполнения. Шифровщик или криптор - название ряда программ для криптозащиты, используемых преимущественно создателями вредоносного ПО для маскировки вредоносного программного обеспечения. Шифровщики являются частным вариантом упаковщиков исполняемых файлов. Шифровщик, проводя зашифровку программы, обеспечивает защиту вредоносного программного кода от распространенных детектирующих методов поиска, например по сигнатурам. С использованием шифровщика, например, зашифровывается оригинальный программный файл и в его начало записывается код, при запуске выполняющий расшифровку и выполнение зашифрованной программы. Таким образом, существуют программы, называемые упаковщиками, которые позволяют модифицировать исходный исполняемый файл путем его упаковки, а также путем его зашифровки.

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

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

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

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

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

В патенте US 7568233 B1 описывается система для обнаружения вредоносного ПО, зашифрованного каким-либо упаковщиком. Но в данной системе не используется эмуляция, а используется анализ дампа памяти.

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

Сущность изобретения

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

Способ формирования записи для обнаружения программного обеспечения, содержащий этапы, на которых:

I. эмулируют исполнение объекта;

II. записывают в журнал выполняемые операции с памятью во время эмуляции исполнения объекта;

III. объединяют упомянутые операции с памятью в, по меньшей мере, один последовательный набор;

IV. определяют высокоуровневые операции, которые были выполнены во время эмуляции исполнения объекта, по объединенным в, по меньшей мере, один последовательный набор операциям с памятью;

V. формируют запись для обнаружения программного обеспечения на основании информации о высокоуровневых операциях.

Система формирования записи для обнаружения программного обеспечения, содержащая:

I. эмулятор, связанный с коллектором, и предназначенный для:

- эмуляции исполнения объекта;

II. упомянутый коллектор, связанный с обработчиком, и предназначенный для:

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

- объединения упомянутых операций с памятью в, по меньшей мере, один последовательный набор;

- передачи, по меньшей мере, одного последовательного набора на обработчик.

III. упомянутый обработчик, связанный с модулем формирования решения, и предназначенный для:

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

- передачи информации о высокоуровневых операциях на модуль формирования решения;

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

Краткое описание прилагаемых чертежей

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

Заявленное изобретение поясняется следующими чертежами, на которых:

Фиг.1 иллюстрирует общую схему системы защиты от вредоносного ПО.

Фиг.2 иллюстрирует схему системы формирования записей для обнаружения программного обеспечения.

Фиг.3 иллюстрирует алгоритм работы системы формирования записей для обнаружения программного обеспечения.

Фиг.4 иллюстрирует пример компьютерной системы общего назначения, на которой может быть реализована система формирования записей для обнаружения программного обеспечения.

Описание вариантов осуществления изобретения

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

Фиг.1 иллюстрирует общую схему системы защиты от вредоносного ПО.

Системой защиты от вредоносного ПО является антивирусное приложение 120, которое содержит ряд модулей защиты 130, позволяющих обнаружить и, например, удалить вредоносное ПО. Для работы модулей защиты 130 антивирусное приложение 120 в своем составе имеет антивирусную базу 140, которая содержит записи для обнаружения. При антивирусной проверке того или иного объекта 110 какой-либо модуль защиты из ряда модулей защиты 130 может использовать записи для обнаружения из антивирусной базы данных 140. Такими записями являются, например: сигнатуры, эвристики, средства родительского контроля и так далее. Следует отметить, что не все модули защиты из ряда модулей защиты 130 используют одни и те же записи. В зависимости от типа объекта 110 используется соответствующий модуль защиты, который использует записи для обнаружения при проверке данного объекта 110. Объектом 110 может являться, по меньшей мере, исполняемый файл, письмо, ссылка и так далее. Несколько модулей защиты могут также осуществлять проверку объекта 110 совместно.

В состав модулей защиты 130 также входит модуль эмуляции 150, предназначенный для проверки запакованных, а также зашифрованных (далее-модифицированных) исполняемых файлов. Целью данной проверки является, по меньшей мере, определение программного обеспечения, такого как упаковщик, которым был модифицирован исполняемый файл, определение вредоносности расшифрованного или распакованного исполняемого файла, а также обнаружение неизвестных упаковщиков. Следует отметить, что модуль эмуляции 150 также может проверять исполняемые файлы, не являющиеся запакованными или зашифрованными, но признанные подозрительными по результатам проверки каким-либо другим модулем защиты из ряда модулей защиты 130. В дальнейшем описании работы данной системы речь будет идти о проверке модулем эмуляции 150 модифицированного неизвестным упаковщиком исполняемого файла.

Фиг.2 иллюстрирует схему системы формирования записей для обнаружения программного обеспечения.

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

Модифицированный неизвестным упаковщиком исполняемый файл 210 (далее-файл) при попадании на ПК с установленной системой защиты от вредоносного ПО будет проверен с помощью модуля эмуляции 150 на предмет наличия вредоносного кода. Модуль эмуляции 150 в текущей реализации системы состоит из эмулятора 220, коллектора 230 и обработчика 240. Следует отметить, что также возможна реализация системы, в которой эмулятор 220, коллектор 230 и обработчик 240 выполняют свои функции не в рамках модуля эмуляции 150, а как самостоятельные модули. В частном варианте реализации коллектор 230 может быть интегрирован в эмулятор 220. Эмулятор 220 предназначен, по меньшей мере, для:

- распаковки или расшифровки файла 210;

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

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

В дальнейшем описании работы эмулятора 220 речь будет идти об эмуляции исполнения модифицированного неизвестным упаковщиком файла 210. Эмулятор 220 способен выполнять разбор кода файла 210 на инструкции и имитировать их исполнение в специальной среде.

Модуль эмуляции 150, а именно эмулятор 220, связан с антивирусной базой 140, что необходимо, например, для исследования эмулятором 220 файла 210 на предмет содержания в нем участков вредоносного кода, а также обнаружения эмулятором 220 известных упаковщиков. Антивирусная база 140 также содержит предварительные записи, предназначенные для определения во время эмуляции исполнения файла 210 того факта, что данный файл 210 модифицирован неизвестным упаковщиком по тем признакам, которые свойственны для упаковщиков. Такими признаками могут быть, например, чтение памяти системных модулей, таких как kemel32.dll, user32.dll, ntdll.dll, а также чтение специфических системных структур, например PebLdrData. Данная системная структура содержит информацию обо всех загруженных модулях того или иного процесса. Наиболее часто эта структура используется упаковщиками для скрытого использования API-функций. Также у отдельных семейств упаковщиков существуют свои определенные операции, позволяющие их идентифицировать, и антивирусная база 140 может также содержать предварительные записи, позволяющие определить, что файл 210 модифицирован с помощью неизвестного упаковщика определенного семейства.

Если при эмуляции исполнения файла 210 эмулятором 220 сработала подобная предварительная запись, то процесс эмуляции файла 210, выполняемый эмулятором 220, начнется заново, при этом будет активирован коллектор 230 и обработчик 240. Таким образом, предварительная запись инициирует коллектор 230 на сбор данных, имеющих отношение к операциям с памятью, выполняемым при эмуляции исполнения файла 210 эмулятором 220.

Когда эмулятор 220 начнет заново осуществлять эмуляцию исполнения файла 210, коллектор 230 будет записывать в журнал операции с памятью, выполняемые при эмуляции исполнения файла 210 эмулятором 220, объединять эти операции в последовательный набор и передавать объединенные в последовательный набор операции на обработчик 240. Операциям с памятью являются, по меньшей мере, чтение и запись.

Коллектор 230 после записи в журнал операций с памятью осуществляет объединение этих операций в последовательный набор - цепочки операций. Каждая цепочка объединяется коллектором 230 исходя из адресов операции, при этом операции могут быть схожими. Каждой операции соответствует свой адрес начала операции и ее размер (далее-диапазон адресов). Коллектор 230 при объединении операций с памятью в цепочку осуществляет поиск по актуальным диапазонам адресов операций, чтобы найти наиболее подходящие для объединения в цепочку операции. Коллектор 230 может объединить две операции с памятью, если будет выявлено, что диапазоны адресов для двух операций каким-либо образом коррелируют между собой. Например, адрес начала одной операции соответствует адресу завершения другой операции.

Ниже представлены две примерные цепочки операций, собранных и объединенных коллектором 230.

16871; WRITE; FRWD; (4): Address=40A5D8; Size=26BC0; Data=66EBF2B2B90ACCE8; Data=[0 - FFFFFFFF]; EIP=[431FBB - 431FD2]; TIME=[3F160 - 82DEE]; API=[4-4].

16870; READ; FRWD; (4): Address=40A5D8; Size=26BC0; Data=142DBA9052BD9EFF; Data=[7839 - FFFFB9F6]; EIP=[431FBD - 431FD2]; TIME=[3F161 - 82DEE]; API=[4-4].

Указанные цепочки содержат данные о наборе однотипных операций с памятью, которые были осуществлены в одном диапазоне адресов. Для указанного примера операции были объединены коллектором 230 за счет одинакового адреса операций. Каждая строка цепочки содержит одинаковый набор данных, собранных коллектором 230 и имеющих отношение к операции. Указанный набор содержит, по меньшей мере, следующие данные, расположенные в примерной цепочке данных слева направо:

- уникальный идентификатор цепочки;

- вид операции;

- направление операции;

- размер элемента данных, над которым осуществляется операции;

- адрес, по которому осуществляется операции;

- размер данных;

- хеш-сумма данных;

- размер минимального и максимального элемент в цепочке;

- минимальный и максимальный адрес регистра Eip;

- количество команд процессора, выполненных за время жизни цепочки;

- количество API-функций, выполненных за время жизни цепочки.

Обработчик 240, получив объединенные в цепочки операции от коллектора 230, определяет высокоуровневые операции, которые были выполнены при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220. Таким образом, обработчик 240 определяет те высокоуровневые операции при эмуляции исполнения файла 210, за выполнение которых ответственен неизвестный упаковщик, при помощи которого был модифицирован файл 210. Высокоуровневые операции определяются обработчиком 240 по анализу выполненных операций с памятью во время эмуляции исполнения файла 210 эмулятором 220, данные о которых были собраны и объединены коллектором 230. Высокоуровневые операции определяются обработчиком 240 на основании, например, эвристических правил, которые может содержать как сам обработчик 240, так и антивирусная база 140. Обработчик 240 сравнивает объединенные в цепочки операции с памятью с эвристическими правилами для определения высокоуровневой операции. Выполняемыми при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220 и определяемыми обработчиком 240 на основании эвристических правил высокоуровневыми операциями могут быть, по меньшей мере, такие операции как:

- расшифровка (decrypt) - изменение данных, размер массива-приемника данных равен размеру массива-источника данных;

- распаковка (unpack) - изменение данных, размер массива-приемника данных больше размера массива-источника данных;

- декодирование (decode) - изменение данных, размер массива-приемника данных меньше размера массива-источника данных;

- запись (put) - запись данных, источник неизвестен;

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

- импорт (import) - заполнение таблиц импорта системных модулей;

- копирование (memcpy) - копирование области памяти;

- запись (memset) - запись одинаковых данных в определенную область памяти;

- получение адресов функций (getprocaddr) - получение адресов системных функций через чтение таблиц экспорта системных модулей;

- настройка адресов (fixup) - настройка адресов объекта при его загрузке по адресу, отличному от базового.

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

Следует отметить, что обработчик 240 способен также определять точные операции на основании анализа выполненных операций с памятью при эмуляции исполнения файла 210 эмулятором 220, данные о которых были собраны и объединены коллектором 230, без использования эвристических правил. Такими точными операциями могут быть, по меньшей мере, такие операции, как:

- переход (branch) - переход в другой блок памяти;

- выделение (alloc) - выделение памяти;

- освобождение (free) - освобождение памяти;

- загрузка (load) - загрузка модуля или библиотеки.

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

Обработчик 240 определяет по полученным и обработанным цепочкам операций, какие высокоуровневые операции были выполнены при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220, и представляет обработанные данные в виде выражения. Выражение может быть представлено обработчиком 240 в следующем виде: address: operation(dst, dst_size, src, src_size, op_size, direction, type); <weight>, где:

- address - адрес операции;

- operation - название высокоуровневой операции;

- dst - адрес массива-приемника данных;

- dst_size - размер данных в массиве-приемнике;

- src - адрес массива-источника данных;

- src_size - размер данных в массиве-источнике;

- op_size - размер операции равен размеру одного элемента массива;

- direction - направление обработки данных;

- type - флаг, характеризующий операцию;

- weight - среднее количество команд процессора, затрачиваемое на обработку одного элемента массива.

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

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

- image - модуль памяти под главный эмулируемый файл;

- mem - выделенная память;

- mod - подгруженные модули и библиотеки.

Размер данных в указанном выражении обозначается, по меньшей мере, через одну из следующих переменных:

- Byte;

- Word;

- Dword;

- Qword.

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

- FRWD - вперед;

- BKWD - назад.

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

- DFLT - обычная операция;

- POLY - операция, на обработку которой уходило большое количество инструкций;

- API - возможное сокрытие операции, например, вызов API-функции при расшифровке.

Для указанных выше примерных цепочек операций, объединенных коллектором 230, выражение будет представлено обработчиком 240 в следующем виде:

image+0×00031FBD: decrypt(image+0×0000A5D8, image+0×0000A5D8, 0×00026 ВСО, DWORD, FRWD, DFLT); <000007>

Результатом работы обработчика 240 после обработки всех цепочек операций, переданных коллектором 230, будет последовательность выражений, отображающая порядок выполняемых высокоуровневых операций при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220, то есть описывает поведение неизвестного упаковщика, при помощи которого был модифицирован файл 210. Так, например, для известного упаковщика исполняемых файлов UPX (the Ultimate Packer for eXecutables) цепочка выражений, определяющая поведение данного упаковщика при распаковке или расшифровке во время эмуляции исполнения модифицированного данным упаковщиком файла, выглядит следующим образом:

Image+0×0083A180: unpack (image+0×00001000, 0×008384F6,

image+0×0048C000, 0×003AE15D); <000033>

Image+0×0083A256: filter (image+0×00001000, 0×00745С1С); <000005>

Image+0×0083A281: import (image+0×00001000, image+00836000, 0×00003328); <000024>

Далее набор выражений, описывающих поведение неизвестного упаковщика, при помощи которого был модифицирован файл 210, направляется обработчиком 240 на модуль формирования решения 250. Следует отметить, что модуль формирования решения 250 может находиться на стороне компании-поставщика антивирусных услуг. После получения от обработчика 240 указанного набора выражений, который определяет поведение неизвестного упаковщика, то есть информацию о высокоуровневых операциях, выполненных при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220, модуль формирования решения 250 способен формировать запись для обнаружения, позволяющую в дальнейшем точно и быстро выявить факт модификации исполняемого файла данным неизвестным упаковщиком по определенным характерным высокоуровневым операциям. Модуль формирования решения 250 формирует запись для обнаружения на основании полученного набора выражений, используя известные методы формирования записей для обнаружения. В частном варианте реализации в работу модуля формирования решения 250 могут вмешиваться аналитики для анализа поступающих наборов выражений, описывающих поведение неизвестного упаковщика. Аналитики могут отвечать за формирование записей для обнаружения неизвестного упаковщика в каких-либо случаях, требующих вмешательства эксперта.

На Фиг.3 изображен алгоритм работы системы формирования записей для обнаружения программного обеспечения.

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

Работа системы начинается на этапе 301, на котором с помощью модуля эмуляции 150 осуществляется проверка файла 210. Следует отметить, что модуль эмуляции 150 отвечает за проверку подозрительных файлов, а также таких файлов, которые могли быть модифицированы неизвестными упаковщиками. Модуль эмуляции 150 связан с антивирусной базой 140, в которой хранятся записи для обнаружения, позволяющие обнаружить тот факт, что файл 210 был модифицирован с помощью известного упаковщика. Модуль эмуляции имеет в своем составе эмулятор 220, предназначенный для выполнения на этапе 301 эмуляции исполнения файла 210.

Как было сказано ранее, антивирусная база 140 также содержит предварительные записи, предназначенные для определения во время эмуляции исполнения файла 210 с помощью эмулятора 220 того факта, что данный файл 210 модифицирован неизвестным упаковщиком по тем операциям, которые свойственны для упаковщиков. Если на этапе 302 при эмуляции исполнения файла 210 эмулятором 220 сработала подобная предварительная запись, то на этапе 303 процесс эмуляции файла 210, выполняемый эмулятором 220, начнется заново, при этом будет активирован коллектор 230 и обработчик 240, которые входят в состав модуля эмуляции 150. На этапе 303, когда эмулятор 220 начнет заново осуществлять эмуляцию исполнения файла 210, коллектор 230 будет записывать в журнал операции с памятью, выполняемые при эмуляции исполнения файла 210 эмулятором 220.

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

На этапе 305 обработчик 240, получив объединенные в цепочки операции от коллектора 230, определяет высокоуровневые операции, которые были произведены при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220. Обработчик 230 определяет те высокоуровневые операции, за которые ответственен неизвестный упаковщик, при помощи которого был модифицирован файл 110. Высокоуровневые операции определяются обработчиком 240 по анализу выполненных операций с памятью при эмуляции исполнения файла 210 эмулятором 220, данные о которых были собраны и объединены коллектором 230. Высокоуровневые операции определяются обработчиком 240 на основании, например, эвристических правил, которые может содержать как сам обработчик 240, так и антивирусная база 140. Обработчик 240 определяет по полученным и обработанным цепочкам операций, какие высокоуровневые операции были выполнены при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220 и представляет обработанные данные в виде выражения. Результатом работы обработчика 240 после обработки всех цепочек операций, переданных коллектором 230, будет последовательность выражений, отображающая последовательность выполняемых высокоуровневых операций при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220.

Далее, на этапе 306, набор выражений, описывающих поведение неизвестного упаковщика, при помощи которого был модифицирован файл 210, направляется обработчиком 240 на модуль формирования решения 250. После получения от обработчика 240 указанного набора выражений, который определяет поведение неизвестного упаковщика, то есть информацию о наборе высокоуровневых операций, выполненных при распаковке или расшифровке файла 210 во время эмуляции его исполнения эмулятором 220, модуль формирования решения 250 способен формировать запись для обнаружения, позволяющую в дальнейшем точно и быстро выявить факт модификации файла 210 данным неизвестным упаковщиком по данным характерным высокоуровневым операциям. Запись для обнаружения формируется модулем формирования решения 250, базируясь на полученном от обработчика 240 наборе выражений. В частном варианте реализации в работу модуля формирования решения 250 могут вмешиваться аналитики для анализа поступающих наборов выражений, описывающих поведение неизвестного упаковщика, а также для формирования записей для обнаружения. Модуль формирования решения 250 может находиться на стороне компании-поставщика антивирусных услуг, и набор выражений, описывающих поведение неизвестного упаковщика, может отправляться на сторону компании-поставщика антивирусных услуг в рамках существующего потока статистических данных. Работа системы завершается на этапе 307.

Фиг.4 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 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, представленного на Фиг.4. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, то есть в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.

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

1. Способ формирования записи для обнаружения программного обеспечения, содержащий этапы, на которых:
I. эмулируют исполнение объекта;
II. записывают в журнал выполняемые операции с памятью во время эмуляции исполнения объекта;
III. объединяют упомянутые операции с памятью в, по меньшей мере, один последовательный набор;
IV. определяют высокоуровневые операции, которые были выполнены во время эмуляции исполнения объекта, по объединенным в, по меньшей мере, один последовательный набор операциям с памятью;
V. формируют запись для обнаружения программного обеспечения на основании информации о высокоуровневых операциях.

2. Способ по п.1, в котором программным обеспечением является, по меньшей мере, упаковщик.

3. Способ по п.1, в котором объектом является, по меньшей мере, исполняемый файл.

4. Способ по п.1, в котором эмулируют исполнение объекта, и в случае выявления предварительной записи во время эмуляции исполнения объекта заново начинают эмуляцию.

5. Способ по п.4, в котором предварительная запись предназначена для определения во время эмуляции исполнения объекта того факта, что указанный объект модифицирован программным обеспечением.

6. Способ по п.5, в котором программное обеспечение модифицирует объект путем его запаковки или зашифровки.

7. Способ по п.1, в котором объединение операций в, по меньшей мере, один последовательный набор происходит, по меньшей мере, исходя из корреляций диапазонов адресов, в которых выполняются операции.

8. Способ по п.1, в котором высокоуровневые операции были выполнены, по меньшей мере, при распаковке или расшифровке объекта во время эмуляции его исполнения.

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

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

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

12. Система формирования записи для обнаружения программного обеспечения, содержащая:
I. эмулятор, связанный с коллектором и предназначенный для
эмуляции исполнения объекта;
II. упомянутый коллектор, связанный с обработчиком и предназначенный для:
- записи в журнал выполняемых операций с памятью во время эмуляции исполнения упомянутого объекта эмулятором;
- объединения упомянутых операций с памятью в, по меньшей мере, один последовательный набор;
- передачи, по меньшей мере, одного последовательного набора на обработчик;
III. упомянутый обработчик, связанный с модулем формирования решения и предназначенный для:
- определения высокоуровневых операций, которые были выполнены во время эмуляции исполнения объекта эмулятором по объеденным в, по меньшей мере, один последовательный набор коллектором операциям с памятью;
- передачи информации о высокоуровневых операциях на модуль формирования решения;
IV. упомянутый модуль формирования решения, предназначенный для формирования записи для обнаружения программного обеспечения на основании полученной от обработчика информации о высокоуровневых операциях, которые были выполнены во время эмуляции исполнения объекта эмулятором.

13. Система по п.12, в которой программным обеспечением является, по меньшей мере, упаковщик.

14. Система по п.12, в которой объектом является, по меньшей мере, исполняемый файл.

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

16. Система по п.12, в которой эмулятор эмулирует исполнение объекта, и в случае выявления предварительной записи из антивирусной базы данных во время эмуляции исполнения объекта эмулятор заново начинает эмуляцию исполнения.

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

18. Система по п.17, в которой программное обеспечение модифицирует объект путем его запаковки или зашифровки.

19. Система по п.12, в которой коллектор объединяет в, по меньшей мере, один последовательный набор операции с памятью, при этом объединение операций происходит, по меньшей мере, исходя из корреляций диапазонов адресов, в которых выполняются операции.

20. Система по п.12, в которой высокоуровневые операции были выполнены, по меньшей мере, при распаковке или расшифровке объекта во время эмуляции его исполнения эмулятором.

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

22. Система по п.12, в которой информация о высокоуровневых операциях представляется обработчиком в виде последовательности выражений.

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



 

Похожие патенты:

Изобретение относится к системам и способам расчета и назначения приоритета антивирусной проверки различных объектов. .

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

Изобретение относится к защите информации, а именно к криптографической защите информации, передаваемой в системах связи. .

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

Изобретение относится к системам и способам для защиты доступа к данным, сохраненным на мобильном устройстве, с помощью пароля. .

Изобретение относится к вычислительной технике. .

Изобретение относится к антивирусным системам для обнаружения вредоносных объектов, загружаемых через пиринговые сети. .

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

Изобретение относится к технике связи и предназначено для кодирования слов данных. .

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

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

Изобретение относится к вычислительной технике. .

Изобретение относится к средствам перестановок и сдвигов битов данных в микропроцессорах. .

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

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

Изобретение относится к средствам ретрансляции потерь в линии связи. .

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

Изобретение относится к современным пилотажно-навигационным комплексам летательных аппаратов и их бортовой аппаратуре и может быть использовано для восстановления работоспособности систем радиоавтоматики и автоматического управления, резервированных с помощью мажоритарных элементов путем формирования сигналов управления элементами резервированных систем. Техническим результатом является повышение надежности устройства. Устройство содержит рабочий элемент, два элемента сравнения (резервных элемента), коммутируемый дополнительный элемент сравнения, шесть электронных ключей, три вычитающих устройства, три компаратора, блок управления, два логических элемента ИЛИ, три логических элемента НЕ, переключатель электронных ключей, четыре логических элемента И, три триггера. 3 ил.
Наверх