СПОСОБ ВЕДЕНИЯ БАЗЫ ДАННЫХ И СООТВЕТСТВУЮЩИЙ СЕРВЕР
METHOD OF MAINTAINING DATABASE AND CORRESPONDING SERVER

Область техники, к которой относится изобретение
Настоящее изобретение относится к способу защиты компьютерной системы от враждебных действий вредоносных программ.
Уровень техники
«Вредоносное ПО (программное обеспечение)» представляет собой сокращенное наименование вредоносных программных средств, используемое в качестве термина, относящегося к любым программам, предназначенным для проникновения или повреждения компьютерной системы без информированного согласия владельца. Вредоносное ПО может включать компьютерные вирусы, червей, троянских коней, руткиты, рекламное и шпионское ПО, а также любые другие вредоносные и нежелательные программы.
Когда устройство заражено вредоносным программным обеспечением, пользователь часто замечает непредусмотренное поведение или ухудшение характеристик системы, поскольку заражение может приводить к нежелательной активности процессора, использованию памяти и сетевому трафику. При этом могут также возникать проблемы со стабильностью, вызывающие аварийный отказ приложения или системы в целом. Пользователь зараженного устройства может ошибочно предположить, что неудовлетворительные характеристики являются следствием дефектов программного обеспечения или проблем, связанных с оборудованием, предпринимая неадекватные корректирующие меры, когда фактической причиной является заражение вредоносным программным обеспечением, о котором ему ничего не известно. Кроме того, даже если вредоносное программное обеспечение не вызывает заметного изменения технических характеристики устройства, оно может выполнять другие вредоносные функции, такие как мониторинг и перехват потенциально ценной коммерческой, личной и (или) финансовой информации, или захват устройства таким образом, чтобы его можно было использовать для какой-либо незаконной цели.
Для обнаружения и возможного удаления вредоносного ПО многие конечные пользователи используют антивирусное программное обеспечение. Чтобы обнаружить вредоносный файл, антивирусное программное обеспечение должно иметь какой-либо способ, позволяющий идентифицировать его среди всех остальных файлов, присутствующих в устройстве. Как правило, для этого требуется, чтобы антивирусное программное обеспечение располагало базой данных, содержащей «сигнатуры» или «отпечатки», которые являются характерными для отдельных файлов вредоносных программ. Когда поставщик антивирусного программного обеспечения выявляет угрозу нового вредоносного программного обеспечения, осуществляется анализ этой угрозы и генерация сигнатуры. После этого вредоносное программное обеспечение становится «известным», и его сигнатуру можно передавать конечным пользователям в качестве обновлений для их локальных баз данных антивирусного программного обеспечения.
Применение подходов, основанных на сканировании, в целях обнаружения вредоносного программного обеспечения, все же оставляет компьютеры уязвимыми к «неизвестным» вредоносным программам, которые еще не были проанализированы с целью получения их сигнатуры. Чтобы решить эту проблему, в дополнение к сканированию с целью получения сигнатур вредоносного программного обеспечения большинство антивирусных приложений дополнительно используют эвристический анализ. Такой подход включает применение общих правил, предназначенных для того, чтобы отличать поведение любого вредоносного программного обеспечения от поведения чистых/легальных программ. Например, поведение всех программ на ПК контролируется, и при попытке какой-либо программы записать данные в исполняемую программу антивирусное программное обеспечение может отметить это флажком как подозрительное поведение. Эвристические правила могут быть основаны на таких типах поведения, как вызовы API-функций, попытки передать данные по сети Интернет и т.д.
В целях обнаружения и (или) анализа вредоносных программ часто оказывается полезным запустить программу в изолированной среде или в системе диагностирования, известной еще как виртуальная машина или эмулятор. Виртуальная машина или эмулятор содержит программу, которая имитирует выполняемые функции различных компонентов реальной компьютерной системы. Например, на компьютере, использующем операционную систему Linux, можно запустить виртуальную машину, которая инициирует среду, обеспечиваемую операционной системой Windows. Этот метод может включать эмуляцию ЦПУ, памяти, интерфейсов связи и любых соответствующих аппаратных средств. Благодаря запуску программы в эмулируемой среде любую вредоносную деятельность можно ограничить виртуальной средой, не подвергая риску базовую компьютерную систему. После этого можно наблюдать за поведением программы в эмулируемой среде, используя любые сигнатуры вредоносного программного обеспечения или вредоносное поведение для идентификации программы в качестве вредоносного программного обеспечения. Кроме того, в случае программы, которая является, или подозревается в том, что является вредоносной, специалисты по антивирусной защите обычно запускают в эмулируемой среде программу для анализа или «отладки» ее поведения. Это позволяет специалистам по антивирусной защите декомпилировать вредоносную программу и, благодаря этому, определить способы обнаружения и последующего дезинфицирования компьютеров, зараженных этой программой.
Поэтому создатели вредоносных программ стараются избегать средств обнаружения и анализа вредоносного программного обеспечения, которые применяют методы эмуляции и (или) отладки. С этой целью они разрабатывают вредоносные программы таким образом, чтобы такие программы могли распознавать, когда они исполняются в эмулируемой среде и (или) подвергаются отладке. Если такая вредоносная программа определяет, что исполняется в эмулируемой среде и (или) подвергается отладке, она как можно скорее прекращает свою работу или изменяет поведение, чтобы не выполнять какую-либо вредоносную деятельность или иные подозрительные действия.
Раскрытие изобретения
Целью настоящего изобретения является предложение способа защиты компьютерной системы от враждебных действий вредоносных программ.
Согласно первому аспекту настоящего изобретения предлагается способ защиты компьютерной системы от вредоносного программного обеспечения, которое пытается предотвратить обнаружение или анализ, когда исполняется в эмулируемой компьютерной системе. Способ включает определение того, следует ли идентифицировать исполняемый файл в качестве легитимного, и, если нет, выполнение исполняемого файла с одновременным предоставлением исполняемому файлу указаний на то, что он выполняется в эмулируемой компьютерной системе. Файл предпочтительно выполняется в неэмулируемой компьютерной системе.
Шаг определения того, следует ли идентифицировать исполняемый файл в качестве легитимного, может выполняться в компьютерной системе. В качестве альтернативного варианта, компьютерная система посылает исполняемый файл или идентификатор исполняемого файла серверу и получает от сервера ответ, указывающий, следует ли идентифицировать данный файл в качестве легитимного.
Шаг определения того, следует ли идентифицировать исполняемый файл в качестве легитимного, может заключать в себе любые из следующих шагов: определяют, содержится ли идентификатор исполняемого файла в базе данных, идентифицирующей легитимные исполняемые файлы, и, если да, идентифицируют исполняемый файл в качестве легитимного; определяют, содержится ли идентификатор исполняемого файла в базе данных, идентифицирующей запрещенные исполняемые файлы, и, если нет, идентифицируют исполняемый файл в качестве легитимного; определяют, содержится ли идентификатор исполняемого файла в базе данных, содержащей информацию, относящуюся к исполняемым файлам, причем база данных включает параметр, указывающий на легитимность каждого исполняемого файла, и, если да, определяет, превышает ли параметр, связанный с исполняемым файлом, порог, при котором исполняемый файл считается легитимным.
Шаг предоставления указаний исполняемому файлу, который выполняется в эмулируемой компьютерной системе, может включать перехват заданной информации, передаваемой между исполняемым файлом и компьютерной системой при выполнении исполняемого файла, и ответ на перехваченную информацию с помощью данных, указывающих на выполнение в эмулируемой компьютерной системе. Заданная передаваемая информация может включать любые вызовы функций, сообщения и события.
Согласно второму аспекту настоящего изобретения предлагается компьютерная программа, содержащая средства компьютерного программного кода для реализации всех шагов способа согласно первому аспекту, когда указанная программа выполняется на компьютере.
Согласно третьему аспекту настоящего изобретения предлагается компьютерная программа согласно второму аспекту, реализованная на машиночитаемом носителе.
Согласно четвертому аспекту настоящего изобретения предлагается компьютерная система. Компьютерная система включает память, в которой хранится исполняемый файл; процессор для принятие решения о том, следует ли идентифицировать исполняемый файл в качестве легитимного, и, если принято решение о том, что исполняемый файл не следует идентифицировать в качестве легитимного, для выполнения исполняемого файла в компьютерной системе с одновременным предоставлением исполняемому файлу указаний на то, что он выполняется в эмулируемой компьютерной системе.
Процессор может также быть выполнен с возможностью генерации сообщения для передачи серверу, причем такое сообщение включает исполняемый файл или идентификатор исполняемого файла, и обработки ответа, полученного от сервера, чтобы определить, указывает ли он, что данный файл следует идентифицировать в качестве легитимного. Компьютерная система может также включать передатчик для передачи сообщения серверу и приемник для получения ответа от сервера.
Память может также быть выполнена с возможностью хранения базы данных, идентифицирующей легитимные исполняемые файлы, при этом процессор может также быть выполнен с возможностью определения, содержится ли идентификатор исполняемого файла в базе данных, идентифицирующей легитимные исполняемые файлы. Альтернативно, память может также быть выполнена с возможностью хранения базы данных, идентифицирующей запрещенные исполняемые файлы, при этом процессор может также быть выполнен с возможностью определения, содержится ли идентификатор исполняемого файла в базе данных, идентифицирующей запрещенные исполняемые файлы. В качестве еще одного альтернативного варианта память может также быть выполнена с возможностью хранения базы данных, содержащей информацию, относящуюся к исполняемым файлам, причем база данных включает параметр, указывающий на легитимность каждого исполняемого файла, при этом процессор может также быть выполнен с возможностью определения, содержится ли идентификатор исполняемого файла в базе данных, идентифицирующей исполняемые файлы. Предпочтительно процессор может также быть выполнен с возможностью (если идентификатор исполняемого файла содержится в базе данных) определения, превышает ли параметр, связанный с исполняемым файлом, порог, при котором исполняемый файл считается легитимным.
Процессор может также быть выполнен с возможностью перехвата заданной информации, передаваемой между исполняемым файлом и компьютерной системой при выполнении исполняемого файла, и ответа на перехваченную информацию с помощью данных, указывающих на выполнение в эмулируемой компьютерной системе.
Согласно пятому аспекту настоящего изобретения предлагается способ обнаружения потенциального вредоносного программного обеспечения. Способ включает выполнение исполняемого файла с одновременным предоставлением исполняемому файлу указаний на то, что он выполняется в эмулируемой компьютерной системе, мониторинг поведения исполняемого файла и определение, соответствует ли это поведение ожидаемому поведению вредоносного программного обеспечения, работающего в эмулируемой компьютерной системе.
Шаг выполнения исполняемого файла с одновременным предоставлением исполняемому файлу указаний на то, что он выполняется в эмулируемой компьютерной системе, может включать выполнение исполняемого файла в неэмулируемой компьютерной системе, перехват заданной информации, передаваемой между исполняемым файлом и компьютерной системой при выполнении исполняемого файла, и ответ на перехваченную информацию с помощью данных, указывающих на выполнение в эмулируемой компьютерной системе. Альтернативно, шаг выполнения исполняемого файла с одновременным предоставлением исполняемому файлу указаний на то, что он выполняется в эмулируемой компьютерной системе, может включать выполнение исполняемого файла в эмулируемой компьютерной системе.
Поведение, которое ожидают от вредоносного программного обеспечения, работающего в эмулируемой компьютерной системе, может включать любые из следующих характеристик: пытается предотвратить исполнение, не предоставляя уведомления; пытается собрать информацию, относящуюся к эмулируемой компьютерной системе; и значительное отличие от поведения исполняемого файла в неэмулируемой компьютерной системе.
Согласно шестому аспекту настоящего изобретения предлагается компьютерная программа, содержащая средства компьютерного программного кода для реализации всех шагов способа согласно пятому аспекту, когда указанная программа выполняется на компьютере.
Согласно седьмому аспекту настоящего изобретения предлагается компьютерная программа согласно шестому аспекту, реализованная на машиночитаемом носителе.
Согласно восьмому аспекту настоящего изобретения предлагается компьютерная система. Компьютерная система включает память, в которой хранится исполняемый файл; процессор для выполнения исполняемого файла с одновременным предоставлением исполняемому файлу указаний на то, что он выполняется в эмулируемой компьютерной системе, мониторинга поведения исполняемого файла и определения, соответствует ли это поведение ожидаемому поведению вредоносного программного обеспечения, работающего в эмулируемой компьютерной системе.
Процессор может также быть выполнен с возможностью выполнения исполняемого файла в неэмулируемой компьютерной системе, перехвата заданной информации, передаваемой между исполняемым файлом и компьютерной системой при выполнении исполняемого файла, и ответа на перехваченную информацию с помощью данных, указывающих на выполнение в эмулируемой компьютерной системе. Альтернативно, процессор может также быть выполнен с возможностью выполнения исполняемого файла в эмулируемой компьютерной системе.
Процессор может также быть выполнен с возможностью определения, включает ли поведение исполняемого файла любые из следующих характеристик: пытается предотвратить исполнение, не предоставляя уведомление; пытается собрать информацию, относящуюся к эмулируемой компьютерной системе; и значительное отличие от поведения исполняемого файла в неэмулируемой компьютерной системе.
Согласно девятому аспекту настоящего изобретения предлагается способ ведения базы данных, содержащей информацию, относящуюся к исполняемым файлам, причем база данных включает параметры, указывающие на легитимность каждого исполняемого файла, с целью предоставления любому из множества компьютерных устройств возможности определить, следует ли идентифицировать исполняемый файл в качестве легитимного. Данный способ включает получение данных об исполняемом файле от компьютерного устройства, входящего в набор компьютерных устройств, которое выполнило исполняемый файл, использование этих данных для определения параметра, указывающего на легитимность исполняемого файла, и предоставление этого параметра любому из набора компьютерных устройств, реализуя эти функции при помощи сетевой услуги.
Данные об исполняемом файле могут включать любые из следующих типов данных: идентификатор компьютерной системы, которая выполнила исполняемый файл; информацию о любом подозрительном поведении исполняемого файла, наблюдаемом компьютерной системой, которая выполнила исполняемый файл; параметр, отражающий легитимность исполняемого файла, определенную компьютерной системой, которая выполнила исполняемый файл.
Шаг использования данных для определения параметра, представляющего легитимность каждого из исполняемых файлов, может включать любые из следующих действий: определяют, является ли доверенной каждая из компьютерных систем, которая выполнила исполняемый файл, а также определяют параметр на основе количества или процентной доли доверенных компьютерных систем, которые выполнили исполняемый файл; анализируют информацию о любом подозрительном поведении исполняемого файла, наблюдаемом компьютерной системой, которая выполнила исполняемый файл, и определяют параметр на основе количественных показателей, типов и степени подозрительного поведения; сопоставляют параметры, определенные каждой компьютерной системой, которая выполнила исполняемый файл.
Согласно десятому аспекту настоящего изобретения предлагается компьютерная программа, содержащая средства компьютерного программного кода для реализации всех шагов способа согласно девятому аспекту, когда указанная программа запускается на компьютере.
Согласно одиннадцатому аспекту изобретения предлагается компьютерная программа согласно десятому аспекту, реализованная на машиночитаемом носителе.
Согласно двенадцатому аспекту настоящего изобретения предлагается сервер для использования при ведении базы данных, содержащей информацию, относящуюся к исполняемым файлам, причем база данных включает параметры, указывающие на легитимность каждого исполняемого файла, с целью предоставления любому из множества компьютерных устройств возможности определить, следует ли идентифицировать исполняемый файл в качестве легитимного. Сервер содержит приемник для получения данных об исполняемом файле от одного или нескольких из множества компьютерных устройств, которые выполнили исполняемый файл, процессор для использования информации в целях определения параметра, указывающего на легитимность исполняемого файла, и передатчик для предоставления этого параметра одному или нескольким из множества компьютерных устройств.
Краткое описание чертежей
На ФИГ. 1 схематически изображена система защиты от вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения.
На ФИГ. 2 представлена блок-схема, иллюстрирующая процесс защиты компьютера от вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения.
На ФИГ. 3 представлена блок-схема, иллюстрирующая процесс проверки репутации согласно одному из вариантов осуществления настоящего изобретения.
На ФИГ. 4 представлена блок-схема, иллюстрирующая процесс проверки репутации согласно одному из вариантов осуществления настоящего изобретения.
На ФИГ. 5 представлена блок-схема, иллюстрирующая процесс защиты компьютерной системы от вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения.
На ФИГ. 6 представлена блок-схема, иллюстрирующая процесс обнаружения потенциального вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения.
Осуществление изобретения
Как было признано в настоящем документе, безопасность компьютерной системы можно повысить, если создать впечатление, что все программы на компьютере выполняются в виртуальной среде, а не в реальной компьютерной системе. При этом маловероятно, чтобы любое вредоносное программное обеспечение, рассчитанное на предотвращение своего обнаружения в виртуальной среде, стала выполнять какие-либо враждебные действия, которые выдали бы его присутствие, или позволили осуществлять его анализ. Вредоносная программа по существу была бы при это нейтрализована. Этого можно достичь за счет «симуляции» тех характеристик, которые указывают на то, что программа выполняется в виртуальной среде. Однако многие легитимные/надежные программы также проектируются так, чтобы предотвратить их выполнение в виртуальной среде в качестве способа защиты от копирования, не позволить пользователям использовать эмуляцию, чтобы «обойти» окончание пробного периода, или иным образом избежать внесения лицензионной платы за программное обеспечение. Поэтому нежелательно симулировать эмуляцию для всех программ, выполняемых на компьютерной системе, поскольку это негативно сказалось бы на способности компьютерных систем выполнять такие легитимные программы.
Чтобы по меньшей мере частично преодолеть описанные выше проблемы, в настоящем документе предлагается проверять репутацию исполняемого файла и, если определено, что файл может являться или, вероятно, является вредоносным программным обеспечением (например, если нет сведений, что он является безвредным/легитимным), то исполняемый файл выполняется с помощью применяемой к нему имитации эмуляции. Однако если исполнительный файл определен как легитимный или связанный с незначительным риском, этот исполнительный файл выполняется в компьютерной системе без какой-либо применяемой к нему имитации эмуляции. С этой целью настоящее изобретение предлагает, чтобы на исполнение легитимных программ, которые используют обнаружение эмуляции для легитимных целей, не было оказано никакого влияния, при этом предлагается также, чтобы любые вредоносные исполняемые файлы, которые применяют обнаружение эмуляции, с весьма малой вероятностью могли выполнять свой вредоносный код исходя из предположения, что им необходимо уклоняться от обнаружения, обеззараживания или анализа.
На ФИГ. 1 схематически изображена система защиты от вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения. Система защиты от вредоносного программного обеспечения включает по меньшей мере одну компьютерную систему 1, подключенную к централизованному антивирусному серверу 2 по сети 3, такой как Интернет или ЛВС. Компьютерная система 1 может быть реализована в виде комбинации компьютерного аппаратного и программного обеспечения. Компьютерная система 1 включает память 4, процессор 5 и приемопередатчик 6. В памяти 4 хранятся различные программы/исполняемые файлы, которые выполняются процессором 5. Память 4 содержит также запоминающий блок 7 для любых необходимых данных, таких как данные о репутации исполняемого файла, данные определения вредоносного программного обеспечения, правила эвристического анализа, белые списки, черные списки и т.д. Программы/исполняемые файлы, хранящиеся в памяти 4 и реализуемые процессором 5, включают блок определения репутации 8, блок имитации эмуляции 9 и, в некоторых случаях, эмулятор 10, все из которых могут быть подблоками антивирусного блока 11. Приемопередатчик 6 используется для осуществления связи с центральным антивирусным сервером 2 по сети 3.
Центральным антивирусным сервером 2, как правило, управляет провайдер антивирусного блока 11, который запускается на компьютере 1. Альтернативно, центральный антивирусный сервер 2 может находиться под управлением сетевого администратора или супервизора, при этом компьютер 1 является частью сети, за которую несет ответственность супервизор. Центральный антивирусный сервер 2 может быть реализован в виде комбинации компьютерного аппаратного и программного обеспечения. Центральный антивирусный сервер 2 включает память 11, процессор 12, приемопередатчик 13 и базу данных 14. В памяти 11 хранятся различные программы/исполняемые файлы, которые выполняются процессором 12. Программы/исполняемые файлы, хранящиеся в памяти 11 и выполняемые процессором 12, включают блок определения репутации 15, блок имитации эмуляции 16 и, в некоторых случаях, эмулятор 17, все из которых могут быть подблоками антивирусного блока 18. Эти программы/блоки могут быть такими же, как программы, реализуемые в компьютерной системе 1, или другими программами, которые способны сопрягаться и взаимодействовать с программами, реализуемыми в компьютерной системе 1. Приемопередатчик 13 используется для осуществления связи с компьютерной системой 1 по сети 3. В базе данных 14 хранятся последние данные о репутации исполняемого файла, данные определения вредоносного программного обеспечения, правила эвристического анализа, белые списки, черные списки и т.д.
На ФИГ. 2 представлена блок-схема, иллюстрирующая процесс защиты компьютера от вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения. При этом выполняются следующие шаги.
А1. Компьютерная система 1 инициирует проверку исполняемого файла. Например, проверка может быть инициирована вследствие получения исполняемого файла, предстоящего запуска/выполнения исполняемого файла, или в качестве составной части запрашиваемого или запланированного сканирования исполняемых файлов в компьютерной системе 1.
А2. Блок определения репутации 8 компьютерной системы 1 проверяет репутацию исполняемого файла.
A3. Если блок определения репутации 8 устанавливает, что данный файл может быть или, вероятно, является вредоносным программным обеспечением, исполняемый файл выполняется компьютерной системой 1, в то время как блок имитации эмуляции 9 предоставляет исполняемому файлу указания на то, что он выполняется в эмулируемой среде.
А4. Если блок определения репутации 8 устанавливает, что данный файл является или, вероятно, является легитимным/надежным, этот исполняемый файл выполняется в компьютерной системе без какой-либо применяемой к нему имитации эмуляции.
В одном из возможных вариантов осуществления настоящего изобретения репутацию исполняемого файла можно проверить путем сравнения идентификатора файла (т.е. имени файла, контрольной суммы самого файла или местоположения/пути к файлам в системе) со списком идентификаторов исполняемых файлов, которые считаются легитимными, иначе известным как утвержденный или белый список. Если файл идентифицирован в качестве входящего в белый список, компьютерную систему 1 можно настроить или дать ей команду на выполнение этого файла в реальной (в противоположность виртуальной) среде без каких-либо указателей активной эмуляции. Если файл не идентифицирован в качестве входящего в белый список, компьютерную систему 1 можно настроить или дать ей команду на выполнение этого файла с указателями активной эмуляции в качестве предупредительной меры против возможного вредоносного поведения. Конечно, программа/исполняемые файлы включают любые типы исполняемых файлов, такие как двоичные файлы, файлы сценариев, файлы приложений, динамически компонуемые библиотеки, макросы, XML-файлы и т.д.
В качестве альтернативного варианта, или в дополнение к проверке файла на соответствие белому списку файлов, идентификатор файла можно сравнить со списком идентификаторов исполняемых файлов, которые не признаны в качестве легитимных или в силу иных причин считаются связанными с высоким риском, также известным как «блок-список», или черный список. Если файл не идентифицирован в качестве входящего в черный список, компьютерную систему 1 можно настроить или дать ей команду на выполнение этого файла в среде реальной компьютерной системы с указателями активной эмуляции в качестве предупредительной меры против возможного вредоносного поведения. Иными словами, выполнение файла в незащищенной системе будет запрещено. Если файл не идентифицирован в качестве входящего в черный список, компьютерную систему 1 можно настроить или дать ей команду на выполнение этого файла без каких-либо указателей активной эмуляции. Альтернативно, если файл не идентифицирован в качестве входящего ни в белый, ни в черный список, компьютерную систему 1 можно настроить или дать ей команду на выдачу пользователю указания выбрать, следует ли вообще выполнять этот файл, или следует ли выполнять его с указателями активной эмуляции или без них.
В качестве альтернативного варианта, или в дополнение к проверке файла на соответствие белому списку файлов, идентификатор файла можно сравнить со списком идентификаторов исполняемых файлов, которые не признаны в качестве легитимных или в силу иных причин считаются связанными с высоким риском, также известным как «блок-список», или черный список. Если файл не идентифицирован в качестве входящего в черный список, компьютерную систему 1 можно настроить или дать ей команду на выполнение этого файла в среде реальной компьютерной системы с указателями активной эмуляции в качестве предупредительной меры против возможного вредоносного поведения. Иными словами, выполнение файла в незащищенной системе будет запрещено. Если файл не идентифицирован в качестве входящего в черный список, компьютерную систему 1 можно настроить или дать ей команду на выполнение этого файла без каких-либо указателей активной эмуляции. Альтернативно, если файл не идентифицирован в качестве входящего ни в белый, ни в черный список, компьютерную систему 1 можно настроить или дать ей команду на выдачу пользователю указания выбрать, следует ли вообще выполнять этот файл, или следует ли выполнять его с указателями активной эмуляции или без них. Способ, посредством которого система будет интерпретировать неизвестные файлы, определяется в зависимости от требуемого уровня безопасности.
В качестве примера, на ФИГ. 3 представлена блок-схема, иллюстрирующая процесс проверки репутации согласно одному из вариантов осуществления настоящего изобретения. При этом выполняются следующие шаги.
B1. Компьютерная система 1 инициирует проверку исполняемого файла.
B2. Блок определения репутации 8 (например, входящий в состав компьютерной системы 1 или сервера 2) производит поиск идентификатора исполняемого файла в белом списке легитимных/надежных исполняемых файлов.
B3. Если файл идентифицирован в качестве входящего в белый список, этот файл определяется как легитимный.
B4. Если файл не идентифицирован в качестве входящего в белый список, этот файл определяется как возможный вредоносный.
B5. Альтернативно, если доступен также черный список исполняемых файлов, блок определения репутации 8 производит поиск идентификатора исполняемого файла в черном списке запрещенных/подозрительных исполняемых файлов. Если файл идентифицирован в качестве входящего в черный список, этот файл определяется как возможный вредоносный (в соответствии с шагом B4).
B6. Если файл не идентифицирован в качестве входящего ни в белый, ни в черный список, этот файл определяется как неизвестный.
Конечно, возможны и другие варианты этих процессов. Например, выполнение любых файлов, идентифицированных в качестве входящих в черный список, можно либо полностью запретить, либо выполнять такие файлы в виртуальной среде, в то время как неизвестные файлы (т.е. не входящие ни в белый, ни в черный список) выполняются в реальной среде с применяемой к ней имитацией эмуляции. Альтернативно, любые неизвестные файлы могут первоначально выполняться в виртуальной среде и подвергаться анализу с целью определить, могут ли они быть надежными, путем проверки на сигнатуры вредоносного программного обеспечения или подозрительное поведение. Если анализ устанавливает, что неизвестный файл не является подозрительным или риск того, что он является вредоносным программным обеспечением, незначителен, можно разрешить запуск этого файла в реальной среде с имитацией эмуляции или без нее. После этого идентификатор файла можно добавить к белому списку в случае необходимости. С другой стороны, если в результате анализа ранее неизвестного файла установлено, что файлы следует считать подозрительными, выполнение этого файла можно запретить или ограничить выполнением в реальной среде с имитацией активной эмуляции. Идентификатор подозрительного файла также можно добавить к черному списку.
В качестве альтернативы белым и черным спискам при проверке репутации используется список идентификаторов исполняемых файлов, причем каждый исполняемый файл в списке связан с репутационной оценкой в баллах или рейтингом, который представляет риск/вероятность того, что файл является вредоносным. Эту оценку или рейтинг можно определить на основе результатов какого-либо предыдущего анализа исполняемого файла. Например, на ФИГ. 4 представлена блок-схема, иллюстрирующая процесс проверки репутации согласно одному из вариантов осуществления настоящего изобретения. Когда необходима проверка репутации исполняемого файла, производится поиск в базе данных исполняемых файлов, чтобы определить, имеет ли этот файл запись в базе данных (шаг С2). Если этот файл в базе данных отсутствует (т.е. файл не выполнялся раньше компьютерной системой), файл выполняется либо в реальной среде, обеспечиваемой компьютерной системой/сервером, либо в эмулируемой среде, реализуемой компьютерной системой/сервером, а поведение программы контролируется (шаг С3). После этого поведение анализируется с целью выявления подозрительного поведения и получает оценку легитимности/надежности в баллах в зависимости от количественных показателей, типов и степени подозрительного поведения (шаг С4). Эта оценка представляется затем центральному серверу и сопоставляется с любыми другими оценками, рассчитанными/полученными для того же исполняемого файла, а сопоставленная оценка рассылается другим компьютерным система в сети (шаг С5).
После того, как в базу данных была добавлена запись для исполняемого файла, любые последующие проверки будут идентифицировать эту запись файла в базе данных, при этом из нее может быть извлечено значение вероятности для этого исполняемого файла (шаг С6). Затем это извлеченное значение можно сравнить с пороговым значением (шаг С7). Если извлеченное значение превышает пороговое значение, исполняемый файл следует интерпретировать как подозрительное вредоносное программное обеспечение (шаг С8) и выполнять только с имитацией активной эмуляции. Если извлеченное значение не превышает пороговое значение, исполняемый файл следует рассматривать как надежный (шаг 9), при этом он может выполняться без имитации активной эмуляции.
Оценка репутации конкретного файла может постоянно обновляться путем сопоставления результатов анализа поведения, выполняемого другими компьютерными системами и (или) серверами. Кроме того, оценка порога в баллах, используемая отдельным компьютером, может быть обусловлена рядом факторов (например, в зависимости от уровня безопасности, нужного пользователю) и различаться для отдельных компьютеров. Оценка репутации может также определяться и (или) различаться в зависимости от репутации компьютерных систем, на которых устанавливается и (или) запускается исполняемый файл, и которые сообщают об этом центральному серверу. Например, если центральный сервер получает ряд отчетов о том, что конкретный исполняемый файл был установлен и (или) запущен на компьютерных системах, известных как надежные (например, принадлежащих доверенному разработчику программного обеспечения или другой доверенной организации), репутационная оценка этого исполняемого файла улучшается. В частности, репутационная оценка, присвоенная такому исполняемому файлу системой защиты от вредоносного программного обеспечения, будет выше, чем оценка исполняемого файла, о котором ей только что стало известно.
Проверка репутации исполняемых файлов может выполняться локально компьютерной системой 1, дистанционно централизованным сервером 2, или путем сочетания двух этих способов. Когда проверка выполняется локально, то, в зависимости от того, как выполняется проверка репутации, компьютерная система 1 может использовать информацию о репутации, которая была получена от централизованного сервера 2 и сохранена в ее памяти. Когда проверка выполняется дистанционно, компьютерная система 1 будет передавать исполняемый файл или информацию, относящуюся к этому файлу, централизованному серверу 2 для проверки репутации файлов. Например, компьютерная система 1 могла бы посылать идентификатор файла серверу, который проверяет его затем на соответствие базе данных, содержащей сведения о легитимных исполнительных файлах. После этого сервер 2 отвечает компьютерной системе 1, уведомляя ее о результате проверке и (или) выдавая инструкцию о том, как следует выполнять файл.
Проверка репутации может выполняться после получения исполняемого файла (т.е. когда файл загружается из сети Интернет или по электронной почте, или когда файл передается компьютерной системе с машиночитаемого носителя), или в ответ на запрос на выполнение/запуск этого файла. Проверка может также выполняться как составная часть запланированного сканирования компьютерной системы 1 или по запросу пользователя. Однако предпочтительно, чтобы проверка была произведена перед первым выполнением файла.
Существуют различные методы, применяемые создателями вредоносных программ, чтобы дать вредоносной программе возможность определить, запущена ли программа в эмулируемой среде, которые, таким образом, можно использовать, чтобы дезориентировать вредоносное программное обеспечение, заставив его принять решение о том, что оно выполняется в эмулируемой среде. Хотя эмулятор должен вести себя практически идентично реальной компьютерной системе, все ее существующие функциональные возможности трудно реализовать в эмулируемой среде. Например, ограничения на обработку могут не позволить эмулируемой среде имитировать все функциональные возможности, предоставляемые операционной системой. В связи с этим почти всегда будут иметь место различия в поведении эмулятора и реальной компьютерной системы, поэтому такие различия могут использоваться программой, чтобы определить, когда она выполняется в эмулируемой среде. В качестве примера, вредоносная программа может быть разработана таким образом, чтобы вызывать необычные или редко используемые команды, которые, поскольку они почти никогда не используются другими программами и (или) слишком трудны для эмулирования, могут не поддерживаться эмулятором. Поэтому вызов таких функций с большой вероятностью приведет к тому, что эмулятор выдаст сигнал исключения. В этом случае вредоносная программа может использовать этот сигнал исключения в качестве указания на то, что она эмулируется.
Вредоносные программы могут также попытаться обнаружить эмуляцию, сделав попытку получить доступ к web-странице и, тем самым, определить, имеется ли доступ к сети Интернет. Поскольку большинство эмуляторов не предоставляют доступа к сети Интернет, вредоносная программа может использовать это в качестве указания на то, что она выполняется эмулятором. Кроме того, многие вредоносные программы используют вызовы функций, которые возвращают IP-адрес компьютерных систем, чтобы определить, имеют ли они доступ к сети Интернет. Отметим еще раз, что, поскольку большинство эмуляторов не предоставляют доступа к сети Интернет, маловероятно, чтобы эмулятор успешно вернул IP-адрес. Поэтому вредоносная программа может использовать это в качестве указания на то, что она выполняется в эмулируемой среде.
Альтернативный способ, позволяющий определить, запущен ли эмулятор, состоит в том, чтобы сделать больше одного вызова функции, которая должна возвращать различные значения в ответ на каждый вызов. Например, такой способ может включать два вызова функции, которая обеспечивает зависящий от времени отклик, и проверку наличия разности между двумя возвращаемыми значениями. В операционной системе Microsoft Windows это может достигаться с использованием функций QeuryPerformanceCounter API или GetTickCount API, или путем запроса текущего количества циклов, выполненных процессором с момента запуска машины, при помощи команды RDTSC (Read Time-Stamp Counter, чтение счетчика меток реального времени). Например, можно дважды вызвать RDTSC и вычислить разность двух возвращаемых значений. Эта разность может затем сравниваться с порогом и, если она превышает порог, делается вывод о том, что файл в настоящий момент выполняется в эмуляторе.
Существует ряд других способов, которые могут использоваться исполняемым файлом, чтобы определить, выполняется ли он в эмулируемой среде, причем их количество постоянно увеличивается за счет включения новых способов. К числу некоторых других примеров, используемых для обнаружения эмуляции, относятся:
- проверка системного реестра на наличие конкретных ключей реестра (например, ключей системного реестра, относящихся к утилитам VMWare Tools и т.д.);
- проверка наличия конкретных установленных приложений (например, средства разгрузки памяти, средства анализа, отладчики и т.д.);
- проверка по контрольным точкам;
- проверка местоположения таблицы дескрипторов прерываний (IDTR, Interrupt Descriptor Table) или других программных регистров.
Чтобы симулировать характеристики, которые обычно указывают на эмуляцию, компьютерная система может подключиться к интерфейсам стандарта API (Application Programming Interfaces, интерфейсы прикладного программирования), используемым выбранным исполняемым файлом (т.е. позволяющим ему проверять файловую систему, записи в системном реестре, взаимные исключения и т.д., и любые другие характеристики, которые он может использовать для обнаружения эмуляции или других средства анализа вредоносного программного обеспечения. После этого компьютерная система может предоставить информацию рабочему коду выбранного исполняемого файла, которая создает впечатление, что файл выполняется в эмулируемой среде. Это позволяет компьютерной системе симулировать эмуляцию для выбранных файлов, не влияя при этом на информацию, передаваемую тем исполняемым файлам, которые не считаются представляющими какой-либо риск.
Термин «подключение» охватывает ряд методов, применяемых для изменения или добавления новых характеристик к поведению программы (например, операционной системы или приложения) путем перехвата вызовов функций, сообщений или событий, передаваемых между программными компонентами. Механизм подключения позволяет задавать запуск фрагмента кода каждый раз при получении программой конкретного сообщения или события. Например, в системе Microsoft Windows при вызове функции Win 32 API SetWindowsHookEx ( ) целевой процесс загружает заданную динамически компонуемую библиотеку DLL в свою область памяти и выбирает заданную функцию в качестве программной ловушки для конкретного события. При получении надлежащего события код будет выполняться целевым процессом.
Например, если проверка репутации конкретного исполняемого файла установила, что этот файл должен выполняться с помощью применяемой к нему имитации эмуляции, компьютерная система 1 может подключиться к вызовам, сделанным рабочим кодом исполняемых файлов, чтобы извлечь IP-адрес компьютерных систем (например, функция GetlpAddrTable API или GetHostByName API) и возвратить сигнал исключения. При этом компьютерная система 1 может ввести вредоносную программу в заблуждение, заставив ее определить, что она выполняется в эмуляторе. Альтернативно, некоторые вредоносные программы разработаны так, чтобы не выполнять какие-либо вредоносные функции в той или иной конкретной стране. Это может быть связано с тем, что власти конкретной стране сильнее заинтересованы в выявлении и наказании создателей вредоносных программ. По этой причине такие вредоносные программы могут запрашивать IP-адрес компьютерной системы, чтобы определить страну, в которой в настоящее время находится данная компьютерная система. Поэтому компьютерная система 1 может в ответ предоставить IP-адрес, указывающий, что компьютерная система находится в одной из таких стран, и, тем самым, предотвратить реализацию каких-либо вредоносных функций вредоносным программным обеспечением.
На ФИГ. 5 представлена блок-схема, иллюстрирующая процесс защиты компьютерной системы от вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения. При этом выполняются следующие шаги.
D1. Проверка репутации исполняемого файла блоком проверки репутации 8 устанавливает, что этот файл может быть вредоносным. Например, файл отсутствует в белом списке, или появляется в черном списке.
D2. Вследствие этого, компьютерная система 1 получает команду или настраивается на применение процесса защиты от вредоносного программного обеспечения и выполняет исполняемый файл в реальной/неэмулируемой среде компьютерной системы.
D3. Блок имитации эмуляции 9 подключается к определенным заданным каналам информации, передаваемой между исполняемым файлом и компьютерной системой 1 во время выполнения этого файла. Эта заданная информация может включать любые вызовы функций, сообщения и события, относящиеся к антиэмуляционным функциональным возможностям вредоносного программного обеспечения.
D4. Программные ловушки, создаваемые блоком имитации эмуляции 9, позволяют ему перехватывать любую существенную передаваемую информацию.
D5. В ответ на любую перехваченную информацию блок имитации эмуляции 9 выдает данные, которые указывают исполняемому файлу, что он выполняется в эмулируемой среде, несмотря на то, что в действительности он выполняется в неэмулируемой среде компьютерной системы. Эти указатели эмуляции вводят исполняемый файл в заблуждение, вследствие чего он определяет, что выполняется в эмулируемой среде, и поэтому не выполняет никаких вредоносных функций.
D6. Выполнение исполняемого файла прекращается. Например, выполнение исполняемого файла может быть прекращено самим файлом в ответ на установление факта эмулирования, по окончании выполнения файла, либо компьютерной системой.
Как описано выше, традиционные способы защиты компьютера от вредоносного программного обеспечения основаны на обнаружении использования программой сигнатуры вредоносного программного обеспечения, или на выявлении поведения, которое считается свидетельствующим о наличии вредоносных функций. Однако создатели вредоносных программ применяют различные методы, чтобы избежать таких способов обнаружения. По этой причине такие способы обнаружения вредоносного программного обеспечения могут не позволить обнаружить вредоносную программу, которая, таким образом, будет продолжать выполнение своих вредоносных функций. Предлагаемые в настоящем документе способы позволяют компьютерной системе использовать антиэмуляционные функции вредоносного программного обеспечения в качестве средства нейтрализации или деактивации вредоносных функциональных возможностей вредоносной программы, даже если присутствие вредоносных программ не было обнаружено. Кроме того, эти способы обеспечивают также отсутствие воздействия на легитимные приложения, которые также реализуют антиэмуляционные функции.
В дополнение к использованию антиэмуляционных функций вредоносного программного обеспечения в качестве средства защиты компьютерной системы от вредоносного поведения, здесь предлагается также использовать обнаружение антиэмуляционного поведения в качестве средства, позволяющего определить, следует ли считать исполняемый файл подозрительным. Хотя как легитимные, так и вредоносные исполнительные файлы могут выполнять антиэмуляционные функции, их поведение после обнаружения эмуляции может заметно различаться. Легитимные программы обычно отказываются запускаться и выводят на экран уведомление о том, что приложение не может быть запущено в эмулируемой среде. Напротив, вредоносные программы обычно «затихают» или значительно изменяют свое поведение. По этой причине наличие такого антиэмуляционного поведения для исполняемого файла, выполняемого в эмулируемой или реальной среде с имитацией активной эмуляции, служит указанием на то, что этот файл может быть вредоносным.
В качестве примера, на ФИГ. 6 представлена блок-схема, иллюстрирующая процесс обнаружения потенциального вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения. При этом выполняются следующие шаги.
Е1. Исполняемый файл, который должен выполняться компьютерной системой 1, определен в качестве неизвестного системе защиты от вредоносного программного обеспечения.
Е2. В этом случае пользователь или система защиты от вредоносного программного обеспечения может принять решение о выполнении файла в эмулируемой среде или в реальной среде с применяемой к ней имитацией эмуляции. Выполнение осуществляется центральным сервером 2 или компьютерной системой 1.
Е3. Система защиты от вредоносного программного обеспечения контролирует выполнение исполняемого файла.
Е4. Система защиты от вредоносного программного обеспечения определяет, демонстрирует ли исполняемый файл какое-либо антиэмуляционное поведение во время своего выполнения.
Е5. Если исполняемый файл демонстрирует антиэмуляционное поведение во время своего выполнения, этот исполняемый файл определяется в качестве подозрительного и, таким образом, возможного вредоносного файла.
Е6. Если исполняемый файл не демонстрирует антиэмуляционное поведение во время своего выполнения, система защиты от вредоносного программного обеспечения определяет, требуется ли дополнительный анализ. Например, система защиты от вредоносного программного обеспечения может определить, что ей необходимо выполнить сравнение поведения исполняемого файла, когда она считает, что он выполняется в эмулируемой среде, с его поведением, когда она считает, что он выполняется в неэмулируемой среде.
Е7. Если установлено, что необходим дополнительный анализ, система защиты от вредоносного программного обеспечения модифицирует данные, которые были предоставлены исполняемому файлу во время предыдущего выполнения. Например, она может «отключить» некоторые или все указатели эмуляции таким образом, чтобы исполняемый файл установил, что он не эмулируется. Затем процесс возвращается к шагу D2, и файл выполняется.
Е8. Если исполняемый файл не демонстрировал каких-либо значительных признаков антиэмуляционного поведения, и если дополнительный анализ не требуется, система защиты от вредоносного программного обеспечения может идентифицировать этот файл в качестве легитимного/надежного или по меньшей мере в качестве имеющего низкую вероятность оказаться вредоносным.
Если файл является легитимным, следует ожидать, что он или сформирует уведомление о том, что не может быть запущен в эмулируемой среде, или будет демонстрировать постоянное поведение независимо от полученных им указаний на то, что он выполняется в эмулируемой или неэмулируемой среде. Если файл является вредоносным, следует ожидать, что он или не сможет запуститься, не предоставляя при этом никакого уведомления, или будет демонстрировать различное поведение в зависимости от полученных им указаний на то, что он выполняется в эмулируемой или неэмулируемой среде. В зависимости от результатов этого анализа поведения идентификатор файла может при необходимости быть добавлен к белому или к черному списку, а обновленные списки разосланы от центрального сервера отдельным компьютерным системам. Альтернативно, как описано выше, этот анализ может определить репутационную оценку для исполняемого файла, после чего эта информация может быть предоставлена компьютерным системам в форме репутационного списка файлов, содержащегося в базе данных.
В качестве другого примера, существует также вероятность того, что какие-то вредоносные программы будут разработаны с возможностью сбора информации об эмулируемых средах, используемых антивирусным программным обеспечением. Когда такая вредоносная программа определяет, что выполняется в эмулируемой среде, она постарается собрать как можно больше информации из этой эмулируемой среды и передать эту информацию в такое место, где к ней сможет получить доступ создатель вредоносной программы (например, на почтовый сервер создателей). Поэтому система защиты от вредоносного программного обеспечения может осуществлять текущий контроль за поведением исполняемого файла, который выполняется в эмулируемой или реальной среде с применяемой к ней имитацией эмуляции, чтобы определить, выполняет ли исполняемый файл значительное количество операций по сбору информации, и пытается ли подключиться к удаленному терминалу. Если это так, исполняемый файл может считаться подозрительным и связанным с высоким риском оказаться вредоносным.
Предлагаемые в настоящем документе способы обнаружения вредоносного программного обеспечения позволяют компьютерной системе использовать антиэмуляционные функции вредоносного программного обеспечения в качестве средства, позволяющего определить, следует ли считать исполняемый файл подозрительным, и эту информацию можно использовать в качестве данных обратной связи, чтобы принять решение, как следует выполнять данный исполняемый файл в дальнейшем. Этот способ дает возможность преодолеть ограничения, присущие способам обнаружения вредоносного программного обеспечения, основанным на выявлении сигнатур вредоносного программного обеспечения или враждебных/агрессивных действий программ, и использует собственные защитные механизмы вредоносного программного обеспечения в качестве средства обнаружения.
Некоторые вредоносные программы разработаны с возможностью принятия ответных мер, так, что, если они считают, что запущены в эмулированной среде, программы осуществляют действия, направленные на то, чтобы вывести эмулятор из строя или иным образом помешать ему анализировать вредоносную программу. Например, обнаружив эмуляцию, способная к ответным мерам вредоносная программа может отреагировать, попытавшись стереть все файлы в компьютерной системе или иным образом попытаться нарушить функционирование операционной системы. Однако такие способные к ответным мерам вредоносные программы встречаются редко, поскольку подобное поведение обнаруживает их присутствие. В любом случае, если бы системе защиты от вредоносного программного обеспечения согласно настоящему изобретению пришлось столкнуться с такой способной к ответным мерам вредоносной программой, систему можно было бы выполнить с возможностью соответствующей корректировки параметров эмуляции, чтобы пресекать агрессивное поведение, и использовать эту способность к принятию ответных мер для обнаружения вредоносного программного обеспечения. Например, система защиты от вредоносного программного обеспечения может реагировать на принятие ответных мер, используя основные механизмы предотвращения вторжений, тем самым не позволяя вредоносному программному обеспечению продолжать выполнение каких-либо операций удаления, или просто препятствуя дальнейшему выполнению вредоносной программы.
Специалисту в данной области техники понятно, что описанные выше варианты осуществления могут подвергаться различным модификациям без выхода за рамки настоящего изобретения. Например, хотя приведенные выше варианты осуществления специально описывают использование антиэмуляционных функций вредоносного программного обеспечения для предотвращения враждебного поведения и (или) обнаружения присутствия вредоносного программного обеспечения, сюда входит также использование любых антиотладочных функций. Отладка вредоносной программы включает анализ ее поведения и функциональных возможностей для того, чтобы понять, каким образом обнаружить и (или) дезинфицировать ее, поэтому создатели вредоносных программ часто разрабатывают их с возможностью предотвращения отладки. Антиотладочные функции, применяемые вредоносным программным обеспечением, соответствуют его антиэмуляционным функциям и могут включать обнаружение отладчика, отказ от выполнения в случае отладки, предотвращение выполнения любых вредоносных функций при отладке, предотвращение подсоединения программы-отладчика к вредоносной программе, воспрепятствование процессу отладки и т.д.